From 72a8f0ccdb9c1c58202ee5f6d138269961c3e845 Mon Sep 17 00:00:00 2001 From: WayofTime Date: Fri, 31 Oct 2014 18:01:31 -0400 Subject: [PATCH] More stuff --- .gitignore | 4 +- .../api/java/thaumcraft/api/IGoggles.java | 22 - .../api/java/thaumcraft/api/IRepairable.java | 13 - .../thaumcraft/api/IRepairableExtended.java | 17 - .../api/java/thaumcraft/api/IRunicArmor.java | 22 - .../api/java/thaumcraft/api/IScribeTools.java | 14 - .../java/thaumcraft/api/IVisDiscountGear.java | 20 - .../api/java/thaumcraft/api/ItemApi.java | 70 - .../api/java/thaumcraft/api/ItemRunic.java | 21 - .../java/thaumcraft/api/ThaumcraftApi.java | 507 ------- .../thaumcraft/api/ThaumcraftApiHelper.java | 269 ---- .../java/thaumcraft/api/TileThaumcraft.java | 63 - .../java/thaumcraft/api/WorldCoordinates.java | 117 -- .../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 | 95 -- .../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 - .../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/java/thaumcraft/api/package-info.java | 4 - .../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 | 193 --- .../thaumcraft/api/research/ScanResult.java | 39 - .../thaumcraft/api/visnet/TileVisNode.java | 188 --- .../thaumcraft/api/visnet/VisNetHandler.java | 284 ---- .../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 | 129 -- .../java/thaumcraft/api/wands/WandRod.java | 158 --- .../api/wands/WandTriggerRegistry.java | 72 - .../AlchemicalWizardry.java | 1114 --------------- .../BloodMagicConfiguration.java | 147 -- .../alchemicalWizardry/ModBlocks.java | 174 --- .../alchemicalWizardry/ModItems.java | 384 ----- .../api/ColourAndCoords.java | 45 - .../AlchemicalPotionCreationHandler.java | 79 -- .../AlchemyPotionHandlerComponent.java | 52 - .../api/alchemy/AlchemyPotionHelper.java | 76 - .../api/alchemy/AlchemyRecipe.java | 143 -- .../api/alchemy/AlchemyRecipeRegistry.java | 85 -- .../api/alchemy/energy/IAlchemyGoggles.java | 10 - .../api/alchemy/energy/IReagentContainer.java | 18 - .../api/alchemy/energy/IReagentHandler.java | 18 - .../energy/ISegmentedReagentHandler.java | 14 - .../api/alchemy/energy/Reagent.java | 54 - .../api/alchemy/energy/ReagentContainer.java | 158 --- .../alchemy/energy/ReagentContainerInfo.java | 22 - .../api/alchemy/energy/ReagentRegistry.java | 191 --- .../api/alchemy/energy/ReagentStack.java | 64 - .../alchemy/energy/TileReagentHandler.java | 68 - .../energy/TileSegmentedReagentHandler.java | 283 ---- .../api/altarRecipeRegistry/AltarRecipe.java | 70 - .../AltarRecipeRegistry.java | 60 - .../api/bindingRegistry/BindingRecipe.java | 35 - .../api/bindingRegistry/BindingRegistry.java | 67 - .../api/harvest/HarvestRegistry.java | 33 - .../api/harvest/IHarvestHandler.java | 21 - .../api/items/ShapedBloodOrbRecipe.java | 227 --- .../api/items/ShapelessBloodOrbRecipe.java | 140 -- .../api/items/interfaces/ArmourUpgrade.java | 15 - .../api/items/interfaces/IBindable.java | 5 - .../api/items/interfaces/IBloodOrb.java | 8 - .../api/items/interfaces/IHolding.java | 6 - .../items/interfaces/IReagentManipulator.java | 9 - .../api/rituals/IMasterRitualStone.java | 36 - .../api/rituals/IRitualStone.java | 6 - .../api/rituals/RitualComponent.java | 43 - .../api/rituals/RitualEffect.java | 56 - .../api/rituals/Rituals.java | 422 ------ .../api/soulNetwork/LifeEssenceNetwork.java | 26 - .../api/soulNetwork/SoulNetworkHandler.java | 292 ---- .../summoningRegistry/SummoningHelper.java | 21 - .../summoningRegistry/SummoningRegistry.java | 70 - .../SummoningRegistryComponent.java | 231 --- .../api/tile/IBloodAltar.java | 26 - .../client/ClientEventHandler.java | 58 - .../client/ClientProxy.java | 178 --- .../client/renderer/ColourThreshold.java | 49 - .../client/renderer/HUDElement.java | 146 -- .../client/renderer/HUDUtils.java | 272 ---- .../client/renderer/RenderHelper.java | 185 --- .../common/AlchemicalWizardryEventHooks.java | 477 ------- .../common/AlchemicalWizardryFuelHandler.java | 72 - .../common/AlchemicalWizardryTickHandler.java | 47 - .../common/ArmourComponent.java | 23 - .../common/CommonProxy.java | 94 -- .../common/CoordAndRange.java | 25 - .../common/EntityAIFly.java | 5 - .../common/EntityAITargetAggro.java | 24 - .../common/EntityAirElemental.java | 33 - .../common/IBindingAgent.java | 6 - .../alchemicalWizardry/common/ICatalyst.java | 8 - .../alchemicalWizardry/common/IDemon.java | 10 - .../common/IFillingAgent.java | 6 - .../alchemicalWizardry/common/Int3.java | 38 - .../common/LifeBucketHandler.java | 42 - .../common/LifeEssence.java | 28 - .../common/ModLivingDropsEvent.java | 36 - .../common/NewPacketHandler.java | 964 ------------- .../common/PacketHandler.java | 966 ------------- .../common/PlinthComponent.java | 37 - .../alchemy/CombinedPotionComponent.java | 27 - .../alchemy/CombinedPotionRegistry.java | 182 --- .../alchemy/ICombinationalCatalyst.java | 6 - .../common/block/ArmourForge.java | 336 ----- .../common/block/BlockAlchemicCalcinator.java | 168 --- .../common/block/BlockAltar.java | 314 ---- .../common/block/BlockBelljar.java | 157 -- .../common/block/BlockBloodLightSource.java | 75 - .../common/block/BlockConduit.java | 101 -- .../common/block/BlockDemonPortal.java | 43 - .../common/block/BlockHomHeart.java | 101 -- .../common/block/BlockMasterStone.java | 84 -- .../common/block/BlockOrientable.java | 190 --- .../common/block/BlockPedestal.java | 193 --- .../common/block/BlockPlinth.java | 193 --- .../common/block/BlockReagentConduit.java | 83 -- .../common/block/BlockSchematicSaver.java | 43 - .../common/block/BlockSocket.java | 163 --- .../common/block/BlockSpectralContainer.java | 75 - .../common/block/BlockSpellEffect.java | 62 - .../common/block/BlockSpellEnhancement.java | 64 - .../common/block/BlockSpellModifier.java | 63 - .../common/block/BlockSpellParadigm.java | 96 -- .../common/block/BlockTeleposer.java | 260 ---- .../common/block/BlockWritingTable.java | 181 --- .../common/block/BloodRune.java | 121 -- .../common/block/BloodStoneBrick.java | 27 - .../common/block/EfficiencyRune.java | 31 - .../common/block/EmptySocket.java | 34 - .../common/block/IOrientable.java | 14 - .../common/block/ImperfectRitualStone.java | 142 -- .../common/block/LargeBloodStoneBrick.java | 27 - .../common/block/LifeEssenceBlock.java | 62 - .../common/block/RitualStone.java | 121 -- .../common/block/RuneOfSacrifice.java | 31 - .../common/block/RuneOfSelfSacrifice.java | 31 - .../common/block/SpectralBlock.java | 120 -- .../common/block/SpeedRune.java | 31 - .../bloodAltarUpgrade/AltarComponent.java | 60 - .../AltarUpgradeComponent.java | 105 -- .../bloodAltarUpgrade/UpgradedAltars.java | 300 ---- .../common/demonVillage/BlockSet.java | 195 --- .../demonVillage/BuildingSchematic.java | 183 --- .../common/demonVillage/DemonBuilding.java | 120 -- .../common/demonVillage/DemonCrosspath.java | 22 - .../common/demonVillage/DemonVillagePath.java | 135 -- .../common/demonVillage/GridSpace.java | 77 - .../common/demonVillage/GridSpaceHolder.java | 309 ---- .../common/demonVillage/TileBlockSet.java | 8 - .../common/entity/mob/EntityBileDemon.java | 488 ------- .../common/entity/mob/EntityBoulderFist.java | 494 ------- .../common/entity/mob/EntityDemon.java | 99 -- .../entity/mob/EntityEarthElemental.java | 28 - .../common/entity/mob/EntityElemental.java | 715 ---------- .../common/entity/mob/EntityFallenAngel.java | 502 ------- .../entity/mob/EntityFireElemental.java | 26 - .../entity/mob/EntityHolyElemental.java | 28 - .../common/entity/mob/EntityIceDemon.java | 523 ------- .../entity/mob/EntityLowerGuardian.java | 486 ------- .../common/entity/mob/EntityShade.java | 493 ------- .../entity/mob/EntityShadeElemental.java | 27 - .../entity/mob/EntitySmallEarthGolem.java | 500 ------- .../entity/mob/EntityWaterElemental.java | 25 - .../entity/mob/EntityWingedFireDemon.java | 503 ------- .../projectile/EnergyBlastProjectile.java | 526 ------- .../entity/projectile/EntityBeamParticle.java | 16 - .../EntityBloodLightProjectile.java | 131 -- .../EntityEnergyBazookaMainProjectile.java | 100 -- ...ntityEnergyBazookaSecondaryProjectile.java | 508 ------- .../entity/projectile/EntityMeteor.java | 90 -- .../entity/projectile/EntityParticleBeam.java | 350 ----- .../projectile/ExplosionProjectile.java | 134 -- .../entity/projectile/FireProjectile.java | 115 -- .../entity/projectile/HolyProjectile.java | 117 -- .../entity/projectile/IceProjectile.java | 123 -- .../projectile/LightningBoltProjectile.java | 126 -- .../entity/projectile/MudProjectile.java | 131 -- .../entity/projectile/TeleportProjectile.java | 205 --- .../entity/projectile/WaterProjectile.java | 107 -- .../entity/projectile/WindGustProjectile.java | 110 -- .../harvest/BloodMagicHarvestHandler.java | 129 -- .../harvest/CactusReedHarvestHandler.java | 39 - ...GenericPamSeedlessFruitHarvestHandler.java | 74 - .../harvest/GenericSeededHarvestHandler.java | 139 -- .../common/harvest/GourdHarvestHandler.java | 34 - .../harvest/PamHarvestCompatRegistry.java | 125 -- .../common/items/AWBaseItems.java | 44 - .../common/items/ActivationCrystal.java | 135 -- .../common/items/AirScribeTool.java | 20 - .../common/items/ApprenticeBloodOrb.java | 21 - .../common/items/ArchmageBloodOrb.java | 21 - .../common/items/ArmourInhibitor.java | 215 --- .../common/items/BlankSpell.java | 114 -- .../common/items/BloodShard.java | 73 - .../common/items/BloodboundSword.java | 103 -- .../common/items/BoundArmour.java | 806 ----------- .../common/items/BoundAxe.java | 360 ----- .../common/items/BoundPickaxe.java | 376 ----- .../common/items/BoundShovel.java | 367 ----- .../common/items/CheatyItem.java | 254 ---- .../common/items/DaggerOfSacrifice.java | 268 ---- .../common/items/DemonPlacer.java | 277 ---- .../items/DemonicTelepositionFocus.java | 47 - .../common/items/DuskScribeTool.java | 20 - .../common/items/EarthScribeTool.java | 20 - .../common/items/EnergyBattery.java | 252 ---- .../common/items/EnergyBazooka.java | 219 --- .../common/items/EnergyBlast.java | 214 --- .../common/items/EnergyItems.java | 366 ----- .../common/items/EnergySword.java | 238 ---- .../items/EnhancedTelepositionFocus.java | 46 - .../common/items/FireScribeTool.java | 20 - .../common/items/ItemAlchemyBase.java | 107 -- .../common/items/ItemBlockCrystalBelljar.java | 96 -- .../common/items/ItemBloodRuneBlock.java | 63 - .../common/items/ItemComplexSpellCrystal.java | 108 -- .../common/items/ItemComponents.java | 80 -- .../common/items/ItemDiabloKey.java | 128 -- .../common/items/ItemRitualDiviner.java | 337 ----- .../common/items/ItemSpellEffectBlock.java | 59 - .../items/ItemSpellEnhancementBlock.java | 99 -- .../common/items/ItemSpellModifierBlock.java | 59 - .../common/items/ItemSpellParadigmBlock.java | 58 - .../common/items/LavaCrystal.java | 114 -- .../common/items/LifeBucket.java | 23 - .../common/items/MagicianBloodOrb.java | 21 - .../common/items/MasterBloodOrb.java | 21 - .../common/items/OrbOfTesting.java | 47 - .../items/ReinforcedTelepositionFocus.java | 47 - .../common/items/SacrificialDagger.java | 167 --- .../common/items/ScribeTool.java | 53 - .../common/items/TelepositionFocus.java | 124 -- .../common/items/WaterScribeTool.java | 22 - .../items/energy/ItemAttunedCrystal.java | 387 ----- .../items/energy/ItemDestinationClearer.java | 82 -- .../items/energy/ItemTankSegmenter.java | 278 ---- .../common/items/forestry/ItemBloodFrame.java | 151 -- .../common/items/potion/AlchemyFlask.java | 435 ------ .../common/items/potion/AlchemyReagent.java | 120 -- .../potion/AverageLengtheningCatalyst.java | 20 - .../items/potion/AveragePowerCatalyst.java | 20 - .../items/potion/CombinationalCatalyst.java | 24 - .../items/potion/EnhancedFillingAgent.java | 57 - .../potion/GreaterLengtheningCatalyst.java | 20 - .../items/potion/GreaterPowerCatalyst.java | 20 - .../items/potion/LengtheningCatalyst.java | 64 - .../potion/MundaneLengtheningCatalyst.java | 20 - .../items/potion/MundanePowerCatalyst.java | 20 - .../common/items/potion/PowerCatalyst.java | 64 - .../items/potion/StandardBindingAgent.java | 66 - .../items/potion/StandardFillingAgent.java | 39 - .../common/items/potion/WeakBindingAgent.java | 27 - .../common/items/potion/WeakFillingAgent.java | 85 -- .../common/items/sigil/AirSigil.java | 106 -- .../common/items/sigil/DivinationSigil.java | 141 -- .../items/sigil/ItemBloodLightSigil.java | 145 -- .../common/items/sigil/ItemFluidSigil.java | 811 ----------- .../common/items/sigil/ItemSeerSigil.java | 88 -- .../sigil/ItemSigilOfEnderSeverance.java | 171 --- .../items/sigil/ItemSigilOfSupression.java | 270 ---- .../common/items/sigil/LavaSigil.java | 310 ---- .../items/sigil/SigilOfElementalAffinity.java | 171 --- .../common/items/sigil/SigilOfGrowth.java | 305 ---- .../common/items/sigil/SigilOfHaste.java | 198 --- .../common/items/sigil/SigilOfHolding.java | 371 ----- .../common/items/sigil/SigilOfMagnetism.java | 222 --- .../common/items/sigil/SigilOfTheBridge.java | 336 ----- .../items/sigil/SigilOfTheFastMiner.java | 194 --- .../common/items/sigil/SigilOfWind.java | 196 --- .../common/items/sigil/VoidSigil.java | 195 --- .../common/items/sigil/WaterSigil.java | 285 ---- .../items/spell/ItemSpellMultiTool.java | 861 ----------- .../items/thaumcraft/ItemSanguineArmour.java | 186 --- .../alchemicalWizardry/common/mcmod.info | 22 - .../common/potion/PotionBoost.java | 18 - .../common/potion/PotionDeaf.java | 18 - .../common/potion/PotionDrowning.java | 18 - .../common/potion/PotionFeatherFall.java | 18 - .../common/potion/PotionFireFuse.java | 18 - .../common/potion/PotionFlameCloak.java | 18 - .../common/potion/PotionFlight.java | 18 - .../common/potion/PotionHeavyHeart.java | 18 - .../common/potion/PotionIceCloak.java | 18 - .../common/potion/PotionInhibit.java | 18 - .../common/potion/PotionPlanarBinding.java | 18 - .../potion/PotionProjectileProtect.java | 18 - .../common/potion/PotionReciprocation.java | 18 - .../common/potion/PotionSoulFray.java | 18 - .../common/potion/PotionSoulHarden.java | 18 - .../renderer/AlchemyCircleRenderer.java | 92 -- .../common/renderer/BeamRenderer.java | 155 -- .../common/renderer/MRSRenderer.java | 22 - .../block/RenderAlchemicCalcinator.java | 485 ------- .../common/renderer/block/RenderConduit.java | 43 - .../renderer/block/RenderCrystalBelljar.java | 184 --- .../renderer/block/RenderMasterStone.java | 30 - .../common/renderer/block/RenderPedestal.java | 273 ---- .../common/renderer/block/RenderPlinth.java | 256 ---- .../renderer/block/RenderReagentConduit.java | 75 - .../block/RenderSpellEffectBlock.java | 49 - .../block/RenderSpellEnhancementBlock.java | 49 - .../block/RenderSpellModifierBlock.java | 49 - .../block/RenderSpellParadigmBlock.java | 49 - .../renderer/block/RenderWritingTable.java | 328 ----- .../common/renderer/block/ShaderHelper.java | 184 --- .../renderer/block/TEAltarRenderer.java | 241 ---- .../TEAlchemicalCalcinatorItemRenderer.java | 95 -- .../block/itemRender/TEAltarItemRenderer.java | 81 -- .../itemRender/TEBellJarItemRenderer.java | 206 --- .../itemRender/TEConduitItemRenderer.java | 96 -- .../TESpellEffectBlockItemRenderer.java | 108 -- .../TESpellEnhancementBlockItemRenderer.java | 114 -- .../TESpellModifierBlockItemRenderer.java | 108 -- .../TESpellParadigmBlockItemRenderer.java | 108 -- .../TEWritingTableItemRenderer.java | 82 -- .../common/renderer/mob/RenderBileDemon.java | 27 - .../renderer/mob/RenderBoulderFist.java | 27 - .../common/renderer/mob/RenderElemental.java | 63 - .../renderer/mob/RenderFallenAngel.java | 30 - .../common/renderer/mob/RenderIceDemon.java | 27 - .../renderer/mob/RenderLowerGuardian.java | 27 - .../common/renderer/mob/RenderShade.java | 27 - .../renderer/mob/RenderSmallEarthGolem.java | 27 - .../renderer/mob/RenderWingedFireDemon.java | 27 - .../model/ModelAlchemicalCalcinator.java | 140 -- .../common/renderer/model/ModelBileDemon.java | 181 --- .../renderer/model/ModelBloodAltar.java | 72 - .../renderer/model/ModelBoulderFist.java | 153 -- .../common/renderer/model/ModelConduit.java | 287 ---- .../renderer/model/ModelCrystalBelljar.java | 119 -- .../common/renderer/model/ModelElemental.java | 81 -- .../ModelEnergyBazookaMainProjectile.java | 122 -- .../renderer/model/ModelFallenAngel.java | 113 -- .../common/renderer/model/ModelIceDemon.java | 197 --- .../renderer/model/ModelLowerGuardian.java | 207 --- .../common/renderer/model/ModelMeteor.java | 90 -- .../renderer/model/ModelOmegaArmour.java | 899 ------------ .../common/renderer/model/ModelPedestal.java | 58 - .../common/renderer/model/ModelPlinth.java | 90 -- .../common/renderer/model/ModelShade.java | 86 -- .../renderer/model/ModelSmallEarthGolem.java | 127 -- .../renderer/model/ModelSpellEffectBlock.java | 332 ----- .../model/ModelSpellEnhancementBlock.java | 334 ----- .../model/ModelSpellModifierBlock.java | 303 ---- .../model/ModelSpellParadigmBlock.java | 234 --- .../renderer/model/ModelWingedFireDemon.java | 203 --- .../renderer/model/ModelWritingTable.java | 138 -- .../RenderEnergyBazookaMainProjectile.java | 39 - .../RenderEnergyBlastProjectile.java | 101 -- .../projectile/RenderFireProjectile.java | 41 - .../renderer/projectile/RenderMeteor.java | 39 - .../rituals/RitualEffectAnimalGrowth.java | 163 --- .../rituals/RitualEffectApiaryOverclock.java | 100 -- .../rituals/RitualEffectAutoAlchemy.java | 432 ------ .../rituals/RitualEffectBiomeChanger.java | 440 ------ .../rituals/RitualEffectContainment.java | 133 -- .../common/rituals/RitualEffectCrushing.java | 353 ----- .../common/rituals/RitualEffectEllipsoid.java | 167 --- .../rituals/RitualEffectEvaporation.java | 258 ---- .../common/rituals/RitualEffectExpulsion.java | 345 ----- .../rituals/RitualEffectFeatheredEarth.java | 177 --- .../rituals/RitualEffectFeatheredKnife.java | 189 --- .../common/rituals/RitualEffectFlight.java | 186 --- .../rituals/RitualEffectFullStomach.java | 147 -- .../common/rituals/RitualEffectGrowth.java | 148 -- .../common/rituals/RitualEffectHarvest.java | 143 -- .../common/rituals/RitualEffectHealing.java | 185 --- .../rituals/RitualEffectInterdiction.java | 149 -- .../rituals/RitualEffectItemSuction.java | 178 --- .../common/rituals/RitualEffectJumping.java | 115 -- .../common/rituals/RitualEffectLava.java | 141 -- .../common/rituals/RitualEffectLeap.java | 194 --- .../rituals/RitualEffectLifeConduit.java | 173 --- .../common/rituals/RitualEffectMagnetic.java | 187 --- .../common/rituals/RitualEffectSoulBound.java | 191 --- .../common/rituals/RitualEffectSpawnWard.java | 133 -- .../rituals/RitualEffectSummonMeteor.java | 214 --- .../rituals/RitualEffectSupression.java | 189 --- .../common/rituals/RitualEffectUnbinding.java | 221 --- .../rituals/RitualEffectVeilOfEvil.java | 150 -- .../common/rituals/RitualEffectWater.java | 202 --- .../rituals/RitualEffectWellOfSuffering.java | 146 -- .../spell/complex/EntitySpellProjectile.java | 624 -------- .../common/spell/complex/SpellModifier.java | 21 - .../spell/complex/SpellModifierDefault.java | 9 - .../spell/complex/SpellModifierDefensive.java | 9 - .../complex/SpellModifierEnvironmental.java | 9 - .../spell/complex/SpellModifierOffensive.java | 9 - .../common/spell/complex/SpellParadigm.java | 163 --- .../spell/complex/SpellParadigmMelee.java | 70 - .../complex/SpellParadigmProjectile.java | 102 -- .../spell/complex/SpellParadigmSelf.java | 58 - .../spell/complex/SpellParadigmTool.java | 501 ------- .../spell/complex/effect/SpellEffect.java | 259 ---- .../complex/effect/SpellEffectEarth.java | 280 ---- .../spell/complex/effect/SpellEffectFire.java | 225 --- .../spell/complex/effect/SpellEffectIce.java | 241 ---- .../spell/complex/effect/SpellEffectWind.java | 242 ---- .../spell/complex/effect/SpellHelper.java | 523 ------- .../ExtrapolatedMeleeEntityEffect.java | 74 - .../IMeleeSpellEntityEffect.java | 9 - .../impactEffects/IMeleeSpellWorldEffect.java | 10 - .../IProjectileImpactEffect.java | 11 - .../IProjectileUpdateEffect.java | 8 - .../impactEffects/ISelfSpellEffect.java | 9 - .../MeleeSpellCenteredWorldEffect.java | 33 - .../impactEffects/MeleeSpellWorldEffect.java | 21 - .../impactEffects/ProjectileImpactEffect.java | 15 - .../impactEffects/ProjectileUpdateEffect.java | 15 - .../effect/impactEffects/SelfSpellEffect.java | 18 - .../earth/MeleeDefaultEarth.java | 45 - .../earth/MeleeDefensiveEarth.java | 37 - .../earth/MeleeEnvironmentalEarth.java | 48 - .../earth/MeleeOffensiveEarth.java | 34 - .../earth/ProjectileDefaultEarth.java | 57 - .../earth/ProjectileDefensiveEarth.java | 66 - .../earth/ProjectileEnvironmentalEarth.java | 82 -- .../earth/ProjectileOffensiveEarth.java | 92 -- .../impactEffects/earth/SelfDefaultEarth.java | 52 - .../earth/SelfDefensiveEarth.java | 27 - .../earth/SelfEnvironmentalEarth.java | 37 - .../earth/SelfOffensiveEarth.java | 43 - .../earth/ToolEnvironmentalEarth.java | 86 -- .../earth/ToolOffensiveEarth.java | 58 - .../impactEffects/fire/MeleeDefaultFire.java | 30 - .../fire/MeleeDefensiveFire.java | 49 - .../fire/MeleeEnvironmentalFire.java | 32 - .../fire/MeleeOffensiveFire.java | 32 - .../fire/ProjectileDefaultFire.java | 70 - .../fire/ProjectileDefensiveFire.java | 47 - .../fire/ProjectileEnvironmentalFire.java | 46 - .../fire/ProjectileOffensiveFire.java | 81 -- .../impactEffects/fire/SelfDefaultFire.java | 22 - .../impactEffects/fire/SelfDefensiveFire.java | 43 - .../fire/SelfEnvironmentalFire.java | 56 - .../impactEffects/fire/SelfOffensiveFire.java | 21 - .../impactEffects/fire/ToolDefaultFire.java | 38 - .../fire/ToolEnvironmentalFire.java | 47 - .../impactEffects/fire/ToolOffensiveFire.java | 21 - .../impactEffects/ice/MeleeDefaultIce.java | 28 - .../impactEffects/ice/MeleeDefensiveIce.java | 48 - .../ice/MeleeEnvironmentalIce.java | 40 - .../impactEffects/ice/MeleeOffensiveIce.java | 46 - .../ice/ProjectileDefaultIce.java | 40 - .../ice/ProjectileDefensiveIce.java | 49 - .../ice/ProjectileEnvironmentalIce.java | 39 - .../ice/ProjectileOffensiveIce.java | 32 - .../impactEffects/ice/SelfDefaultIce.java | 41 - .../impactEffects/ice/SelfDefensiveIce.java | 21 - .../ice/SelfEnvironmentalIce.java | 46 - .../impactEffects/ice/SelfOffensiveIce.java | 52 - .../impactEffects/ice/ToolDefaultIce.java | 30 - .../impactEffects/ice/ToolDefensiveIce.java | 62 - .../impactEffects/tool/DigAreaEffect.java | 138 -- .../impactEffects/tool/DigAreaTunnel.java | 171 --- .../impactEffects/tool/IDigAreaEffect.java | 12 - .../impactEffects/tool/IItemManipulator.java | 10 - .../impactEffects/tool/ILeftClickEffect.java | 11 - .../impactEffects/tool/IOnBanishTool.java | 10 - .../impactEffects/tool/IOnBreakBlock.java | 12 - .../impactEffects/tool/IOnSummonTool.java | 10 - .../impactEffects/tool/IRightClickEffect.java | 15 - .../tool/ISpecialDamageEffect.java | 10 - .../impactEffects/tool/IToolUpdateEffect.java | 10 - .../impactEffects/tool/ItemManipulator.java | 22 - .../impactEffects/tool/LeftClickEffect.java | 21 - .../tool/OnBreakBlockEffect.java | 21 - .../impactEffects/tool/RightClickEffect.java | 15 - .../impactEffects/tool/RightClickTunnel.java | 177 --- .../impactEffects/tool/SummonToolEffect.java | 15 - .../impactEffects/wind/MeleeDefaultWind.java | 40 - .../wind/MeleeDefensiveWind.java | 33 - .../wind/MeleeEnvironmentalWind.java | 36 - .../wind/MeleeOffensiveWind.java | 40 - .../wind/ProjectileDefaultWind.java | 33 - .../wind/ProjectileEnvironmentalWind.java | 53 - .../wind/ProjectileOffensiveWind.java | 33 - .../impactEffects/wind/SelfDefaultWind.java | 27 - .../impactEffects/wind/SelfDefensiveWind.java | 39 - .../wind/SelfEnvironmentalWind.java | 45 - .../impactEffects/wind/SelfOffensiveWind.java | 32 - .../impactEffects/wind/ToolDefensiveWind.java | 32 - .../wind/ToolEnvironmentalWind.java | 41 - .../impactEffects/wind/ToolOffensiveWind.java | 24 - .../complex/enhancement/SpellEnhancement.java | 20 - .../enhancement/SpellEnhancementCost.java | 10 - .../enhancement/SpellEnhancementPotency.java | 10 - .../enhancement/SpellEnhancementPower.java | 10 - .../common/spell/simple/HomSpell.java | 143 -- .../spell/simple/HomSpellComponent.java | 26 - .../common/spell/simple/HomSpellRegistry.java | 55 - .../common/spell/simple/ISimpleSpell.java | 16 - .../common/spell/simple/SpellEarthBender.java | 199 --- .../common/spell/simple/SpellExplosions.java | 116 -- .../common/spell/simple/SpellFireBurst.java | 175 --- .../common/spell/simple/SpellFrozenWater.java | 208 --- .../common/spell/simple/SpellHolyBlast.java | 200 --- .../spell/simple/SpellLightningBolt.java | 141 -- .../common/spell/simple/SpellTeleport.java | 289 ---- .../common/spell/simple/SpellWateryGrave.java | 180 --- .../common/spell/simple/SpellWindGust.java | 219 --- .../summoning/SummoningFallenAngel.java | 20 - .../common/summoning/SummoningHelperAW.java | 109 -- .../summoning/meteor/MeteorParadigm.java | 160 --- .../meteor/MeteorParadigmComponent.java | 54 - .../summoning/meteor/MeteorRegistry.java | 61 - .../tileEntity/TEAlchemicCalcinator.java | 376 ----- .../common/tileEntity/TEAltar.java | 1179 --------------- .../common/tileEntity/TEBellJar.java | 158 --- .../common/tileEntity/TEConduit.java | 34 - .../common/tileEntity/TEDemonPortal.java | 1259 ----------------- .../common/tileEntity/TEHomHeart.java | 167 --- .../tileEntity/TEImperfectRitualStone.java | 11 - .../common/tileEntity/TEMasterStone.java | 638 --------- .../common/tileEntity/TEOrientable.java | 109 -- .../common/tileEntity/TEPedestal.java | 268 ---- .../common/tileEntity/TEPlinth.java | 694 --------- .../common/tileEntity/TEReagentConduit.java | 544 ------- .../common/tileEntity/TESchematicSaver.java | 158 --- .../common/tileEntity/TESocket.java | 255 ---- .../common/tileEntity/TESpectralBlock.java | 90 -- .../tileEntity/TESpectralContainer.java | 149 -- .../common/tileEntity/TESpellBlock.java | 48 - .../common/tileEntity/TESpellEffectBlock.java | 43 - .../tileEntity/TESpellEnhancementBlock.java | 155 -- .../tileEntity/TESpellModifierBlock.java | 43 - .../tileEntity/TESpellParadigmBlock.java | 98 -- .../common/tileEntity/TETeleposer.java | 377 ----- .../common/tileEntity/TEWritingTable.java | 916 ------------ .../tileEntity/container/ContainerAltar.java | 96 -- .../container/ContainerTeleposer.java | 106 -- .../container/ContainerWritingTable.java | 104 -- .../common/tileEntity/gui/GuiHandler.java | 73 - .../common/tileEntity/gui/GuiTeleposer.java | 47 - .../tileEntity/gui/GuiWritingTable.java | 45 - .../ShapedBloodOrbRecipe.java | 227 --- .../ShapelessBloodOrbRecipe.java | 140 -- .../nei/NEIAlchemyRecipeHandler.java | 154 -- .../nei/NEIAltarRecipeHandler.java | 182 --- .../nei/NEIBloodOrbShapedHandler.java | 139 -- .../nei/NEIBloodOrbShapelessHandler.java | 130 -- .../alchemicalWizardy/nei/NEIConfig.java | 33 - .../assets/alchemicalwizardry/altar.png | Bin 59034 -> 0 bytes .../alchemicalwizardry/books/architect.xml | 106 -- .../alchemicalwizardry/gui/Teleposer.png | Bin 986 -> 0 bytes .../alchemicalwizardry/gui/WritingTable.png | Bin 1186 -> 0 bytes .../alchemicalwizardry/gui/bookleft.png | Bin 11940 -> 0 bytes .../alchemicalwizardry/gui/nei/alchemy.png | Bin 1400 -> 0 bytes .../alchemicalwizardry/gui/nei/altar.png | Bin 4204 -> 0 bytes .../assets/alchemicalwizardry/lang/de_DE.lang | 181 --- .../assets/alchemicalwizardry/lang/en_US.lang | 194 --- .../assets/alchemicalwizardry/lang/it_IT.lang | 181 --- .../assets/alchemicalwizardry/lang/ko_KR.lang | 194 --- .../assets/alchemicalwizardry/lang/ru_RU.lang | 174 --- .../assets/alchemicalwizardry/lang/zh_CN.lang | 184 --- .../assets/alchemicalwizardry/lang/zh_TW.lang | 184 --- .../models/armor/BloodArmour_WIP.png | Bin 18319 -> 0 bytes .../armor/boundArmour_invisible_layer_1.png | Bin 3785 -> 0 bytes .../armor/boundArmour_invisible_layer_2.png | Bin 3149 -> 0 bytes .../models/armor/boundArmour_layer_1.png | Bin 3830 -> 0 bytes .../models/armor/boundArmour_layer_2.png | Bin 3178 -> 0 bytes .../models/armor/sanguineArmour_layer_1.png | Bin 7732 -> 0 bytes .../models/armor/sanguineArmour_layer_2.png | Bin 1174 -> 0 bytes .../schematics/building/buildings.zip | Bin 11314 -> 0 bytes .../alchemicalwizardry/shaders/beam.frag | 12 - .../textures/blocks/AirRitualStone.png | Bin 706 -> 0 bytes .../textures/blocks/AlchemicChemistrySet.png | Bin 450 -> 0 bytes .../textures/blocks/AltarCapacityRune.png | Bin 761 -> 0 bytes .../textures/blocks/ArcanePedestal.png | Bin 428 -> 0 bytes .../textures/blocks/ArcanePlinth.png | Bin 497 -> 0 bytes .../textures/blocks/BetterCapacityRune.png | Bin 771 -> 0 bytes .../textures/blocks/BlankRune.png | Bin 693 -> 0 bytes .../textures/blocks/BlockBloodLight.png | Bin 220 -> 0 bytes .../textures/blocks/BloodAltar_Bottom.png | Bin 1731 -> 0 bytes .../textures/blocks/BloodAltar_SideType1.png | Bin 1384 -> 0 bytes .../textures/blocks/BloodAltar_SideType2.png | Bin 1435 -> 0 bytes .../textures/blocks/BloodAltar_Top.png | Bin 2261 -> 0 bytes .../textures/blocks/BloodSocket.png | Bin 481 -> 0 bytes .../textures/blocks/BloodStoneBrick.png | Bin 459 -> 0 bytes .../textures/blocks/DislocationRune.png | Bin 741 -> 0 bytes .../textures/blocks/DuskRitualStone.png | Bin 762 -> 0 bytes .../textures/blocks/EarthRitualStone.png | Bin 736 -> 0 bytes .../textures/blocks/EfficiencyRune.png | Bin 738 -> 0 bytes .../textures/blocks/EmptySocket.png | Bin 271 -> 0 bytes .../textures/blocks/FireRitualStone.png | Bin 779 -> 0 bytes .../textures/blocks/HomHeart_bottom.png | Bin 680 -> 0 bytes .../textures/blocks/HomHeart_side.png | Bin 734 -> 0 bytes .../textures/blocks/HomHeart_top.png | Bin 622 -> 0 bytes .../textures/blocks/HomHeart_top1.png | Bin 197 -> 0 bytes .../textures/blocks/ImperfectRitualStone.png | Bin 617 -> 0 bytes .../textures/blocks/LargeBloodStoneBrick.png | Bin 493 -> 0 bytes .../textures/blocks/MasterStone.png | Bin 624 -> 0 bytes .../textures/blocks/OrbCapacityRune.png | Bin 733 -> 0 bytes .../textures/blocks/RitualStone.png | Bin 630 -> 0 bytes .../textures/blocks/RuneOfSacrifice.png | Bin 741 -> 0 bytes .../textures/blocks/RuneOfSelfSacrifice.png | Bin 830 -> 0 bytes .../textures/blocks/SimpleTransCircle.png | Bin 4254 -> 0 bytes .../textures/blocks/SoulForge.png | Bin 632 -> 0 bytes .../textures/blocks/SpectralBlock.png | Bin 629 -> 0 bytes .../textures/blocks/SpeedRune.png | Bin 797 -> 0 bytes .../textures/blocks/Teleposer_Side.png | Bin 719 -> 0 bytes .../textures/blocks/Teleposer_Top.png | Bin 696 -> 0 bytes .../textures/blocks/Testing.png | Bin 815 -> 0 bytes .../textures/blocks/WaterRitualStone.png | Bin 745 -> 0 bytes .../textures/blocks/fireEffectBlock_blank.png | Bin 311 -> 0 bytes .../textures/blocks/fireEffectBlock_input.png | Bin 342 -> 0 bytes .../blocks/fireEffectBlock_output.png | Bin 314 -> 0 bytes .../blocks/fireEffectBlock_upArrow.png | Bin 329 -> 0 bytes .../textures/blocks/lifeEssenceFlowing.png | Bin 576 -> 0 bytes .../textures/blocks/lifeEssenceStill.png | Bin 507 -> 0 bytes .../entities/energyBlastProjectile.png | Bin 302 -> 0 bytes .../textures/entities/explosionProjectile.png | Bin 383 -> 0 bytes .../textures/entities/fireProjectile.png | Bin 268 -> 0 bytes .../textures/entities/holyProjectile.png | Bin 271 -> 0 bytes .../textures/entities/iceProjectile.png | Bin 327 -> 0 bytes .../textures/entities/lightningProjectile.png | Bin 241 -> 0 bytes .../textures/entities/mudProjectile.png | Bin 345 -> 0 bytes .../textures/entities/waterProjectile.png | Bin 384 -> 0 bytes .../textures/entities/windGustProjectile.png | Bin 3540 -> 0 bytes .../textures/gui/GuiTrap.png | Bin 3677 -> 0 bytes .../textures/gui/bookcrafting.png | Bin 3756 -> 0 bytes .../textures/gui/bookfurnace.png | Bin 1664 -> 0 bytes .../textures/gui/bookleft.png | Bin 11940 -> 0 bytes .../textures/gui/bookright.png | Bin 8536 -> 0 bytes .../textures/items/8wWtY8d.png | Bin 319 -> 0 bytes .../textures/items/Aether.png | Bin 3540 -> 0 bytes .../textures/items/AirScribeTool.png | Bin 1167 -> 0 bytes .../textures/items/AirSigil.png | Bin 500 -> 0 bytes .../textures/items/ApprenticeBloodOrb.png | Bin 831 -> 0 bytes .../textures/items/Aquasalus.png | Bin 471 -> 0 bytes .../textures/items/ArchmageBloodOrb.png | Bin 590 -> 0 bytes .../items/ArmourInhibitor_activated.png | Bin 544 -> 0 bytes .../items/ArmourInhibitor_deactivated.png | Bin 556 -> 0 bytes .../textures/items/AttunedCrystal1.png | Bin 221 -> 0 bytes .../textures/items/AttunedCrystal2.png | Bin 177 -> 0 bytes .../items/AverageLengtheningCatalyst.png | Bin 405 -> 0 bytes .../textures/items/AveragePowerCatalyst.png | Bin 387 -> 0 bytes .../textures/items/BlankSlate.png | Bin 554 -> 0 bytes .../textures/items/BlankSpell.png | Bin 339 -> 0 bytes .../textures/items/BloodFrame.png | Bin 363 -> 0 bytes .../textures/items/BloodLightSigil.png | Bin 536 -> 0 bytes .../textures/items/BoundAxe_activated.png | Bin 397 -> 0 bytes .../textures/items/BoundBoots.png | Bin 255 -> 0 bytes .../textures/items/BoundHelmet.png | Bin 253 -> 0 bytes .../textures/items/BoundLeggings.png | Bin 231 -> 0 bytes .../textures/items/BoundPickaxe_activated.png | Bin 394 -> 0 bytes .../items/BoundPickaxe_deactivated.png | Bin 457 -> 0 bytes .../textures/items/BoundPlate.png | Bin 282 -> 0 bytes .../textures/items/BoundShovel_activated.png | Bin 390 -> 0 bytes .../textures/items/BoundSword_activated.png | Bin 386 -> 0 bytes .../textures/items/BoundTool.png | Bin 376 -> 0 bytes .../textures/items/BridgeSigil_activated.png | Bin 632 -> 0 bytes .../items/BridgeSigil_deactivated.png | Bin 534 -> 0 bytes .../textures/items/CeremonialDagger.png | Bin 321 -> 0 bytes .../textures/items/CombinationalCatalyst.png | Bin 548 -> 0 bytes .../textures/items/ComplexCrystal.png | Bin 414 -> 0 bytes .../textures/items/Crepitous.png | Bin 408 -> 0 bytes .../textures/items/Crystallos.png | Bin 391 -> 0 bytes .../textures/items/DaggerOfSacrifice.png | Bin 476 -> 0 bytes .../textures/items/DemonBloodShard.png | Bin 457 -> 0 bytes .../textures/items/DemonPlacer.png | Bin 399 -> 0 bytes .../textures/items/DemonSlate.png | Bin 571 -> 0 bytes .../textures/items/DemonicTeleposerFocus.png | Bin 603 -> 0 bytes .../textures/items/DiabloKey.png | Bin 328 -> 0 bytes .../textures/items/DivinationSigil.png | Bin 625 -> 0 bytes .../textures/items/DuskScribeTool.png | Bin 659 -> 0 bytes .../textures/items/EarthScribeTool.png | Bin 1078 -> 0 bytes .../items/ElementalSigil_activated.png | Bin 659 -> 0 bytes .../items/ElementalSigil_deactivated.png | Bin 598 -> 0 bytes .../textures/items/EnergyBattery.png | Bin 845 -> 0 bytes .../items/EnergyBazooka_activated.png | Bin 696 -> 0 bytes .../items/EnergyBlaster_activated.png | Bin 525 -> 0 bytes .../textures/items/EnhancedFillingAgent.png | Bin 606 -> 0 bytes .../textures/items/EnhancedTeleposerFocus.png | Bin 498 -> 0 bytes .../textures/items/FireScribeTool.png | Bin 1050 -> 0 bytes .../items/GreaterLengtheningCatalyst.png | Bin 491 -> 0 bytes .../textures/items/GreaterPowerCatalyst.png | Bin 432 -> 0 bytes .../textures/items/GrowthSigil_activated.png | Bin 546 -> 0 bytes .../items/GrowthSigil_deactivated.png | Bin 531 -> 0 bytes .../textures/items/HasteSigil_activated.png | Bin 546 -> 0 bytes .../textures/items/HasteSigil_deactivated.png | Bin 562 -> 0 bytes .../textures/items/IceSigil_activated.png | Bin 557 -> 0 bytes .../textures/items/IceSigil_deactivated.png | Bin 562 -> 0 bytes .../textures/items/Incendium.png | Bin 352 -> 0 bytes .../textures/items/InfusedSlate.png | Bin 605 -> 0 bytes .../textures/items/LavaCrystal.png | Bin 585 -> 0 bytes .../textures/items/LavaSigil.png | Bin 573 -> 0 bytes .../textures/items/LifeBucket.png | Bin 659 -> 0 bytes .../textures/items/Magicales.png | Bin 408 -> 0 bytes .../textures/items/MagicianBloodOrb.png | Bin 727 -> 0 bytes .../textures/items/MasterBloodOrb.png | Bin 699 -> 0 bytes .../textures/items/MiningSigil_activated.png | Bin 670 -> 0 bytes .../items/MiningSigil_deactivated.png | Bin 649 -> 0 bytes .../items/MundaneLengtheningCatalyst.png | Bin 211 -> 0 bytes .../textures/items/MundanePowerCatalyst.png | Bin 206 -> 0 bytes .../textures/items/PotionFlask.png | Bin 325 -> 0 bytes .../textures/items/ReinforcedSlate.png | Bin 709 -> 0 bytes .../items/ReinforcedTeleposerFocus.png | Bin 552 -> 0 bytes .../textures/items/RitualDiviner.png | Bin 382 -> 0 bytes .../textures/items/SacrificialDagger.png | Bin 50724 -> 0 bytes .../textures/items/Sanctus.png | Bin 491 -> 0 bytes .../textures/items/SanguineHelmet.png | Bin 292 -> 0 bytes .../textures/items/SeerSigil.png | Bin 593 -> 0 bytes .../textures/items/SheathedItem.png | Bin 474 -> 0 bytes .../textures/items/SigilOfHolding.png | Bin 697 -> 0 bytes .../items/SigilOfMagnetism_activated.png | Bin 578 -> 0 bytes .../items/SigilOfMagnetism_deactivated.png | Bin 594 -> 0 bytes .../items/SigilOfSeverance_activated.png | Bin 597 -> 0 bytes .../items/SigilOfSeverance_deactivated.png | Bin 614 -> 0 bytes .../items/SigilOfSupression_activated.png | Bin 637 -> 0 bytes .../items/SigilOfSupression_deactivated.png | Bin 645 -> 0 bytes .../textures/items/SimpleCatalyst.png | Bin 420 -> 0 bytes .../textures/items/StandardBindingAgent.png | Bin 654 -> 0 bytes .../textures/items/StandardFillingAgent.png | Bin 610 -> 0 bytes .../textures/items/TankClearer.png | Bin 194 -> 0 bytes .../textures/items/TankSegmenter1.png | Bin 211 -> 0 bytes .../textures/items/TankSegmenter2.png | Bin 177 -> 0 bytes .../textures/items/TeleposerFocus.png | Bin 530 -> 0 bytes .../textures/items/Tennebrae.png | Bin 397 -> 0 bytes .../textures/items/Terrae.png | Bin 460 -> 0 bytes .../textures/items/UntamedCrystal.png | Bin 239 -> 0 bytes .../textures/items/VoidSigil.png | Bin 679 -> 0 bytes .../textures/items/WarriorSigil_activated.png | Bin 682 -> 0 bytes .../items/WarriorSigil_deactivated.png | Bin 616 -> 0 bytes .../textures/items/WaterScribeTool.png | Bin 1086 -> 0 bytes .../textures/items/WaterSigil.png | Bin 590 -> 0 bytes .../textures/items/WeakBindingAgent.png | Bin 402 -> 0 bytes .../textures/items/WeakBloodShard.png | Bin 473 -> 0 bytes .../textures/items/WeakFillingAgent.png | Bin 582 -> 0 bytes .../textures/items/WindSigil_activated.png | Bin 624 -> 0 bytes .../textures/items/WindSigil_deactivated.png | Bin 503 -> 0 bytes .../items/activationCrystalAwakened.png | Bin 689 -> 0 bytes .../textures/items/activationCrystalWeak.png | Bin 765 -> 0 bytes .../baseAlchemyItemConcentratedCatalyst.png | Bin 478 -> 0 bytes .../items/baseAlchemyItemFracturedBone.png | Bin 377 -> 0 bytes .../textures/items/baseAlchemyItemOffensa.png | Bin 367 -> 0 bytes .../items/baseAlchemyItemOrbisTerrae.png | Bin 425 -> 0 bytes .../items/baseAlchemyItemPotentia.png | Bin 433 -> 0 bytes .../items/baseAlchemyItemPraesidium.png | Bin 456 -> 0 bytes .../items/baseAlchemyItemReductus.png | Bin 429 -> 0 bytes .../baseAlchemyItemStrengthenedCatalyst.png | Bin 430 -> 0 bytes .../textures/items/baseAlchemyItemVirtus.png | Bin 417 -> 0 bytes .../textures/items/baseItemCostCore.png | Bin 471 -> 0 bytes .../items/baseItemCrackedRunicPlate.png | Bin 523 -> 0 bytes .../textures/items/baseItemDefaultCore.png | Bin 327 -> 0 bytes .../textures/items/baseItemDefensiveCore.png | Bin 502 -> 0 bytes .../textures/items/baseItemEarthenCore.png | Bin 454 -> 0 bytes .../textures/items/baseItemEmptyCore.png | Bin 237 -> 0 bytes .../items/baseItemEnvironmentalCore.png | Bin 370 -> 0 bytes .../textures/items/baseItemFlameCore.png | Bin 488 -> 0 bytes .../textures/items/baseItemGustCore.png | Bin 488 -> 0 bytes .../textures/items/baseItemIcyCore.png | Bin 551 -> 0 bytes .../textures/items/baseItemInputCable.png | Bin 291 -> 0 bytes .../textures/items/baseItemMagicalesCable.png | Bin 284 -> 0 bytes .../textures/items/baseItemMeleeCore.png | Bin 461 -> 0 bytes .../textures/items/baseItemObsidianBrace.png | Bin 325 -> 0 bytes .../textures/items/baseItemOffensiveCore.png | Bin 353 -> 0 bytes .../textures/items/baseItemOutputCable.png | Bin 290 -> 0 bytes .../items/baseItemParadigmBackPlate.png | Bin 306 -> 0 bytes .../textures/items/baseItemPotencyCore.png | Bin 378 -> 0 bytes .../textures/items/baseItemPowerCore.png | Bin 381 -> 0 bytes .../textures/items/baseItemProjectileCore.png | Bin 478 -> 0 bytes .../textures/items/baseItemQuartzRod.png | Bin 251 -> 0 bytes .../textures/items/baseItemRunicPlate.png | Bin 442 -> 0 bytes .../items/baseItemScribedRunicPlate.png | Bin 513 -> 0 bytes .../textures/items/baseItemSelfCore.png | Bin 433 -> 0 bytes .../textures/items/baseItemStoneBrace.png | Bin 308 -> 0 bytes .../textures/items/baseItemToolCore.png | Bin 453 -> 0 bytes .../textures/items/baseItemWoodBrace.png | Bin 316 -> 0 bytes .../textures/items/bloodBlastOrn.png | Bin 178 -> 0 bytes .../textures/items/focusBloodBlastOrn.png | Bin 178 -> 0 bytes .../textures/items/tYf5ft9.png | Bin 291 -> 0 bytes .../textures/models/AirFloatingBeacon.png | Bin 480 -> 0 bytes .../textures/models/AlchemicalCalcinator.png | Bin 5800 -> 0 bytes .../textures/models/BileDemon.png | Bin 7737 -> 0 bytes .../textures/models/Bird.png | Bin 3007 -> 0 bytes .../textures/models/BlockSpellEffect.png | Bin 985 -> 0 bytes .../textures/models/BoulderFist.png | Bin 4025 -> 0 bytes .../textures/models/Conduit.png | Bin 1867 -> 0 bytes .../textures/models/CrystalBelljar.png | Bin 2886 -> 0 bytes .../textures/models/DarkFloatingBeacon.png | Bin 488 -> 0 bytes .../textures/models/EarthFloatingBeacon.png | Bin 554 -> 0 bytes .../models/EnergyBazookaMainProjectile.png | Bin 1948 -> 0 bytes .../textures/models/FireFloatingBeacon.png | Bin 805 -> 0 bytes .../textures/models/FloatingBeacon.png | Bin 805 -> 0 bytes .../textures/models/HolyFloatingBeacon.png | Bin 553 -> 0 bytes .../textures/models/IceDemon.png | Bin 3537 -> 0 bytes .../textures/models/LowerGuardian.png | Bin 4228 -> 0 bytes .../textures/models/Meteor.png | Bin 950 -> 0 bytes .../textures/models/ParadigmBlock.png | Bin 923 -> 0 bytes .../textures/models/Pedestal.png | Bin 1219 -> 0 bytes .../textures/models/Plinth.png | Bin 2404 -> 0 bytes .../textures/models/Reagent.png | Bin 396 -> 0 bytes .../textures/models/ShadeMob.png | Bin 2495 -> 0 bytes .../textures/models/SimpleTransCircle.png | Bin 22424 -> 0 bytes .../textures/models/SmallEarthGolem.png | Bin 765 -> 0 bytes .../textures/models/SpellEffectEarth.png | Bin 1833 -> 0 bytes .../textures/models/SpellEffectFire.png | Bin 1721 -> 0 bytes .../textures/models/SpellEffectIce.png | Bin 1481 -> 0 bytes .../textures/models/SpellEffectWind.png | Bin 1679 -> 0 bytes .../textures/models/SpellEnhancementCost1.png | Bin 4871 -> 0 bytes .../textures/models/SpellEnhancementCost2.png | Bin 3603 -> 0 bytes .../textures/models/SpellEnhancementCost3.png | Bin 4021 -> 0 bytes .../models/SpellEnhancementPotency1.png | Bin 4329 -> 0 bytes .../models/SpellEnhancementPotency2.png | Bin 3539 -> 0 bytes .../models/SpellEnhancementPotency3.png | Bin 3947 -> 0 bytes .../models/SpellEnhancementPower1.png | Bin 4449 -> 0 bytes .../models/SpellEnhancementPower2.png | Bin 3738 -> 0 bytes .../models/SpellEnhancementPower3.png | Bin 4062 -> 0 bytes .../textures/models/SpellModifierDefault.png | Bin 1193 -> 0 bytes .../models/SpellModifierDefensive.png | Bin 1608 -> 0 bytes .../models/SpellModifierEnvironmental.png | Bin 1398 -> 0 bytes .../models/SpellModifierOffensive.png | Bin 1350 -> 0 bytes .../textures/models/SpellParadigmMelee.png | Bin 1230 -> 0 bytes .../models/SpellParadigmProjectile.png | Bin 1229 -> 0 bytes .../textures/models/SpellParadigmSelf.png | Bin 1193 -> 0 bytes .../textures/models/SpellParadigmTool.png | Bin 1180 -> 0 bytes .../textures/models/TransCircle.png | Bin 194218 -> 0 bytes .../textures/models/TransCircleBinding.png | Bin 4020 -> 0 bytes .../textures/models/TransCircleSuffering.png | Bin 26961 -> 0 bytes .../textures/models/WaterFloatingBeacon.png | Bin 543 -> 0 bytes .../textures/models/WingedAngel.png | Bin 3549 -> 0 bytes .../textures/models/WingedFireDemon.png | Bin 5121 -> 0 bytes .../textures/models/WritingTable.png | Bin 1851 -> 0 bytes .../textures/models/altar.png | Bin 59034 -> 0 bytes .../textures/models/baseItemToolCore.png | Bin 453 -> 0 bytes .../textures/models/blood.png | Bin 576 -> 0 bytes .../resources/assets/forge/lang/en_US.lang | 5 - .../resources/assets/forge/lang/es_ES.lang | 5 - .../resources/assets/forge/lang/fr_FR.lang | 5 - src-backup/main/resources/mcmod.info | 16 - 855 files changed, 3 insertions(+), 76986 deletions(-) delete mode 100644 src-backup/api/java/thaumcraft/api/IGoggles.java delete mode 100644 src-backup/api/java/thaumcraft/api/IRepairable.java delete mode 100644 src-backup/api/java/thaumcraft/api/IRepairableExtended.java delete mode 100644 src-backup/api/java/thaumcraft/api/IRunicArmor.java delete mode 100644 src-backup/api/java/thaumcraft/api/IScribeTools.java delete mode 100644 src-backup/api/java/thaumcraft/api/IVisDiscountGear.java delete mode 100644 src-backup/api/java/thaumcraft/api/ItemApi.java delete mode 100644 src-backup/api/java/thaumcraft/api/ItemRunic.java delete mode 100644 src-backup/api/java/thaumcraft/api/ThaumcraftApi.java delete mode 100644 src-backup/api/java/thaumcraft/api/ThaumcraftApiHelper.java delete mode 100644 src-backup/api/java/thaumcraft/api/TileThaumcraft.java delete mode 100644 src-backup/api/java/thaumcraft/api/WorldCoordinates.java delete mode 100644 src-backup/api/java/thaumcraft/api/aspects/Aspect.java delete mode 100644 src-backup/api/java/thaumcraft/api/aspects/AspectList.java delete mode 100644 src-backup/api/java/thaumcraft/api/aspects/AspectSourceHelper.java delete mode 100644 src-backup/api/java/thaumcraft/api/aspects/IAspectContainer.java delete mode 100644 src-backup/api/java/thaumcraft/api/aspects/IAspectSource.java delete mode 100644 src-backup/api/java/thaumcraft/api/aspects/IEssentiaContainerItem.java delete mode 100644 src-backup/api/java/thaumcraft/api/aspects/IEssentiaTransport.java delete mode 100644 src-backup/api/java/thaumcraft/api/crafting/CrucibleRecipe.java delete mode 100644 src-backup/api/java/thaumcraft/api/crafting/IArcaneRecipe.java delete mode 100644 src-backup/api/java/thaumcraft/api/crafting/IInfusionStabiliser.java delete mode 100644 src-backup/api/java/thaumcraft/api/crafting/InfusionEnchantmentRecipe.java delete mode 100644 src-backup/api/java/thaumcraft/api/crafting/InfusionRecipe.java delete mode 100644 src-backup/api/java/thaumcraft/api/crafting/ShapedArcaneRecipe.java delete mode 100644 src-backup/api/java/thaumcraft/api/crafting/ShapelessArcaneRecipe.java delete mode 100644 src-backup/api/java/thaumcraft/api/damagesource/DamageSourceIndirectThaumcraftEntity.java delete mode 100644 src-backup/api/java/thaumcraft/api/damagesource/DamageSourceThaumcraft.java delete mode 100644 src-backup/api/java/thaumcraft/api/entities/ITaintedMob.java delete mode 100644 src-backup/api/java/thaumcraft/api/nodes/INode.java delete mode 100644 src-backup/api/java/thaumcraft/api/nodes/IRevealer.java delete mode 100644 src-backup/api/java/thaumcraft/api/nodes/NodeModifier.java delete mode 100644 src-backup/api/java/thaumcraft/api/nodes/NodeType.java delete mode 100644 src-backup/api/java/thaumcraft/api/package-info.java delete mode 100644 src-backup/api/java/thaumcraft/api/potions/PotionFluxTaint.java delete mode 100644 src-backup/api/java/thaumcraft/api/research/IScanEventHandler.java delete mode 100644 src-backup/api/java/thaumcraft/api/research/ResearchCategories.java delete mode 100644 src-backup/api/java/thaumcraft/api/research/ResearchCategoryList.java delete mode 100644 src-backup/api/java/thaumcraft/api/research/ResearchItem.java delete mode 100644 src-backup/api/java/thaumcraft/api/research/ResearchPage.java delete mode 100644 src-backup/api/java/thaumcraft/api/research/ScanResult.java delete mode 100644 src-backup/api/java/thaumcraft/api/visnet/TileVisNode.java delete mode 100644 src-backup/api/java/thaumcraft/api/visnet/VisNetHandler.java delete mode 100644 src-backup/api/java/thaumcraft/api/wands/IWandFocus.java delete mode 100644 src-backup/api/java/thaumcraft/api/wands/IWandRodOnUpdate.java delete mode 100644 src-backup/api/java/thaumcraft/api/wands/IWandTriggerManager.java delete mode 100644 src-backup/api/java/thaumcraft/api/wands/IWandable.java delete mode 100644 src-backup/api/java/thaumcraft/api/wands/ItemFocusBasic.java delete mode 100644 src-backup/api/java/thaumcraft/api/wands/StaffRod.java delete mode 100644 src-backup/api/java/thaumcraft/api/wands/WandCap.java delete mode 100644 src-backup/api/java/thaumcraft/api/wands/WandRod.java delete mode 100644 src-backup/api/java/thaumcraft/api/wands/WandTriggerRegistry.java delete mode 100644 src-backup/main/java/WayofTime/alchemicalWizardry/AlchemicalWizardry.java delete mode 100644 src-backup/main/java/WayofTime/alchemicalWizardry/BloodMagicConfiguration.java delete mode 100644 src-backup/main/java/WayofTime/alchemicalWizardry/ModBlocks.java delete mode 100644 src-backup/main/java/WayofTime/alchemicalWizardry/ModItems.java delete mode 100644 src-backup/main/java/WayofTime/alchemicalWizardry/api/ColourAndCoords.java delete mode 100644 src-backup/main/java/WayofTime/alchemicalWizardry/api/alchemy/AlchemicalPotionCreationHandler.java delete mode 100644 src-backup/main/java/WayofTime/alchemicalWizardry/api/alchemy/AlchemyPotionHandlerComponent.java delete mode 100644 src-backup/main/java/WayofTime/alchemicalWizardry/api/alchemy/AlchemyPotionHelper.java delete mode 100644 src-backup/main/java/WayofTime/alchemicalWizardry/api/alchemy/AlchemyRecipe.java delete mode 100644 src-backup/main/java/WayofTime/alchemicalWizardry/api/alchemy/AlchemyRecipeRegistry.java delete mode 100644 src-backup/main/java/WayofTime/alchemicalWizardry/api/alchemy/energy/IAlchemyGoggles.java delete mode 100644 src-backup/main/java/WayofTime/alchemicalWizardry/api/alchemy/energy/IReagentContainer.java delete mode 100644 src-backup/main/java/WayofTime/alchemicalWizardry/api/alchemy/energy/IReagentHandler.java delete mode 100644 src-backup/main/java/WayofTime/alchemicalWizardry/api/alchemy/energy/ISegmentedReagentHandler.java delete mode 100644 src-backup/main/java/WayofTime/alchemicalWizardry/api/alchemy/energy/Reagent.java delete mode 100644 src-backup/main/java/WayofTime/alchemicalWizardry/api/alchemy/energy/ReagentContainer.java delete mode 100644 src-backup/main/java/WayofTime/alchemicalWizardry/api/alchemy/energy/ReagentContainerInfo.java delete mode 100644 src-backup/main/java/WayofTime/alchemicalWizardry/api/alchemy/energy/ReagentRegistry.java delete mode 100644 src-backup/main/java/WayofTime/alchemicalWizardry/api/alchemy/energy/ReagentStack.java delete mode 100644 src-backup/main/java/WayofTime/alchemicalWizardry/api/alchemy/energy/TileReagentHandler.java delete mode 100644 src-backup/main/java/WayofTime/alchemicalWizardry/api/alchemy/energy/TileSegmentedReagentHandler.java delete mode 100644 src-backup/main/java/WayofTime/alchemicalWizardry/api/altarRecipeRegistry/AltarRecipe.java delete mode 100644 src-backup/main/java/WayofTime/alchemicalWizardry/api/altarRecipeRegistry/AltarRecipeRegistry.java delete mode 100644 src-backup/main/java/WayofTime/alchemicalWizardry/api/bindingRegistry/BindingRecipe.java delete mode 100644 src-backup/main/java/WayofTime/alchemicalWizardry/api/bindingRegistry/BindingRegistry.java delete mode 100644 src-backup/main/java/WayofTime/alchemicalWizardry/api/harvest/HarvestRegistry.java delete mode 100644 src-backup/main/java/WayofTime/alchemicalWizardry/api/harvest/IHarvestHandler.java delete mode 100644 src-backup/main/java/WayofTime/alchemicalWizardry/api/items/ShapedBloodOrbRecipe.java delete mode 100644 src-backup/main/java/WayofTime/alchemicalWizardry/api/items/ShapelessBloodOrbRecipe.java delete mode 100644 src-backup/main/java/WayofTime/alchemicalWizardry/api/items/interfaces/ArmourUpgrade.java delete mode 100644 src-backup/main/java/WayofTime/alchemicalWizardry/api/items/interfaces/IBindable.java delete mode 100644 src-backup/main/java/WayofTime/alchemicalWizardry/api/items/interfaces/IBloodOrb.java delete mode 100644 src-backup/main/java/WayofTime/alchemicalWizardry/api/items/interfaces/IHolding.java delete mode 100644 src-backup/main/java/WayofTime/alchemicalWizardry/api/items/interfaces/IReagentManipulator.java delete mode 100644 src-backup/main/java/WayofTime/alchemicalWizardry/api/rituals/IMasterRitualStone.java delete mode 100644 src-backup/main/java/WayofTime/alchemicalWizardry/api/rituals/IRitualStone.java delete mode 100644 src-backup/main/java/WayofTime/alchemicalWizardry/api/rituals/RitualComponent.java delete mode 100644 src-backup/main/java/WayofTime/alchemicalWizardry/api/rituals/RitualEffect.java delete mode 100644 src-backup/main/java/WayofTime/alchemicalWizardry/api/rituals/Rituals.java delete mode 100644 src-backup/main/java/WayofTime/alchemicalWizardry/api/soulNetwork/LifeEssenceNetwork.java delete mode 100644 src-backup/main/java/WayofTime/alchemicalWizardry/api/soulNetwork/SoulNetworkHandler.java delete mode 100644 src-backup/main/java/WayofTime/alchemicalWizardry/api/summoningRegistry/SummoningHelper.java delete mode 100644 src-backup/main/java/WayofTime/alchemicalWizardry/api/summoningRegistry/SummoningRegistry.java delete mode 100644 src-backup/main/java/WayofTime/alchemicalWizardry/api/summoningRegistry/SummoningRegistryComponent.java delete mode 100644 src-backup/main/java/WayofTime/alchemicalWizardry/api/tile/IBloodAltar.java delete mode 100644 src-backup/main/java/WayofTime/alchemicalWizardry/client/ClientEventHandler.java delete mode 100644 src-backup/main/java/WayofTime/alchemicalWizardry/client/ClientProxy.java delete mode 100644 src-backup/main/java/WayofTime/alchemicalWizardry/client/renderer/ColourThreshold.java delete mode 100644 src-backup/main/java/WayofTime/alchemicalWizardry/client/renderer/HUDElement.java delete mode 100644 src-backup/main/java/WayofTime/alchemicalWizardry/client/renderer/HUDUtils.java delete mode 100644 src-backup/main/java/WayofTime/alchemicalWizardry/client/renderer/RenderHelper.java delete mode 100644 src-backup/main/java/WayofTime/alchemicalWizardry/common/AlchemicalWizardryEventHooks.java delete mode 100644 src-backup/main/java/WayofTime/alchemicalWizardry/common/AlchemicalWizardryFuelHandler.java delete mode 100644 src-backup/main/java/WayofTime/alchemicalWizardry/common/AlchemicalWizardryTickHandler.java delete mode 100644 src-backup/main/java/WayofTime/alchemicalWizardry/common/ArmourComponent.java delete mode 100644 src-backup/main/java/WayofTime/alchemicalWizardry/common/CommonProxy.java delete mode 100644 src-backup/main/java/WayofTime/alchemicalWizardry/common/CoordAndRange.java delete mode 100644 src-backup/main/java/WayofTime/alchemicalWizardry/common/EntityAIFly.java delete mode 100644 src-backup/main/java/WayofTime/alchemicalWizardry/common/EntityAITargetAggro.java delete mode 100644 src-backup/main/java/WayofTime/alchemicalWizardry/common/EntityAirElemental.java delete mode 100644 src-backup/main/java/WayofTime/alchemicalWizardry/common/IBindingAgent.java delete mode 100644 src-backup/main/java/WayofTime/alchemicalWizardry/common/ICatalyst.java delete mode 100644 src-backup/main/java/WayofTime/alchemicalWizardry/common/IDemon.java delete mode 100644 src-backup/main/java/WayofTime/alchemicalWizardry/common/IFillingAgent.java delete mode 100644 src-backup/main/java/WayofTime/alchemicalWizardry/common/Int3.java delete mode 100644 src-backup/main/java/WayofTime/alchemicalWizardry/common/LifeBucketHandler.java delete mode 100644 src-backup/main/java/WayofTime/alchemicalWizardry/common/LifeEssence.java delete mode 100644 src-backup/main/java/WayofTime/alchemicalWizardry/common/ModLivingDropsEvent.java delete mode 100644 src-backup/main/java/WayofTime/alchemicalWizardry/common/NewPacketHandler.java delete mode 100644 src-backup/main/java/WayofTime/alchemicalWizardry/common/PacketHandler.java delete mode 100644 src-backup/main/java/WayofTime/alchemicalWizardry/common/PlinthComponent.java delete mode 100644 src-backup/main/java/WayofTime/alchemicalWizardry/common/alchemy/CombinedPotionComponent.java delete mode 100644 src-backup/main/java/WayofTime/alchemicalWizardry/common/alchemy/CombinedPotionRegistry.java delete mode 100644 src-backup/main/java/WayofTime/alchemicalWizardry/common/alchemy/ICombinationalCatalyst.java delete mode 100644 src-backup/main/java/WayofTime/alchemicalWizardry/common/block/ArmourForge.java delete mode 100644 src-backup/main/java/WayofTime/alchemicalWizardry/common/block/BlockAlchemicCalcinator.java delete mode 100644 src-backup/main/java/WayofTime/alchemicalWizardry/common/block/BlockAltar.java delete mode 100644 src-backup/main/java/WayofTime/alchemicalWizardry/common/block/BlockBelljar.java delete mode 100644 src-backup/main/java/WayofTime/alchemicalWizardry/common/block/BlockBloodLightSource.java delete mode 100644 src-backup/main/java/WayofTime/alchemicalWizardry/common/block/BlockConduit.java delete mode 100644 src-backup/main/java/WayofTime/alchemicalWizardry/common/block/BlockDemonPortal.java delete mode 100644 src-backup/main/java/WayofTime/alchemicalWizardry/common/block/BlockHomHeart.java delete mode 100644 src-backup/main/java/WayofTime/alchemicalWizardry/common/block/BlockMasterStone.java delete mode 100644 src-backup/main/java/WayofTime/alchemicalWizardry/common/block/BlockOrientable.java delete mode 100644 src-backup/main/java/WayofTime/alchemicalWizardry/common/block/BlockPedestal.java delete mode 100644 src-backup/main/java/WayofTime/alchemicalWizardry/common/block/BlockPlinth.java delete mode 100644 src-backup/main/java/WayofTime/alchemicalWizardry/common/block/BlockReagentConduit.java delete mode 100644 src-backup/main/java/WayofTime/alchemicalWizardry/common/block/BlockSchematicSaver.java delete mode 100644 src-backup/main/java/WayofTime/alchemicalWizardry/common/block/BlockSocket.java delete mode 100644 src-backup/main/java/WayofTime/alchemicalWizardry/common/block/BlockSpectralContainer.java delete mode 100644 src-backup/main/java/WayofTime/alchemicalWizardry/common/block/BlockSpellEffect.java delete mode 100644 src-backup/main/java/WayofTime/alchemicalWizardry/common/block/BlockSpellEnhancement.java delete mode 100644 src-backup/main/java/WayofTime/alchemicalWizardry/common/block/BlockSpellModifier.java delete mode 100644 src-backup/main/java/WayofTime/alchemicalWizardry/common/block/BlockSpellParadigm.java delete mode 100644 src-backup/main/java/WayofTime/alchemicalWizardry/common/block/BlockTeleposer.java delete mode 100644 src-backup/main/java/WayofTime/alchemicalWizardry/common/block/BlockWritingTable.java delete mode 100644 src-backup/main/java/WayofTime/alchemicalWizardry/common/block/BloodRune.java delete mode 100644 src-backup/main/java/WayofTime/alchemicalWizardry/common/block/BloodStoneBrick.java delete mode 100644 src-backup/main/java/WayofTime/alchemicalWizardry/common/block/EfficiencyRune.java delete mode 100644 src-backup/main/java/WayofTime/alchemicalWizardry/common/block/EmptySocket.java delete mode 100644 src-backup/main/java/WayofTime/alchemicalWizardry/common/block/IOrientable.java delete mode 100644 src-backup/main/java/WayofTime/alchemicalWizardry/common/block/ImperfectRitualStone.java delete mode 100644 src-backup/main/java/WayofTime/alchemicalWizardry/common/block/LargeBloodStoneBrick.java delete mode 100644 src-backup/main/java/WayofTime/alchemicalWizardry/common/block/LifeEssenceBlock.java delete mode 100644 src-backup/main/java/WayofTime/alchemicalWizardry/common/block/RitualStone.java delete mode 100644 src-backup/main/java/WayofTime/alchemicalWizardry/common/block/RuneOfSacrifice.java delete mode 100644 src-backup/main/java/WayofTime/alchemicalWizardry/common/block/RuneOfSelfSacrifice.java delete mode 100644 src-backup/main/java/WayofTime/alchemicalWizardry/common/block/SpectralBlock.java delete mode 100644 src-backup/main/java/WayofTime/alchemicalWizardry/common/block/SpeedRune.java delete mode 100644 src-backup/main/java/WayofTime/alchemicalWizardry/common/bloodAltarUpgrade/AltarComponent.java delete mode 100644 src-backup/main/java/WayofTime/alchemicalWizardry/common/bloodAltarUpgrade/AltarUpgradeComponent.java delete mode 100644 src-backup/main/java/WayofTime/alchemicalWizardry/common/bloodAltarUpgrade/UpgradedAltars.java delete mode 100644 src-backup/main/java/WayofTime/alchemicalWizardry/common/demonVillage/BlockSet.java delete mode 100644 src-backup/main/java/WayofTime/alchemicalWizardry/common/demonVillage/BuildingSchematic.java delete mode 100644 src-backup/main/java/WayofTime/alchemicalWizardry/common/demonVillage/DemonBuilding.java delete mode 100644 src-backup/main/java/WayofTime/alchemicalWizardry/common/demonVillage/DemonCrosspath.java delete mode 100644 src-backup/main/java/WayofTime/alchemicalWizardry/common/demonVillage/DemonVillagePath.java delete mode 100644 src-backup/main/java/WayofTime/alchemicalWizardry/common/demonVillage/GridSpace.java delete mode 100644 src-backup/main/java/WayofTime/alchemicalWizardry/common/demonVillage/GridSpaceHolder.java delete mode 100644 src-backup/main/java/WayofTime/alchemicalWizardry/common/demonVillage/TileBlockSet.java delete mode 100644 src-backup/main/java/WayofTime/alchemicalWizardry/common/entity/mob/EntityBileDemon.java delete mode 100644 src-backup/main/java/WayofTime/alchemicalWizardry/common/entity/mob/EntityBoulderFist.java delete mode 100644 src-backup/main/java/WayofTime/alchemicalWizardry/common/entity/mob/EntityDemon.java delete mode 100644 src-backup/main/java/WayofTime/alchemicalWizardry/common/entity/mob/EntityEarthElemental.java delete mode 100644 src-backup/main/java/WayofTime/alchemicalWizardry/common/entity/mob/EntityElemental.java delete mode 100644 src-backup/main/java/WayofTime/alchemicalWizardry/common/entity/mob/EntityFallenAngel.java delete mode 100644 src-backup/main/java/WayofTime/alchemicalWizardry/common/entity/mob/EntityFireElemental.java delete mode 100644 src-backup/main/java/WayofTime/alchemicalWizardry/common/entity/mob/EntityHolyElemental.java delete mode 100644 src-backup/main/java/WayofTime/alchemicalWizardry/common/entity/mob/EntityIceDemon.java delete mode 100644 src-backup/main/java/WayofTime/alchemicalWizardry/common/entity/mob/EntityLowerGuardian.java delete mode 100644 src-backup/main/java/WayofTime/alchemicalWizardry/common/entity/mob/EntityShade.java delete mode 100644 src-backup/main/java/WayofTime/alchemicalWizardry/common/entity/mob/EntityShadeElemental.java delete mode 100644 src-backup/main/java/WayofTime/alchemicalWizardry/common/entity/mob/EntitySmallEarthGolem.java delete mode 100644 src-backup/main/java/WayofTime/alchemicalWizardry/common/entity/mob/EntityWaterElemental.java delete mode 100644 src-backup/main/java/WayofTime/alchemicalWizardry/common/entity/mob/EntityWingedFireDemon.java delete mode 100644 src-backup/main/java/WayofTime/alchemicalWizardry/common/entity/projectile/EnergyBlastProjectile.java delete mode 100644 src-backup/main/java/WayofTime/alchemicalWizardry/common/entity/projectile/EntityBeamParticle.java delete mode 100644 src-backup/main/java/WayofTime/alchemicalWizardry/common/entity/projectile/EntityBloodLightProjectile.java delete mode 100644 src-backup/main/java/WayofTime/alchemicalWizardry/common/entity/projectile/EntityEnergyBazookaMainProjectile.java delete mode 100644 src-backup/main/java/WayofTime/alchemicalWizardry/common/entity/projectile/EntityEnergyBazookaSecondaryProjectile.java delete mode 100644 src-backup/main/java/WayofTime/alchemicalWizardry/common/entity/projectile/EntityMeteor.java delete mode 100644 src-backup/main/java/WayofTime/alchemicalWizardry/common/entity/projectile/EntityParticleBeam.java delete mode 100644 src-backup/main/java/WayofTime/alchemicalWizardry/common/entity/projectile/ExplosionProjectile.java delete mode 100644 src-backup/main/java/WayofTime/alchemicalWizardry/common/entity/projectile/FireProjectile.java delete mode 100644 src-backup/main/java/WayofTime/alchemicalWizardry/common/entity/projectile/HolyProjectile.java delete mode 100644 src-backup/main/java/WayofTime/alchemicalWizardry/common/entity/projectile/IceProjectile.java delete mode 100644 src-backup/main/java/WayofTime/alchemicalWizardry/common/entity/projectile/LightningBoltProjectile.java delete mode 100644 src-backup/main/java/WayofTime/alchemicalWizardry/common/entity/projectile/MudProjectile.java delete mode 100644 src-backup/main/java/WayofTime/alchemicalWizardry/common/entity/projectile/TeleportProjectile.java delete mode 100644 src-backup/main/java/WayofTime/alchemicalWizardry/common/entity/projectile/WaterProjectile.java delete mode 100644 src-backup/main/java/WayofTime/alchemicalWizardry/common/entity/projectile/WindGustProjectile.java delete mode 100644 src-backup/main/java/WayofTime/alchemicalWizardry/common/harvest/BloodMagicHarvestHandler.java delete mode 100644 src-backup/main/java/WayofTime/alchemicalWizardry/common/harvest/CactusReedHarvestHandler.java delete mode 100644 src-backup/main/java/WayofTime/alchemicalWizardry/common/harvest/GenericPamSeedlessFruitHarvestHandler.java delete mode 100644 src-backup/main/java/WayofTime/alchemicalWizardry/common/harvest/GenericSeededHarvestHandler.java delete mode 100644 src-backup/main/java/WayofTime/alchemicalWizardry/common/harvest/GourdHarvestHandler.java delete mode 100644 src-backup/main/java/WayofTime/alchemicalWizardry/common/harvest/PamHarvestCompatRegistry.java delete mode 100644 src-backup/main/java/WayofTime/alchemicalWizardry/common/items/AWBaseItems.java delete mode 100644 src-backup/main/java/WayofTime/alchemicalWizardry/common/items/ActivationCrystal.java delete mode 100644 src-backup/main/java/WayofTime/alchemicalWizardry/common/items/AirScribeTool.java delete mode 100644 src-backup/main/java/WayofTime/alchemicalWizardry/common/items/ApprenticeBloodOrb.java delete mode 100644 src-backup/main/java/WayofTime/alchemicalWizardry/common/items/ArchmageBloodOrb.java delete mode 100644 src-backup/main/java/WayofTime/alchemicalWizardry/common/items/ArmourInhibitor.java delete mode 100644 src-backup/main/java/WayofTime/alchemicalWizardry/common/items/BlankSpell.java delete mode 100644 src-backup/main/java/WayofTime/alchemicalWizardry/common/items/BloodShard.java delete mode 100644 src-backup/main/java/WayofTime/alchemicalWizardry/common/items/BloodboundSword.java delete mode 100644 src-backup/main/java/WayofTime/alchemicalWizardry/common/items/BoundArmour.java delete mode 100644 src-backup/main/java/WayofTime/alchemicalWizardry/common/items/BoundAxe.java delete mode 100644 src-backup/main/java/WayofTime/alchemicalWizardry/common/items/BoundPickaxe.java delete mode 100644 src-backup/main/java/WayofTime/alchemicalWizardry/common/items/BoundShovel.java delete mode 100644 src-backup/main/java/WayofTime/alchemicalWizardry/common/items/CheatyItem.java delete mode 100644 src-backup/main/java/WayofTime/alchemicalWizardry/common/items/DaggerOfSacrifice.java delete mode 100644 src-backup/main/java/WayofTime/alchemicalWizardry/common/items/DemonPlacer.java delete mode 100644 src-backup/main/java/WayofTime/alchemicalWizardry/common/items/DemonicTelepositionFocus.java delete mode 100644 src-backup/main/java/WayofTime/alchemicalWizardry/common/items/DuskScribeTool.java delete mode 100644 src-backup/main/java/WayofTime/alchemicalWizardry/common/items/EarthScribeTool.java delete mode 100644 src-backup/main/java/WayofTime/alchemicalWizardry/common/items/EnergyBattery.java delete mode 100644 src-backup/main/java/WayofTime/alchemicalWizardry/common/items/EnergyBazooka.java delete mode 100644 src-backup/main/java/WayofTime/alchemicalWizardry/common/items/EnergyBlast.java delete mode 100644 src-backup/main/java/WayofTime/alchemicalWizardry/common/items/EnergyItems.java delete mode 100644 src-backup/main/java/WayofTime/alchemicalWizardry/common/items/EnergySword.java delete mode 100644 src-backup/main/java/WayofTime/alchemicalWizardry/common/items/EnhancedTelepositionFocus.java delete mode 100644 src-backup/main/java/WayofTime/alchemicalWizardry/common/items/FireScribeTool.java delete mode 100644 src-backup/main/java/WayofTime/alchemicalWizardry/common/items/ItemAlchemyBase.java delete mode 100644 src-backup/main/java/WayofTime/alchemicalWizardry/common/items/ItemBlockCrystalBelljar.java delete mode 100644 src-backup/main/java/WayofTime/alchemicalWizardry/common/items/ItemBloodRuneBlock.java delete mode 100644 src-backup/main/java/WayofTime/alchemicalWizardry/common/items/ItemComplexSpellCrystal.java delete mode 100644 src-backup/main/java/WayofTime/alchemicalWizardry/common/items/ItemComponents.java delete mode 100644 src-backup/main/java/WayofTime/alchemicalWizardry/common/items/ItemDiabloKey.java delete mode 100644 src-backup/main/java/WayofTime/alchemicalWizardry/common/items/ItemRitualDiviner.java delete mode 100644 src-backup/main/java/WayofTime/alchemicalWizardry/common/items/ItemSpellEffectBlock.java delete mode 100644 src-backup/main/java/WayofTime/alchemicalWizardry/common/items/ItemSpellEnhancementBlock.java delete mode 100644 src-backup/main/java/WayofTime/alchemicalWizardry/common/items/ItemSpellModifierBlock.java delete mode 100644 src-backup/main/java/WayofTime/alchemicalWizardry/common/items/ItemSpellParadigmBlock.java delete mode 100644 src-backup/main/java/WayofTime/alchemicalWizardry/common/items/LavaCrystal.java delete mode 100644 src-backup/main/java/WayofTime/alchemicalWizardry/common/items/LifeBucket.java delete mode 100644 src-backup/main/java/WayofTime/alchemicalWizardry/common/items/MagicianBloodOrb.java delete mode 100644 src-backup/main/java/WayofTime/alchemicalWizardry/common/items/MasterBloodOrb.java delete mode 100644 src-backup/main/java/WayofTime/alchemicalWizardry/common/items/OrbOfTesting.java delete mode 100644 src-backup/main/java/WayofTime/alchemicalWizardry/common/items/ReinforcedTelepositionFocus.java delete mode 100644 src-backup/main/java/WayofTime/alchemicalWizardry/common/items/SacrificialDagger.java delete mode 100644 src-backup/main/java/WayofTime/alchemicalWizardry/common/items/ScribeTool.java delete mode 100644 src-backup/main/java/WayofTime/alchemicalWizardry/common/items/TelepositionFocus.java delete mode 100644 src-backup/main/java/WayofTime/alchemicalWizardry/common/items/WaterScribeTool.java delete mode 100644 src-backup/main/java/WayofTime/alchemicalWizardry/common/items/energy/ItemAttunedCrystal.java delete mode 100644 src-backup/main/java/WayofTime/alchemicalWizardry/common/items/energy/ItemDestinationClearer.java delete mode 100644 src-backup/main/java/WayofTime/alchemicalWizardry/common/items/energy/ItemTankSegmenter.java delete mode 100644 src-backup/main/java/WayofTime/alchemicalWizardry/common/items/forestry/ItemBloodFrame.java delete mode 100644 src-backup/main/java/WayofTime/alchemicalWizardry/common/items/potion/AlchemyFlask.java delete mode 100644 src-backup/main/java/WayofTime/alchemicalWizardry/common/items/potion/AlchemyReagent.java delete mode 100644 src-backup/main/java/WayofTime/alchemicalWizardry/common/items/potion/AverageLengtheningCatalyst.java delete mode 100644 src-backup/main/java/WayofTime/alchemicalWizardry/common/items/potion/AveragePowerCatalyst.java delete mode 100644 src-backup/main/java/WayofTime/alchemicalWizardry/common/items/potion/CombinationalCatalyst.java delete mode 100644 src-backup/main/java/WayofTime/alchemicalWizardry/common/items/potion/EnhancedFillingAgent.java delete mode 100644 src-backup/main/java/WayofTime/alchemicalWizardry/common/items/potion/GreaterLengtheningCatalyst.java delete mode 100644 src-backup/main/java/WayofTime/alchemicalWizardry/common/items/potion/GreaterPowerCatalyst.java delete mode 100644 src-backup/main/java/WayofTime/alchemicalWizardry/common/items/potion/LengtheningCatalyst.java delete mode 100644 src-backup/main/java/WayofTime/alchemicalWizardry/common/items/potion/MundaneLengtheningCatalyst.java delete mode 100644 src-backup/main/java/WayofTime/alchemicalWizardry/common/items/potion/MundanePowerCatalyst.java delete mode 100644 src-backup/main/java/WayofTime/alchemicalWizardry/common/items/potion/PowerCatalyst.java delete mode 100644 src-backup/main/java/WayofTime/alchemicalWizardry/common/items/potion/StandardBindingAgent.java delete mode 100644 src-backup/main/java/WayofTime/alchemicalWizardry/common/items/potion/StandardFillingAgent.java delete mode 100644 src-backup/main/java/WayofTime/alchemicalWizardry/common/items/potion/WeakBindingAgent.java delete mode 100644 src-backup/main/java/WayofTime/alchemicalWizardry/common/items/potion/WeakFillingAgent.java delete mode 100644 src-backup/main/java/WayofTime/alchemicalWizardry/common/items/sigil/AirSigil.java delete mode 100644 src-backup/main/java/WayofTime/alchemicalWizardry/common/items/sigil/DivinationSigil.java delete mode 100644 src-backup/main/java/WayofTime/alchemicalWizardry/common/items/sigil/ItemBloodLightSigil.java delete mode 100644 src-backup/main/java/WayofTime/alchemicalWizardry/common/items/sigil/ItemFluidSigil.java delete mode 100644 src-backup/main/java/WayofTime/alchemicalWizardry/common/items/sigil/ItemSeerSigil.java delete mode 100644 src-backup/main/java/WayofTime/alchemicalWizardry/common/items/sigil/ItemSigilOfEnderSeverance.java delete mode 100644 src-backup/main/java/WayofTime/alchemicalWizardry/common/items/sigil/ItemSigilOfSupression.java delete mode 100644 src-backup/main/java/WayofTime/alchemicalWizardry/common/items/sigil/LavaSigil.java delete mode 100644 src-backup/main/java/WayofTime/alchemicalWizardry/common/items/sigil/SigilOfElementalAffinity.java delete mode 100644 src-backup/main/java/WayofTime/alchemicalWizardry/common/items/sigil/SigilOfGrowth.java delete mode 100644 src-backup/main/java/WayofTime/alchemicalWizardry/common/items/sigil/SigilOfHaste.java delete mode 100644 src-backup/main/java/WayofTime/alchemicalWizardry/common/items/sigil/SigilOfHolding.java delete mode 100644 src-backup/main/java/WayofTime/alchemicalWizardry/common/items/sigil/SigilOfMagnetism.java delete mode 100644 src-backup/main/java/WayofTime/alchemicalWizardry/common/items/sigil/SigilOfTheBridge.java delete mode 100644 src-backup/main/java/WayofTime/alchemicalWizardry/common/items/sigil/SigilOfTheFastMiner.java delete mode 100644 src-backup/main/java/WayofTime/alchemicalWizardry/common/items/sigil/SigilOfWind.java delete mode 100644 src-backup/main/java/WayofTime/alchemicalWizardry/common/items/sigil/VoidSigil.java delete mode 100644 src-backup/main/java/WayofTime/alchemicalWizardry/common/items/sigil/WaterSigil.java delete mode 100644 src-backup/main/java/WayofTime/alchemicalWizardry/common/items/spell/ItemSpellMultiTool.java delete mode 100644 src-backup/main/java/WayofTime/alchemicalWizardry/common/items/thaumcraft/ItemSanguineArmour.java delete mode 100644 src-backup/main/java/WayofTime/alchemicalWizardry/common/mcmod.info delete mode 100644 src-backup/main/java/WayofTime/alchemicalWizardry/common/potion/PotionBoost.java delete mode 100644 src-backup/main/java/WayofTime/alchemicalWizardry/common/potion/PotionDeaf.java delete mode 100644 src-backup/main/java/WayofTime/alchemicalWizardry/common/potion/PotionDrowning.java delete mode 100644 src-backup/main/java/WayofTime/alchemicalWizardry/common/potion/PotionFeatherFall.java delete mode 100644 src-backup/main/java/WayofTime/alchemicalWizardry/common/potion/PotionFireFuse.java delete mode 100644 src-backup/main/java/WayofTime/alchemicalWizardry/common/potion/PotionFlameCloak.java delete mode 100644 src-backup/main/java/WayofTime/alchemicalWizardry/common/potion/PotionFlight.java delete mode 100644 src-backup/main/java/WayofTime/alchemicalWizardry/common/potion/PotionHeavyHeart.java delete mode 100644 src-backup/main/java/WayofTime/alchemicalWizardry/common/potion/PotionIceCloak.java delete mode 100644 src-backup/main/java/WayofTime/alchemicalWizardry/common/potion/PotionInhibit.java delete mode 100644 src-backup/main/java/WayofTime/alchemicalWizardry/common/potion/PotionPlanarBinding.java delete mode 100644 src-backup/main/java/WayofTime/alchemicalWizardry/common/potion/PotionProjectileProtect.java delete mode 100644 src-backup/main/java/WayofTime/alchemicalWizardry/common/potion/PotionReciprocation.java delete mode 100644 src-backup/main/java/WayofTime/alchemicalWizardry/common/potion/PotionSoulFray.java delete mode 100644 src-backup/main/java/WayofTime/alchemicalWizardry/common/potion/PotionSoulHarden.java delete mode 100644 src-backup/main/java/WayofTime/alchemicalWizardry/common/renderer/AlchemyCircleRenderer.java delete mode 100644 src-backup/main/java/WayofTime/alchemicalWizardry/common/renderer/BeamRenderer.java delete mode 100644 src-backup/main/java/WayofTime/alchemicalWizardry/common/renderer/MRSRenderer.java delete mode 100644 src-backup/main/java/WayofTime/alchemicalWizardry/common/renderer/block/RenderAlchemicCalcinator.java delete mode 100644 src-backup/main/java/WayofTime/alchemicalWizardry/common/renderer/block/RenderConduit.java delete mode 100644 src-backup/main/java/WayofTime/alchemicalWizardry/common/renderer/block/RenderCrystalBelljar.java delete mode 100644 src-backup/main/java/WayofTime/alchemicalWizardry/common/renderer/block/RenderMasterStone.java delete mode 100644 src-backup/main/java/WayofTime/alchemicalWizardry/common/renderer/block/RenderPedestal.java delete mode 100644 src-backup/main/java/WayofTime/alchemicalWizardry/common/renderer/block/RenderPlinth.java delete mode 100644 src-backup/main/java/WayofTime/alchemicalWizardry/common/renderer/block/RenderReagentConduit.java delete mode 100644 src-backup/main/java/WayofTime/alchemicalWizardry/common/renderer/block/RenderSpellEffectBlock.java delete mode 100644 src-backup/main/java/WayofTime/alchemicalWizardry/common/renderer/block/RenderSpellEnhancementBlock.java delete mode 100644 src-backup/main/java/WayofTime/alchemicalWizardry/common/renderer/block/RenderSpellModifierBlock.java delete mode 100644 src-backup/main/java/WayofTime/alchemicalWizardry/common/renderer/block/RenderSpellParadigmBlock.java delete mode 100644 src-backup/main/java/WayofTime/alchemicalWizardry/common/renderer/block/RenderWritingTable.java delete mode 100644 src-backup/main/java/WayofTime/alchemicalWizardry/common/renderer/block/ShaderHelper.java delete mode 100644 src-backup/main/java/WayofTime/alchemicalWizardry/common/renderer/block/TEAltarRenderer.java delete mode 100644 src-backup/main/java/WayofTime/alchemicalWizardry/common/renderer/block/itemRender/TEAlchemicalCalcinatorItemRenderer.java delete mode 100644 src-backup/main/java/WayofTime/alchemicalWizardry/common/renderer/block/itemRender/TEAltarItemRenderer.java delete mode 100644 src-backup/main/java/WayofTime/alchemicalWizardry/common/renderer/block/itemRender/TEBellJarItemRenderer.java delete mode 100644 src-backup/main/java/WayofTime/alchemicalWizardry/common/renderer/block/itemRender/TEConduitItemRenderer.java delete mode 100644 src-backup/main/java/WayofTime/alchemicalWizardry/common/renderer/block/itemRender/TESpellEffectBlockItemRenderer.java delete mode 100644 src-backup/main/java/WayofTime/alchemicalWizardry/common/renderer/block/itemRender/TESpellEnhancementBlockItemRenderer.java delete mode 100644 src-backup/main/java/WayofTime/alchemicalWizardry/common/renderer/block/itemRender/TESpellModifierBlockItemRenderer.java delete mode 100644 src-backup/main/java/WayofTime/alchemicalWizardry/common/renderer/block/itemRender/TESpellParadigmBlockItemRenderer.java delete mode 100644 src-backup/main/java/WayofTime/alchemicalWizardry/common/renderer/block/itemRender/TEWritingTableItemRenderer.java delete mode 100644 src-backup/main/java/WayofTime/alchemicalWizardry/common/renderer/mob/RenderBileDemon.java delete mode 100644 src-backup/main/java/WayofTime/alchemicalWizardry/common/renderer/mob/RenderBoulderFist.java delete mode 100644 src-backup/main/java/WayofTime/alchemicalWizardry/common/renderer/mob/RenderElemental.java delete mode 100644 src-backup/main/java/WayofTime/alchemicalWizardry/common/renderer/mob/RenderFallenAngel.java delete mode 100644 src-backup/main/java/WayofTime/alchemicalWizardry/common/renderer/mob/RenderIceDemon.java delete mode 100644 src-backup/main/java/WayofTime/alchemicalWizardry/common/renderer/mob/RenderLowerGuardian.java delete mode 100644 src-backup/main/java/WayofTime/alchemicalWizardry/common/renderer/mob/RenderShade.java delete mode 100644 src-backup/main/java/WayofTime/alchemicalWizardry/common/renderer/mob/RenderSmallEarthGolem.java delete mode 100644 src-backup/main/java/WayofTime/alchemicalWizardry/common/renderer/mob/RenderWingedFireDemon.java delete mode 100644 src-backup/main/java/WayofTime/alchemicalWizardry/common/renderer/model/ModelAlchemicalCalcinator.java delete mode 100644 src-backup/main/java/WayofTime/alchemicalWizardry/common/renderer/model/ModelBileDemon.java delete mode 100644 src-backup/main/java/WayofTime/alchemicalWizardry/common/renderer/model/ModelBloodAltar.java delete mode 100644 src-backup/main/java/WayofTime/alchemicalWizardry/common/renderer/model/ModelBoulderFist.java delete mode 100644 src-backup/main/java/WayofTime/alchemicalWizardry/common/renderer/model/ModelConduit.java delete mode 100644 src-backup/main/java/WayofTime/alchemicalWizardry/common/renderer/model/ModelCrystalBelljar.java delete mode 100644 src-backup/main/java/WayofTime/alchemicalWizardry/common/renderer/model/ModelElemental.java delete mode 100644 src-backup/main/java/WayofTime/alchemicalWizardry/common/renderer/model/ModelEnergyBazookaMainProjectile.java delete mode 100644 src-backup/main/java/WayofTime/alchemicalWizardry/common/renderer/model/ModelFallenAngel.java delete mode 100644 src-backup/main/java/WayofTime/alchemicalWizardry/common/renderer/model/ModelIceDemon.java delete mode 100644 src-backup/main/java/WayofTime/alchemicalWizardry/common/renderer/model/ModelLowerGuardian.java delete mode 100644 src-backup/main/java/WayofTime/alchemicalWizardry/common/renderer/model/ModelMeteor.java delete mode 100644 src-backup/main/java/WayofTime/alchemicalWizardry/common/renderer/model/ModelOmegaArmour.java delete mode 100644 src-backup/main/java/WayofTime/alchemicalWizardry/common/renderer/model/ModelPedestal.java delete mode 100644 src-backup/main/java/WayofTime/alchemicalWizardry/common/renderer/model/ModelPlinth.java delete mode 100644 src-backup/main/java/WayofTime/alchemicalWizardry/common/renderer/model/ModelShade.java delete mode 100644 src-backup/main/java/WayofTime/alchemicalWizardry/common/renderer/model/ModelSmallEarthGolem.java delete mode 100644 src-backup/main/java/WayofTime/alchemicalWizardry/common/renderer/model/ModelSpellEffectBlock.java delete mode 100644 src-backup/main/java/WayofTime/alchemicalWizardry/common/renderer/model/ModelSpellEnhancementBlock.java delete mode 100644 src-backup/main/java/WayofTime/alchemicalWizardry/common/renderer/model/ModelSpellModifierBlock.java delete mode 100644 src-backup/main/java/WayofTime/alchemicalWizardry/common/renderer/model/ModelSpellParadigmBlock.java delete mode 100644 src-backup/main/java/WayofTime/alchemicalWizardry/common/renderer/model/ModelWingedFireDemon.java delete mode 100644 src-backup/main/java/WayofTime/alchemicalWizardry/common/renderer/model/ModelWritingTable.java delete mode 100644 src-backup/main/java/WayofTime/alchemicalWizardry/common/renderer/projectile/RenderEnergyBazookaMainProjectile.java delete mode 100644 src-backup/main/java/WayofTime/alchemicalWizardry/common/renderer/projectile/RenderEnergyBlastProjectile.java delete mode 100644 src-backup/main/java/WayofTime/alchemicalWizardry/common/renderer/projectile/RenderFireProjectile.java delete mode 100644 src-backup/main/java/WayofTime/alchemicalWizardry/common/renderer/projectile/RenderMeteor.java delete mode 100644 src-backup/main/java/WayofTime/alchemicalWizardry/common/rituals/RitualEffectAnimalGrowth.java delete mode 100644 src-backup/main/java/WayofTime/alchemicalWizardry/common/rituals/RitualEffectApiaryOverclock.java delete mode 100644 src-backup/main/java/WayofTime/alchemicalWizardry/common/rituals/RitualEffectAutoAlchemy.java delete mode 100644 src-backup/main/java/WayofTime/alchemicalWizardry/common/rituals/RitualEffectBiomeChanger.java delete mode 100644 src-backup/main/java/WayofTime/alchemicalWizardry/common/rituals/RitualEffectContainment.java delete mode 100644 src-backup/main/java/WayofTime/alchemicalWizardry/common/rituals/RitualEffectCrushing.java delete mode 100644 src-backup/main/java/WayofTime/alchemicalWizardry/common/rituals/RitualEffectEllipsoid.java delete mode 100644 src-backup/main/java/WayofTime/alchemicalWizardry/common/rituals/RitualEffectEvaporation.java delete mode 100644 src-backup/main/java/WayofTime/alchemicalWizardry/common/rituals/RitualEffectExpulsion.java delete mode 100644 src-backup/main/java/WayofTime/alchemicalWizardry/common/rituals/RitualEffectFeatheredEarth.java delete mode 100644 src-backup/main/java/WayofTime/alchemicalWizardry/common/rituals/RitualEffectFeatheredKnife.java delete mode 100644 src-backup/main/java/WayofTime/alchemicalWizardry/common/rituals/RitualEffectFlight.java delete mode 100644 src-backup/main/java/WayofTime/alchemicalWizardry/common/rituals/RitualEffectFullStomach.java delete mode 100644 src-backup/main/java/WayofTime/alchemicalWizardry/common/rituals/RitualEffectGrowth.java delete mode 100644 src-backup/main/java/WayofTime/alchemicalWizardry/common/rituals/RitualEffectHarvest.java delete mode 100644 src-backup/main/java/WayofTime/alchemicalWizardry/common/rituals/RitualEffectHealing.java delete mode 100644 src-backup/main/java/WayofTime/alchemicalWizardry/common/rituals/RitualEffectInterdiction.java delete mode 100644 src-backup/main/java/WayofTime/alchemicalWizardry/common/rituals/RitualEffectItemSuction.java delete mode 100644 src-backup/main/java/WayofTime/alchemicalWizardry/common/rituals/RitualEffectJumping.java delete mode 100644 src-backup/main/java/WayofTime/alchemicalWizardry/common/rituals/RitualEffectLava.java delete mode 100644 src-backup/main/java/WayofTime/alchemicalWizardry/common/rituals/RitualEffectLeap.java delete mode 100644 src-backup/main/java/WayofTime/alchemicalWizardry/common/rituals/RitualEffectLifeConduit.java delete mode 100644 src-backup/main/java/WayofTime/alchemicalWizardry/common/rituals/RitualEffectMagnetic.java delete mode 100644 src-backup/main/java/WayofTime/alchemicalWizardry/common/rituals/RitualEffectSoulBound.java delete mode 100644 src-backup/main/java/WayofTime/alchemicalWizardry/common/rituals/RitualEffectSpawnWard.java delete mode 100644 src-backup/main/java/WayofTime/alchemicalWizardry/common/rituals/RitualEffectSummonMeteor.java delete mode 100644 src-backup/main/java/WayofTime/alchemicalWizardry/common/rituals/RitualEffectSupression.java delete mode 100644 src-backup/main/java/WayofTime/alchemicalWizardry/common/rituals/RitualEffectUnbinding.java delete mode 100644 src-backup/main/java/WayofTime/alchemicalWizardry/common/rituals/RitualEffectVeilOfEvil.java delete mode 100644 src-backup/main/java/WayofTime/alchemicalWizardry/common/rituals/RitualEffectWater.java delete mode 100644 src-backup/main/java/WayofTime/alchemicalWizardry/common/rituals/RitualEffectWellOfSuffering.java delete mode 100644 src-backup/main/java/WayofTime/alchemicalWizardry/common/spell/complex/EntitySpellProjectile.java delete mode 100644 src-backup/main/java/WayofTime/alchemicalWizardry/common/spell/complex/SpellModifier.java delete mode 100644 src-backup/main/java/WayofTime/alchemicalWizardry/common/spell/complex/SpellModifierDefault.java delete mode 100644 src-backup/main/java/WayofTime/alchemicalWizardry/common/spell/complex/SpellModifierDefensive.java delete mode 100644 src-backup/main/java/WayofTime/alchemicalWizardry/common/spell/complex/SpellModifierEnvironmental.java delete mode 100644 src-backup/main/java/WayofTime/alchemicalWizardry/common/spell/complex/SpellModifierOffensive.java delete mode 100644 src-backup/main/java/WayofTime/alchemicalWizardry/common/spell/complex/SpellParadigm.java delete mode 100644 src-backup/main/java/WayofTime/alchemicalWizardry/common/spell/complex/SpellParadigmMelee.java delete mode 100644 src-backup/main/java/WayofTime/alchemicalWizardry/common/spell/complex/SpellParadigmProjectile.java delete mode 100644 src-backup/main/java/WayofTime/alchemicalWizardry/common/spell/complex/SpellParadigmSelf.java delete mode 100644 src-backup/main/java/WayofTime/alchemicalWizardry/common/spell/complex/SpellParadigmTool.java delete mode 100644 src-backup/main/java/WayofTime/alchemicalWizardry/common/spell/complex/effect/SpellEffect.java delete mode 100644 src-backup/main/java/WayofTime/alchemicalWizardry/common/spell/complex/effect/SpellEffectEarth.java delete mode 100644 src-backup/main/java/WayofTime/alchemicalWizardry/common/spell/complex/effect/SpellEffectFire.java delete mode 100644 src-backup/main/java/WayofTime/alchemicalWizardry/common/spell/complex/effect/SpellEffectIce.java delete mode 100644 src-backup/main/java/WayofTime/alchemicalWizardry/common/spell/complex/effect/SpellEffectWind.java delete mode 100644 src-backup/main/java/WayofTime/alchemicalWizardry/common/spell/complex/effect/SpellHelper.java delete mode 100644 src-backup/main/java/WayofTime/alchemicalWizardry/common/spell/complex/effect/impactEffects/ExtrapolatedMeleeEntityEffect.java delete mode 100644 src-backup/main/java/WayofTime/alchemicalWizardry/common/spell/complex/effect/impactEffects/IMeleeSpellEntityEffect.java delete mode 100644 src-backup/main/java/WayofTime/alchemicalWizardry/common/spell/complex/effect/impactEffects/IMeleeSpellWorldEffect.java delete mode 100644 src-backup/main/java/WayofTime/alchemicalWizardry/common/spell/complex/effect/impactEffects/IProjectileImpactEffect.java delete mode 100644 src-backup/main/java/WayofTime/alchemicalWizardry/common/spell/complex/effect/impactEffects/IProjectileUpdateEffect.java delete mode 100644 src-backup/main/java/WayofTime/alchemicalWizardry/common/spell/complex/effect/impactEffects/ISelfSpellEffect.java delete mode 100644 src-backup/main/java/WayofTime/alchemicalWizardry/common/spell/complex/effect/impactEffects/MeleeSpellCenteredWorldEffect.java delete mode 100644 src-backup/main/java/WayofTime/alchemicalWizardry/common/spell/complex/effect/impactEffects/MeleeSpellWorldEffect.java delete mode 100644 src-backup/main/java/WayofTime/alchemicalWizardry/common/spell/complex/effect/impactEffects/ProjectileImpactEffect.java delete mode 100644 src-backup/main/java/WayofTime/alchemicalWizardry/common/spell/complex/effect/impactEffects/ProjectileUpdateEffect.java delete mode 100644 src-backup/main/java/WayofTime/alchemicalWizardry/common/spell/complex/effect/impactEffects/SelfSpellEffect.java delete mode 100644 src-backup/main/java/WayofTime/alchemicalWizardry/common/spell/complex/effect/impactEffects/earth/MeleeDefaultEarth.java delete mode 100644 src-backup/main/java/WayofTime/alchemicalWizardry/common/spell/complex/effect/impactEffects/earth/MeleeDefensiveEarth.java delete mode 100644 src-backup/main/java/WayofTime/alchemicalWizardry/common/spell/complex/effect/impactEffects/earth/MeleeEnvironmentalEarth.java delete mode 100644 src-backup/main/java/WayofTime/alchemicalWizardry/common/spell/complex/effect/impactEffects/earth/MeleeOffensiveEarth.java delete mode 100644 src-backup/main/java/WayofTime/alchemicalWizardry/common/spell/complex/effect/impactEffects/earth/ProjectileDefaultEarth.java delete mode 100644 src-backup/main/java/WayofTime/alchemicalWizardry/common/spell/complex/effect/impactEffects/earth/ProjectileDefensiveEarth.java delete mode 100644 src-backup/main/java/WayofTime/alchemicalWizardry/common/spell/complex/effect/impactEffects/earth/ProjectileEnvironmentalEarth.java delete mode 100644 src-backup/main/java/WayofTime/alchemicalWizardry/common/spell/complex/effect/impactEffects/earth/ProjectileOffensiveEarth.java delete mode 100644 src-backup/main/java/WayofTime/alchemicalWizardry/common/spell/complex/effect/impactEffects/earth/SelfDefaultEarth.java delete mode 100644 src-backup/main/java/WayofTime/alchemicalWizardry/common/spell/complex/effect/impactEffects/earth/SelfDefensiveEarth.java delete mode 100644 src-backup/main/java/WayofTime/alchemicalWizardry/common/spell/complex/effect/impactEffects/earth/SelfEnvironmentalEarth.java delete mode 100644 src-backup/main/java/WayofTime/alchemicalWizardry/common/spell/complex/effect/impactEffects/earth/SelfOffensiveEarth.java delete mode 100644 src-backup/main/java/WayofTime/alchemicalWizardry/common/spell/complex/effect/impactEffects/earth/ToolEnvironmentalEarth.java delete mode 100644 src-backup/main/java/WayofTime/alchemicalWizardry/common/spell/complex/effect/impactEffects/earth/ToolOffensiveEarth.java delete mode 100644 src-backup/main/java/WayofTime/alchemicalWizardry/common/spell/complex/effect/impactEffects/fire/MeleeDefaultFire.java delete mode 100644 src-backup/main/java/WayofTime/alchemicalWizardry/common/spell/complex/effect/impactEffects/fire/MeleeDefensiveFire.java delete mode 100644 src-backup/main/java/WayofTime/alchemicalWizardry/common/spell/complex/effect/impactEffects/fire/MeleeEnvironmentalFire.java delete mode 100644 src-backup/main/java/WayofTime/alchemicalWizardry/common/spell/complex/effect/impactEffects/fire/MeleeOffensiveFire.java delete mode 100644 src-backup/main/java/WayofTime/alchemicalWizardry/common/spell/complex/effect/impactEffects/fire/ProjectileDefaultFire.java delete mode 100644 src-backup/main/java/WayofTime/alchemicalWizardry/common/spell/complex/effect/impactEffects/fire/ProjectileDefensiveFire.java delete mode 100644 src-backup/main/java/WayofTime/alchemicalWizardry/common/spell/complex/effect/impactEffects/fire/ProjectileEnvironmentalFire.java delete mode 100644 src-backup/main/java/WayofTime/alchemicalWizardry/common/spell/complex/effect/impactEffects/fire/ProjectileOffensiveFire.java delete mode 100644 src-backup/main/java/WayofTime/alchemicalWizardry/common/spell/complex/effect/impactEffects/fire/SelfDefaultFire.java delete mode 100644 src-backup/main/java/WayofTime/alchemicalWizardry/common/spell/complex/effect/impactEffects/fire/SelfDefensiveFire.java delete mode 100644 src-backup/main/java/WayofTime/alchemicalWizardry/common/spell/complex/effect/impactEffects/fire/SelfEnvironmentalFire.java delete mode 100644 src-backup/main/java/WayofTime/alchemicalWizardry/common/spell/complex/effect/impactEffects/fire/SelfOffensiveFire.java delete mode 100644 src-backup/main/java/WayofTime/alchemicalWizardry/common/spell/complex/effect/impactEffects/fire/ToolDefaultFire.java delete mode 100644 src-backup/main/java/WayofTime/alchemicalWizardry/common/spell/complex/effect/impactEffects/fire/ToolEnvironmentalFire.java delete mode 100644 src-backup/main/java/WayofTime/alchemicalWizardry/common/spell/complex/effect/impactEffects/fire/ToolOffensiveFire.java delete mode 100644 src-backup/main/java/WayofTime/alchemicalWizardry/common/spell/complex/effect/impactEffects/ice/MeleeDefaultIce.java delete mode 100644 src-backup/main/java/WayofTime/alchemicalWizardry/common/spell/complex/effect/impactEffects/ice/MeleeDefensiveIce.java delete mode 100644 src-backup/main/java/WayofTime/alchemicalWizardry/common/spell/complex/effect/impactEffects/ice/MeleeEnvironmentalIce.java delete mode 100644 src-backup/main/java/WayofTime/alchemicalWizardry/common/spell/complex/effect/impactEffects/ice/MeleeOffensiveIce.java delete mode 100644 src-backup/main/java/WayofTime/alchemicalWizardry/common/spell/complex/effect/impactEffects/ice/ProjectileDefaultIce.java delete mode 100644 src-backup/main/java/WayofTime/alchemicalWizardry/common/spell/complex/effect/impactEffects/ice/ProjectileDefensiveIce.java delete mode 100644 src-backup/main/java/WayofTime/alchemicalWizardry/common/spell/complex/effect/impactEffects/ice/ProjectileEnvironmentalIce.java delete mode 100644 src-backup/main/java/WayofTime/alchemicalWizardry/common/spell/complex/effect/impactEffects/ice/ProjectileOffensiveIce.java delete mode 100644 src-backup/main/java/WayofTime/alchemicalWizardry/common/spell/complex/effect/impactEffects/ice/SelfDefaultIce.java delete mode 100644 src-backup/main/java/WayofTime/alchemicalWizardry/common/spell/complex/effect/impactEffects/ice/SelfDefensiveIce.java delete mode 100644 src-backup/main/java/WayofTime/alchemicalWizardry/common/spell/complex/effect/impactEffects/ice/SelfEnvironmentalIce.java delete mode 100644 src-backup/main/java/WayofTime/alchemicalWizardry/common/spell/complex/effect/impactEffects/ice/SelfOffensiveIce.java delete mode 100644 src-backup/main/java/WayofTime/alchemicalWizardry/common/spell/complex/effect/impactEffects/ice/ToolDefaultIce.java delete mode 100644 src-backup/main/java/WayofTime/alchemicalWizardry/common/spell/complex/effect/impactEffects/ice/ToolDefensiveIce.java delete mode 100644 src-backup/main/java/WayofTime/alchemicalWizardry/common/spell/complex/effect/impactEffects/tool/DigAreaEffect.java delete mode 100644 src-backup/main/java/WayofTime/alchemicalWizardry/common/spell/complex/effect/impactEffects/tool/DigAreaTunnel.java delete mode 100644 src-backup/main/java/WayofTime/alchemicalWizardry/common/spell/complex/effect/impactEffects/tool/IDigAreaEffect.java delete mode 100644 src-backup/main/java/WayofTime/alchemicalWizardry/common/spell/complex/effect/impactEffects/tool/IItemManipulator.java delete mode 100644 src-backup/main/java/WayofTime/alchemicalWizardry/common/spell/complex/effect/impactEffects/tool/ILeftClickEffect.java delete mode 100644 src-backup/main/java/WayofTime/alchemicalWizardry/common/spell/complex/effect/impactEffects/tool/IOnBanishTool.java delete mode 100644 src-backup/main/java/WayofTime/alchemicalWizardry/common/spell/complex/effect/impactEffects/tool/IOnBreakBlock.java delete mode 100644 src-backup/main/java/WayofTime/alchemicalWizardry/common/spell/complex/effect/impactEffects/tool/IOnSummonTool.java delete mode 100644 src-backup/main/java/WayofTime/alchemicalWizardry/common/spell/complex/effect/impactEffects/tool/IRightClickEffect.java delete mode 100644 src-backup/main/java/WayofTime/alchemicalWizardry/common/spell/complex/effect/impactEffects/tool/ISpecialDamageEffect.java delete mode 100644 src-backup/main/java/WayofTime/alchemicalWizardry/common/spell/complex/effect/impactEffects/tool/IToolUpdateEffect.java delete mode 100644 src-backup/main/java/WayofTime/alchemicalWizardry/common/spell/complex/effect/impactEffects/tool/ItemManipulator.java delete mode 100644 src-backup/main/java/WayofTime/alchemicalWizardry/common/spell/complex/effect/impactEffects/tool/LeftClickEffect.java delete mode 100644 src-backup/main/java/WayofTime/alchemicalWizardry/common/spell/complex/effect/impactEffects/tool/OnBreakBlockEffect.java delete mode 100644 src-backup/main/java/WayofTime/alchemicalWizardry/common/spell/complex/effect/impactEffects/tool/RightClickEffect.java delete mode 100644 src-backup/main/java/WayofTime/alchemicalWizardry/common/spell/complex/effect/impactEffects/tool/RightClickTunnel.java delete mode 100644 src-backup/main/java/WayofTime/alchemicalWizardry/common/spell/complex/effect/impactEffects/tool/SummonToolEffect.java delete mode 100644 src-backup/main/java/WayofTime/alchemicalWizardry/common/spell/complex/effect/impactEffects/wind/MeleeDefaultWind.java delete mode 100644 src-backup/main/java/WayofTime/alchemicalWizardry/common/spell/complex/effect/impactEffects/wind/MeleeDefensiveWind.java delete mode 100644 src-backup/main/java/WayofTime/alchemicalWizardry/common/spell/complex/effect/impactEffects/wind/MeleeEnvironmentalWind.java delete mode 100644 src-backup/main/java/WayofTime/alchemicalWizardry/common/spell/complex/effect/impactEffects/wind/MeleeOffensiveWind.java delete mode 100644 src-backup/main/java/WayofTime/alchemicalWizardry/common/spell/complex/effect/impactEffects/wind/ProjectileDefaultWind.java delete mode 100644 src-backup/main/java/WayofTime/alchemicalWizardry/common/spell/complex/effect/impactEffects/wind/ProjectileEnvironmentalWind.java delete mode 100644 src-backup/main/java/WayofTime/alchemicalWizardry/common/spell/complex/effect/impactEffects/wind/ProjectileOffensiveWind.java delete mode 100644 src-backup/main/java/WayofTime/alchemicalWizardry/common/spell/complex/effect/impactEffects/wind/SelfDefaultWind.java delete mode 100644 src-backup/main/java/WayofTime/alchemicalWizardry/common/spell/complex/effect/impactEffects/wind/SelfDefensiveWind.java delete mode 100644 src-backup/main/java/WayofTime/alchemicalWizardry/common/spell/complex/effect/impactEffects/wind/SelfEnvironmentalWind.java delete mode 100644 src-backup/main/java/WayofTime/alchemicalWizardry/common/spell/complex/effect/impactEffects/wind/SelfOffensiveWind.java delete mode 100644 src-backup/main/java/WayofTime/alchemicalWizardry/common/spell/complex/effect/impactEffects/wind/ToolDefensiveWind.java delete mode 100644 src-backup/main/java/WayofTime/alchemicalWizardry/common/spell/complex/effect/impactEffects/wind/ToolEnvironmentalWind.java delete mode 100644 src-backup/main/java/WayofTime/alchemicalWizardry/common/spell/complex/effect/impactEffects/wind/ToolOffensiveWind.java delete mode 100644 src-backup/main/java/WayofTime/alchemicalWizardry/common/spell/complex/enhancement/SpellEnhancement.java delete mode 100644 src-backup/main/java/WayofTime/alchemicalWizardry/common/spell/complex/enhancement/SpellEnhancementCost.java delete mode 100644 src-backup/main/java/WayofTime/alchemicalWizardry/common/spell/complex/enhancement/SpellEnhancementPotency.java delete mode 100644 src-backup/main/java/WayofTime/alchemicalWizardry/common/spell/complex/enhancement/SpellEnhancementPower.java delete mode 100644 src-backup/main/java/WayofTime/alchemicalWizardry/common/spell/simple/HomSpell.java delete mode 100644 src-backup/main/java/WayofTime/alchemicalWizardry/common/spell/simple/HomSpellComponent.java delete mode 100644 src-backup/main/java/WayofTime/alchemicalWizardry/common/spell/simple/HomSpellRegistry.java delete mode 100644 src-backup/main/java/WayofTime/alchemicalWizardry/common/spell/simple/ISimpleSpell.java delete mode 100644 src-backup/main/java/WayofTime/alchemicalWizardry/common/spell/simple/SpellEarthBender.java delete mode 100644 src-backup/main/java/WayofTime/alchemicalWizardry/common/spell/simple/SpellExplosions.java delete mode 100644 src-backup/main/java/WayofTime/alchemicalWizardry/common/spell/simple/SpellFireBurst.java delete mode 100644 src-backup/main/java/WayofTime/alchemicalWizardry/common/spell/simple/SpellFrozenWater.java delete mode 100644 src-backup/main/java/WayofTime/alchemicalWizardry/common/spell/simple/SpellHolyBlast.java delete mode 100644 src-backup/main/java/WayofTime/alchemicalWizardry/common/spell/simple/SpellLightningBolt.java delete mode 100644 src-backup/main/java/WayofTime/alchemicalWizardry/common/spell/simple/SpellTeleport.java delete mode 100644 src-backup/main/java/WayofTime/alchemicalWizardry/common/spell/simple/SpellWateryGrave.java delete mode 100644 src-backup/main/java/WayofTime/alchemicalWizardry/common/spell/simple/SpellWindGust.java delete mode 100644 src-backup/main/java/WayofTime/alchemicalWizardry/common/summoning/SummoningFallenAngel.java delete mode 100644 src-backup/main/java/WayofTime/alchemicalWizardry/common/summoning/SummoningHelperAW.java delete mode 100644 src-backup/main/java/WayofTime/alchemicalWizardry/common/summoning/meteor/MeteorParadigm.java delete mode 100644 src-backup/main/java/WayofTime/alchemicalWizardry/common/summoning/meteor/MeteorParadigmComponent.java delete mode 100644 src-backup/main/java/WayofTime/alchemicalWizardry/common/summoning/meteor/MeteorRegistry.java delete mode 100644 src-backup/main/java/WayofTime/alchemicalWizardry/common/tileEntity/TEAlchemicCalcinator.java delete mode 100644 src-backup/main/java/WayofTime/alchemicalWizardry/common/tileEntity/TEAltar.java delete mode 100644 src-backup/main/java/WayofTime/alchemicalWizardry/common/tileEntity/TEBellJar.java delete mode 100644 src-backup/main/java/WayofTime/alchemicalWizardry/common/tileEntity/TEConduit.java delete mode 100644 src-backup/main/java/WayofTime/alchemicalWizardry/common/tileEntity/TEDemonPortal.java delete mode 100644 src-backup/main/java/WayofTime/alchemicalWizardry/common/tileEntity/TEHomHeart.java delete mode 100644 src-backup/main/java/WayofTime/alchemicalWizardry/common/tileEntity/TEImperfectRitualStone.java delete mode 100644 src-backup/main/java/WayofTime/alchemicalWizardry/common/tileEntity/TEMasterStone.java delete mode 100644 src-backup/main/java/WayofTime/alchemicalWizardry/common/tileEntity/TEOrientable.java delete mode 100644 src-backup/main/java/WayofTime/alchemicalWizardry/common/tileEntity/TEPedestal.java delete mode 100644 src-backup/main/java/WayofTime/alchemicalWizardry/common/tileEntity/TEPlinth.java delete mode 100644 src-backup/main/java/WayofTime/alchemicalWizardry/common/tileEntity/TEReagentConduit.java delete mode 100644 src-backup/main/java/WayofTime/alchemicalWizardry/common/tileEntity/TESchematicSaver.java delete mode 100644 src-backup/main/java/WayofTime/alchemicalWizardry/common/tileEntity/TESocket.java delete mode 100644 src-backup/main/java/WayofTime/alchemicalWizardry/common/tileEntity/TESpectralBlock.java delete mode 100644 src-backup/main/java/WayofTime/alchemicalWizardry/common/tileEntity/TESpectralContainer.java delete mode 100644 src-backup/main/java/WayofTime/alchemicalWizardry/common/tileEntity/TESpellBlock.java delete mode 100644 src-backup/main/java/WayofTime/alchemicalWizardry/common/tileEntity/TESpellEffectBlock.java delete mode 100644 src-backup/main/java/WayofTime/alchemicalWizardry/common/tileEntity/TESpellEnhancementBlock.java delete mode 100644 src-backup/main/java/WayofTime/alchemicalWizardry/common/tileEntity/TESpellModifierBlock.java delete mode 100644 src-backup/main/java/WayofTime/alchemicalWizardry/common/tileEntity/TESpellParadigmBlock.java delete mode 100644 src-backup/main/java/WayofTime/alchemicalWizardry/common/tileEntity/TETeleposer.java delete mode 100644 src-backup/main/java/WayofTime/alchemicalWizardry/common/tileEntity/TEWritingTable.java delete mode 100644 src-backup/main/java/WayofTime/alchemicalWizardry/common/tileEntity/container/ContainerAltar.java delete mode 100644 src-backup/main/java/WayofTime/alchemicalWizardry/common/tileEntity/container/ContainerTeleposer.java delete mode 100644 src-backup/main/java/WayofTime/alchemicalWizardry/common/tileEntity/container/ContainerWritingTable.java delete mode 100644 src-backup/main/java/WayofTime/alchemicalWizardry/common/tileEntity/gui/GuiHandler.java delete mode 100644 src-backup/main/java/WayofTime/alchemicalWizardry/common/tileEntity/gui/GuiTeleposer.java delete mode 100644 src-backup/main/java/WayofTime/alchemicalWizardry/common/tileEntity/gui/GuiWritingTable.java delete mode 100644 src-backup/main/java/joshie/alchemicalWizardy/ShapedBloodOrbRecipe.java delete mode 100644 src-backup/main/java/joshie/alchemicalWizardy/ShapelessBloodOrbRecipe.java delete mode 100644 src-backup/main/java/joshie/alchemicalWizardy/nei/NEIAlchemyRecipeHandler.java delete mode 100644 src-backup/main/java/joshie/alchemicalWizardy/nei/NEIAltarRecipeHandler.java delete mode 100644 src-backup/main/java/joshie/alchemicalWizardy/nei/NEIBloodOrbShapedHandler.java delete mode 100644 src-backup/main/java/joshie/alchemicalWizardy/nei/NEIBloodOrbShapelessHandler.java delete mode 100644 src-backup/main/java/joshie/alchemicalWizardy/nei/NEIConfig.java delete mode 100644 src-backup/main/resources/assets/alchemicalwizardry/altar.png delete mode 100644 src-backup/main/resources/assets/alchemicalwizardry/books/architect.xml delete mode 100644 src-backup/main/resources/assets/alchemicalwizardry/gui/Teleposer.png delete mode 100644 src-backup/main/resources/assets/alchemicalwizardry/gui/WritingTable.png delete mode 100644 src-backup/main/resources/assets/alchemicalwizardry/gui/bookleft.png delete mode 100644 src-backup/main/resources/assets/alchemicalwizardry/gui/nei/alchemy.png delete mode 100644 src-backup/main/resources/assets/alchemicalwizardry/gui/nei/altar.png delete mode 100644 src-backup/main/resources/assets/alchemicalwizardry/lang/de_DE.lang delete mode 100644 src-backup/main/resources/assets/alchemicalwizardry/lang/en_US.lang delete mode 100644 src-backup/main/resources/assets/alchemicalwizardry/lang/it_IT.lang delete mode 100644 src-backup/main/resources/assets/alchemicalwizardry/lang/ko_KR.lang delete mode 100644 src-backup/main/resources/assets/alchemicalwizardry/lang/ru_RU.lang delete mode 100644 src-backup/main/resources/assets/alchemicalwizardry/lang/zh_CN.lang delete mode 100644 src-backup/main/resources/assets/alchemicalwizardry/lang/zh_TW.lang delete mode 100644 src-backup/main/resources/assets/alchemicalwizardry/models/armor/BloodArmour_WIP.png delete mode 100644 src-backup/main/resources/assets/alchemicalwizardry/models/armor/boundArmour_invisible_layer_1.png delete mode 100644 src-backup/main/resources/assets/alchemicalwizardry/models/armor/boundArmour_invisible_layer_2.png delete mode 100644 src-backup/main/resources/assets/alchemicalwizardry/models/armor/boundArmour_layer_1.png delete mode 100644 src-backup/main/resources/assets/alchemicalwizardry/models/armor/boundArmour_layer_2.png delete mode 100644 src-backup/main/resources/assets/alchemicalwizardry/models/armor/sanguineArmour_layer_1.png delete mode 100644 src-backup/main/resources/assets/alchemicalwizardry/models/armor/sanguineArmour_layer_2.png delete mode 100644 src-backup/main/resources/assets/alchemicalwizardry/schematics/building/buildings.zip delete mode 100644 src-backup/main/resources/assets/alchemicalwizardry/shaders/beam.frag delete mode 100644 src-backup/main/resources/assets/alchemicalwizardry/textures/blocks/AirRitualStone.png delete mode 100644 src-backup/main/resources/assets/alchemicalwizardry/textures/blocks/AlchemicChemistrySet.png delete mode 100644 src-backup/main/resources/assets/alchemicalwizardry/textures/blocks/AltarCapacityRune.png delete mode 100644 src-backup/main/resources/assets/alchemicalwizardry/textures/blocks/ArcanePedestal.png delete mode 100644 src-backup/main/resources/assets/alchemicalwizardry/textures/blocks/ArcanePlinth.png delete mode 100644 src-backup/main/resources/assets/alchemicalwizardry/textures/blocks/BetterCapacityRune.png delete mode 100644 src-backup/main/resources/assets/alchemicalwizardry/textures/blocks/BlankRune.png delete mode 100644 src-backup/main/resources/assets/alchemicalwizardry/textures/blocks/BlockBloodLight.png delete mode 100644 src-backup/main/resources/assets/alchemicalwizardry/textures/blocks/BloodAltar_Bottom.png delete mode 100644 src-backup/main/resources/assets/alchemicalwizardry/textures/blocks/BloodAltar_SideType1.png delete mode 100644 src-backup/main/resources/assets/alchemicalwizardry/textures/blocks/BloodAltar_SideType2.png delete mode 100644 src-backup/main/resources/assets/alchemicalwizardry/textures/blocks/BloodAltar_Top.png delete mode 100644 src-backup/main/resources/assets/alchemicalwizardry/textures/blocks/BloodSocket.png delete mode 100644 src-backup/main/resources/assets/alchemicalwizardry/textures/blocks/BloodStoneBrick.png delete mode 100644 src-backup/main/resources/assets/alchemicalwizardry/textures/blocks/DislocationRune.png delete mode 100644 src-backup/main/resources/assets/alchemicalwizardry/textures/blocks/DuskRitualStone.png delete mode 100644 src-backup/main/resources/assets/alchemicalwizardry/textures/blocks/EarthRitualStone.png delete mode 100644 src-backup/main/resources/assets/alchemicalwizardry/textures/blocks/EfficiencyRune.png delete mode 100644 src-backup/main/resources/assets/alchemicalwizardry/textures/blocks/EmptySocket.png delete mode 100644 src-backup/main/resources/assets/alchemicalwizardry/textures/blocks/FireRitualStone.png delete mode 100644 src-backup/main/resources/assets/alchemicalwizardry/textures/blocks/HomHeart_bottom.png delete mode 100644 src-backup/main/resources/assets/alchemicalwizardry/textures/blocks/HomHeart_side.png delete mode 100644 src-backup/main/resources/assets/alchemicalwizardry/textures/blocks/HomHeart_top.png delete mode 100644 src-backup/main/resources/assets/alchemicalwizardry/textures/blocks/HomHeart_top1.png delete mode 100644 src-backup/main/resources/assets/alchemicalwizardry/textures/blocks/ImperfectRitualStone.png delete mode 100644 src-backup/main/resources/assets/alchemicalwizardry/textures/blocks/LargeBloodStoneBrick.png delete mode 100644 src-backup/main/resources/assets/alchemicalwizardry/textures/blocks/MasterStone.png delete mode 100644 src-backup/main/resources/assets/alchemicalwizardry/textures/blocks/OrbCapacityRune.png delete mode 100644 src-backup/main/resources/assets/alchemicalwizardry/textures/blocks/RitualStone.png delete mode 100644 src-backup/main/resources/assets/alchemicalwizardry/textures/blocks/RuneOfSacrifice.png delete mode 100644 src-backup/main/resources/assets/alchemicalwizardry/textures/blocks/RuneOfSelfSacrifice.png delete mode 100644 src-backup/main/resources/assets/alchemicalwizardry/textures/blocks/SimpleTransCircle.png delete mode 100644 src-backup/main/resources/assets/alchemicalwizardry/textures/blocks/SoulForge.png delete mode 100644 src-backup/main/resources/assets/alchemicalwizardry/textures/blocks/SpectralBlock.png delete mode 100644 src-backup/main/resources/assets/alchemicalwizardry/textures/blocks/SpeedRune.png delete mode 100644 src-backup/main/resources/assets/alchemicalwizardry/textures/blocks/Teleposer_Side.png delete mode 100644 src-backup/main/resources/assets/alchemicalwizardry/textures/blocks/Teleposer_Top.png delete mode 100644 src-backup/main/resources/assets/alchemicalwizardry/textures/blocks/Testing.png delete mode 100644 src-backup/main/resources/assets/alchemicalwizardry/textures/blocks/WaterRitualStone.png delete mode 100644 src-backup/main/resources/assets/alchemicalwizardry/textures/blocks/fireEffectBlock_blank.png delete mode 100644 src-backup/main/resources/assets/alchemicalwizardry/textures/blocks/fireEffectBlock_input.png delete mode 100644 src-backup/main/resources/assets/alchemicalwizardry/textures/blocks/fireEffectBlock_output.png delete mode 100644 src-backup/main/resources/assets/alchemicalwizardry/textures/blocks/fireEffectBlock_upArrow.png delete mode 100644 src-backup/main/resources/assets/alchemicalwizardry/textures/blocks/lifeEssenceFlowing.png delete mode 100644 src-backup/main/resources/assets/alchemicalwizardry/textures/blocks/lifeEssenceStill.png delete mode 100644 src-backup/main/resources/assets/alchemicalwizardry/textures/entities/energyBlastProjectile.png delete mode 100644 src-backup/main/resources/assets/alchemicalwizardry/textures/entities/explosionProjectile.png delete mode 100644 src-backup/main/resources/assets/alchemicalwizardry/textures/entities/fireProjectile.png delete mode 100644 src-backup/main/resources/assets/alchemicalwizardry/textures/entities/holyProjectile.png delete mode 100644 src-backup/main/resources/assets/alchemicalwizardry/textures/entities/iceProjectile.png delete mode 100644 src-backup/main/resources/assets/alchemicalwizardry/textures/entities/lightningProjectile.png delete mode 100644 src-backup/main/resources/assets/alchemicalwizardry/textures/entities/mudProjectile.png delete mode 100644 src-backup/main/resources/assets/alchemicalwizardry/textures/entities/waterProjectile.png delete mode 100644 src-backup/main/resources/assets/alchemicalwizardry/textures/entities/windGustProjectile.png delete mode 100644 src-backup/main/resources/assets/alchemicalwizardry/textures/gui/GuiTrap.png delete mode 100644 src-backup/main/resources/assets/alchemicalwizardry/textures/gui/bookcrafting.png delete mode 100644 src-backup/main/resources/assets/alchemicalwizardry/textures/gui/bookfurnace.png delete mode 100644 src-backup/main/resources/assets/alchemicalwizardry/textures/gui/bookleft.png delete mode 100644 src-backup/main/resources/assets/alchemicalwizardry/textures/gui/bookright.png delete mode 100644 src-backup/main/resources/assets/alchemicalwizardry/textures/items/8wWtY8d.png delete mode 100644 src-backup/main/resources/assets/alchemicalwizardry/textures/items/Aether.png delete mode 100644 src-backup/main/resources/assets/alchemicalwizardry/textures/items/AirScribeTool.png delete mode 100644 src-backup/main/resources/assets/alchemicalwizardry/textures/items/AirSigil.png delete mode 100644 src-backup/main/resources/assets/alchemicalwizardry/textures/items/ApprenticeBloodOrb.png delete mode 100644 src-backup/main/resources/assets/alchemicalwizardry/textures/items/Aquasalus.png delete mode 100644 src-backup/main/resources/assets/alchemicalwizardry/textures/items/ArchmageBloodOrb.png delete mode 100644 src-backup/main/resources/assets/alchemicalwizardry/textures/items/ArmourInhibitor_activated.png delete mode 100644 src-backup/main/resources/assets/alchemicalwizardry/textures/items/ArmourInhibitor_deactivated.png delete mode 100644 src-backup/main/resources/assets/alchemicalwizardry/textures/items/AttunedCrystal1.png delete mode 100644 src-backup/main/resources/assets/alchemicalwizardry/textures/items/AttunedCrystal2.png delete mode 100644 src-backup/main/resources/assets/alchemicalwizardry/textures/items/AverageLengtheningCatalyst.png delete mode 100644 src-backup/main/resources/assets/alchemicalwizardry/textures/items/AveragePowerCatalyst.png delete mode 100644 src-backup/main/resources/assets/alchemicalwizardry/textures/items/BlankSlate.png delete mode 100644 src-backup/main/resources/assets/alchemicalwizardry/textures/items/BlankSpell.png delete mode 100644 src-backup/main/resources/assets/alchemicalwizardry/textures/items/BloodFrame.png delete mode 100644 src-backup/main/resources/assets/alchemicalwizardry/textures/items/BloodLightSigil.png delete mode 100644 src-backup/main/resources/assets/alchemicalwizardry/textures/items/BoundAxe_activated.png delete mode 100644 src-backup/main/resources/assets/alchemicalwizardry/textures/items/BoundBoots.png delete mode 100644 src-backup/main/resources/assets/alchemicalwizardry/textures/items/BoundHelmet.png delete mode 100644 src-backup/main/resources/assets/alchemicalwizardry/textures/items/BoundLeggings.png delete mode 100644 src-backup/main/resources/assets/alchemicalwizardry/textures/items/BoundPickaxe_activated.png delete mode 100644 src-backup/main/resources/assets/alchemicalwizardry/textures/items/BoundPickaxe_deactivated.png delete mode 100644 src-backup/main/resources/assets/alchemicalwizardry/textures/items/BoundPlate.png delete mode 100644 src-backup/main/resources/assets/alchemicalwizardry/textures/items/BoundShovel_activated.png delete mode 100644 src-backup/main/resources/assets/alchemicalwizardry/textures/items/BoundSword_activated.png delete mode 100644 src-backup/main/resources/assets/alchemicalwizardry/textures/items/BoundTool.png delete mode 100644 src-backup/main/resources/assets/alchemicalwizardry/textures/items/BridgeSigil_activated.png delete mode 100644 src-backup/main/resources/assets/alchemicalwizardry/textures/items/BridgeSigil_deactivated.png delete mode 100644 src-backup/main/resources/assets/alchemicalwizardry/textures/items/CeremonialDagger.png delete mode 100644 src-backup/main/resources/assets/alchemicalwizardry/textures/items/CombinationalCatalyst.png delete mode 100644 src-backup/main/resources/assets/alchemicalwizardry/textures/items/ComplexCrystal.png delete mode 100644 src-backup/main/resources/assets/alchemicalwizardry/textures/items/Crepitous.png delete mode 100644 src-backup/main/resources/assets/alchemicalwizardry/textures/items/Crystallos.png delete mode 100644 src-backup/main/resources/assets/alchemicalwizardry/textures/items/DaggerOfSacrifice.png delete mode 100644 src-backup/main/resources/assets/alchemicalwizardry/textures/items/DemonBloodShard.png delete mode 100644 src-backup/main/resources/assets/alchemicalwizardry/textures/items/DemonPlacer.png delete mode 100644 src-backup/main/resources/assets/alchemicalwizardry/textures/items/DemonSlate.png delete mode 100644 src-backup/main/resources/assets/alchemicalwizardry/textures/items/DemonicTeleposerFocus.png delete mode 100644 src-backup/main/resources/assets/alchemicalwizardry/textures/items/DiabloKey.png delete mode 100644 src-backup/main/resources/assets/alchemicalwizardry/textures/items/DivinationSigil.png delete mode 100644 src-backup/main/resources/assets/alchemicalwizardry/textures/items/DuskScribeTool.png delete mode 100644 src-backup/main/resources/assets/alchemicalwizardry/textures/items/EarthScribeTool.png delete mode 100644 src-backup/main/resources/assets/alchemicalwizardry/textures/items/ElementalSigil_activated.png delete mode 100644 src-backup/main/resources/assets/alchemicalwizardry/textures/items/ElementalSigil_deactivated.png delete mode 100644 src-backup/main/resources/assets/alchemicalwizardry/textures/items/EnergyBattery.png delete mode 100644 src-backup/main/resources/assets/alchemicalwizardry/textures/items/EnergyBazooka_activated.png delete mode 100644 src-backup/main/resources/assets/alchemicalwizardry/textures/items/EnergyBlaster_activated.png delete mode 100644 src-backup/main/resources/assets/alchemicalwizardry/textures/items/EnhancedFillingAgent.png delete mode 100644 src-backup/main/resources/assets/alchemicalwizardry/textures/items/EnhancedTeleposerFocus.png delete mode 100644 src-backup/main/resources/assets/alchemicalwizardry/textures/items/FireScribeTool.png delete mode 100644 src-backup/main/resources/assets/alchemicalwizardry/textures/items/GreaterLengtheningCatalyst.png delete mode 100644 src-backup/main/resources/assets/alchemicalwizardry/textures/items/GreaterPowerCatalyst.png delete mode 100644 src-backup/main/resources/assets/alchemicalwizardry/textures/items/GrowthSigil_activated.png delete mode 100644 src-backup/main/resources/assets/alchemicalwizardry/textures/items/GrowthSigil_deactivated.png delete mode 100644 src-backup/main/resources/assets/alchemicalwizardry/textures/items/HasteSigil_activated.png delete mode 100644 src-backup/main/resources/assets/alchemicalwizardry/textures/items/HasteSigil_deactivated.png delete mode 100644 src-backup/main/resources/assets/alchemicalwizardry/textures/items/IceSigil_activated.png delete mode 100644 src-backup/main/resources/assets/alchemicalwizardry/textures/items/IceSigil_deactivated.png delete mode 100644 src-backup/main/resources/assets/alchemicalwizardry/textures/items/Incendium.png delete mode 100644 src-backup/main/resources/assets/alchemicalwizardry/textures/items/InfusedSlate.png delete mode 100644 src-backup/main/resources/assets/alchemicalwizardry/textures/items/LavaCrystal.png delete mode 100644 src-backup/main/resources/assets/alchemicalwizardry/textures/items/LavaSigil.png delete mode 100644 src-backup/main/resources/assets/alchemicalwizardry/textures/items/LifeBucket.png delete mode 100644 src-backup/main/resources/assets/alchemicalwizardry/textures/items/Magicales.png delete mode 100644 src-backup/main/resources/assets/alchemicalwizardry/textures/items/MagicianBloodOrb.png delete mode 100644 src-backup/main/resources/assets/alchemicalwizardry/textures/items/MasterBloodOrb.png delete mode 100644 src-backup/main/resources/assets/alchemicalwizardry/textures/items/MiningSigil_activated.png delete mode 100644 src-backup/main/resources/assets/alchemicalwizardry/textures/items/MiningSigil_deactivated.png delete mode 100644 src-backup/main/resources/assets/alchemicalwizardry/textures/items/MundaneLengtheningCatalyst.png delete mode 100644 src-backup/main/resources/assets/alchemicalwizardry/textures/items/MundanePowerCatalyst.png delete mode 100644 src-backup/main/resources/assets/alchemicalwizardry/textures/items/PotionFlask.png delete mode 100644 src-backup/main/resources/assets/alchemicalwizardry/textures/items/ReinforcedSlate.png delete mode 100644 src-backup/main/resources/assets/alchemicalwizardry/textures/items/ReinforcedTeleposerFocus.png delete mode 100644 src-backup/main/resources/assets/alchemicalwizardry/textures/items/RitualDiviner.png delete mode 100644 src-backup/main/resources/assets/alchemicalwizardry/textures/items/SacrificialDagger.png delete mode 100644 src-backup/main/resources/assets/alchemicalwizardry/textures/items/Sanctus.png delete mode 100644 src-backup/main/resources/assets/alchemicalwizardry/textures/items/SanguineHelmet.png delete mode 100644 src-backup/main/resources/assets/alchemicalwizardry/textures/items/SeerSigil.png delete mode 100644 src-backup/main/resources/assets/alchemicalwizardry/textures/items/SheathedItem.png delete mode 100644 src-backup/main/resources/assets/alchemicalwizardry/textures/items/SigilOfHolding.png delete mode 100644 src-backup/main/resources/assets/alchemicalwizardry/textures/items/SigilOfMagnetism_activated.png delete mode 100644 src-backup/main/resources/assets/alchemicalwizardry/textures/items/SigilOfMagnetism_deactivated.png delete mode 100644 src-backup/main/resources/assets/alchemicalwizardry/textures/items/SigilOfSeverance_activated.png delete mode 100644 src-backup/main/resources/assets/alchemicalwizardry/textures/items/SigilOfSeverance_deactivated.png delete mode 100644 src-backup/main/resources/assets/alchemicalwizardry/textures/items/SigilOfSupression_activated.png delete mode 100644 src-backup/main/resources/assets/alchemicalwizardry/textures/items/SigilOfSupression_deactivated.png delete mode 100644 src-backup/main/resources/assets/alchemicalwizardry/textures/items/SimpleCatalyst.png delete mode 100644 src-backup/main/resources/assets/alchemicalwizardry/textures/items/StandardBindingAgent.png delete mode 100644 src-backup/main/resources/assets/alchemicalwizardry/textures/items/StandardFillingAgent.png delete mode 100644 src-backup/main/resources/assets/alchemicalwizardry/textures/items/TankClearer.png delete mode 100644 src-backup/main/resources/assets/alchemicalwizardry/textures/items/TankSegmenter1.png delete mode 100644 src-backup/main/resources/assets/alchemicalwizardry/textures/items/TankSegmenter2.png delete mode 100644 src-backup/main/resources/assets/alchemicalwizardry/textures/items/TeleposerFocus.png delete mode 100644 src-backup/main/resources/assets/alchemicalwizardry/textures/items/Tennebrae.png delete mode 100644 src-backup/main/resources/assets/alchemicalwizardry/textures/items/Terrae.png delete mode 100644 src-backup/main/resources/assets/alchemicalwizardry/textures/items/UntamedCrystal.png delete mode 100644 src-backup/main/resources/assets/alchemicalwizardry/textures/items/VoidSigil.png delete mode 100644 src-backup/main/resources/assets/alchemicalwizardry/textures/items/WarriorSigil_activated.png delete mode 100644 src-backup/main/resources/assets/alchemicalwizardry/textures/items/WarriorSigil_deactivated.png delete mode 100644 src-backup/main/resources/assets/alchemicalwizardry/textures/items/WaterScribeTool.png delete mode 100644 src-backup/main/resources/assets/alchemicalwizardry/textures/items/WaterSigil.png delete mode 100644 src-backup/main/resources/assets/alchemicalwizardry/textures/items/WeakBindingAgent.png delete mode 100644 src-backup/main/resources/assets/alchemicalwizardry/textures/items/WeakBloodShard.png delete mode 100644 src-backup/main/resources/assets/alchemicalwizardry/textures/items/WeakFillingAgent.png delete mode 100644 src-backup/main/resources/assets/alchemicalwizardry/textures/items/WindSigil_activated.png delete mode 100644 src-backup/main/resources/assets/alchemicalwizardry/textures/items/WindSigil_deactivated.png delete mode 100644 src-backup/main/resources/assets/alchemicalwizardry/textures/items/activationCrystalAwakened.png delete mode 100644 src-backup/main/resources/assets/alchemicalwizardry/textures/items/activationCrystalWeak.png delete mode 100644 src-backup/main/resources/assets/alchemicalwizardry/textures/items/baseAlchemyItemConcentratedCatalyst.png delete mode 100644 src-backup/main/resources/assets/alchemicalwizardry/textures/items/baseAlchemyItemFracturedBone.png delete mode 100644 src-backup/main/resources/assets/alchemicalwizardry/textures/items/baseAlchemyItemOffensa.png delete mode 100644 src-backup/main/resources/assets/alchemicalwizardry/textures/items/baseAlchemyItemOrbisTerrae.png delete mode 100644 src-backup/main/resources/assets/alchemicalwizardry/textures/items/baseAlchemyItemPotentia.png delete mode 100644 src-backup/main/resources/assets/alchemicalwizardry/textures/items/baseAlchemyItemPraesidium.png delete mode 100644 src-backup/main/resources/assets/alchemicalwizardry/textures/items/baseAlchemyItemReductus.png delete mode 100644 src-backup/main/resources/assets/alchemicalwizardry/textures/items/baseAlchemyItemStrengthenedCatalyst.png delete mode 100644 src-backup/main/resources/assets/alchemicalwizardry/textures/items/baseAlchemyItemVirtus.png delete mode 100644 src-backup/main/resources/assets/alchemicalwizardry/textures/items/baseItemCostCore.png delete mode 100644 src-backup/main/resources/assets/alchemicalwizardry/textures/items/baseItemCrackedRunicPlate.png delete mode 100644 src-backup/main/resources/assets/alchemicalwizardry/textures/items/baseItemDefaultCore.png delete mode 100644 src-backup/main/resources/assets/alchemicalwizardry/textures/items/baseItemDefensiveCore.png delete mode 100644 src-backup/main/resources/assets/alchemicalwizardry/textures/items/baseItemEarthenCore.png delete mode 100644 src-backup/main/resources/assets/alchemicalwizardry/textures/items/baseItemEmptyCore.png delete mode 100644 src-backup/main/resources/assets/alchemicalwizardry/textures/items/baseItemEnvironmentalCore.png delete mode 100644 src-backup/main/resources/assets/alchemicalwizardry/textures/items/baseItemFlameCore.png delete mode 100644 src-backup/main/resources/assets/alchemicalwizardry/textures/items/baseItemGustCore.png delete mode 100644 src-backup/main/resources/assets/alchemicalwizardry/textures/items/baseItemIcyCore.png delete mode 100644 src-backup/main/resources/assets/alchemicalwizardry/textures/items/baseItemInputCable.png delete mode 100644 src-backup/main/resources/assets/alchemicalwizardry/textures/items/baseItemMagicalesCable.png delete mode 100644 src-backup/main/resources/assets/alchemicalwizardry/textures/items/baseItemMeleeCore.png delete mode 100644 src-backup/main/resources/assets/alchemicalwizardry/textures/items/baseItemObsidianBrace.png delete mode 100644 src-backup/main/resources/assets/alchemicalwizardry/textures/items/baseItemOffensiveCore.png delete mode 100644 src-backup/main/resources/assets/alchemicalwizardry/textures/items/baseItemOutputCable.png delete mode 100644 src-backup/main/resources/assets/alchemicalwizardry/textures/items/baseItemParadigmBackPlate.png delete mode 100644 src-backup/main/resources/assets/alchemicalwizardry/textures/items/baseItemPotencyCore.png delete mode 100644 src-backup/main/resources/assets/alchemicalwizardry/textures/items/baseItemPowerCore.png delete mode 100644 src-backup/main/resources/assets/alchemicalwizardry/textures/items/baseItemProjectileCore.png delete mode 100644 src-backup/main/resources/assets/alchemicalwizardry/textures/items/baseItemQuartzRod.png delete mode 100644 src-backup/main/resources/assets/alchemicalwizardry/textures/items/baseItemRunicPlate.png delete mode 100644 src-backup/main/resources/assets/alchemicalwizardry/textures/items/baseItemScribedRunicPlate.png delete mode 100644 src-backup/main/resources/assets/alchemicalwizardry/textures/items/baseItemSelfCore.png delete mode 100644 src-backup/main/resources/assets/alchemicalwizardry/textures/items/baseItemStoneBrace.png delete mode 100644 src-backup/main/resources/assets/alchemicalwizardry/textures/items/baseItemToolCore.png delete mode 100644 src-backup/main/resources/assets/alchemicalwizardry/textures/items/baseItemWoodBrace.png delete mode 100644 src-backup/main/resources/assets/alchemicalwizardry/textures/items/bloodBlastOrn.png delete mode 100644 src-backup/main/resources/assets/alchemicalwizardry/textures/items/focusBloodBlastOrn.png delete mode 100644 src-backup/main/resources/assets/alchemicalwizardry/textures/items/tYf5ft9.png delete mode 100644 src-backup/main/resources/assets/alchemicalwizardry/textures/models/AirFloatingBeacon.png delete mode 100644 src-backup/main/resources/assets/alchemicalwizardry/textures/models/AlchemicalCalcinator.png delete mode 100644 src-backup/main/resources/assets/alchemicalwizardry/textures/models/BileDemon.png delete mode 100644 src-backup/main/resources/assets/alchemicalwizardry/textures/models/Bird.png delete mode 100644 src-backup/main/resources/assets/alchemicalwizardry/textures/models/BlockSpellEffect.png delete mode 100644 src-backup/main/resources/assets/alchemicalwizardry/textures/models/BoulderFist.png delete mode 100644 src-backup/main/resources/assets/alchemicalwizardry/textures/models/Conduit.png delete mode 100644 src-backup/main/resources/assets/alchemicalwizardry/textures/models/CrystalBelljar.png delete mode 100644 src-backup/main/resources/assets/alchemicalwizardry/textures/models/DarkFloatingBeacon.png delete mode 100644 src-backup/main/resources/assets/alchemicalwizardry/textures/models/EarthFloatingBeacon.png delete mode 100644 src-backup/main/resources/assets/alchemicalwizardry/textures/models/EnergyBazookaMainProjectile.png delete mode 100644 src-backup/main/resources/assets/alchemicalwizardry/textures/models/FireFloatingBeacon.png delete mode 100644 src-backup/main/resources/assets/alchemicalwizardry/textures/models/FloatingBeacon.png delete mode 100644 src-backup/main/resources/assets/alchemicalwizardry/textures/models/HolyFloatingBeacon.png delete mode 100644 src-backup/main/resources/assets/alchemicalwizardry/textures/models/IceDemon.png delete mode 100644 src-backup/main/resources/assets/alchemicalwizardry/textures/models/LowerGuardian.png delete mode 100644 src-backup/main/resources/assets/alchemicalwizardry/textures/models/Meteor.png delete mode 100644 src-backup/main/resources/assets/alchemicalwizardry/textures/models/ParadigmBlock.png delete mode 100644 src-backup/main/resources/assets/alchemicalwizardry/textures/models/Pedestal.png delete mode 100644 src-backup/main/resources/assets/alchemicalwizardry/textures/models/Plinth.png delete mode 100644 src-backup/main/resources/assets/alchemicalwizardry/textures/models/Reagent.png delete mode 100644 src-backup/main/resources/assets/alchemicalwizardry/textures/models/ShadeMob.png delete mode 100644 src-backup/main/resources/assets/alchemicalwizardry/textures/models/SimpleTransCircle.png delete mode 100644 src-backup/main/resources/assets/alchemicalwizardry/textures/models/SmallEarthGolem.png delete mode 100644 src-backup/main/resources/assets/alchemicalwizardry/textures/models/SpellEffectEarth.png delete mode 100644 src-backup/main/resources/assets/alchemicalwizardry/textures/models/SpellEffectFire.png delete mode 100644 src-backup/main/resources/assets/alchemicalwizardry/textures/models/SpellEffectIce.png delete mode 100644 src-backup/main/resources/assets/alchemicalwizardry/textures/models/SpellEffectWind.png delete mode 100644 src-backup/main/resources/assets/alchemicalwizardry/textures/models/SpellEnhancementCost1.png delete mode 100644 src-backup/main/resources/assets/alchemicalwizardry/textures/models/SpellEnhancementCost2.png delete mode 100644 src-backup/main/resources/assets/alchemicalwizardry/textures/models/SpellEnhancementCost3.png delete mode 100644 src-backup/main/resources/assets/alchemicalwizardry/textures/models/SpellEnhancementPotency1.png delete mode 100644 src-backup/main/resources/assets/alchemicalwizardry/textures/models/SpellEnhancementPotency2.png delete mode 100644 src-backup/main/resources/assets/alchemicalwizardry/textures/models/SpellEnhancementPotency3.png delete mode 100644 src-backup/main/resources/assets/alchemicalwizardry/textures/models/SpellEnhancementPower1.png delete mode 100644 src-backup/main/resources/assets/alchemicalwizardry/textures/models/SpellEnhancementPower2.png delete mode 100644 src-backup/main/resources/assets/alchemicalwizardry/textures/models/SpellEnhancementPower3.png delete mode 100644 src-backup/main/resources/assets/alchemicalwizardry/textures/models/SpellModifierDefault.png delete mode 100644 src-backup/main/resources/assets/alchemicalwizardry/textures/models/SpellModifierDefensive.png delete mode 100644 src-backup/main/resources/assets/alchemicalwizardry/textures/models/SpellModifierEnvironmental.png delete mode 100644 src-backup/main/resources/assets/alchemicalwizardry/textures/models/SpellModifierOffensive.png delete mode 100644 src-backup/main/resources/assets/alchemicalwizardry/textures/models/SpellParadigmMelee.png delete mode 100644 src-backup/main/resources/assets/alchemicalwizardry/textures/models/SpellParadigmProjectile.png delete mode 100644 src-backup/main/resources/assets/alchemicalwizardry/textures/models/SpellParadigmSelf.png delete mode 100644 src-backup/main/resources/assets/alchemicalwizardry/textures/models/SpellParadigmTool.png delete mode 100644 src-backup/main/resources/assets/alchemicalwizardry/textures/models/TransCircle.png delete mode 100644 src-backup/main/resources/assets/alchemicalwizardry/textures/models/TransCircleBinding.png delete mode 100644 src-backup/main/resources/assets/alchemicalwizardry/textures/models/TransCircleSuffering.png delete mode 100644 src-backup/main/resources/assets/alchemicalwizardry/textures/models/WaterFloatingBeacon.png delete mode 100644 src-backup/main/resources/assets/alchemicalwizardry/textures/models/WingedAngel.png delete mode 100644 src-backup/main/resources/assets/alchemicalwizardry/textures/models/WingedFireDemon.png delete mode 100644 src-backup/main/resources/assets/alchemicalwizardry/textures/models/WritingTable.png delete mode 100644 src-backup/main/resources/assets/alchemicalwizardry/textures/models/altar.png delete mode 100644 src-backup/main/resources/assets/alchemicalwizardry/textures/models/baseItemToolCore.png delete mode 100644 src-backup/main/resources/assets/alchemicalwizardry/textures/models/blood.png delete mode 100644 src-backup/main/resources/assets/forge/lang/en_US.lang delete mode 100644 src-backup/main/resources/assets/forge/lang/es_ES.lang delete mode 100644 src-backup/main/resources/assets/forge/lang/fr_FR.lang delete mode 100644 src-backup/main/resources/mcmod.info diff --git a/.gitignore b/.gitignore index 72c0919d..e4efc220 100644 --- a/.gitignore +++ b/.gitignore @@ -3,7 +3,7 @@ # Directories /.gradle/ /build/ -/eclipse/ +/eclipse /run/ /out/ /asm/ @@ -11,6 +11,7 @@ /.idea/ /.metadata/ /.settings/ +/libs/ # File Extensions *.psd @@ -23,3 +24,4 @@ # Specific files Thumbs.db + diff --git a/src-backup/api/java/thaumcraft/api/IGoggles.java b/src-backup/api/java/thaumcraft/api/IGoggles.java deleted file mode 100644 index 2f53d816..00000000 --- a/src-backup/api/java/thaumcraft/api/IGoggles.java +++ /dev/null @@ -1,22 +0,0 @@ -package thaumcraft.api; - -import net.minecraft.entity.EntityLivingBase; -import net.minecraft.item.ItemStack; - -/** - * - * @author Azanor - * - * Equipped head slot items that extend this class will be able to perform most functions that - * goggles of revealing can apart from view nodes which is handled by IRevealer. - * - */ - -public interface IGoggles { - - /* - * If this method returns true things like block essentia contents will be shown. - */ - public boolean showIngamePopups(ItemStack itemstack, EntityLivingBase player); - -} diff --git a/src-backup/api/java/thaumcraft/api/IRepairable.java b/src-backup/api/java/thaumcraft/api/IRepairable.java deleted file mode 100644 index 48c6dff9..00000000 --- a/src-backup/api/java/thaumcraft/api/IRepairable.java +++ /dev/null @@ -1,13 +0,0 @@ -package thaumcraft.api; - - - -/** - * @author Azanor - * Items, armor and tools with this interface can receive the Repair enchantment. - * Repairs 1 point of durability every 10 seconds (2 for repair II) - */ -public interface IRepairable { - - -} diff --git a/src-backup/api/java/thaumcraft/api/IRepairableExtended.java b/src-backup/api/java/thaumcraft/api/IRepairableExtended.java deleted file mode 100644 index 33827124..00000000 --- a/src-backup/api/java/thaumcraft/api/IRepairableExtended.java +++ /dev/null @@ -1,17 +0,0 @@ -package thaumcraft.api; - -import net.minecraft.entity.player.EntityPlayer; -import net.minecraft.item.ItemStack; - - - -/** - * @author Azanor - * Items, armor and tools with this interface can receive the Repair enchantment. - * Repairs 1 point of durability every 10 seconds (2 for repair II) - */ -public interface IRepairableExtended extends IRepairable { - - public boolean doRepair(ItemStack stack, EntityPlayer player, int enchantlevel); - -} diff --git a/src-backup/api/java/thaumcraft/api/IRunicArmor.java b/src-backup/api/java/thaumcraft/api/IRunicArmor.java deleted file mode 100644 index 5dd31100..00000000 --- a/src-backup/api/java/thaumcraft/api/IRunicArmor.java +++ /dev/null @@ -1,22 +0,0 @@ -package thaumcraft.api; - -import net.minecraft.item.ItemStack; - -/** - * - * @author Azanor - * - * Armor or bauble slot items that implement this interface can provide runic shielding. - * Recharging, hardening, etc. is handled internally by thaumcraft. - * - */ - -public interface IRunicArmor { - - /** - * returns how much charge this item can provide. This is the base shielding value - any hardening is stored and calculated internally. - */ - public int getRunicCharge(ItemStack itemstack); - - -} diff --git a/src-backup/api/java/thaumcraft/api/IScribeTools.java b/src-backup/api/java/thaumcraft/api/IScribeTools.java deleted file mode 100644 index 8800fa57..00000000 --- a/src-backup/api/java/thaumcraft/api/IScribeTools.java +++ /dev/null @@ -1,14 +0,0 @@ -package thaumcraft.api; - - -/** - * - * @author Azanor - * - * Interface used to identify scribing tool items used in research table - * - */ - -public interface IScribeTools { - -} diff --git a/src-backup/api/java/thaumcraft/api/IVisDiscountGear.java b/src-backup/api/java/thaumcraft/api/IVisDiscountGear.java deleted file mode 100644 index 3793ea3e..00000000 --- a/src-backup/api/java/thaumcraft/api/IVisDiscountGear.java +++ /dev/null @@ -1,20 +0,0 @@ -package thaumcraft.api; - -import net.minecraft.entity.player.EntityPlayer; -import net.minecraft.item.ItemStack; -import thaumcraft.api.aspects.Aspect; - - - - -/** - * @author Azanor - * ItemArmor with this interface will grant a discount to the vis cost of actions the wearer performs with casting wands. - * The amount returned is the percentage by which the cost is discounted. There is a built-int max discount of 50%, but - * individual items really shouldn't have a discount more than 5% - */ -public interface IVisDiscountGear { - - int getVisDiscount(ItemStack stack, EntityPlayer player, Aspect aspect); - -} diff --git a/src-backup/api/java/thaumcraft/api/ItemApi.java b/src-backup/api/java/thaumcraft/api/ItemApi.java deleted file mode 100644 index 25dda282..00000000 --- a/src-backup/api/java/thaumcraft/api/ItemApi.java +++ /dev/null @@ -1,70 +0,0 @@ -package thaumcraft.api; - -import net.minecraft.block.Block; -import net.minecraft.item.Item; -import net.minecraft.item.ItemStack; -import cpw.mods.fml.common.FMLLog; - -/** - * @author Azanor - * - * This is used to gain access to the items in my mod. - * I only give some examples and it will probably still - * require a bit of work for you to get hold of everything you need. - * - */ -public class ItemApi { - - public static ItemStack getItem(String itemString, int meta) { - ItemStack item = null; - - try { - String itemClass = "thaumcraft.common.config.ConfigItems"; - Object obj = Class.forName(itemClass).getField(itemString).get(null); - if (obj instanceof Item) { - item = new ItemStack((Item) obj,1,meta); - } else if (obj instanceof ItemStack) { - item = (ItemStack) obj; - } - } catch (Exception ex) { - FMLLog.warning("[Thaumcraft] Could not retrieve item identified by: " + itemString); - } - - return item; - } - - public static ItemStack getBlock(String itemString, int meta) { - ItemStack item = null; - - try { - String itemClass = "thaumcraft.common.config.ConfigBlocks"; - Object obj = Class.forName(itemClass).getField(itemString).get(null); - if (obj instanceof Block) { - item = new ItemStack((Block) obj,1,meta); - } else if (obj instanceof ItemStack) { - item = (ItemStack) obj; - } - } catch (Exception ex) { - FMLLog.warning("[Thaumcraft] Could not retrieve block identified by: " + itemString); - } - - return item; - } - - /** - * - * Some examples - * - * Casting Wands: - * itemWandCasting - * - * Resources: - * itemEssence, itemWispEssence, itemResource, itemShard, itemNugget, - * itemNuggetChicken, itemNuggetBeef, itemNuggetPork, itemTripleMeatTreat - * - * Research: - * itemResearchNotes, itemInkwell, itemThaumonomicon - * - */ - -} diff --git a/src-backup/api/java/thaumcraft/api/ItemRunic.java b/src-backup/api/java/thaumcraft/api/ItemRunic.java deleted file mode 100644 index 80251f59..00000000 --- a/src-backup/api/java/thaumcraft/api/ItemRunic.java +++ /dev/null @@ -1,21 +0,0 @@ -package thaumcraft.api; - -import net.minecraft.item.Item; -import net.minecraft.item.ItemStack; - -public class ItemRunic extends Item implements IRunicArmor { - - int charge; - - public ItemRunic (int charge) - { - super(); - this.charge = charge; - } - - @Override - public int getRunicCharge(ItemStack itemstack) { - return charge; - } - -} diff --git a/src-backup/api/java/thaumcraft/api/ThaumcraftApi.java b/src-backup/api/java/thaumcraft/api/ThaumcraftApi.java deleted file mode 100644 index 0b135d31..00000000 --- a/src-backup/api/java/thaumcraft/api/ThaumcraftApi.java +++ /dev/null @@ -1,507 +0,0 @@ -package thaumcraft.api; - -import java.util.ArrayList; -import java.util.Arrays; -import java.util.HashMap; -import java.util.List; -import java.util.concurrent.ConcurrentHashMap; - -import net.minecraft.block.Block; -import net.minecraft.enchantment.Enchantment; -import net.minecraft.entity.player.EntityPlayer; -import net.minecraft.item.Item; -import net.minecraft.item.Item.ToolMaterial; -import net.minecraft.item.ItemArmor.ArmorMaterial; -import net.minecraft.item.ItemStack; -import net.minecraftforge.common.util.EnumHelper; -import net.minecraftforge.oredict.OreDictionary; -import thaumcraft.api.aspects.Aspect; -import thaumcraft.api.aspects.AspectList; -import thaumcraft.api.crafting.CrucibleRecipe; -import thaumcraft.api.crafting.InfusionEnchantmentRecipe; -import thaumcraft.api.crafting.InfusionRecipe; -import thaumcraft.api.crafting.ShapedArcaneRecipe; -import thaumcraft.api.crafting.ShapelessArcaneRecipe; -import thaumcraft.api.research.IScanEventHandler; -import thaumcraft.api.research.ResearchCategories; -import thaumcraft.api.research.ResearchCategoryList; -import thaumcraft.api.research.ResearchItem; -import thaumcraft.api.research.ResearchPage; - - -/** - * @author Azanor - * - * - * IMPORTANT: If you are adding your own aspects to items it is a good idea to do it AFTER Thaumcraft adds its aspects, otherwise odd things may happen. - * - */ -public class ThaumcraftApi { - - //Materials - public static ToolMaterial toolMatThaumium = EnumHelper.addToolMaterial("THAUMIUM", 3, 400, 7F, 2, 22); - public static ToolMaterial toolMatElemental = EnumHelper.addToolMaterial("THAUMIUM_ELEMENTAL", 3, 1500, 10F, 3, 18); - public static ArmorMaterial armorMatThaumium = EnumHelper.addArmorMaterial("THAUMIUM", 25, new int[] { 2, 6, 5, 2 }, 25); - public static ArmorMaterial armorMatSpecial = EnumHelper.addArmorMaterial("SPECIAL", 25, new int[] { 1, 3, 2, 1 }, 25); - - //Enchantment references - public static int enchantFrugal; - public static int enchantPotency; - public static int enchantWandFortune; - public static int enchantHaste; - public static int enchantRepair; - - //Miscellaneous - /** - * Portable Hole Block-id Blacklist. - * Simply add the block-id's of blocks you don't want the portable hole to go through. - */ - public static ArrayList 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); - } - } - - //WARP /////////////////////////////////////////////////////////////////////////////////////// - private static HashMap warpMap = new HashMap(); - - /** - * This method is used to determine how much warp is gained if the item is crafted - * @param craftresult The item crafted - * @param amount how much warp is gained - */ - public static void addWarpToItem(ItemStack craftresult, int amount) { - warpMap.put(Arrays.asList(craftresult.getItem(),craftresult.getItemDamage()),amount); - } - - /** - * This method is used to determine how much warp is gained if the sent item is crafted - * @param in The item crafted - * @param amount how much warp is gained - */ - public static void addWarpToResearch(String research, int amount) { - warpMap.put(research, amount); - } - - /** - * Returns how much warp is gained from the item or research passed in - * @param in itemstack or string - * @return how much warp it will give - */ - public static int getWarp(Object in) { - if (in==null) return 0; - if (in instanceof ItemStack && warpMap.containsKey(Arrays.asList(((ItemStack)in).getItem(),((ItemStack)in).getItemDamage()))) { - return warpMap.get(Arrays.asList(((ItemStack)in).getItem(),((ItemStack)in).getItemDamage())); - } else - if (in instanceof String && warpMap.containsKey((String)in)) { - return warpMap.get((String)in); - } - return 0; - } - - //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-backup/api/java/thaumcraft/api/ThaumcraftApiHelper.java b/src-backup/api/java/thaumcraft/api/ThaumcraftApiHelper.java deleted file mode 100644 index a4b6d42a..00000000 --- a/src-backup/api/java/thaumcraft/api/ThaumcraftApiHelper.java +++ /dev/null @@ -1,269 +0,0 @@ -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-backup/api/java/thaumcraft/api/TileThaumcraft.java b/src-backup/api/java/thaumcraft/api/TileThaumcraft.java deleted file mode 100644 index 56ccae87..00000000 --- a/src-backup/api/java/thaumcraft/api/TileThaumcraft.java +++ /dev/null @@ -1,63 +0,0 @@ -package thaumcraft.api; - -import net.minecraft.nbt.NBTTagCompound; -import net.minecraft.network.NetworkManager; -import net.minecraft.network.Packet; -import net.minecraft.network.play.server.S35PacketUpdateTileEntity; -import net.minecraft.tileentity.TileEntity; - -/** - * - * @author azanor - * - * Custom tile entity class I use for most of my tile entities. Setup in such a way that only - * the nbt data within readCustomNBT / writeCustomNBT will be sent to the client when the tile - * updates. Apart from all the normal TE data that gets sent that is. - * - */ -public class TileThaumcraft extends TileEntity { - - //NBT stuff - - @Override - public void readFromNBT(NBTTagCompound nbttagcompound) - { - super.readFromNBT(nbttagcompound); - readCustomNBT(nbttagcompound); - } - - public void readCustomNBT(NBTTagCompound nbttagcompound) - { - //TODO - } - - @Override - public void writeToNBT(NBTTagCompound nbttagcompound) - { - super.writeToNBT(nbttagcompound); - writeCustomNBT(nbttagcompound); - } - - public void writeCustomNBT(NBTTagCompound nbttagcompound) - { - //TODO - } - - //Client Packet stuff - @Override - public Packet getDescriptionPacket() { - NBTTagCompound nbttagcompound = new NBTTagCompound(); - this.writeCustomNBT(nbttagcompound); - return new S35PacketUpdateTileEntity(this.xCoord, this.yCoord, this.zCoord, -999, nbttagcompound); - } - - @Override - public void onDataPacket(NetworkManager net, S35PacketUpdateTileEntity pkt) { - super.onDataPacket(net, pkt); - this.readCustomNBT(pkt.func_148857_g()); - } - - - - -} diff --git a/src-backup/api/java/thaumcraft/api/WorldCoordinates.java b/src-backup/api/java/thaumcraft/api/WorldCoordinates.java deleted file mode 100644 index 6c620af5..00000000 --- a/src-backup/api/java/thaumcraft/api/WorldCoordinates.java +++ /dev/null @@ -1,117 +0,0 @@ -package thaumcraft.api; - -import net.minecraft.nbt.NBTTagCompound; -import net.minecraft.tileentity.TileEntity; - -public class WorldCoordinates implements Comparable -{ - public int x; - - /** the y coordinate */ - public int y; - - /** the z coordinate */ - public int z; - - public int dim; - - public WorldCoordinates() {} - - public WorldCoordinates(int par1, int par2, int par3, int d) - { - this.x = par1; - this.y = par2; - this.z = par3; - this.dim = d; - } - - public WorldCoordinates(TileEntity tile) - { - this.x = tile.xCoord; - this.y = tile.yCoord; - this.z = tile.zCoord; - this.dim = tile.getWorldObj().provider.dimensionId; - } - - public WorldCoordinates(WorldCoordinates par1ChunkCoordinates) - { - this.x = par1ChunkCoordinates.x; - this.y = par1ChunkCoordinates.y; - this.z = par1ChunkCoordinates.z; - this.dim = par1ChunkCoordinates.dim; - } - - public boolean equals(Object par1Obj) - { - if (!(par1Obj instanceof WorldCoordinates)) - { - return false; - } - else - { - WorldCoordinates coordinates = (WorldCoordinates)par1Obj; - return this.x == coordinates.x && this.y == coordinates.y && this.z == coordinates.z && this.dim == coordinates.dim ; - } - } - - public int hashCode() - { - return this.x + this.y << 8 + this.z << 16 + this.dim << 24; - } - - /** - * Compare the coordinate with another coordinate - */ - public int compareWorldCoordinate(WorldCoordinates par1) - { - return this.dim == par1.dim ? ( - this.y == par1.y ? (this.z == par1.z ? this.x - par1.x : this.z - par1.z) : this.y - par1.y) : -1; - } - - public void set(int par1, int par2, int par3, int d) - { - this.x = par1; - this.y = par2; - this.z = par3; - this.dim = d; - } - - /** - * Returns the squared distance between this coordinates and the coordinates given as argument. - */ - public float getDistanceSquared(int par1, int par2, int par3) - { - float f = (float)(this.x - par1); - float f1 = (float)(this.y - par2); - float f2 = (float)(this.z - par3); - return f * f + f1 * f1 + f2 * f2; - } - - /** - * Return the squared distance between this coordinates and the ChunkCoordinates given as argument. - */ - public float getDistanceSquaredToWorldCoordinates(WorldCoordinates par1ChunkCoordinates) - { - return this.getDistanceSquared(par1ChunkCoordinates.x, par1ChunkCoordinates.y, par1ChunkCoordinates.z); - } - - public int compareTo(Object par1Obj) - { - return this.compareWorldCoordinate((WorldCoordinates)par1Obj); - } - - public void readNBT(NBTTagCompound nbt) { - this.x = nbt.getInteger("w_x"); - this.y = nbt.getInteger("w_y"); - this.z = nbt.getInteger("w_z"); - this.dim = nbt.getInteger("w_d"); - } - - public void writeNBT(NBTTagCompound nbt) { - nbt.setInteger("w_x",x); - nbt.setInteger("w_y",y); - nbt.setInteger("w_z",z); - nbt.setInteger("w_d",dim); - } - -} diff --git a/src-backup/api/java/thaumcraft/api/aspects/Aspect.java b/src-backup/api/java/thaumcraft/api/aspects/Aspect.java deleted file mode 100644 index 3c33a4a7..00000000 --- a/src-backup/api/java/thaumcraft/api/aspects/Aspect.java +++ /dev/null @@ -1,201 +0,0 @@ -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-backup/api/java/thaumcraft/api/aspects/AspectList.java b/src-backup/api/java/thaumcraft/api/aspects/AspectList.java deleted file mode 100644 index 6b9dfcef..00000000 --- a/src-backup/api/java/thaumcraft/api/aspects/AspectList.java +++ /dev/null @@ -1,256 +0,0 @@ -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-backup/api/java/thaumcraft/api/aspects/IEssentiaTransport.java b/src-backup/api/java/thaumcraft/api/aspects/IEssentiaTransport.java deleted file mode 100644 index fecbc160..00000000 --- a/src-backup/api/java/thaumcraft/api/aspects/IEssentiaTransport.java +++ /dev/null @@ -1,100 +0,0 @@ -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-backup/api/java/thaumcraft/api/crafting/CrucibleRecipe.java b/src-backup/api/java/thaumcraft/api/crafting/CrucibleRecipe.java deleted file mode 100644 index 9c1e8a62..00000000 --- a/src-backup/api/java/thaumcraft/api/crafting/CrucibleRecipe.java +++ /dev/null @@ -1,95 +0,0 @@ -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) { - ItemStack[] ores = ((ArrayList)catalyst).toArray(new ItemStack[]{}); - if (!ThaumcraftApiHelper.containsMatch(false, new ItemStack[]{cat},ores)) return false; - } - if (itags==null) return false; - for (Aspect tag:aspects.getAspects()) { - if (itags.getAmount(tag))catalyst).size()>0) { - ItemStack[] ores = ((ArrayList)catalyst).toArray(new ItemStack[]{}); - if (ThaumcraftApiHelper.containsMatch(false, new ItemStack[]{cat},ores)) 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; - } - - -// @Override -// public int hashCode() { -// String hash = ""; -// if (catalyst instanceof ItemStack) { -// hash += ((ItemStack)catalyst).toString(); -// } else if (catalyst instanceof ArrayList && ((ArrayList)catalyst).size()>0) { -// for (ItemStack s:(ArrayList)catalyst) { -// hash += s.toString(); -// } -// } else { -// hash += catalyst.hashCode(); -// } -// hash += getRecipeOutput().toString(); -// for (Aspect a:aspects.getAspectsSorted()) { -// hash += a.getTag() + aspects.getAmount(a); -// } -// return hash.hashCode(); -// } - -} diff --git a/src-backup/api/java/thaumcraft/api/crafting/IArcaneRecipe.java b/src-backup/api/java/thaumcraft/api/crafting/IArcaneRecipe.java deleted file mode 100644 index bb5036d2..00000000 --- a/src-backup/api/java/thaumcraft/api/crafting/IArcaneRecipe.java +++ /dev/null @@ -1,35 +0,0 @@ -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-backup/api/java/thaumcraft/api/crafting/IInfusionStabiliser.java b/src-backup/api/java/thaumcraft/api/crafting/IInfusionStabiliser.java deleted file mode 100644 index d137ff24..00000000 --- a/src-backup/api/java/thaumcraft/api/crafting/IInfusionStabiliser.java +++ /dev/null @@ -1,19 +0,0 @@ -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-backup/api/java/thaumcraft/api/crafting/InfusionEnchantmentRecipe.java b/src-backup/api/java/thaumcraft/api/crafting/InfusionEnchantmentRecipe.java deleted file mode 100644 index 6fb4d63d..00000000 --- a/src-backup/api/java/thaumcraft/api/crafting/InfusionEnchantmentRecipe.java +++ /dev/null @@ -1,156 +0,0 @@ -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-backup/api/java/thaumcraft/api/crafting/InfusionRecipe.java b/src-backup/api/java/thaumcraft/api/crafting/InfusionRecipe.java deleted file mode 100644 index fef0a347..00000000 --- a/src-backup/api/java/thaumcraft/api/crafting/InfusionRecipe.java +++ /dev/null @@ -1,128 +0,0 @@ -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-backup/api/java/thaumcraft/api/crafting/ShapedArcaneRecipe.java b/src-backup/api/java/thaumcraft/api/crafting/ShapedArcaneRecipe.java deleted file mode 100644 index 40c7bc27..00000000 --- a/src-backup/api/java/thaumcraft/api/crafting/ShapedArcaneRecipe.java +++ /dev/null @@ -1,261 +0,0 @@ -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-backup/api/java/thaumcraft/api/crafting/ShapelessArcaneRecipe.java b/src-backup/api/java/thaumcraft/api/crafting/ShapelessArcaneRecipe.java deleted file mode 100644 index 3d4ed508..00000000 --- a/src-backup/api/java/thaumcraft/api/crafting/ShapelessArcaneRecipe.java +++ /dev/null @@ -1,157 +0,0 @@ -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-backup/api/java/thaumcraft/api/damagesource/DamageSourceIndirectThaumcraftEntity.java b/src-backup/api/java/thaumcraft/api/damagesource/DamageSourceIndirectThaumcraftEntity.java deleted file mode 100644 index 1562d052..00000000 --- a/src-backup/api/java/thaumcraft/api/damagesource/DamageSourceIndirectThaumcraftEntity.java +++ /dev/null @@ -1,32 +0,0 @@ -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-backup/api/java/thaumcraft/api/damagesource/DamageSourceThaumcraft.java b/src-backup/api/java/thaumcraft/api/damagesource/DamageSourceThaumcraft.java deleted file mode 100644 index 7c277f28..00000000 --- a/src-backup/api/java/thaumcraft/api/damagesource/DamageSourceThaumcraft.java +++ /dev/null @@ -1,46 +0,0 @@ -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-backup/api/java/thaumcraft/api/entities/ITaintedMob.java b/src-backup/api/java/thaumcraft/api/entities/ITaintedMob.java deleted file mode 100644 index 83fb1fcb..00000000 --- a/src-backup/api/java/thaumcraft/api/entities/ITaintedMob.java +++ /dev/null @@ -1,5 +0,0 @@ -package thaumcraft.api.entities; - -public interface ITaintedMob { - -} diff --git a/src-backup/api/java/thaumcraft/api/nodes/INode.java b/src-backup/api/java/thaumcraft/api/nodes/INode.java deleted file mode 100644 index 8c71414d..00000000 --- a/src-backup/api/java/thaumcraft/api/nodes/INode.java +++ /dev/null @@ -1,53 +0,0 @@ -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-backup/api/java/thaumcraft/api/nodes/IRevealer.java b/src-backup/api/java/thaumcraft/api/nodes/IRevealer.java deleted file mode 100644 index 14a19b54..00000000 --- a/src-backup/api/java/thaumcraft/api/nodes/IRevealer.java +++ /dev/null @@ -1,22 +0,0 @@ -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-backup/api/java/thaumcraft/api/nodes/NodeModifier.java b/src-backup/api/java/thaumcraft/api/nodes/NodeModifier.java deleted file mode 100644 index 885b8678..00000000 --- a/src-backup/api/java/thaumcraft/api/nodes/NodeModifier.java +++ /dev/null @@ -1,6 +0,0 @@ -package thaumcraft.api.nodes; - -public enum NodeModifier -{ - BRIGHT, PALE, FADING -} \ No newline at end of file diff --git a/src-backup/api/java/thaumcraft/api/nodes/NodeType.java b/src-backup/api/java/thaumcraft/api/nodes/NodeType.java deleted file mode 100644 index 355324b5..00000000 --- a/src-backup/api/java/thaumcraft/api/nodes/NodeType.java +++ /dev/null @@ -1,6 +0,0 @@ -package thaumcraft.api.nodes; - -public enum NodeType -{ - NORMAL, UNSTABLE, DARK, TAINTED, HUNGRY, PURE -} \ No newline at end of file diff --git a/src-backup/api/java/thaumcraft/api/package-info.java b/src-backup/api/java/thaumcraft/api/package-info.java deleted file mode 100644 index 0de39267..00000000 --- a/src-backup/api/java/thaumcraft/api/package-info.java +++ /dev/null @@ -1,4 +0,0 @@ -@API(owner = "Thaumcraft", apiVersion = "4.2.0.0", provides = "Thaumcraft|API") -package thaumcraft.api; - -import cpw.mods.fml.common.API; diff --git a/src-backup/api/java/thaumcraft/api/potions/PotionFluxTaint.java b/src-backup/api/java/thaumcraft/api/potions/PotionFluxTaint.java deleted file mode 100644 index b718de4b..00000000 --- a/src-backup/api/java/thaumcraft/api/potions/PotionFluxTaint.java +++ /dev/null @@ -1,67 +0,0 @@ -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-backup/api/java/thaumcraft/api/research/IScanEventHandler.java b/src-backup/api/java/thaumcraft/api/research/IScanEventHandler.java deleted file mode 100644 index d0efac5f..00000000 --- a/src-backup/api/java/thaumcraft/api/research/IScanEventHandler.java +++ /dev/null @@ -1,9 +0,0 @@ -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-backup/api/java/thaumcraft/api/research/ResearchCategories.java b/src-backup/api/java/thaumcraft/api/research/ResearchCategories.java deleted file mode 100644 index 82309b36..00000000 --- a/src-backup/api/java/thaumcraft/api/research/ResearchCategories.java +++ /dev/null @@ -1,101 +0,0 @@ -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-backup/api/java/thaumcraft/api/research/ResearchCategoryList.java b/src-backup/api/java/thaumcraft/api/research/ResearchCategoryList.java deleted file mode 100644 index 7eed0101..00000000 --- a/src-backup/api/java/thaumcraft/api/research/ResearchCategoryList.java +++ /dev/null @@ -1,37 +0,0 @@ -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-backup/api/java/thaumcraft/api/research/ResearchItem.java b/src-backup/api/java/thaumcraft/api/research/ResearchItem.java deleted file mode 100644 index 55b3820c..00000000 --- a/src-backup/api/java/thaumcraft/api/research/ResearchItem.java +++ /dev/null @@ -1,367 +0,0 @@ -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-backup/api/java/thaumcraft/api/research/ResearchPage.java b/src-backup/api/java/thaumcraft/api/research/ResearchPage.java deleted file mode 100644 index fdada843..00000000 --- a/src-backup/api/java/thaumcraft/api/research/ResearchPage.java +++ /dev/null @@ -1,193 +0,0 @@ -package thaumcraft.api.research; - -import java.util.List; - -import net.minecraft.item.ItemStack; -import net.minecraft.item.crafting.FurnaceRecipes; -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, - SMELTING - } - - 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 arcane crafting recipes. - */ - public ResearchPage(CrucibleRecipe[] recipe) { - this.type = PageType.CRUCIBLE_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 a furnace smelting crafting recipe. - */ - public ResearchPage(ItemStack input) { - this.type = PageType.SMELTING; - this.recipe = input; - this.recipeOutput = FurnaceRecipes.smelting().getSmeltingResult(input); - } - - /** - * @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-backup/api/java/thaumcraft/api/research/ScanResult.java b/src-backup/api/java/thaumcraft/api/research/ScanResult.java deleted file mode 100644 index e1498f31..00000000 --- a/src-backup/api/java/thaumcraft/api/research/ScanResult.java +++ /dev/null @@ -1,39 +0,0 @@ -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-backup/api/java/thaumcraft/api/visnet/TileVisNode.java b/src-backup/api/java/thaumcraft/api/visnet/TileVisNode.java deleted file mode 100644 index 84b1400d..00000000 --- a/src-backup/api/java/thaumcraft/api/visnet/TileVisNode.java +++ /dev/null @@ -1,188 +0,0 @@ -package thaumcraft.api.visnet; - -import java.lang.ref.WeakReference; -import java.util.ArrayList; -import java.util.HashMap; - -import thaumcraft.api.TileThaumcraft; -import thaumcraft.api.WorldCoordinates; -import thaumcraft.api.aspects.Aspect; - -/** - * @author Azanor - * - * The tile entity used by nodes in the vis energy network. A node is either a source (like an aura node), - * a transport relay or vis receiver (like the infernal furnace). - * - */ -public abstract class TileVisNode extends TileThaumcraft { - - WeakReference parent = null; - ArrayList> children = new ArrayList>(); - - /** - * @return the WorldCoordinates location of where this node is located - */ - public WorldCoordinates getLocation() { - return new WorldCoordinates(this); - } - - /** - * @return the number of blocks away this node will check for parent nodes to connect to. - */ - public abstract int getRange(); - - /** - * @return true if this is the source or root node of the vis network. - */ - public abstract boolean isSource(); - - /** - * This method should never be called directly. Use VisNetHandler.drainVis() instead - * @param aspect what aspect to drain - * @param vis how much to drain - * @return how much was actually drained - */ - public int consumeVis(Aspect aspect, int vis) { - if (VisNetHandler.isNodeValid(getParent())) { - int out = getParent().get().consumeVis(aspect, vis); - if (out>0) { - triggerConsumeEffect(aspect); - } - return out; - } - return 0; - } - - public void removeThisNode() { - for (WeakReference n:getChildren()) { - if (n!=null && n.get()!=null) { - n.get().removeThisNode(); - } - } - - children = new ArrayList>(); - if (VisNetHandler.isNodeValid(this.getParent())) { - this.getParent().get().nodeRefresh=true; - } - this.setParent(null); - this.parentChanged(); - - if (this.isSource()) { - HashMap> sourcelist = VisNetHandler.sources.get(worldObj.provider.dimensionId); - if (sourcelist==null) { - sourcelist = new HashMap>(); - } - sourcelist.remove(getLocation()); - VisNetHandler.sources.put( worldObj.provider.dimensionId, sourcelist ); - } - - worldObj.markBlockForUpdate(xCoord, yCoord, zCoord); - } - - - - @Override - public void invalidate() { - removeThisNode(); - super.invalidate(); - } - - public void triggerConsumeEffect(Aspect aspect) { } - - /** - * @return - */ - public WeakReference getParent() { - return parent; - } - - /** - * @return - */ - public WeakReference getRootSource() { - return VisNetHandler.isNodeValid(getParent()) ? - getParent().get().getRootSource() : this.isSource() ? - new WeakReference(this) : null; - } - - /** - * @param parent - */ - public void setParent(WeakReference parent) { - this.parent = parent; - } - - /** - * @return - */ - public ArrayList> getChildren() { - return children; - } - - @Override - public boolean canUpdate() { - return true; - } - - protected int nodeCounter = 0; - private boolean nodeRegged = false; - public boolean nodeRefresh = false; - - @Override - public void updateEntity() { - - if (!worldObj.isRemote && ((nodeCounter++) % 40==0 || nodeRefresh)) { - //check for changes - if (!nodeRefresh && children.size()>0) { - for (WeakReference n:children) { - if (n==null || n.get()==null) { - nodeRefresh=true; - break; - } - } - } - - //refresh linked nodes - if (nodeRefresh) { - for (WeakReference n:children) { - if (n.get()!=null) { - n.get().nodeRefresh=true; - } - } - children.clear(); - parent=null; - } - - //redo stuff - if (isSource() && !nodeRegged) { - VisNetHandler.addSource(getWorldObj(), this); - nodeRegged = true; - } else - if (!isSource() && !VisNetHandler.isNodeValid(getParent())) { - setParent(VisNetHandler.addNode(getWorldObj(), this)); - nodeRefresh=true; - } - - if (nodeRefresh) { - worldObj.markBlockForUpdate(xCoord, yCoord, zCoord); - parentChanged(); - } - nodeRefresh=false; - } - - } - - public void parentChanged() { } - - /** - * @return the type of shard this is attuned to: - * none -1, air 0, fire 1, water 2, earth 3, order 4, entropy 5 - * Should return -1 for most implementations - */ - public byte getAttunement() { - return -1; - } - - -} diff --git a/src-backup/api/java/thaumcraft/api/visnet/VisNetHandler.java b/src-backup/api/java/thaumcraft/api/visnet/VisNetHandler.java deleted file mode 100644 index baf46d8e..00000000 --- a/src-backup/api/java/thaumcraft/api/visnet/VisNetHandler.java +++ /dev/null @@ -1,284 +0,0 @@ -package thaumcraft.api.visnet; - -import java.lang.ref.WeakReference; -import java.lang.reflect.Method; -import java.util.ArrayList; -import java.util.HashMap; - -import net.minecraft.world.World; -import thaumcraft.api.WorldCoordinates; -import thaumcraft.api.aspects.Aspect; -import cpw.mods.fml.common.FMLLog; - -public class VisNetHandler { - - // / NODE DRAINING - /** - * This method drains vis from a relay or source near the passed in - * location. The amount received can be less than the amount requested so - * take that into account. - * - * @param world - * @param x the x position of the draining block or entity - * @param y the y position of the draining block or entity - * @param z the z position of the draining block or entity - * @param aspect what aspect to drain - * @param vis how much to drain - * @return how much was actually drained - */ - public static int drainVis(World world, int x, int y, int z, Aspect aspect, int amount) { - - int drainedAmount = 0; - - WorldCoordinates drainer = new WorldCoordinates(x, y, z, - world.provider.dimensionId); - if (!nearbyNodes.containsKey(drainer)) { - calculateNearbyNodes(world, x, y, z); - } - - ArrayList> nodes = nearbyNodes.get(drainer); - if (nodes!=null && nodes.size()>0) - for (WeakReference noderef : nodes) { - - TileVisNode node = noderef.get(); - - if (node == null) continue; - - int a = node.consumeVis(aspect, amount); - drainedAmount += a; - amount -= a; - if (a>0) { - int color = Aspect.getPrimalAspects().indexOf(aspect); - generateVisEffect(world.provider.dimensionId, x, y, z, node.xCoord, node.yCoord, node.zCoord, color); - } - if (amount <= 0) { - break; - } - } - - return drainedAmount; - } - - static Method generateVisEffect; - public static void generateVisEffect(int dim, int x, int y, int z, int x2, int y2, int z2, int color) { - try { - if(generateVisEffect == null) { - Class fake = Class.forName("thaumcraft.common.lib.Utils"); - generateVisEffect = fake.getMethod("generateVisEffect", int.class, int.class, int.class, int.class, int.class, int.class, int.class, int.class); - } - generateVisEffect.invoke(null, dim, x,y,z,x2,y2,z2,color); - } catch(Exception ex) { - FMLLog.warning("[Thaumcraft API] Could not invoke thaumcraft.common.lib.Utils method generateVisEffect"); - } - } - - public static HashMap>> sources = new HashMap>>(); - - public static void addSource(World world, TileVisNode vs) { - HashMap> sourcelist = sources - .get(world.provider.dimensionId); - if (sourcelist == null) { - sourcelist = new HashMap>(); - } - sourcelist.put(vs.getLocation(), new WeakReference(vs)); - sources.put(world.provider.dimensionId, sourcelist); - nearbyNodes.clear(); - } - - public static boolean isNodeValid(WeakReference node) { - if (node == null || node.get() == null || node.get().isInvalid()) - return false; - return true; - } - - public static WeakReference addNode(World world, TileVisNode vn) { - WeakReference ref = new WeakReference(vn); - - HashMap> sourcelist = sources - .get(world.provider.dimensionId); - if (sourcelist == null) { - sourcelist = new HashMap>(); - return null; - } - - ArrayList nearby = new ArrayList(); - - for (WeakReference root : sourcelist.values()) { - if (!isNodeValid(root)) - continue; - - TileVisNode source = root.get(); - - float r = inRange(world, vn.getLocation(), source.getLocation(), - vn.getRange()); - if (r > 0) { - nearby.add(new Object[] { source, r - vn.getRange() * 2 }); - } - nearby = findClosestNodes(vn, source, nearby); - } - - float dist = Float.MAX_VALUE; - TileVisNode closest = null; - if (nearby.size() > 0) { - for (Object[] o : nearby) { - if ((Float) o[1] < dist) {// && canNodeBeSeen(vn,(TileVisNode) - // o[0])) { - dist = (Float) o[1]; - closest = (TileVisNode) o[0]; - } - } - } - if (closest != null) { - closest.getChildren().add(ref); - nearbyNodes.clear(); - return new WeakReference(closest); - } - - return null; - } - - public static ArrayList findClosestNodes(TileVisNode target, - TileVisNode root, ArrayList in) { - TileVisNode closestChild = null; - - for (WeakReference child : root.getChildren()) { - TileVisNode n = child.get(); - - if (n != null - && !n.equals(target) - && !n.equals(root) - && (target.getAttunement() == -1 || n.getAttunement() == -1 || n - .getAttunement() == target.getAttunement())) { - - float r2 = inRange(n.getWorldObj(), n.getLocation(), - target.getLocation(), target.getRange()); - if (r2 > 0) { - in.add(new Object[] { n, r2 }); - } - - in = findClosestNodes(target, n, in); - } - } - return in; - } - - private static float inRange(World world, WorldCoordinates cc1, - WorldCoordinates cc2, int range) { - float distance = cc1.getDistanceSquaredToWorldCoordinates(cc2); - return distance > range * range ? -1 : distance; - } - - private static HashMap>> nearbyNodes = new HashMap>>(); - - private static void calculateNearbyNodes(World world, int x, int y, int z) { - - HashMap> sourcelist = sources - .get(world.provider.dimensionId); - if (sourcelist == null) { - sourcelist = new HashMap>(); - return; - } - - ArrayList> cn = new ArrayList>(); - WorldCoordinates drainer = new WorldCoordinates(x, y, z, - world.provider.dimensionId); - - ArrayList nearby = new ArrayList(); - - for (WeakReference root : sourcelist.values()) { - - if (!isNodeValid(root)) - continue; - - TileVisNode source = root.get(); - - TileVisNode closest = null; - float range = Float.MAX_VALUE; - - float r = inRange(world, drainer, source.getLocation(), - source.getRange()); - if (r > 0) { - range = r; - closest = source; - } - - ArrayList> children = new ArrayList>(); - children = getAllChildren(source,children); - - for (WeakReference child : children) { - TileVisNode n = child.get(); - if (n != null && !n.equals(root)) { - - float r2 = inRange(n.getWorldObj(), n.getLocation(), - drainer, n.getRange()); - if (r2 > 0 && r2 < range) { - range = r2; - closest = n; - } - } - } - - if (closest != null) { - - cn.add(new WeakReference(closest)); - } - } - - nearbyNodes.put(drainer, cn); - } - - private static ArrayList> getAllChildren(TileVisNode source, ArrayList> list) { - for (WeakReference child : source.getChildren()) { - TileVisNode n = child.get(); - if (n != null) { - list.add(child); - list = getAllChildren(n,list); - } - } - return list; - } - - // public static boolean canNodeBeSeen(TileVisNode source,TileVisNode - // target) - // { - // double d = Math.sqrt(source.getDistanceFrom(target.xCoord, target.yCoord, - // target.zCoord)); - // double xd = (source.xCoord-target.xCoord) / d; - // double yd = (source.yCoord-target.yCoord) / d; - // double zd = (source.zCoord-target.zCoord) / d; - // return source.getWorldObj().rayTraceBlocks( - // Vec3.createVectorHelper(source.xCoord-xd+.5+.5, source.yCoord-yd, - // source.zCoord-zd), - // Vec3.createVectorHelper(target.xCoord+.5, target.yCoord+.5, - // target.zCoord+.5)) == null; - // } - - // public static HashMap> - // noderef = new HashMap>(); - // - // public static TileVisNode getClosestNodeWithinRadius(World world, int x, - // int y, int z, int radius) { - // TileVisNode out = null; - // WorldCoordinates wc = null; - // float cd = Float.MAX_VALUE; - // for (int sx = x - radius; sx <= x + radius; sx++) { - // for (int sy = y - radius; sy <= y + radius; sy++) { - // for (int sz = z - radius; sz <= z + radius; sz++) { - // wc = new WorldCoordinates(sx,sy,sz,world.provider.dimensionId); - // if (noderef.containsKey(wc)) { - // float d = wc.getDistanceSquared(x, y, z); - // if (dAs 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-backup/api/java/thaumcraft/api/wands/IWandRodOnUpdate.java b/src-backup/api/java/thaumcraft/api/wands/IWandRodOnUpdate.java deleted file mode 100644 index 4ef8c849..00000000 --- a/src-backup/api/java/thaumcraft/api/wands/IWandRodOnUpdate.java +++ /dev/null @@ -1,16 +0,0 @@ -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-backup/api/java/thaumcraft/api/wands/IWandTriggerManager.java b/src-backup/api/java/thaumcraft/api/wands/IWandTriggerManager.java deleted file mode 100644 index 47465552..00000000 --- a/src-backup/api/java/thaumcraft/api/wands/IWandTriggerManager.java +++ /dev/null @@ -1,12 +0,0 @@ -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-backup/api/java/thaumcraft/api/wands/IWandable.java b/src-backup/api/java/thaumcraft/api/wands/IWandable.java deleted file mode 100644 index aeb9bac7..00000000 --- a/src-backup/api/java/thaumcraft/api/wands/IWandable.java +++ /dev/null @@ -1,25 +0,0 @@ -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-backup/api/java/thaumcraft/api/wands/ItemFocusBasic.java b/src-backup/api/java/thaumcraft/api/wands/ItemFocusBasic.java deleted file mode 100644 index 35900520..00000000 --- a/src-backup/api/java/thaumcraft/api/wands/ItemFocusBasic.java +++ /dev/null @@ -1,166 +0,0 @@ -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-backup/api/java/thaumcraft/api/wands/StaffRod.java b/src-backup/api/java/thaumcraft/api/wands/StaffRod.java deleted file mode 100644 index e7ae90f0..00000000 --- a/src-backup/api/java/thaumcraft/api/wands/StaffRod.java +++ /dev/null @@ -1,48 +0,0 @@ -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-backup/api/java/thaumcraft/api/wands/WandCap.java b/src-backup/api/java/thaumcraft/api/wands/WandCap.java deleted file mode 100644 index 17b4581c..00000000 --- a/src-backup/api/java/thaumcraft/api/wands/WandCap.java +++ /dev/null @@ -1,129 +0,0 @@ -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; - } - - /** - * The research a player needs to have finished to be able to craft a wand with this cap. - */ - public String getResearch() { - return "CAP_"+getTag(); - } - - // 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-backup/api/java/thaumcraft/api/wands/WandRod.java b/src-backup/api/java/thaumcraft/api/wands/WandRod.java deleted file mode 100644 index 85954e46..00000000 --- a/src-backup/api/java/thaumcraft/api/wands/WandRod.java +++ /dev/null @@ -1,158 +0,0 @@ -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; - } - - /** - * The research a player needs to have finished to be able to craft a wand with this rod. - */ - public String getResearch() { - return "ROD_"+getTag(); - } - - // 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-backup/api/java/thaumcraft/api/wands/WandTriggerRegistry.java b/src-backup/api/java/thaumcraft/api/wands/WandTriggerRegistry.java deleted file mode 100644 index 68655cb7..00000000 --- a/src-backup/api/java/thaumcraft/api/wands/WandTriggerRegistry.java +++ /dev/null @@ -1,72 +0,0 @@ -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-backup/main/java/WayofTime/alchemicalWizardry/AlchemicalWizardry.java b/src-backup/main/java/WayofTime/alchemicalWizardry/AlchemicalWizardry.java deleted file mode 100644 index 0bf14f74..00000000 --- a/src-backup/main/java/WayofTime/alchemicalWizardry/AlchemicalWizardry.java +++ /dev/null @@ -1,1114 +0,0 @@ -package WayofTime.alchemicalWizardry; - -import java.io.File; -import java.io.FileOutputStream; -import java.io.InputStream; -import java.lang.reflect.Field; -import java.lang.reflect.Modifier; -import java.util.List; -import java.util.zip.ZipEntry; -import java.util.zip.ZipInputStream; - -import joshie.alchemicalWizardy.ShapedBloodOrbRecipe; -import joshie.alchemicalWizardy.ShapelessBloodOrbRecipe; -import net.minecraft.creativetab.CreativeTabs; -import net.minecraft.init.Blocks; -import net.minecraft.init.Items; -import net.minecraft.item.Item; -import net.minecraft.item.Item.ToolMaterial; -import net.minecraft.item.ItemArmor.ArmorMaterial; -import net.minecraft.item.ItemStack; -import net.minecraft.potion.Potion; -import net.minecraft.util.ResourceLocation; -import net.minecraft.util.WeightedRandomChestContent; -import net.minecraftforge.common.ChestGenHooks; -import net.minecraftforge.common.MinecraftForge; -import net.minecraftforge.common.util.EnumHelper; -import net.minecraftforge.fluids.Fluid; -import net.minecraftforge.fluids.FluidContainerRegistry; -import net.minecraftforge.fluids.FluidRegistry; -import net.minecraftforge.oredict.OreDictionary; -import net.minecraftforge.oredict.RecipeSorter; -import net.minecraftforge.oredict.RecipeSorter.Category; -import thaumcraft.api.ItemApi; -import thaumcraft.api.ThaumcraftApi; -import thaumcraft.api.aspects.Aspect; -import thaumcraft.api.aspects.AspectList; -import WayofTime.alchemicalWizardry.api.alchemy.AlchemicalPotionCreationHandler; -import WayofTime.alchemicalWizardry.api.alchemy.AlchemyRecipeRegistry; -import WayofTime.alchemicalWizardry.api.alchemy.energy.ReagentRegistry; -import WayofTime.alchemicalWizardry.api.altarRecipeRegistry.AltarRecipeRegistry; -import WayofTime.alchemicalWizardry.api.bindingRegistry.BindingRegistry; -import WayofTime.alchemicalWizardry.api.harvest.HarvestRegistry; -import WayofTime.alchemicalWizardry.api.rituals.Rituals; -import WayofTime.alchemicalWizardry.api.summoningRegistry.SummoningRegistry; -import WayofTime.alchemicalWizardry.common.AlchemicalWizardryEventHooks; -import WayofTime.alchemicalWizardry.common.AlchemicalWizardryFuelHandler; -import WayofTime.alchemicalWizardry.common.CommonProxy; -import WayofTime.alchemicalWizardry.common.EntityAirElemental; -import WayofTime.alchemicalWizardry.common.LifeBucketHandler; -import WayofTime.alchemicalWizardry.common.LifeEssence; -import WayofTime.alchemicalWizardry.common.ModLivingDropsEvent; -import WayofTime.alchemicalWizardry.common.NewPacketHandler; -import WayofTime.alchemicalWizardry.common.alchemy.CombinedPotionRegistry; -import WayofTime.alchemicalWizardry.common.block.ArmourForge; -import WayofTime.alchemicalWizardry.common.bloodAltarUpgrade.UpgradedAltars; -import WayofTime.alchemicalWizardry.common.entity.mob.EntityBileDemon; -import WayofTime.alchemicalWizardry.common.entity.mob.EntityBoulderFist; -import WayofTime.alchemicalWizardry.common.entity.mob.EntityEarthElemental; -import WayofTime.alchemicalWizardry.common.entity.mob.EntityFallenAngel; -import WayofTime.alchemicalWizardry.common.entity.mob.EntityFireElemental; -import WayofTime.alchemicalWizardry.common.entity.mob.EntityHolyElemental; -import WayofTime.alchemicalWizardry.common.entity.mob.EntityIceDemon; -import WayofTime.alchemicalWizardry.common.entity.mob.EntityLowerGuardian; -import WayofTime.alchemicalWizardry.common.entity.mob.EntityShade; -import WayofTime.alchemicalWizardry.common.entity.mob.EntityShadeElemental; -import WayofTime.alchemicalWizardry.common.entity.mob.EntitySmallEarthGolem; -import WayofTime.alchemicalWizardry.common.entity.mob.EntityWaterElemental; -import WayofTime.alchemicalWizardry.common.entity.mob.EntityWingedFireDemon; -import WayofTime.alchemicalWizardry.common.harvest.BloodMagicHarvestHandler; -import WayofTime.alchemicalWizardry.common.harvest.CactusReedHarvestHandler; -import WayofTime.alchemicalWizardry.common.harvest.GourdHarvestHandler; -import WayofTime.alchemicalWizardry.common.harvest.PamHarvestCompatRegistry; -import WayofTime.alchemicalWizardry.common.items.ItemRitualDiviner; -import WayofTime.alchemicalWizardry.common.items.sigil.SigilOfHolding; -import WayofTime.alchemicalWizardry.common.items.thaumcraft.ItemSanguineArmour; -import WayofTime.alchemicalWizardry.common.potion.PotionBoost; -import WayofTime.alchemicalWizardry.common.potion.PotionDeaf; -import WayofTime.alchemicalWizardry.common.potion.PotionDrowning; -import WayofTime.alchemicalWizardry.common.potion.PotionFeatherFall; -import WayofTime.alchemicalWizardry.common.potion.PotionFireFuse; -import WayofTime.alchemicalWizardry.common.potion.PotionFlameCloak; -import WayofTime.alchemicalWizardry.common.potion.PotionFlight; -import WayofTime.alchemicalWizardry.common.potion.PotionHeavyHeart; -import WayofTime.alchemicalWizardry.common.potion.PotionIceCloak; -import WayofTime.alchemicalWizardry.common.potion.PotionInhibit; -import WayofTime.alchemicalWizardry.common.potion.PotionPlanarBinding; -import WayofTime.alchemicalWizardry.common.potion.PotionProjectileProtect; -import WayofTime.alchemicalWizardry.common.potion.PotionReciprocation; -import WayofTime.alchemicalWizardry.common.potion.PotionSoulFray; -import WayofTime.alchemicalWizardry.common.potion.PotionSoulHarden; -import WayofTime.alchemicalWizardry.common.renderer.AlchemyCircleRenderer; -import WayofTime.alchemicalWizardry.common.rituals.RitualEffectAnimalGrowth; -import WayofTime.alchemicalWizardry.common.rituals.RitualEffectAutoAlchemy; -import WayofTime.alchemicalWizardry.common.rituals.RitualEffectBiomeChanger; -import WayofTime.alchemicalWizardry.common.rituals.RitualEffectContainment; -import WayofTime.alchemicalWizardry.common.rituals.RitualEffectCrushing; -import WayofTime.alchemicalWizardry.common.rituals.RitualEffectEllipsoid; -import WayofTime.alchemicalWizardry.common.rituals.RitualEffectEvaporation; -import WayofTime.alchemicalWizardry.common.rituals.RitualEffectExpulsion; -import WayofTime.alchemicalWizardry.common.rituals.RitualEffectFeatheredEarth; -import WayofTime.alchemicalWizardry.common.rituals.RitualEffectFeatheredKnife; -import WayofTime.alchemicalWizardry.common.rituals.RitualEffectFlight; -import WayofTime.alchemicalWizardry.common.rituals.RitualEffectFullStomach; -import WayofTime.alchemicalWizardry.common.rituals.RitualEffectGrowth; -import WayofTime.alchemicalWizardry.common.rituals.RitualEffectHarvest; -import WayofTime.alchemicalWizardry.common.rituals.RitualEffectHealing; -import WayofTime.alchemicalWizardry.common.rituals.RitualEffectInterdiction; -import WayofTime.alchemicalWizardry.common.rituals.RitualEffectItemSuction; -import WayofTime.alchemicalWizardry.common.rituals.RitualEffectJumping; -import WayofTime.alchemicalWizardry.common.rituals.RitualEffectLava; -import WayofTime.alchemicalWizardry.common.rituals.RitualEffectLeap; -import WayofTime.alchemicalWizardry.common.rituals.RitualEffectLifeConduit; -import WayofTime.alchemicalWizardry.common.rituals.RitualEffectMagnetic; -import WayofTime.alchemicalWizardry.common.rituals.RitualEffectSoulBound; -import WayofTime.alchemicalWizardry.common.rituals.RitualEffectSpawnWard; -import WayofTime.alchemicalWizardry.common.rituals.RitualEffectSummonMeteor; -import WayofTime.alchemicalWizardry.common.rituals.RitualEffectSupression; -import WayofTime.alchemicalWizardry.common.rituals.RitualEffectUnbinding; -import WayofTime.alchemicalWizardry.common.rituals.RitualEffectVeilOfEvil; -import WayofTime.alchemicalWizardry.common.rituals.RitualEffectWater; -import WayofTime.alchemicalWizardry.common.rituals.RitualEffectWellOfSuffering; -import WayofTime.alchemicalWizardry.common.spell.simple.HomSpellRegistry; -import WayofTime.alchemicalWizardry.common.spell.simple.SpellEarthBender; -import WayofTime.alchemicalWizardry.common.spell.simple.SpellExplosions; -import WayofTime.alchemicalWizardry.common.spell.simple.SpellFireBurst; -import WayofTime.alchemicalWizardry.common.spell.simple.SpellFrozenWater; -import WayofTime.alchemicalWizardry.common.spell.simple.SpellHolyBlast; -import WayofTime.alchemicalWizardry.common.spell.simple.SpellLightningBolt; -import WayofTime.alchemicalWizardry.common.spell.simple.SpellTeleport; -import WayofTime.alchemicalWizardry.common.spell.simple.SpellWateryGrave; -import WayofTime.alchemicalWizardry.common.spell.simple.SpellWindGust; -import WayofTime.alchemicalWizardry.common.summoning.SummoningHelperAW; -import WayofTime.alchemicalWizardry.common.summoning.meteor.MeteorRegistry; -import WayofTime.alchemicalWizardry.common.tileEntity.TEAlchemicCalcinator; -import WayofTime.alchemicalWizardry.common.tileEntity.TEAltar; -import WayofTime.alchemicalWizardry.common.tileEntity.TEBellJar; -import WayofTime.alchemicalWizardry.common.tileEntity.TEConduit; -import WayofTime.alchemicalWizardry.common.tileEntity.TEDemonPortal; -import WayofTime.alchemicalWizardry.common.tileEntity.TEHomHeart; -import WayofTime.alchemicalWizardry.common.tileEntity.TEMasterStone; -import WayofTime.alchemicalWizardry.common.tileEntity.TEOrientable; -import WayofTime.alchemicalWizardry.common.tileEntity.TEPedestal; -import WayofTime.alchemicalWizardry.common.tileEntity.TEPlinth; -import WayofTime.alchemicalWizardry.common.tileEntity.TEReagentConduit; -import WayofTime.alchemicalWizardry.common.tileEntity.TESchematicSaver; -import WayofTime.alchemicalWizardry.common.tileEntity.TESocket; -import WayofTime.alchemicalWizardry.common.tileEntity.TESpectralBlock; -import WayofTime.alchemicalWizardry.common.tileEntity.TESpectralContainer; -import WayofTime.alchemicalWizardry.common.tileEntity.TESpellEffectBlock; -import WayofTime.alchemicalWizardry.common.tileEntity.TESpellEnhancementBlock; -import WayofTime.alchemicalWizardry.common.tileEntity.TESpellModifierBlock; -import WayofTime.alchemicalWizardry.common.tileEntity.TESpellParadigmBlock; -import WayofTime.alchemicalWizardry.common.tileEntity.TETeleposer; -import WayofTime.alchemicalWizardry.common.tileEntity.TEWritingTable; -import WayofTime.alchemicalWizardry.common.tileEntity.gui.GuiHandler; -import cpw.mods.fml.common.FMLCommonHandler; -import cpw.mods.fml.common.Loader; -import cpw.mods.fml.common.Mod; -import cpw.mods.fml.common.Mod.EventHandler; -import cpw.mods.fml.common.Mod.Instance; -import cpw.mods.fml.common.SidedProxy; -import cpw.mods.fml.common.event.FMLInitializationEvent; -import cpw.mods.fml.common.event.FMLPostInitializationEvent; -import cpw.mods.fml.common.event.FMLPreInitializationEvent; -import cpw.mods.fml.common.network.NetworkRegistry; -import cpw.mods.fml.common.registry.EntityRegistry; -import cpw.mods.fml.common.registry.GameRegistry; - -@Mod(modid = "AWWayofTime", name = "AlchemicalWizardry", version = "v1.2.0") -//@NetworkMod(clientSideRequired = true, serverSideRequired = false, channels = {"BloodAltar", "particle", "SetLifeEssence", "GetLifeEssence", "Ritual", "GetAltarEssence", "TESocket", "TEWritingTable", "CustomParticle", "SetPlayerVel", "SetPlayerPos", "TEPedestal", "TEPlinth", "TETeleposer", "InfiniteLPPath", "TEOrientor"}, packetHandler = PacketHandler.class) - -public class AlchemicalWizardry -{ - public static boolean doMeteorsDestroyBlocks = true; - public static String[] diamondMeteorArray; - public static int diamondMeteorRadius; - public static String[] stoneMeteorArray; - public static int stoneMeteorRadius; - public static String[] ironBlockMeteorArray; - public static int ironBlockMeteorRadius; - public static String[] netherStarMeteorArray; - public static int netherStarMeteorRadius; - - public static String[] allowedCrushedOresArray; - - public static Potion customPotionDrowning; - public static Potion customPotionBoost; - public static Potion customPotionProjProt; - public static Potion customPotionInhibit; - public static Potion customPotionFlight; - public static Potion customPotionReciprocation; - public static Potion customPotionFlameCloak; - public static Potion customPotionIceCloak; - public static Potion customPotionHeavyHeart; - public static Potion customPotionFireFuse; - public static Potion customPotionPlanarBinding; - public static Potion customPotionSoulFray; - public static Potion customPotionSoulHarden; - public static Potion customPotionDeaf; - public static Potion customPotionFeatherFall; - - public static int customPotionDrowningID; - public static int customPotionBoostID; - public static int customPotionProjProtID; - public static int customPotionInhibitID; - public static int customPotionFlightID; - public static int customPotionReciprocationID; - public static int customPotionFlameCloakID; - public static int customPotionIceCloakID; - public static int customPotionHeavyHeartID; - public static int customPotionFireFuseID; - public static int customPotionPlanarBindingID; - public static int customPotionSoulFrayID; - public static int customPotionSoulHardenID; - public static int customPotionDeafID; - public static int customPotionFeatherFallID; - - public static boolean isThaumcraftLoaded; - public static boolean isForestryLoaded; - - public static boolean wimpySettings; - public static boolean respawnWithDebuff; - public static boolean lockdownAltar; - public static boolean causeHungerWithRegen; - - public static List wellBlacklist; - - public static CreativeTabs tabBloodMagic = new CreativeTabs("tabBloodMagic") - { - @Override - public ItemStack getIconItemStack() - { - return new ItemStack(ModItems.weakBloodOrb, 1, 0); - } - - @Override - public Item getTabIconItem() - { - return ModItems.weakBloodOrb; - } - }; - - public static ToolMaterial bloodBoundToolMaterial = EnumHelper.addToolMaterial("BoundBlood", 4, 1000, 12.0f, 8.0f, 50); - public static ArmorMaterial sanguineArmourArmourMaterial = EnumHelper.addArmorMaterial("SanguineArmour", 33, new int[]{3, 8, 6, 3}, 30); - - //Dungeon loot chances - public static int standardBindingAgentDungeonChance; - public static int mundanePowerCatalystDungeonChance; - public static int averagePowerCatalystDungeonChance; - public static int greaterPowerCatalystDungeonChance; - public static int mundaneLengtheningCatalystDungeonChance; - public static int averageLengtheningCatalystDungeonChance; - public static int greaterLengtheningCatalystDungeonChance; - - //Mob IDs - public static int entityFallenAngelID = 20; - public static int entityLowerGuardianID = 21; - public static int entityBileDemonID = 22; - public static int entityWingedFireDemonID = 23; - public static int entitySmallEarthGolemID = 24; - public static int entityIceDemonID = 25; - public static int entityBoulderFistID = 26; - public static int entityShadeID = 27; - public static int entityAirElementalID = 28; - public static int entityWaterElementalID = 29; - public static int entityEarthElementalID = 30; - public static int entityFireElementalID = 31; - public static int entityShadeElementalID = 32; - public static int entityHolyElementalID = 33; - - - public static Fluid lifeEssenceFluid; - - // The instance of your mod that Forge uses. - @Instance("AWWayofTime") - public static AlchemicalWizardry instance; - - // Says where the client and server 'proxy' code is loaded. - @SidedProxy(clientSide = "WayofTime.alchemicalWizardry.client.ClientProxy", serverSide = "WayofTime.alchemicalWizardry.common.CommonProxy") - public static CommonProxy proxy; - - @EventHandler - public void preInit(FMLPreInitializationEvent event) - { - File bmDirectory = new File("config/BloodMagic/schematics"); - - if(!bmDirectory.exists() && bmDirectory.mkdirs()) - { - try - { - InputStream in = AlchemicalWizardry.class.getResourceAsStream("/assets/alchemicalwizardry/schematics/building/buildings.zip"); - System.out.println("none yet!"); - if(in != null) - { - System.out.println("I have found a zip!"); - ZipInputStream zipStream = new ZipInputStream(in); - ZipEntry entry = null; - - int extractCount = 0; - - while((entry = zipStream.getNextEntry()) != null) - { - File file = new File(bmDirectory, entry.getName()); - if(file.exists() && file.length() > 3L) - { - continue; - } - FileOutputStream out = new FileOutputStream(file); - - byte[] buffer = new byte[8192]; - int len; - while((len = zipStream.read(buffer)) != -1) - { - out.write(buffer, 0, len); - } - out.close(); - - extractCount++; - } - } - } - catch(Exception e) - { - - } - } - - TEDemonPortal.loadBuildingList(); - - MinecraftForge.EVENT_BUS.register(new LifeBucketHandler()); - BloodMagicConfiguration.init(new File(event.getModConfigurationDirectory(), "AWWayofTime.cfg")); - - //Custom config stuff goes here - - - 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("Severe error, please report this to the mod author:"); - System.err.println(e); - } - } - AlchemicalWizardry.lifeEssenceFluid = new LifeEssence("Life Essence"); - FluidRegistry.registerFluid(lifeEssenceFluid); - - ModBlocks.init(); - - - ModBlocks.registerBlocksInPre(); - - ModItems.init(); - - ModItems.registerItems(); - - RecipeSorter.INSTANCE.register("AWWayofTime:shapedorb", ShapedBloodOrbRecipe.class, Category.SHAPED, "before:minecraft:shapeless"); - RecipeSorter.INSTANCE.register("AWWayofTime:shapelessorb", ShapelessBloodOrbRecipe.class, Category.SHAPELESS, "after:minecraft:shapeless"); - - Object eventHook = new AlchemicalWizardryEventHooks(); - FMLCommonHandler.instance().bus().register(eventHook); - MinecraftForge.EVENT_BUS.register(eventHook); - NewPacketHandler.INSTANCE.ordinal(); - } - - @EventHandler - public void load(FMLInitializationEvent event) - { - int craftingConstant = OreDictionary.WILDCARD_VALUE; - //TickRegistry.registerTickHandler(new AlchemicalWizardryTickHandler(), Side.SERVER); - - ModBlocks.registerBlocksInInit(); - //blocks - - proxy.registerRenderers(); - proxy.registerEntities(); - proxy.registerEntityTrackers(); - proxy.registerEvents(); - //ItemStacks used for crafting go here - ItemStack lapisStack = new ItemStack(Items.dye,1,4); - ItemStack lavaBucketStack = new ItemStack(Items.lava_bucket); - ItemStack cobblestoneStack = new ItemStack(Blocks.cobblestone, 1, craftingConstant); - ItemStack glassStack = new ItemStack(Blocks.glass, 1, craftingConstant); - ItemStack ironIngotStack = new ItemStack(Items.iron_ingot); - ItemStack diamondStack = new ItemStack(Items.diamond, 1, craftingConstant); - ItemStack woolStack = new ItemStack(Blocks.wool); - ItemStack goldNuggetStack = new ItemStack(Items.gold_nugget); - ItemStack stoneStack = new ItemStack(Blocks.stone, 1, craftingConstant); - ItemStack redstoneStack = new ItemStack(Items.redstone); - ItemStack glowstoneBlockStack = new ItemStack(Blocks.glowstone); - ItemStack ironBlockStack = new ItemStack(Blocks.iron_block); - ItemStack waterBucketStack = new ItemStack(Items.water_bucket); - ItemStack emptyBucketStack = new ItemStack(Items.bucket); - ItemStack magmaCreamStack = new ItemStack(Items.magma_cream); - ItemStack stringStack = new ItemStack(Items.string); - ItemStack obsidianStack = new ItemStack(Blocks.obsidian); - ItemStack diamondSwordStack = new ItemStack(Items.diamond_sword); - ItemStack goldIngotStack = new ItemStack(Items.gold_ingot); - ItemStack cauldronStack = new ItemStack(Blocks.cauldron); - ItemStack furnaceStack = new ItemStack(Blocks.furnace); - ItemStack sugarStack = new ItemStack(Items.sugar); - ItemStack featherStack = new ItemStack(Items.feather); - ItemStack ghastTearStack = new ItemStack(Items.ghast_tear); - ItemStack ironPickaxeStack = new ItemStack(Items.iron_pickaxe); - ItemStack ironAxeStack = new ItemStack(Items.iron_axe); - ItemStack ironShovelStack = new ItemStack(Items.iron_shovel); - ItemStack glowstoneDustStack = new ItemStack(Items.glowstone_dust); - ItemStack saplingStack = new ItemStack(Blocks.sapling); - ItemStack reedStack = new ItemStack(Items.reeds); - ItemStack blankSlateStack = new ItemStack(ModItems.blankSlate, 1, craftingConstant); - //ItemStack glassShardStack = new ItemStack(glassShard); - ItemStack weakBloodOrbStackCrafted = new ItemStack(ModItems.weakBloodOrb); - //ItemStack bloodiedShardStack = new ItemStack(bloodiedShard); - ItemStack reinforcedSlateStack = new ItemStack(ModItems.reinforcedSlate, 1, craftingConstant); - ItemStack weakBloodOrbStack = new ItemStack(ModItems.weakBloodOrb, 1, craftingConstant); - ItemStack imbuedSlateStack = new ItemStack(ModItems.imbuedSlate, 1, craftingConstant); - ItemStack demonSlateStack = new ItemStack(ModItems.demonicSlate, 1, craftingConstant); - ItemStack apprenticeBloodOrbStack = new ItemStack(ModItems.apprenticeBloodOrb, 1, craftingConstant); - ItemStack magicianBloodOrbStack = new ItemStack(ModItems.magicianBloodOrb, 1, craftingConstant); - ItemStack waterSigilStackCrafted = new ItemStack(ModItems.waterSigil); - ItemStack lavaSigilStackCrafted = new ItemStack(ModItems.lavaSigil); - ItemStack voidSigilStackCrafted = new ItemStack(ModItems.voidSigil); - ItemStack airSigilStack = new ItemStack(ModItems.airSigil); - ItemStack lavaCrystalStackCrafted = new ItemStack(ModItems.lavaCrystal); - ItemStack lavaCrystalStack = new ItemStack(ModItems.lavaCrystal); - ItemStack energySwordStack = new ItemStack(ModItems.energySword); - ItemStack energyBlasterStack = new ItemStack(ModItems.energyBlaster); - ItemStack sacrificialDaggerStack = new ItemStack(ModItems.sacrificialDagger); - ItemStack bloodAltarStack = new ItemStack(ModBlocks.blockAltar,1,0); - ItemStack bloodRuneCraftedStack = new ItemStack(ModBlocks.bloodRune, 1); - ItemStack bloodRuneStack = new ItemStack(ModBlocks.bloodRune); - ItemStack speedRuneStack = new ItemStack(ModBlocks.speedRune); - ItemStack efficiencyRuneStack = new ItemStack(ModBlocks.efficiencyRune); - ItemStack runeOfSacrificeStack = new ItemStack(ModBlocks.runeOfSacrifice); - ItemStack runeOfSelfSacrificeStack = new ItemStack(ModBlocks.runeOfSelfSacrifice); - ItemStack miningSigilStackCrafted = new ItemStack(ModItems.sigilOfTheFastMiner); - ItemStack divinationSigilStackCrafted = new ItemStack(ModItems.divinationSigil); - ItemStack seerSigilStackCrafted = new ItemStack(ModItems.itemSeerSigil); -// ItemStack elementalInkWaterStack = new ItemStack(elementalInkWater); -// ItemStack elementalInkFireStack = new ItemStack(elementalInkFire); -// ItemStack elementalInkEarthStack = new ItemStack(elementalInkEarth); -// ItemStack elementalInkAirStack = new ItemStack(elementalInkAir); - ItemStack waterScribeToolStack = new ItemStack(ModItems.waterScribeTool); - ItemStack fireScribeToolStack = new ItemStack(ModItems.fireScribeTool); - ItemStack earthScribeToolStack = new ItemStack(ModItems.earthScribeTool); - ItemStack airScribeToolStack = new ItemStack(ModItems.airScribeTool); - ItemStack ritualStoneStackCrafted = new ItemStack(ModBlocks.ritualStone, 4); - ItemStack ritualStoneStack = new ItemStack(ModBlocks.ritualStone); - ItemStack masterRitualStoneStack = new ItemStack(ModBlocks.blockMasterStone); - ItemStack imperfectRitualStoneStack = new ItemStack(ModBlocks.imperfectRitualStone); - ItemStack sigilOfElementalAffinityStackCrafted = new ItemStack(ModItems.sigilOfElementalAffinity); - ItemStack lavaSigilStack = new ItemStack(ModItems.lavaSigil); - ItemStack waterSigilStack = new ItemStack(ModItems.waterSigil); - ItemStack sigilOfHoldingStack = new ItemStack(ModItems.sigilOfHolding); - ItemStack weakBloodShardStack = new ItemStack(ModItems.weakBloodShard); - ItemStack emptySocketStack = new ItemStack(ModBlocks.emptySocket); - ItemStack bloodSocketStack = new ItemStack(ModBlocks.bloodSocket); - ItemStack armourForgeStack = new ItemStack(ModBlocks.armourForge); - ItemStack largeBloodStoneBrickStackCrafted = new ItemStack(ModBlocks.largeBloodStoneBrick, 32); - ItemStack largeBloodStoneBrickStack = new ItemStack(ModBlocks.largeBloodStoneBrick); - ItemStack bloodStoneBrickStackCrafted = new ItemStack(ModBlocks.bloodStoneBrick, 4); - ItemStack growthSigilStack = new ItemStack(ModItems.growthSigil); - ItemStack blockHomHeartStack = new ItemStack(ModBlocks.blockHomHeart); - ItemStack redWoolStack = new ItemStack(Blocks.wool, 1, 14); - ItemStack zombieHead = new ItemStack(Items.skull, 1, 2); - ItemStack simpleCatalystStack = new ItemStack(ModItems.simpleCatalyst); - ItemStack duskRitualDivinerStack = new ItemStack(ModItems.itemRitualDiviner); - ((ItemRitualDiviner) duskRitualDivinerStack.getItem()).setMaxRuneDisplacement(duskRitualDivinerStack, 1); - //weakBloodOrbStackCrafted.setItemDamage(weakBloodOrbStackCrafted.getMaxDamage()); - waterSigilStackCrafted.setItemDamage(waterSigilStackCrafted.getMaxDamage()); - lavaSigilStackCrafted.setItemDamage(lavaSigilStackCrafted.getMaxDamage()); - voidSigilStackCrafted.setItemDamage(voidSigilStackCrafted.getMaxDamage()); - lavaCrystalStackCrafted.setItemDamage(lavaCrystalStackCrafted.getMaxDamage()); - miningSigilStackCrafted.setItemDamage(miningSigilStackCrafted.getMaxDamage()); - sigilOfElementalAffinityStackCrafted.setItemDamage(sigilOfElementalAffinityStackCrafted.getMaxDamage()); - ItemStack archmageBloodOrbStack = new ItemStack(ModItems.archmageBloodOrb); - ItemStack sanctusStack = new ItemStack(ModItems.sanctus); - ItemStack aetherStack = new ItemStack(ModItems.aether); - ItemStack terraeStack = new ItemStack(ModItems.terrae); - ItemStack incendiumStack = new ItemStack(ModItems.incendium); - ItemStack tennebraeStack = new ItemStack(ModItems.tennebrae); - ItemStack aquasalusStack = new ItemStack(ModItems.aquasalus); - ItemStack crystallosStack = new ItemStack(ModItems.crystallos); - ItemStack crepitousStack = new ItemStack(ModItems.crepitous); - ItemStack magicalesStack = new ItemStack(ModItems.magicales); - //All crafting goes here - // GameRegistry.addRecipe(orbOfTestingStack, "x x", " ", "x x", 'x', cobblestoneStack); - //GameRegistry.addRecipe(glassShardStack, " x", "y ", 'x', ironIngotStack, 'y', glassStack); - //GameRegistry.addRecipe(weakBloodOrbStackCrafted, "xxx", "xdx", "www", 'x', bloodiedShardStack, 'd', diamondStack, 'w', woolStack); - GameRegistry.addRecipe(sacrificialDaggerStack, "ggg", " dg", "i g", 'g', glassStack, 'd', goldIngotStack, 'i', ironIngotStack); - //GameRegistry.addRecipe(blankSlateStack, "sgs", "gig", "sgs", 's', stoneStack, 'g', goldNuggetStack, 'i', ironIngotStack); - //GameRegistry.addRecipe(reinforcedSlateStack, "rir", "ibi", "gig", 'r', redstoneStack, 'i', ironIngotStack, 'b', blankSlateStack, 'g', glowstoneBlockStack); - GameRegistry.addRecipe(new ShapedBloodOrbRecipe(lavaCrystalStackCrafted, "glg", "lbl", "odo", 'g', glassStack, 'l', lavaBucketStack, 'b', weakBloodOrbStack, 'd', diamondStack, 'o', obsidianStack)); - GameRegistry.addRecipe(new ShapedBloodOrbRecipe(waterSigilStackCrafted, "www", "wbw", "wow", 'w', waterBucketStack, 'b', blankSlateStack, 'o', weakBloodOrbStack)); - GameRegistry.addRecipe(lavaSigilStackCrafted, "lml", "lbl", "lcl", 'l', lavaBucketStack, 'b', blankSlateStack, 'm', magmaCreamStack, 'c', lavaCrystalStack); - GameRegistry.addRecipe(new ShapedBloodOrbRecipe(voidSigilStackCrafted, "ese", "ere", "eoe", 'e', emptyBucketStack, 'r', reinforcedSlateStack, 'o', apprenticeBloodOrbStack, 's', stringStack)); - GameRegistry.addRecipe(bloodAltarStack, "s s", "scs", "gdg", 's', stoneStack, 'c', furnaceStack, 'd', diamondStack, 'g', goldIngotStack); - //GameRegistry.addRecipe(energySwordStack, " o ", " o ", " s ", 'o', weakBloodOrbStack, 's', diamondSwordStack); - //GameRegistry.addRecipe(energyBlasterStack, "oi ", "gdi", " rd", 'o', weakBloodOrbStack, 'i', ironIngotStack, 'd', diamondStack, 'r', reinforcedSlateStack, 'g', goldIngotStack); - GameRegistry.addRecipe(new ShapedBloodOrbRecipe(bloodRuneCraftedStack, "sss", "ror", "sss", 's', stoneStack, 'o', weakBloodOrbStack, 'r', blankSlateStack)); - GameRegistry.addRecipe(speedRuneStack, "sbs", "uru", "sbs", 'u', sugarStack, 's', stoneStack, 'r', bloodRuneStack, 'b', blankSlateStack); - //GameRegistry.addRecipe(efficiencyRuneStack, "sbs", "rur", "sbs", 'r', redstoneStack, 's', stoneStack, 'u', bloodRuneStack,'b',blankSlateStack); - GameRegistry.addRecipe(new ShapedBloodOrbRecipe(new ItemStack(ModBlocks.bloodRune, 1, 1), "sbs", "bob", "srs", 's', stoneStack, 'o', magicianBloodOrbStack, 'b', emptyBucketStack, 'r', new ItemStack(ModItems.imbuedSlate))); - GameRegistry.addRecipe(new ShapedBloodOrbRecipe(new ItemStack(ModBlocks.bloodRune, 1, 2), "sbs", "bob", "srs", 's', stoneStack, 'o', magicianBloodOrbStack, 'b', waterBucketStack, 'r', new ItemStack(ModItems.imbuedSlate))); - GameRegistry.addRecipe(new ShapedBloodOrbRecipe(new ItemStack(ModBlocks.bloodRune, 1, 3), "sws", "ror", "sws", 's', stoneStack, 'o', new ItemStack(ModItems.masterBloodOrb), 'w', weakBloodOrbStack, 'r', new ItemStack(ModItems.demonicSlate))); - GameRegistry.addRecipe(new ShapedBloodOrbRecipe(new ItemStack(ModBlocks.bloodRune, 1, 4), "srs", "beb", "sos", 's', obsidianStack, 'o', new ItemStack(ModItems.masterBloodOrb), 'r', new ItemStack(ModItems.demonicSlate), 'b', emptyBucketStack,'e',new ItemStack(ModBlocks.bloodRune, 1, 1))); - GameRegistry.addRecipe(new ShapedBloodOrbRecipe(airSigilStack, "fgf", "fsf", "fof", 'f', featherStack, 'g', ghastTearStack, 's', reinforcedSlateStack, 'o', apprenticeBloodOrbStack)); - GameRegistry.addRecipe(new ShapedBloodOrbRecipe(miningSigilStackCrafted, "sps", "hra", "sos", 'o', apprenticeBloodOrbStack, 's', stoneStack, 'p', ironPickaxeStack, 'h', ironShovelStack, 'a', ironAxeStack, 'r', reinforcedSlateStack)); - GameRegistry.addRecipe(new ShapedBloodOrbRecipe(runeOfSacrificeStack, "srs", "gog", "srs", 's', stoneStack, 'g', goldIngotStack, 'o', apprenticeBloodOrbStack, 'r', reinforcedSlateStack)); - GameRegistry.addRecipe(new ShapedBloodOrbRecipe(runeOfSelfSacrificeStack, "srs", "gog", "srs", 's', stoneStack, 'g', glowstoneDustStack, 'o', apprenticeBloodOrbStack, 'r', reinforcedSlateStack)); - GameRegistry.addRecipe(new ShapedBloodOrbRecipe(divinationSigilStackCrafted, "ggg", "gsg", "gog", 'g', glassStack, 's', blankSlateStack, 'o', weakBloodOrbStack)); - GameRegistry.addRecipe(new ShapedBloodOrbRecipe(seerSigilStackCrafted, "gbg", "gsg", "gog", 'g', glassStack, 's', divinationSigilStackCrafted, 'o', apprenticeBloodOrbStack, 'b', new ItemStack(ModItems.bucketLife))); - -// GameRegistry.addRecipe(waterScribeToolStack, "f", "i", 'f', featherStack, 'i', elementalInkWaterStack); -// GameRegistry.addRecipe(fireScribeToolStack, "f", "i", 'f', featherStack, 'i', elementalInkFireStack); -// GameRegistry.addRecipe(earthScribeToolStack, "f", "i", 'f', featherStack, 'i', elementalInkEarthStack); -// GameRegistry.addRecipe(airScribeToolStack, "f", "i", 'f', featherStack, 'i', elementalInkAirStack); - GameRegistry.addRecipe(new ShapedBloodOrbRecipe(ritualStoneStackCrafted, "srs", "ror", "srs", 's', obsidianStack, 'o', apprenticeBloodOrbStack, 'r', reinforcedSlateStack)); - GameRegistry.addRecipe(new ShapedBloodOrbRecipe(masterRitualStoneStack, "brb", "ror", "brb", 'b', obsidianStack, 'o', magicianBloodOrbStack, 'r', ritualStoneStack)); - GameRegistry.addRecipe(new ShapedBloodOrbRecipe(imperfectRitualStoneStack, "bsb", "sos", "bsb", 's', stoneStack, 'b', obsidianStack, 'o', weakBloodOrbStack)); - GameRegistry.addRecipe(new ShapedBloodOrbRecipe(sigilOfElementalAffinityStackCrafted, "oao", "wsl", "oro", 'o', obsidianStack, 'a', airSigilStack, 'w', waterSigilStack, 'l', lavaSigilStack, 'r', magicianBloodOrbStack, 's', imbuedSlateStack)); - GameRegistry.addRecipe(new ShapedBloodOrbRecipe(sigilOfHoldingStack, "asa", "srs", "aoa", 'a', blankSlateStack, 's', stoneStack, 'r', imbuedSlateStack, 'o', magicianBloodOrbStack)); - GameRegistry.addRecipe(emptySocketStack, "bgb", "gdg", "bgb", 'b', weakBloodShardStack, 'g', glassStack, 'd', diamondStack); - GameRegistry.addRecipe(new ShapedBloodOrbRecipe(armourForgeStack, "sfs", "fof", "sfs", 'f', bloodSocketStack, 's', stoneStack, 'o', magicianBloodOrbStack)); - GameRegistry.addShapelessRecipe(largeBloodStoneBrickStackCrafted, weakBloodShardStack, stoneStack); - GameRegistry.addRecipe(bloodStoneBrickStackCrafted, "bb", "bb", 'b', largeBloodStoneBrickStack); - GameRegistry.addRecipe(new ShapedBloodOrbRecipe(growthSigilStack, "srs", "rer", "sos", 's', saplingStack, 'r', reedStack, 'o', apprenticeBloodOrbStack, 'e', reinforcedSlateStack)); - GameRegistry.addRecipe(new ShapedBloodOrbRecipe(blockHomHeartStack, "www", "srs", "sos", 'w', redWoolStack, 's', stoneStack, 'r', bloodRuneStack, 'o', apprenticeBloodOrbStack)); - GameRegistry.addShapelessRecipe(new ItemStack(Items.skull, 1, 2), new ItemStack(Items.skull, 1, 1), new ItemStack(Items.rotten_flesh), new ItemStack(Items.iron_ingot), new ItemStack(Items.leather)); - GameRegistry.addShapelessRecipe(new ItemStack(Items.skull, 1, 0), new ItemStack(Items.skull, 1, 1), new ItemStack(Items.bow, 1, 0), new ItemStack(Items.arrow, 1, 0), new ItemStack(Items.bone)); - GameRegistry.addShapelessRecipe(new ItemStack(Items.skull, 1, 4), new ItemStack(Items.skull, 1, 1), new ItemStack(Items.gunpowder), new ItemStack(Blocks.dirt), new ItemStack(Blocks.sand)); - GameRegistry.addRecipe(new ShapedBloodOrbRecipe(new ItemStack(ModBlocks.blockWritingTable), " s ", "ror", 's', new ItemStack(Items.brewing_stand), 'r', obsidianStack, 'o', weakBloodOrbStack)); - GameRegistry.addRecipe(new ItemStack(ModBlocks.blockPedestal), "ooo", " c ", "ooo", 'o', obsidianStack, 'c', weakBloodShardStack); - GameRegistry.addRecipe(new ItemStack(ModBlocks.blockPlinth), "iii", " p ", "iii", 'i', ironBlockStack, 'p', new ItemStack(ModBlocks.blockPedestal)); - GameRegistry.addShapelessRecipe(new ItemStack(ModItems.alchemyFlask, 1, 0), new ItemStack(ModItems.alchemyFlask, 1, craftingConstant), new ItemStack(Items.nether_wart), redstoneStack, glowstoneDustStack); - GameRegistry.addRecipe(new ShapedBloodOrbRecipe(new ItemStack(ModItems.sigilOfHaste), "csc", "sts", "ror", 'c', new ItemStack(Items.cookie), 's', new ItemStack(Items.sugar), 't', ModItems.demonicSlate, 'r', obsidianStack, 'o', new ItemStack(ModItems.masterBloodOrb))); - GameRegistry.addRecipe(new ShapedBloodOrbRecipe(new ItemStack(ModItems.sigilOfWind), "faf", "grg", "fof", 'f', featherStack, 'g', ghastTearStack, 'a', new ItemStack(ModItems.airSigil), 'o', new ItemStack(ModItems.masterBloodOrb), 'r', ModItems.demonicSlate)); - GameRegistry.addRecipe(new ShapelessBloodOrbRecipe(new ItemStack(ModItems.weakBloodShard, 5, 0), new ItemStack(ModItems.masterBloodOrb), new ItemStack(ModItems.weakBloodShard), imbuedSlateStack)); - GameRegistry.addRecipe(new ItemStack(ModBlocks.blockTeleposer), "ggg", "efe", "ggg", 'g', goldIngotStack, 'f', new ItemStack(ModItems.telepositionFocus), 'e', new ItemStack(Items.ender_pearl)); - GameRegistry.addShapelessRecipe(new ItemStack(ModItems.reinforcedTelepositionFocus), new ItemStack(ModItems.enhancedTelepositionFocus), new ItemStack(ModItems.weakBloodShard)); - GameRegistry.addShapelessRecipe(new ItemStack(ModItems.demonicTelepositionFocus), new ItemStack(ModItems.reinforcedTelepositionFocus), new ItemStack(ModItems.demonBloodShard)); - GameRegistry.addRecipe(new ShapedBloodOrbRecipe(new ItemStack(ModItems.sigilOfTheBridge), "nnn", "nsn", "ror", 'n', stoneStack, 'r', new ItemStack(Blocks.soul_sand), 's', imbuedSlateStack, 'o', magicianBloodOrbStack)); - GameRegistry.addRecipe(new ItemStack(ModItems.armourInhibitor), " gg", "gsg", "gg ", 'g', goldIngotStack, 's', new ItemStack(ModItems.weakBloodShard)); - GameRegistry.addRecipe(new ItemStack(ModItems.itemRitualDiviner), "d1d", "2e3", "d4d", '1', new ItemStack(ModItems.airScribeTool), '2', new ItemStack(ModItems.waterScribeTool), '3', new ItemStack(ModItems.fireScribeTool), '4', new ItemStack(ModItems.earthScribeTool), 'd', diamondStack, 'e', new ItemStack(Items.emerald)); - GameRegistry.addRecipe(duskRitualDivinerStack, " d ", "srs", " d ", 'd', new ItemStack(ModItems.duskScribeTool), 's', new ItemStack(ModItems.demonicSlate), 'r', new ItemStack(ModItems.itemRitualDiviner)); - GameRegistry.addRecipe(new ShapedBloodOrbRecipe(new ItemStack(ModItems.sigilOfMagnetism), "bgb", "gsg", "bob", 'b', new ItemStack(Blocks.iron_block), 'g', goldIngotStack, 's', new ItemStack(ModItems.imbuedSlate), 'o', magicianBloodOrbStack)); - GameRegistry.addRecipe(new ShapedBloodOrbRecipe(new ItemStack(ModItems.energyBazooka), "Ocd", "cb ", "d w", 'O', archmageBloodOrbStack, 'c', crepitousStack, 'b', new ItemStack(ModItems.energyBlaster), 'd', diamondStack, 'w', new ItemStack(ModItems.weakBloodShard))); - GameRegistry.addRecipe(new ShapedBloodOrbRecipe(new ItemStack(ModItems.itemBloodLightSigil), "btb", "sss", "bob", 'o', magicianBloodOrbStack, 'b', glowstoneBlockStack, 't', new ItemStack(Blocks.torch), 's', imbuedSlateStack)); - GameRegistry.addRecipe(new ItemStack(ModItems.itemKeyOfDiablo), " gw", "gdg", "wg ", 'w', weakBloodShardStack, 'g', goldIngotStack, 'd', diamondStack); - customPotionDrowning = (new PotionDrowning(customPotionDrowningID, true, 0)).setIconIndex(0, 0).setPotionName("Drowning"); - customPotionBoost = (new PotionBoost(customPotionBoostID, false, 0)).setIconIndex(0, 0).setPotionName("Boost"); - customPotionProjProt = (new PotionProjectileProtect(customPotionProjProtID, false, 0)).setIconIndex(0, 0).setPotionName("Whirlwind"); - customPotionInhibit = (new PotionInhibit(customPotionInhibitID, false, 0)).setIconIndex(0, 0).setPotionName("Inhibit"); - customPotionFlight = (new PotionFlight(customPotionFlightID, false, 0)).setIconIndex(0, 0).setPotionName("Flight"); - customPotionReciprocation = (new PotionReciprocation(customPotionReciprocationID, false, 0xFFFFFF)).setIconIndex(0, 0).setPotionName("Reciprocation"); - customPotionFlameCloak = (new PotionFlameCloak(customPotionFlameCloakID,false,0).setIconIndex(0,0).setPotionName("Flame Cloak")); - customPotionIceCloak = (new PotionIceCloak(customPotionIceCloakID,false,0).setIconIndex(0,0).setPotionName("Ice Cloak")); - customPotionHeavyHeart = (new PotionHeavyHeart(customPotionHeavyHeartID,true,0).setIconIndex(0, 0).setPotionName("Heavy Heart")); - customPotionFireFuse = (new PotionFireFuse(customPotionFireFuseID,true,0).setIconIndex(0, 0).setPotionName("Fire Fuse")); - customPotionPlanarBinding = (new PotionPlanarBinding(customPotionPlanarBindingID,true,0).setIconIndex(0,0).setPotionName("Planar Binding")); - customPotionSoulFray = (new PotionSoulFray(customPotionSoulFrayID,true,0).setIconIndex(0,0).setPotionName("Soul Fray")); - customPotionSoulHarden = (new PotionSoulHarden(customPotionSoulHardenID,false,0).setIconIndex(0,0).setPotionName("Soul Harden")); - customPotionDeaf = (new PotionDeaf(customPotionDeafID,true,0).setIconIndex(0,0).setPotionName("Deafness")); - customPotionFeatherFall = (new PotionFeatherFall(customPotionFeatherFallID,false,0).setIconIndex(0,0).setPotionName("Feather Fall")); - - ItemStack masterBloodOrbStack = new ItemStack(ModItems.masterBloodOrb); - - //FluidStack lifeEssenceFluidStack = new FluidStack(lifeEssenceFluid, 1); - //LiquidStack lifeEssence = new LiquidStack(lifeEssenceFlowing, 1); - //LiquidDictionary.getOrCreateLiquid("Life Essence", lifeEssence); - - -// ModBlocks.blockLifeEssence.setUnlocalizedName("lifeEssenceBlock"); - FluidContainerRegistry.registerFluidContainer(lifeEssenceFluid, new ItemStack(ModItems.bucketLife), FluidContainerRegistry.EMPTY_BUCKET); - - //lifeEssenceFluid.setUnlocalizedName("lifeEssence"); - //LiquidContainerRegistry.registerLiquid(new LiquidContainerData(LiquidDictionary.getLiquid("Life Essence", LiquidContainerRegistry.BUCKET_VOLUME), new ItemStack(AlchemicalWizardry.bucketLife), new ItemStack(Items.bucketEmpty))); - //GameRegistry.registerBlock(testingBlock, "testingBlock"); - //LanguageRegistry.addName(testingBlock, "Testing Block"); - //(testingBlock, "pickaxe", 0); - ModBlocks.blockAltar.setHarvestLevel("pickaxe", 1); - //Register Tile Entity - GameRegistry.registerTileEntity(TEAltar.class, "containerAltar"); - GameRegistry.registerTileEntity(TEMasterStone.class, "containerMasterStone"); - GameRegistry.registerTileEntity(TESocket.class, "containerSocket"); - GameRegistry.registerTileEntity(TEWritingTable.class, "containerWritingTable"); - GameRegistry.registerTileEntity(TEHomHeart.class, "containerHomHeart"); - GameRegistry.registerTileEntity(TEPedestal.class, "containerPedestal"); - GameRegistry.registerTileEntity(TEPlinth.class, "containerPlinth"); - GameRegistry.registerTileEntity(TETeleposer.class, "containerTeleposer"); - GameRegistry.registerTileEntity(TEConduit.class, "containerConduit"); - GameRegistry.registerTileEntity(TEOrientable.class, "containerOrientable"); - GameRegistry.registerTileEntity(TESpellParadigmBlock.class, "containerSpellParadigmBlock"); - GameRegistry.registerTileEntity(TESpellEffectBlock.class, "containerSpellEffectBlock"); - GameRegistry.registerTileEntity(TESpellModifierBlock.class, "containerSpellModifierBlock"); - GameRegistry.registerTileEntity(TESpellEnhancementBlock.class, "containerSpellEnhancementBlock"); - GameRegistry.registerTileEntity(TESpectralContainer.class,"spectralContainerTileEntity"); - GameRegistry.registerTileEntity(TEDemonPortal.class, "containerDemonPortal"); - GameRegistry.registerTileEntity(TESchematicSaver.class, "containerSchematicSaver"); - GameRegistry.registerTileEntity(TESpectralBlock.class, "containerSpectralBlock"); - GameRegistry.registerTileEntity(TEReagentConduit.class, "containerReagentConduit"); - GameRegistry.registerTileEntity(TEBellJar.class, "containerBellJar"); - GameRegistry.registerTileEntity(TEAlchemicCalcinator.class, "containerAlchemicCalcinator"); - //GameRegistry.registerBlock(ModBlocks.blockSpellEffect,"blockSpellEffect"); - ModBlocks.bloodRune.setHarvestLevel("pickaxe", 2); - ModBlocks.speedRune.setHarvestLevel("pickaxe", 2); - ModBlocks.efficiencyRune.setHarvestLevel("pickaxe", 2); - ModBlocks.runeOfSacrifice.setHarvestLevel("pickaxe", 2); - ModBlocks.runeOfSelfSacrifice.setHarvestLevel("pickaxe", 2); - ModBlocks.ritualStone.setHarvestLevel("pickaxe", 2); - ModBlocks.bloodSocket.setHarvestLevel("pickaxe", 2); - ModBlocks.ritualStone.setHarvestLevel("pickaxe", 2); - ModBlocks.imperfectRitualStone.setHarvestLevel("pickaxe", 2); - ModBlocks.blockMasterStone.setHarvestLevel("pickaxe", 2); - ModBlocks.emptySocket.setHarvestLevel("pickaxe", 2); - ModBlocks.bloodStoneBrick.setHarvestLevel("pickaxe", 0); - ModBlocks.largeBloodStoneBrick.setHarvestLevel("pickaxe", 0); - ModBlocks.blockWritingTable.setHarvestLevel("pickaxe", 1); - ModBlocks.blockHomHeart.setHarvestLevel("pickaxe", 1); - ModBlocks.blockPedestal.setHarvestLevel("pickaxe", 2); - ModBlocks.blockPlinth.setHarvestLevel("pickaxe", 2); - ModBlocks.blockTeleposer.setHarvestLevel("pickaxe", 2); - //Fuel handler - GameRegistry.registerFuelHandler(new AlchemicalWizardryFuelHandler()); - //EntityRegistry.registerModEntity(EnergyBlastProjectile.class, "BlasterProj", 0, this, 128, 5, true); - - //Gui registration - // NetworkRegistry.instance().registerGuiHandler(this, new GuiHandlerAltar()); - UpgradedAltars.loadAltars(); - SigilOfHolding.initiateSigilOfHolding(); - ArmourForge.initializeRecipes(); - TEPlinth.initialize(); - - this.initAlchemyPotionRecipes(); - this.initAltarRecipes(); - this.initRituals(); - this.initBindingRecipes(); - this.initHarvestRegistry(); - this.initCombinedAlchemyPotionRecipes(); - ReagentRegistry.initReagents(); - - //MinecraftForge.setToolClass(ModItems.boundPickaxe, "pickaxe", 5); - //MinecraftForge.setToolClass(ModItems.boundAxe, "axe", 5); - //MinecraftForge.setToolClass(ModItems.boundShovel, "shovel", 5); - MinecraftForge.EVENT_BUS.register(new ModLivingDropsEvent()); - proxy.InitRendering(); - NetworkRegistry.INSTANCE.registerGuiHandler(this, new GuiHandler()); -// ItemStack[] comp = new ItemStack[5]; -// for(int i=0;i<5;i++) -// { -// comp[i] = redstoneStack; -// } -// AlchemyRecipeRegistry.registerRecipe(glowstoneDustStack, 2, comp, 2); - - ItemStack gunpowderStack = new ItemStack(Items.gunpowder); - - ItemStack offensaStack = new ItemStack(ModItems.baseAlchemyItems,1,0); - ItemStack praesidiumStack = new ItemStack(ModItems.baseAlchemyItems,1,1); - ItemStack orbisTerraeStack = new ItemStack(ModItems.baseAlchemyItems,1,2); - ItemStack strengthenedCatalystStack = new ItemStack(ModItems.baseAlchemyItems,1,3); - ItemStack concentratedCatalystStack = new ItemStack(ModItems.baseAlchemyItems,1,4); - ItemStack fracturedBoneStack = new ItemStack(ModItems.baseAlchemyItems,1,5); - ItemStack virtusStack = new ItemStack(ModItems.baseAlchemyItems,1,6); - ItemStack reductusStack = new ItemStack(ModItems.baseAlchemyItems,1,7); - ItemStack potentiaStack = new ItemStack(ModItems.baseAlchemyItems,1,8); - - ItemStack strengthenedCatalystStackCrafted = new ItemStack(ModItems.baseAlchemyItems,2,3); - ItemStack fracturedBoneStackCrafted = new ItemStack(ModItems.baseAlchemyItems,4,5); - - //TODO NEW RECIPES! - AlchemyRecipeRegistry.registerRecipe(new ItemStack(ModItems.weakBindingAgent), 10, new ItemStack[]{simpleCatalystStack, simpleCatalystStack, new ItemStack(Items.clay_ball)}, 2); - AlchemyRecipeRegistry.registerRecipe(new ItemStack(ModItems.standardBindingAgent), 15, new ItemStack[]{new ItemStack(ModItems.weakBindingAgent), sanctusStack, new ItemStack(ModItems.crystallos)}, 3); - AlchemyRecipeRegistry.registerRecipe(simpleCatalystStack, 2, new ItemStack[]{sugarStack, redstoneStack, redstoneStack, glowstoneDustStack, new ItemStack(Items.gunpowder)}, 1); - AlchemyRecipeRegistry.registerRecipe(new ItemStack(ModItems.incendium), 5, new ItemStack[]{lavaBucketStack, new ItemStack(Items.blaze_powder), new ItemStack(Items.blaze_powder), new ItemStack(Blocks.netherrack), simpleCatalystStack}, 2); - AlchemyRecipeRegistry.registerRecipe(new ItemStack(ModItems.aether), 5, new ItemStack[]{featherStack, featherStack, glowstoneDustStack, ghastTearStack, simpleCatalystStack}, 2); - AlchemyRecipeRegistry.registerRecipe(new ItemStack(ModItems.sanctus), 5, new ItemStack[]{glowstoneDustStack, new ItemStack(Items.gold_nugget), glowstoneDustStack, glassStack, simpleCatalystStack}, 2); - AlchemyRecipeRegistry.registerRecipe(new ItemStack(ModItems.crepitous), 5, new ItemStack[]{new ItemStack(Items.gunpowder), new ItemStack(Items.gunpowder), cobblestoneStack, cobblestoneStack, simpleCatalystStack}, 2); - AlchemyRecipeRegistry.registerRecipe(new ItemStack(ModItems.crystallos), 5, new ItemStack[]{new ItemStack(Blocks.ice), new ItemStack(Blocks.ice), new ItemStack(Blocks.snow), new ItemStack(Blocks.snow), simpleCatalystStack}, 2); - AlchemyRecipeRegistry.registerRecipe(new ItemStack(ModItems.terrae), 5, new ItemStack[]{new ItemStack(Blocks.dirt), new ItemStack(Blocks.sand), obsidianStack, obsidianStack, simpleCatalystStack}, 2); - AlchemyRecipeRegistry.registerRecipe(new ItemStack(ModItems.aquasalus), 5, new ItemStack[]{simpleCatalystStack, new ItemStack(Items.dye, 1, 0), new ItemStack(Items.potionitem, 1, 0), new ItemStack(Items.potionitem, 1, 0), new ItemStack(Items.potionitem, 1, 0)}, 2); - AlchemyRecipeRegistry.registerRecipe(new ItemStack(ModItems.tennebrae), 5, new ItemStack[]{simpleCatalystStack, new ItemStack(Items.coal), new ItemStack(Items.coal), new ItemStack(Blocks.obsidian), new ItemStack(Items.clay_ball)}, 2); - AlchemyRecipeRegistry.registerRecipe(new ItemStack(ModItems.magicales), 5, new ItemStack[]{redstoneStack, simpleCatalystStack, new ItemStack(Items.gunpowder), new ItemStack(Items.glowstone_dust), new ItemStack(Items.glowstone_dust)}, 2); - AlchemyRecipeRegistry.registerRecipe(new ItemStack(ModItems.mundanePowerCatalyst), 10, new ItemStack[]{glowstoneDustStack, glowstoneDustStack, glowstoneDustStack, new ItemStack(ModItems.weakBindingAgent), simpleCatalystStack}, 3); - AlchemyRecipeRegistry.registerRecipe(new ItemStack(ModItems.mundaneLengtheningCatalyst), 10, new ItemStack[]{redstoneStack, redstoneStack, redstoneStack, new ItemStack(ModItems.weakBindingAgent), simpleCatalystStack}, 3); - AlchemyRecipeRegistry.registerRecipe(new ItemStack(ModItems.averagePowerCatalyst), 20, new ItemStack[]{new ItemStack(ModItems.mundanePowerCatalyst), new ItemStack(ModItems.mundanePowerCatalyst), new ItemStack(ModItems.standardBindingAgent)}, 4); - AlchemyRecipeRegistry.registerRecipe(new ItemStack(ModItems.averageLengtheningCatalyst), 20, new ItemStack[]{new ItemStack(ModItems.mundaneLengtheningCatalyst), new ItemStack(ModItems.mundaneLengtheningCatalyst), new ItemStack(ModItems.standardBindingAgent)}, 4); - AlchemyRecipeRegistry.registerRecipe(new ItemStack(ModItems.greaterPowerCatalyst), 30, new ItemStack[]{new ItemStack(ModItems.averagePowerCatalyst), new ItemStack(ModItems.averagePowerCatalyst), new ItemStack(ModItems.incendium)}, 4); - AlchemyRecipeRegistry.registerRecipe(new ItemStack(ModItems.greaterLengtheningCatalyst), 30, new ItemStack[]{new ItemStack(ModItems.averageLengtheningCatalyst), new ItemStack(ModItems.averageLengtheningCatalyst), new ItemStack(ModItems.aquasalus)}, 4); - AlchemyRecipeRegistry.registerRecipe(new ItemStack(ModItems.weakFillingAgent), 5, new ItemStack[]{simpleCatalystStack, new ItemStack(Items.nether_wart), redstoneStack, glowstoneDustStack}, 3); - AlchemyRecipeRegistry.registerRecipe(new ItemStack(ModItems.standardFillingAgent), 10, new ItemStack[]{new ItemStack(ModItems.weakFillingAgent), new ItemStack(ModItems.terrae)}, 3); - AlchemyRecipeRegistry.registerRecipe(new ItemStack(ModItems.enhancedFillingAgent), 25, new ItemStack[]{new ItemStack(ModItems.standardFillingAgent), new ItemStack(ModItems.aquasalus), new ItemStack(ModItems.magicales)}, 4); - AlchemyRecipeRegistry.registerRecipe(new ItemStack(ModItems.activationCrystal, 1, 1), 100, new ItemStack[]{new ItemStack(ModItems.activationCrystal, 1, 0), new ItemStack(ModItems.demonBloodShard), incendiumStack, aquasalusStack, aetherStack}, 4); - AlchemyRecipeRegistry.registerRecipe(new ItemStack(ModItems.activationCrystal, 1, 1), 100, new ItemStack[]{new ItemStack(ModItems.activationCrystal, 1, 0), new ItemStack(Items.nether_star), incendiumStack, aquasalusStack, aetherStack}, 4); - - AlchemyRecipeRegistry.registerRecipe(new ItemStack(Blocks.web),2,new ItemStack[]{new ItemStack(Items.string),new ItemStack(Items.string),new ItemStack(Items.string),new ItemStack(Items.string),new ItemStack(Items.string)},1); - AlchemyRecipeRegistry.registerRecipe(new ItemStack(Items.gunpowder,2,0), 2, new ItemStack[]{gunpowderStack, new ItemStack(Items.coal), new ItemStack(Blocks.sand)}, 1); - - AlchemyRecipeRegistry.registerRecipe(strengthenedCatalystStackCrafted, 10, new ItemStack[]{simpleCatalystStack, simpleCatalystStack, new ItemStack(Items.dye,1,15), new ItemStack(Items.nether_wart)}, 3); - AlchemyRecipeRegistry.registerRecipe(offensaStack,10, new ItemStack[]{strengthenedCatalystStack,incendiumStack, new ItemStack(Items.arrow), new ItemStack(Items.flint), new ItemStack(Items.arrow)},3); - AlchemyRecipeRegistry.registerRecipe(praesidiumStack, 10, new ItemStack[]{strengthenedCatalystStack,tennebraeStack,ironIngotStack,new ItemStack(Blocks.web),redstoneStack}, 3); - AlchemyRecipeRegistry.registerRecipe(orbisTerraeStack, 10, new ItemStack[]{strengthenedCatalystStack,terraeStack, gunpowderStack, new ItemStack(Blocks.netherrack), new ItemStack(Blocks.sand)}, 3); - AlchemyRecipeRegistry.registerRecipe(concentratedCatalystStack,10,new ItemStack[]{strengthenedCatalystStack,fracturedBoneStack,goldNuggetStack},4); - AlchemyRecipeRegistry.registerRecipe(fracturedBoneStackCrafted, 2, new ItemStack[]{new ItemStack(Items.bone), new ItemStack(Items.bone),new ItemStack(Items.bone),new ItemStack(Items.bone), gunpowderStack},1); - AlchemyRecipeRegistry.registerRecipe(virtusStack,20, new ItemStack[]{redstoneStack, new ItemStack(Items.coal),strengthenedCatalystStack,redstoneStack,gunpowderStack}, 3); - AlchemyRecipeRegistry.registerRecipe(reductusStack,20,new ItemStack[]{redstoneStack, goldIngotStack, strengthenedCatalystStack,new ItemStack(Blocks.soul_sand), new ItemStack(Items.carrot)},3); - AlchemyRecipeRegistry.registerRecipe(potentiaStack,20, new ItemStack[]{glowstoneDustStack,strengthenedCatalystStack,lapisStack,lapisStack,new ItemStack(Items.quartz)}, 3); - - - HomSpellRegistry.registerBasicSpell(new ItemStack(Items.flint_and_steel), new SpellFireBurst()); - HomSpellRegistry.registerBasicSpell(new ItemStack(Blocks.ice), new SpellFrozenWater()); - HomSpellRegistry.registerBasicSpell(new ItemStack(Blocks.tnt), new SpellExplosions()); - HomSpellRegistry.registerBasicSpell(new ItemStack(ModItems.apprenticeBloodOrb), new SpellHolyBlast()); - HomSpellRegistry.registerBasicSpell(new ItemStack(Items.ghast_tear), new SpellWindGust()); - HomSpellRegistry.registerBasicSpell(new ItemStack(Items.glowstone_dust), new SpellLightningBolt()); - HomSpellRegistry.registerBasicSpell(new ItemStack(Items.water_bucket), new SpellWateryGrave()); - HomSpellRegistry.registerBasicSpell(new ItemStack(Blocks.obsidian), new SpellEarthBender()); - HomSpellRegistry.registerBasicSpell(new ItemStack(Items.ender_pearl), new SpellTeleport()); - SummoningRegistry.registerSummon(new SummoningHelperAW(this.entityFallenAngelID), new ItemStack[]{sanctusStack, sanctusStack, sanctusStack, aetherStack, tennebraeStack, terraeStack}, new ItemStack[]{}, new ItemStack[]{}, 0, 4); - SummoningRegistry.registerSummon(new SummoningHelperAW(this.entityLowerGuardianID), new ItemStack[]{cobblestoneStack, cobblestoneStack, terraeStack, tennebraeStack, new ItemStack(Items.iron_ingot), new ItemStack(Items.gold_nugget)}, new ItemStack[]{}, new ItemStack[]{}, 0, 4); - SummoningRegistry.registerSummon(new SummoningHelperAW(this.entityBileDemonID), new ItemStack[]{new ItemStack(Items.poisonous_potato), tennebraeStack, terraeStack, new ItemStack(Items.porkchop), new ItemStack(Items.egg), new ItemStack(Items.beef)}, new ItemStack[]{crepitousStack, crepitousStack, terraeStack, ironBlockStack, ironBlockStack, diamondStack}, new ItemStack[]{}, 0, 5); - SummoningRegistry.registerSummon(new SummoningHelperAW(this.entityWingedFireDemonID), new ItemStack[]{aetherStack, incendiumStack, incendiumStack, incendiumStack, tennebraeStack, new ItemStack(Blocks.netherrack)}, new ItemStack[]{diamondStack, new ItemStack(Blocks.gold_block), magicalesStack, magicalesStack, new ItemStack(Items.fire_charge), new ItemStack(Blocks.coal_block)}, new ItemStack[]{}, 0, 5); - SummoningRegistry.registerSummon(new SummoningHelperAW(this.entitySmallEarthGolemID), new ItemStack[]{new ItemStack(Items.clay_ball), terraeStack, terraeStack}, new ItemStack[]{}, new ItemStack[]{}, 0, 4); - SummoningRegistry.registerSummon(new SummoningHelperAW(this.entityIceDemonID), new ItemStack[]{crystallosStack, crystallosStack, aquasalusStack, crystallosStack, sanctusStack, terraeStack}, new ItemStack[]{}, new ItemStack[]{}, 0, 4); - SummoningRegistry.registerSummon(new SummoningHelperAW(this.entityBoulderFistID), new ItemStack[]{terraeStack, sanctusStack, tennebraeStack, new ItemStack(Items.bone), new ItemStack(Items.cooked_beef), new ItemStack(Items.cooked_beef)}, new ItemStack[]{}, new ItemStack[]{}, 0, 4); - SummoningRegistry.registerSummon(new SummoningHelperAW(this.entityShadeID), new ItemStack[]{tennebraeStack, tennebraeStack, tennebraeStack, aetherStack, glassStack, new ItemStack(Items.glass_bottle)}, new ItemStack[]{}, new ItemStack[]{}, 0, 4); - SummoningRegistry.registerSummon(new SummoningHelperAW(this.entityAirElementalID), new ItemStack[]{aetherStack, aetherStack, aetherStack, aetherStack, aetherStack, aetherStack}, new ItemStack[]{}, new ItemStack[]{}, 0, 4); - SummoningRegistry.registerSummon(new SummoningHelperAW(this.entityWaterElementalID), new ItemStack[]{aquasalusStack, aquasalusStack, aquasalusStack, aquasalusStack, aquasalusStack, aquasalusStack}, new ItemStack[]{}, new ItemStack[]{}, 0, 4); - SummoningRegistry.registerSummon(new SummoningHelperAW(this.entityEarthElementalID), new ItemStack[]{terraeStack, terraeStack, terraeStack, terraeStack, terraeStack, terraeStack}, new ItemStack[]{}, new ItemStack[]{}, 0, 4); - SummoningRegistry.registerSummon(new SummoningHelperAW(this.entityFireElementalID), new ItemStack[]{incendiumStack, incendiumStack, incendiumStack, incendiumStack, incendiumStack, incendiumStack}, new ItemStack[]{}, new ItemStack[]{}, 0, 4); - SummoningRegistry.registerSummon(new SummoningHelperAW(this.entityShadeElementalID), new ItemStack[]{tennebraeStack,tennebraeStack,tennebraeStack,tennebraeStack,tennebraeStack,tennebraeStack}, new ItemStack[]{}, new ItemStack[]{}, 0, 4); - SummoningRegistry.registerSummon(new SummoningHelperAW(this.entityHolyElementalID), new ItemStack[]{sanctusStack, sanctusStack, sanctusStack, sanctusStack, sanctusStack, sanctusStack}, new ItemStack[]{}, new ItemStack[]{}, 0, 4); - //Custom mobs - EntityRegistry.registerModEntity(EntityFallenAngel.class, "FallenAngel", this.entityFallenAngelID, this, 80, 3, true); - EntityRegistry.registerModEntity(EntityLowerGuardian.class, "LowerGuardian", this.entityLowerGuardianID, this, 80, 3, true); - EntityRegistry.registerModEntity(EntityBileDemon.class, "BileDemon", this.entityBileDemonID, this, 80, 3, true); - EntityRegistry.registerModEntity(EntityWingedFireDemon.class, "WingedFireDemon", this.entityWingedFireDemonID, this, 80, 3, true); - EntityRegistry.registerModEntity(EntitySmallEarthGolem.class, "SmallEarthGolem", this.entitySmallEarthGolemID, this, 80, 3, true); - EntityRegistry.registerModEntity(EntityIceDemon.class, "IceDemon", this.entityIceDemonID, this, 80, 3, true); - EntityRegistry.registerModEntity(EntityBoulderFist.class, "BoulderFist", this.entityBoulderFistID, this, 80, 3, true); - EntityRegistry.registerModEntity(EntityShade.class, "Shade", this.entityShadeID, this, 80, 3, true); - EntityRegistry.registerModEntity(EntityAirElemental.class, "AirElemental", this.entityAirElementalID, this, 120, 3, true); - EntityRegistry.registerModEntity(EntityWaterElemental.class, "WaterElemental", this.entityWaterElementalID, this, 120, 3, true); - EntityRegistry.registerModEntity(EntityEarthElemental.class, "EarthElemental", this.entityEarthElementalID, this, 120, 3, true); - EntityRegistry.registerModEntity(EntityFireElemental.class, "FireElemental", this.entityFireElementalID, this, 120, 3, true); - EntityRegistry.registerModEntity(EntityShadeElemental.class, "ShadeElemental", this.entityShadeElementalID, this, 120, 3, true); - EntityRegistry.registerModEntity(EntityHolyElemental.class, "HolyElemental", this.entityHolyElementalID, this, 120, 3, true); - //EntityRegistry.addSpawn(EntityFallenAngel.class, 5, 1, 5, EnumCreatureType.creature, BiomeGenBase.biomeList); - ChestGenHooks.getInfo(ChestGenHooks.DUNGEON_CHEST).addItem(new WeightedRandomChestContent(new ItemStack(ModItems.standardBindingAgent), 1, 3, this.standardBindingAgentDungeonChance)); - ChestGenHooks.getInfo(ChestGenHooks.DUNGEON_CHEST).addItem(new WeightedRandomChestContent(new ItemStack(ModItems.mundanePowerCatalyst), 1, 1, this.mundanePowerCatalystDungeonChance)); - ChestGenHooks.getInfo(ChestGenHooks.DUNGEON_CHEST).addItem(new WeightedRandomChestContent(new ItemStack(ModItems.mundaneLengtheningCatalyst), 1, 1, this.mundaneLengtheningCatalystDungeonChance)); - ChestGenHooks.getInfo(ChestGenHooks.DUNGEON_CHEST).addItem(new WeightedRandomChestContent(new ItemStack(ModItems.averagePowerCatalyst), 1, 1, this.averagePowerCatalystDungeonChance)); - ChestGenHooks.getInfo(ChestGenHooks.DUNGEON_CHEST).addItem(new WeightedRandomChestContent(new ItemStack(ModItems.averageLengtheningCatalyst), 1, 1, this.averageLengtheningCatalystDungeonChance)); - ChestGenHooks.getInfo(ChestGenHooks.DUNGEON_CHEST).addItem(new WeightedRandomChestContent(new ItemStack(ModItems.greaterPowerCatalyst), 1, 1, this.greaterPowerCatalystDungeonChance)); - ChestGenHooks.getInfo(ChestGenHooks.DUNGEON_CHEST).addItem(new WeightedRandomChestContent(new ItemStack(ModItems.greaterLengtheningCatalyst), 1, 1, this.greaterLengtheningCatalystDungeonChance)); - //Ore Dictionary Registration - OreDictionary.registerOre("oreCoal", Blocks.coal_ore); - MeteorRegistry.registerMeteorParadigm(diamondStack, diamondMeteorArray, diamondMeteorRadius); - MeteorRegistry.registerMeteorParadigm(stoneStack, this.stoneMeteorArray, this.stoneMeteorRadius); - MeteorRegistry.registerMeteorParadigm(ironBlockStack, this.ironBlockMeteorArray, this.ironBlockMeteorRadius); - MeteorRegistry.registerMeteorParadigm(new ItemStack(Items.nether_star), this.netherStarMeteorArray, this.netherStarMeteorRadius); - - //Register spell component recipes - ItemStack complexSpellCrystalStack = new ItemStack(ModItems.itemComplexSpellCrystal); - ItemStack quartzRodStack = new ItemStack(ModItems.baseItems,1,0); - ItemStack emptyCoreStack = new ItemStack(ModItems.baseItems,1,1); - ItemStack magicalesCableStack = new ItemStack(ModItems.baseItems,1,2); - ItemStack woodBraceStack = new ItemStack(ModItems.baseItems,1,3); - ItemStack stoneBraceStack = new ItemStack(ModItems.baseItems,1,4); - ItemStack projectileCoreStack = new ItemStack(ModItems.baseItems,1,5); - ItemStack selfCoreStack = new ItemStack(ModItems.baseItems,1,6); - ItemStack meleeCoreStack = new ItemStack(ModItems.baseItems,1,7); - ItemStack toolCoreStack = new ItemStack(ModItems.baseItems,1,26); - ItemStack paradigmBackPlateStack = new ItemStack(ModItems.baseItems,1,8); - ItemStack outputCableStack = new ItemStack(ModItems.baseItems,1,9); - ItemStack flameCoreStack = new ItemStack(ModItems.baseItems,1,10); - ItemStack iceCoreStack = new ItemStack(ModItems.baseItems,1,11); - ItemStack windCoreStack = new ItemStack(ModItems.baseItems,1,12); - ItemStack earthCoreStack = new ItemStack(ModItems.baseItems,1,13); - ItemStack inputCableStack = new ItemStack(ModItems.baseItems,1,14); - ItemStack crackedRunicPlateStack = new ItemStack(ModItems.baseItems,1,15); - ItemStack runicPlateStack = new ItemStack(ModItems.baseItems,1,16); - ItemStack imbuedRunicPlateStack = new ItemStack(ModItems.baseItems,1,17); - ItemStack defaultCoreStack = new ItemStack(ModItems.baseItems,1,18); - ItemStack offenseCoreStack = new ItemStack(ModItems.baseItems,1,19); - ItemStack defensiveCoreStack = new ItemStack(ModItems.baseItems,1,20); - ItemStack environmentalCoreStack = new ItemStack(ModItems.baseItems,1,21); - ItemStack powerCoreStack = new ItemStack(ModItems.baseItems,1,22); - ItemStack costCoreStack = new ItemStack(ModItems.baseItems,1,23); - ItemStack potencyCoreStack = new ItemStack(ModItems.baseItems,1,24); - ItemStack obsidianBraceStack = new ItemStack(ModItems.baseItems,1,25); - - ItemStack magicalesCraftedCableStack = new ItemStack(ModItems.baseItems,5,2); - ItemStack crackedRunicPlateStackCrafted = new ItemStack(ModItems.baseItems,2,15); - ItemStack runicPlateStackCrafted = new ItemStack(ModItems.baseItems,2,16); - - GameRegistry.addRecipe(quartzRodStack, "qqq", 'q', new ItemStack(Items.quartz)); - GameRegistry.addRecipe(emptyCoreStack,"gig","nrn","gig",'n',goldIngotStack,'i',ironIngotStack,'g',glassStack,'r',simpleCatalystStack); - GameRegistry.addRecipe(magicalesCraftedCableStack,"sss","mmm","sss",'s',new ItemStack(Items.string),'m',magicalesStack); - GameRegistry.addRecipe(woodBraceStack," il","ili","li ",'l', new ItemStack(Blocks.log,1,craftingConstant),'i',new ItemStack(Items.string)); - GameRegistry.addRecipe(stoneBraceStack," is","isi","si ",'i', ironIngotStack,'s',reinforcedSlateStack); - GameRegistry.addRecipe(obsidianBraceStack," is","ibi","si ",'i', obsidianStack,'s',reinforcedSlateStack,'b',stoneBraceStack); - - GameRegistry.addRecipe(new ShapedBloodOrbRecipe(projectileCoreStack, "mbm","aca","mom",'c', emptyCoreStack,'b',weakBloodShardStack,'m', magicalesStack,'o', magicianBloodOrbStack,'a',new ItemStack(Items.arrow))); - GameRegistry.addRecipe(new ShapedBloodOrbRecipe(selfCoreStack,"sbs","ncn","sos",'c', emptyCoreStack, 's',sanctusStack,'b', weakBloodShardStack,'o', magicianBloodOrbStack,'n',glowstoneDustStack)); - GameRegistry.addRecipe(new ShapedBloodOrbRecipe(meleeCoreStack,"sbs","ncn","sos",'c', emptyCoreStack, 's',incendiumStack,'b', weakBloodShardStack,'o', magicianBloodOrbStack,'n',new ItemStack(Items.fire_charge))); - GameRegistry.addRecipe(new ShapedBloodOrbRecipe(toolCoreStack,"sbs","ncn","sos",'c', emptyCoreStack, 's',terraeStack,'b', weakBloodShardStack,'o', magicianBloodOrbStack,'n',new ItemStack(Blocks.obsidian))); - - GameRegistry.addRecipe(paradigmBackPlateStack,"isi","rgr","isi",'i',ironIngotStack,'r',stoneStack,'g',goldIngotStack,'s',reinforcedSlateStack); - GameRegistry.addRecipe(outputCableStack, " si","s c"," si",'s',stoneStack,'i',ironIngotStack,'c',simpleCatalystStack); - - GameRegistry.addRecipe(new ShapedBloodOrbRecipe(flameCoreStack,"mdm","scs","mom",'m',incendiumStack,'c',emptyCoreStack,'o',magicianBloodOrbStack,'d',diamondStack,'s',weakBloodShardStack)); - GameRegistry.addRecipe(new ShapedBloodOrbRecipe(iceCoreStack,"mdm","scs","mom",'m',crystallosStack,'c',emptyCoreStack,'o',magicianBloodOrbStack,'d',diamondStack,'s',weakBloodShardStack)); - GameRegistry.addRecipe(new ShapedBloodOrbRecipe(windCoreStack,"mdm","scs","mom",'m',aetherStack,'c',emptyCoreStack,'o',magicianBloodOrbStack,'d',diamondStack,'s',weakBloodShardStack)); - GameRegistry.addRecipe(new ShapedBloodOrbRecipe(earthCoreStack,"mdm","scs","mom",'m',terraeStack,'c',emptyCoreStack,'o',magicianBloodOrbStack,'d',diamondStack,'s',weakBloodShardStack)); - - GameRegistry.addRecipe(inputCableStack, "ws ","rcs","ws ",'w',blankSlateStack,'s',stoneStack,'r',imbuedSlateStack,'c',simpleCatalystStack); - - GameRegistry.addRecipe(new ShapedBloodOrbRecipe(defaultCoreStack,"msm","geg","mom",'m', strengthenedCatalystStack,'e', emptyCoreStack, 'o', magicianBloodOrbStack, 's',weakBloodShardStack, 'g', goldIngotStack)); - GameRegistry.addRecipe(new ShapedBloodOrbRecipe(offenseCoreStack,"msm","geg","mom",'m', offensaStack,'e', emptyCoreStack, 'o', magicianBloodOrbStack, 's',weakBloodShardStack, 'g', goldIngotStack)); - GameRegistry.addRecipe(new ShapedBloodOrbRecipe(defensiveCoreStack,"msm","geg","mom",'m', praesidiumStack,'e', emptyCoreStack, 'o', magicianBloodOrbStack, 's',weakBloodShardStack, 'g', goldIngotStack)); - GameRegistry.addRecipe(new ShapedBloodOrbRecipe(environmentalCoreStack,"msm","geg","mom",'m', orbisTerraeStack,'e', emptyCoreStack, 'o', magicianBloodOrbStack, 's',weakBloodShardStack, 'g', goldIngotStack)); - - GameRegistry.addRecipe(new ShapedBloodOrbRecipe(powerCoreStack,"msm","geg","mom",'m', virtusStack,'e', emptyCoreStack, 'o', masterBloodOrbStack, 's',weakBloodShardStack, 'g', goldIngotStack)); - GameRegistry.addRecipe(new ShapedBloodOrbRecipe(costCoreStack,"msm","geg","mom",'m', reductusStack,'e', emptyCoreStack, 'o', masterBloodOrbStack, 's',weakBloodShardStack, 'g', goldIngotStack)); - GameRegistry.addRecipe(new ShapedBloodOrbRecipe(potencyCoreStack,"msm","geg","mom",'m', potentiaStack,'e', emptyCoreStack, 'o', masterBloodOrbStack, 's',weakBloodShardStack, 'g', goldIngotStack)); - - AlchemyRecipeRegistry.registerRecipe(crackedRunicPlateStackCrafted, 10, new ItemStack[]{imbuedSlateStack,imbuedSlateStack,concentratedCatalystStack}, 4); - AlchemyRecipeRegistry.registerRecipe(runicPlateStack, 30, new ItemStack[]{crackedRunicPlateStack,terraeStack}, 5); - AlchemyRecipeRegistry.registerRecipe(imbuedRunicPlateStack, 100, new ItemStack[]{magicalesStack,incendiumStack,runicPlateStack, runicPlateStack,aquasalusStack}, 5); - AlchemyRecipeRegistry.registerRecipe(complexSpellCrystalStack,50,new ItemStack[]{new ItemStack(ModItems.blankSpell), weakBloodShardStack, weakBloodShardStack, diamondStack,goldIngotStack},3); - - GameRegistry.addRecipe(new ItemStack(ModBlocks.blockConduit,1,0),"q q","ccc","q q",'q', quartzRodStack,'c', magicalesCableStack); - - GameRegistry.addRecipe(new ItemStack(ModBlocks.blockSpellParadigm,1,0),"gb ","pcw","gb ",'p',paradigmBackPlateStack,'c', projectileCoreStack,'g',goldIngotStack,'b',stoneBraceStack,'w',outputCableStack); - GameRegistry.addRecipe(new ItemStack(ModBlocks.blockSpellParadigm,1,1),"gb ","pcw","gb ",'p',paradigmBackPlateStack,'c', selfCoreStack,'g',goldIngotStack,'b',stoneBraceStack,'w',outputCableStack); - GameRegistry.addRecipe(new ItemStack(ModBlocks.blockSpellParadigm,1,2),"gb ","pcw","gb ",'p',paradigmBackPlateStack,'c', meleeCoreStack,'g',goldIngotStack,'b',stoneBraceStack,'w',outputCableStack); - GameRegistry.addRecipe(new ItemStack(ModBlocks.blockSpellParadigm,1,3),"gb ","pcw","gb ",'p',paradigmBackPlateStack,'c', toolCoreStack,'g',goldIngotStack,'b',stoneBraceStack,'w',outputCableStack); - - GameRegistry.addRecipe(new ItemStack(ModBlocks.blockSpellEffect,1,0),"bgb","ico","bgb",'c',flameCoreStack,'b',stoneBraceStack,'g',goldIngotStack,'i',inputCableStack,'o',outputCableStack); - GameRegistry.addRecipe(new ItemStack(ModBlocks.blockSpellEffect,1,1),"bgb","ico","bgb",'c',iceCoreStack,'b',stoneBraceStack,'g',goldIngotStack,'i',inputCableStack,'o',outputCableStack); - GameRegistry.addRecipe(new ItemStack(ModBlocks.blockSpellEffect,1,2),"bgb","ico","bgb",'c',windCoreStack,'b',stoneBraceStack,'g',goldIngotStack,'i',inputCableStack,'o',outputCableStack); - GameRegistry.addRecipe(new ItemStack(ModBlocks.blockSpellEffect,1,3),"bgb","ico","bgb",'c',earthCoreStack,'b',stoneBraceStack,'g',goldIngotStack,'i',inputCableStack,'o',outputCableStack); - - GameRegistry.addRecipe(new ItemStack(ModBlocks.blockSpellModifier,1,0),"bgb","ico","bgb",'c',defaultCoreStack,'i',inputCableStack,'o',outputCableStack,'b',stoneBraceStack,'g',ironIngotStack); - GameRegistry.addRecipe(new ItemStack(ModBlocks.blockSpellModifier,1,1),"bgb","ico","bgb",'c',offenseCoreStack,'i',inputCableStack,'o',outputCableStack,'b',stoneBraceStack,'g',ironIngotStack); - GameRegistry.addRecipe(new ItemStack(ModBlocks.blockSpellModifier,1,2),"bgb","ico","bgb",'c',defensiveCoreStack,'i',inputCableStack,'o',outputCableStack,'b',stoneBraceStack,'g',ironIngotStack); - GameRegistry.addRecipe(new ItemStack(ModBlocks.blockSpellModifier,1,3),"bgb","ico","bgb",'c',environmentalCoreStack,'i',inputCableStack,'o',outputCableStack,'b',stoneBraceStack,'g',ironIngotStack); - - GameRegistry.addRecipe(new ItemStack(ModBlocks.blockSpellEnhancement,1,0),"bpb","ico","bpb",'c', powerCoreStack,'b',woodBraceStack,'p',crackedRunicPlateStack,'i',inputCableStack,'o',outputCableStack); - GameRegistry.addRecipe(new ItemStack(ModBlocks.blockSpellEnhancement,1,1),"bpb","ico","bpb",'c', powerCoreStack,'b',stoneBraceStack,'p',runicPlateStack,'i',inputCableStack,'o',outputCableStack); - GameRegistry.addRecipe(new ItemStack(ModBlocks.blockSpellEnhancement,1,2),"bpb","ico","bpb",'c', powerCoreStack,'b',obsidianBraceStack,'p',imbuedRunicPlateStack,'i',inputCableStack,'o',outputCableStack); - GameRegistry.addRecipe(new ItemStack(ModBlocks.blockSpellEnhancement,1,5),"bpb","ico","bpb",'c', costCoreStack,'b',woodBraceStack,'p',crackedRunicPlateStack,'i',inputCableStack,'o',outputCableStack); - GameRegistry.addRecipe(new ItemStack(ModBlocks.blockSpellEnhancement,1,6),"bpb","ico","bpb",'c', costCoreStack,'b',stoneBraceStack,'p',runicPlateStack,'i',inputCableStack,'o',outputCableStack); - GameRegistry.addRecipe(new ItemStack(ModBlocks.blockSpellEnhancement,1,7),"bpb","ico","bpb",'c', costCoreStack,'b',obsidianBraceStack,'p',imbuedRunicPlateStack,'i',inputCableStack,'o',outputCableStack); - GameRegistry.addRecipe(new ItemStack(ModBlocks.blockSpellEnhancement,1,10),"bpb","ico","bpb",'c', potencyCoreStack,'b',woodBraceStack,'p',crackedRunicPlateStack,'i',inputCableStack,'o',outputCableStack); - GameRegistry.addRecipe(new ItemStack(ModBlocks.blockSpellEnhancement,1,11),"bpb","ico","bpb",'c', potencyCoreStack,'b',stoneBraceStack,'p',runicPlateStack,'i',inputCableStack,'o',outputCableStack); - GameRegistry.addRecipe(new ItemStack(ModBlocks.blockSpellEnhancement,1,12),"bpb","ico","bpb",'c', potencyCoreStack,'b',obsidianBraceStack,'p',imbuedRunicPlateStack,'i',inputCableStack,'o',outputCableStack); - - GameRegistry.addRecipe(new ItemStack(ModItems.itemAttunedCrystal), "Sr ", " ar", "s S", 'r', quartzRodStack, 's', new ItemStack(Items.stick,1,craftingConstant), 'a', strengthenedCatalystStack, 'S', stoneStack); - GameRegistry.addRecipe(new ItemStack(ModItems.itemTankSegmenter), "gqi", " rq", "q g", 'q', quartzRodStack, 'i', ironIngotStack, 'r', strengthenedCatalystStack, 'g', goldIngotStack); - GameRegistry.addRecipe(new ItemStack(ModItems.itemDestinationClearer), "qcq", "c c", "qcq", 'q', quartzRodStack, 'c', simpleCatalystStack); - - GameRegistry.addRecipe(new ItemStack(ModBlocks.blockAlchemicCalcinator), "pgp", "gsg", "ccc", 'p', crackedRunicPlateStack, 'g', glassStack, 's', strengthenedCatalystStack, 'c', cobblestoneStack); - GameRegistry.addRecipe(new ItemStack(ModBlocks.blockCrystalBelljar), "GGG", "GcG", "www", 'G', glassStack, 'c', concentratedCatalystStack, 'w', new ItemStack(Blocks.wooden_slab,1,craftingConstant)); - GameRegistry.addRecipe(new ItemStack(ModBlocks.blockReagentConduit), "isi", "scs", "isi", 'c', concentratedCatalystStack, 's', stringStack, 'i', ironIngotStack); - - GameRegistry.addShapelessRecipe(new ItemStack(Items.dye,5,15),fracturedBoneStack); - - GameRegistry.addRecipe(new ShapedBloodOrbRecipe(new ItemStack(ModItems.itemSigilOfSupression),"wtl","wvl","wol",'v',new ItemStack(ModItems.voidSigil),'t',new ItemStack(ModBlocks.blockTeleposer),'o',masterBloodOrbStack,'l',lavaBucketStack,'w',waterBucketStack)); - GameRegistry.addRecipe(new ShapedBloodOrbRecipe(new ItemStack(ModItems.itemSigilOfEnderSeverance),"ptp","ese","pop",'s',new ItemStack(ModItems.demonicSlate),'t',weakBloodShardStack,'o',masterBloodOrbStack,'e',new ItemStack(Items.ender_eye),'p', new ItemStack(Items.ender_pearl))); - - AlchemyRecipeRegistry.registerRecipe(new ItemStack(Items.flint,2,0), 1, new ItemStack[]{new ItemStack(Blocks.gravel),new ItemStack(Items.flint)}, 1); - AlchemyRecipeRegistry.registerRecipe(new ItemStack(Blocks.grass), 2, new ItemStack[]{new ItemStack(Blocks.dirt),new ItemStack(Items.dye,1,15),new ItemStack(Items.wheat_seeds),new ItemStack(Items.wheat_seeds)}, 1); - AlchemyRecipeRegistry.registerRecipe(new ItemStack(Items.leather,3,0), 2, new ItemStack[]{new ItemStack(Items.rotten_flesh),new ItemStack(Items.rotten_flesh),new ItemStack(Items.rotten_flesh),waterBucketStack,new ItemStack(Items.flint)}, 1); - AlchemyRecipeRegistry.registerRecipe(new ItemStack(Items.bread), 1, new ItemStack[]{new ItemStack(Items.wheat),new ItemStack(Items.sugar)}, 1); - AlchemyRecipeRegistry.registerRecipe(new ItemStack(Items.fire_charge,5,0), 3, new ItemStack[]{new ItemStack(Items.coal),new ItemStack(Items.blaze_powder),gunpowderStack}, 1); - AlchemyRecipeRegistry.registerRecipe(new ItemStack(Blocks.sand,2,0), 1, new ItemStack[]{new ItemStack(Blocks.cobblestone),gunpowderStack}, 1); - AlchemyRecipeRegistry.registerRecipe(new ItemStack(Blocks.clay,4,0), 2, new ItemStack[]{new ItemStack(Blocks.hardened_clay,1,craftingConstant),new ItemStack(Blocks.hardened_clay,1,craftingConstant),new ItemStack(Blocks.hardened_clay,1,craftingConstant),new ItemStack(Blocks.hardened_clay,1,craftingConstant),waterBucketStack}, 1); - AlchemyRecipeRegistry.registerRecipe(new ItemStack(Items.string,4,0), 1, new ItemStack[]{new ItemStack(Blocks.wool,1,craftingConstant),new ItemStack(Items.flint)}, 1); - AlchemyRecipeRegistry.registerRecipe(new ItemStack(Blocks.gravel,2,0), 1, new ItemStack[]{new ItemStack(Blocks.stone),gunpowderStack}, 1); - AlchemyRecipeRegistry.registerRecipe(new ItemStack(Blocks.obsidian), 1, new ItemStack[]{waterBucketStack,lavaBucketStack}, 1); - AlchemyRecipeRegistry.registerRecipe(new ItemStack(Items.paper), 1, new ItemStack[]{new ItemStack(Items.reeds)}, 1); - AlchemyRecipeRegistry.registerRecipe(new ItemStack(Blocks.soul_sand,3,0), 3, new ItemStack[]{new ItemStack(Blocks.sand),new ItemStack(Blocks.sand),new ItemStack(Blocks.sand),waterBucketStack,weakBloodShardStack}, 3); - AlchemyRecipeRegistry.registerRecipe(new ItemStack(Blocks.mycelium,1,0), 5, new ItemStack[]{new ItemStack(Blocks.grass),new ItemStack(Blocks.brown_mushroom), new ItemStack(Blocks.red_mushroom)}, 2); - AlchemyRecipeRegistry.registerRecipe(new ItemStack(Blocks.ice), 2, new ItemStack[]{waterBucketStack,new ItemStack(Items.snowball)}, 1); - } - - @EventHandler - public void postInit(FMLPostInitializationEvent event) - { - //TODO Thaumcraft Integration - if (Loader.isModLoaded("Thaumcraft")) - { - this.isThaumcraftLoaded = true; - - try - { - //do stuff - ModItems.sanguineHelmet = new ItemSanguineArmour(0).setUnlocalizedName("sanguineHelmet"); - ModItems.sanguineRobe = new ItemSanguineArmour(1).setUnlocalizedName("sanguineRobe"); - ModItems.sanguinePants = new ItemSanguineArmour(2).setUnlocalizedName("sanguinePants"); - ModItems.sanguineBoots = new ItemSanguineArmour(3).setUnlocalizedName("sanguineBoots"); - GameRegistry.registerItem(ModItems.sanguineHelmet, "sanguineHelmet"); - GameRegistry.registerItem(ModItems.sanguineRobe, "sanguineRobe"); - GameRegistry.registerItem(ModItems.sanguinePants, "sanguinePants"); - GameRegistry.registerItem(ModItems.sanguineBoots, "sanguineBoots"); - - ItemStack itemGoggles = ItemApi.getItem("itemGoggles", 0); - Item itemThaumChest = GameRegistry.findItem("Thaumcraft", "ItemChestplateThaumium"); - Item itemThaumLeggings = GameRegistry.findItem("Thaumcraft", "ItemLeggingsThaumium"); - Item itemThaumBoots = GameRegistry.findItem("Thaumcraft", "ItemBootsThaumium"); - - AspectList aspectList = new AspectList(); - aspectList.add(Aspect.ARMOR, 5).add(Aspect.MAGIC, 5); - - ThaumcraftApi.registerObjectTag(new ItemStack(ModItems.sanguineHelmet), aspectList); - ThaumcraftApi.registerObjectTag(new ItemStack(ModItems.sanguineRobe), aspectList); - ThaumcraftApi.registerObjectTag(new ItemStack(ModItems.sanguinePants), aspectList); - ThaumcraftApi.registerObjectTag(new ItemStack(ModItems.sanguineBoots), aspectList); - - - - if (itemGoggles != null) - { - BindingRegistry.registerRecipe(new ItemStack(ModItems.sanguineHelmet), itemGoggles); - } - - if(itemThaumChest != null) - { - BindingRegistry.registerRecipe(new ItemStack(ModItems.sanguineRobe), new ItemStack(itemThaumChest)); - } - - if(itemThaumLeggings != null) - { - BindingRegistry.registerRecipe(new ItemStack(ModItems.sanguinePants), new ItemStack(itemThaumLeggings)); - } - - if(itemThaumBoots != null) - { - BindingRegistry.registerRecipe(new ItemStack(ModItems.sanguineBoots), new ItemStack(itemThaumBoots)); - } - - //LogHelper.log(Level.INFO, "Loaded RP2 World addon"); - } catch (Exception e) - { - //LogHelper.log(Level.SEVERE, "Could not load RP2 World addon"); - e.printStackTrace(System.err); - } - } else - { - this.isThaumcraftLoaded = false; - } - - if(Loader.isModLoaded("Forestry")) - { - this.isForestryLoaded = true; - -// ModItems.itemBloodFrame = new ItemBloodFrame(this.itemBloodFrameItemID).setUnlocalizedName("bloodFrame"); -// -// ItemStack provenFrame = GameRegistry.findItemStack("Forestry", "frameImpregnated", 1); -// -// if(provenFrame !=null) -// { -// AltarRecipeRegistry.registerAltarRecipe(new ItemStack(ModItems.itemBloodFrame), provenFrame, 3, 30000, 20, 20, false); -// } - }else - { - this.isForestryLoaded = false; - } - - if(Loader.isModLoaded("harvestcraft")) - { - PamHarvestCompatRegistry.registerPamHandlers(); - System.out.println("Loaded Harvestcraft Handlers!"); - } - - BloodMagicConfiguration.loadBlacklist(); - } - - public static void initAlchemyPotionRecipes() - { - AlchemicalPotionCreationHandler.addPotion(new ItemStack(Items.ghast_tear), Potion.regeneration.id, 450); - AlchemicalPotionCreationHandler.addPotion(new ItemStack(Items.golden_carrot), Potion.nightVision.id, 2 * 60 * 20); - AlchemicalPotionCreationHandler.addPotion(new ItemStack(Items.magma_cream), Potion.fireResistance.id, 2 * 60 * 20); - AlchemicalPotionCreationHandler.addPotion(new ItemStack(Items.water_bucket), Potion.waterBreathing.id, 2 * 60 * 20); - AlchemicalPotionCreationHandler.addPotion(new ItemStack(Items.sugar), Potion.moveSpeed.id, 2 * 60 * 20); - AlchemicalPotionCreationHandler.addPotion(new ItemStack(Items.speckled_melon), Potion.heal.id, 2 * 60 * 20); - AlchemicalPotionCreationHandler.addPotion(new ItemStack(Items.spider_eye), Potion.poison.id, 450); - AlchemicalPotionCreationHandler.addPotion(new ItemStack(Items.dye,1,0), Potion.blindness.id, 450); - AlchemicalPotionCreationHandler.addPotion(new ItemStack(Items.fermented_spider_eye), Potion.weakness.id, 450); - AlchemicalPotionCreationHandler.addPotion(new ItemStack(Items.blaze_powder), Potion.damageBoost.id, 2 * 60 * 20); - AlchemicalPotionCreationHandler.addPotion(new ItemStack(ModItems.aether), Potion.jump.id, 2 * 60 * 20); - AlchemicalPotionCreationHandler.addPotion(new ItemStack(Items.clay_ball), Potion.moveSlowdown.id, 450); - AlchemicalPotionCreationHandler.addPotion(new ItemStack(Items.redstone), Potion.digSpeed.id, 2 * 60 * 20); - AlchemicalPotionCreationHandler.addPotion(new ItemStack(Items.potionitem, 1, 0), AlchemicalWizardry.customPotionDrowning.id, 450); - //AlchemicalPotionCreationHandler.addPotion(new ItemStack(Item.goldenCarrot),Potion.nightVision.id,2*60*20); - AlchemicalPotionCreationHandler.addPotion(new ItemStack(Items.glass_bottle), Potion.invisibility.id, 2 * 60 * 20); - AlchemicalPotionCreationHandler.addPotion(new ItemStack(Items.diamond), Potion.resistance.id, 2 * 60 * 20); - AlchemicalPotionCreationHandler.addPotion(new ItemStack(Items.poisonous_potato), Potion.field_76443_y.id, 2); //saturation - AlchemicalPotionCreationHandler.addPotion(new ItemStack(ModItems.demonBloodShard), Potion.field_76434_w.id, 4 * 60 * 20); //health boost - AlchemicalPotionCreationHandler.addPotion(new ItemStack(ModItems.weakBloodShard), Potion.field_76444_x.id, 4 * 60 * 20); //Absorption - AlchemicalPotionCreationHandler.addPotion(new ItemStack(ModItems.terrae), AlchemicalWizardry.customPotionBoost.id, 1 * 60 * 20); - AlchemicalPotionCreationHandler.addPotion(new ItemStack(Items.feather), AlchemicalWizardry.customPotionFlight.id, 1 * 60 * 20); - AlchemicalPotionCreationHandler.addPotion(new ItemStack(Items.arrow), AlchemicalWizardry.customPotionReciprocation.id, 1 * 60 * 20); - AlchemicalPotionCreationHandler.addPotion(new ItemStack(Items.ender_pearl),AlchemicalWizardry.customPotionPlanarBinding.id,1*60*20); - AlchemicalPotionCreationHandler.addPotion(new ItemStack(Blocks.soul_sand),AlchemicalWizardry.customPotionSoulFray.id,60*20); - AlchemicalPotionCreationHandler.addPotion(new ItemStack(ModItems.baseItems,1,16),AlchemicalWizardry.customPotionSoulHarden.id,60*20); - AlchemicalPotionCreationHandler.addPotion(new ItemStack(Items.slime_ball),AlchemicalWizardry.customPotionDeaf.id,60*20); - } - - public static void initAltarRecipes() - { - AltarRecipeRegistry.registerAltarRecipe(new ItemStack(ModItems.weakBloodOrb), new ItemStack(Items.diamond),1,2000,2,1,false); - AltarRecipeRegistry.registerAltarRecipe(new ItemStack(ModItems.apprenticeBloodOrb), new ItemStack(Items.emerald),2,5000,5,5,false); - AltarRecipeRegistry.registerAltarRecipe(new ItemStack(ModItems.magicianBloodOrb), new ItemStack(Blocks.gold_block),3,25000,20,20,false); - AltarRecipeRegistry.registerAltarRecipe(new ItemStack(ModItems.masterBloodOrb), new ItemStack(ModItems.weakBloodShard),4,40000,30,50,false); - AltarRecipeRegistry.registerAltarRecipe(new ItemStack(ModItems.archmageBloodOrb), new ItemStack(ModItems.demonBloodShard),5,75000,50,100,false); - - AltarRecipeRegistry.registerAltarOrbRecipe(new ItemStack(ModItems.weakBloodOrb),1,2); - AltarRecipeRegistry.registerAltarOrbRecipe(new ItemStack(ModItems.apprenticeBloodOrb),2,5); - AltarRecipeRegistry.registerAltarOrbRecipe(new ItemStack(ModItems.magicianBloodOrb),3,15); - AltarRecipeRegistry.registerAltarOrbRecipe(new ItemStack(ModItems.masterBloodOrb),4,25); - AltarRecipeRegistry.registerAltarOrbRecipe(new ItemStack(ModItems.archmageBloodOrb),5,50); - - AltarRecipeRegistry.registerAltarRecipe(new ItemStack(ModItems.telepositionFocus), new ItemStack(Items.ender_pearl),4,2000,10,10,false); - AltarRecipeRegistry.registerAltarRecipe(new ItemStack(ModItems.enhancedTelepositionFocus), new ItemStack(ModItems.telepositionFocus),4,10000,25,15,false); - AltarRecipeRegistry.registerAltarRecipe(new ItemStack(ModItems.demonicSlate), new ItemStack(ModItems.imbuedSlate),4,15000,20,20,false); - AltarRecipeRegistry.registerAltarRecipe(new ItemStack(ModItems.duskScribeTool), new ItemStack(Blocks.coal_block),4,2000,20,10,false); - AltarRecipeRegistry.registerAltarRecipe(new ItemStack(ModBlocks.bloodSocket), new ItemStack(ModBlocks.emptySocket),3,30000,40,10,false); - AltarRecipeRegistry.registerAltarRecipe(new ItemStack(ModItems.earthScribeTool), new ItemStack(Blocks.obsidian),3,1000,5,5,false); - AltarRecipeRegistry.registerAltarRecipe(new ItemStack(ModItems.waterScribeTool), new ItemStack(Blocks.lapis_block),3,1000,5,5,false); - AltarRecipeRegistry.registerAltarRecipe(new ItemStack(ModItems.blankSpell), new ItemStack(Blocks.glass),2,1000,5,5,false); - AltarRecipeRegistry.registerAltarRecipe(new ItemStack(ModItems.blankSlate), new ItemStack(Blocks.stone),1,1000,5,5,false); - AltarRecipeRegistry.registerAltarRecipe(new ItemStack(ModItems.activationCrystal), new ItemStack(ModItems.lavaCrystal),3,10000,20,10,false); - AltarRecipeRegistry.registerAltarRecipe(new ItemStack(ModItems.fireScribeTool), new ItemStack(Items.magma_cream),3,1000,5,5,false); - AltarRecipeRegistry.registerAltarRecipe(new ItemStack(ModItems.airScribeTool), new ItemStack(Items.ghast_tear),3,1000,5,5,false); - AltarRecipeRegistry.registerAltarRecipe(new ItemStack(ModItems.imbuedSlate), new ItemStack(ModItems.reinforcedSlate),3,5000,15,10,false); - AltarRecipeRegistry.registerAltarRecipe(new ItemStack(ModItems.daggerOfSacrifice), new ItemStack(Items.iron_sword),2,3000,5,5,false); - AltarRecipeRegistry.registerAltarRecipe(new ItemStack(ModItems.alchemyFlask), new ItemStack(Items.glass_bottle),2,2000,5,5,false); - AltarRecipeRegistry.registerAltarRecipe(new ItemStack(ModItems.reinforcedSlate), new ItemStack(ModItems.blankSlate),2,2000,5,5,false); - AltarRecipeRegistry.registerAltarRecipe(new ItemStack(ModItems.bucketLife), new ItemStack(Items.bucket),1,1000,5,0,false); - } - - public static void initRituals() - { - Rituals.registerRitual("AW001Water", 1, 500, new RitualEffectWater(), "Ritual of the Full Spring", new AlchemyCircleRenderer(new ResourceLocation("alchemicalwizardry:textures/models/SimpleTransCircle.png"),0,30,255,255,0,0.501,0.8,0, 1.5, false)); - Rituals.registerRitual("AW002Lava", 1, 10000, new RitualEffectLava(), "Serenade of the Nether", new AlchemyCircleRenderer(new ResourceLocation("alchemicalwizardry:textures/models/SimpleTransCircle.png"),255,0,0,255,0,0.501,0.8,0, 1.5, false)); - Rituals.registerRitual("AW003GreenGrove", 1, 1000, new RitualEffectGrowth(), "Ritual of the Green Grove", new AlchemyCircleRenderer(new ResourceLocation("alchemicalwizardry:textures/models/SimpleTransCircle.png"),244,164,96,255,0,1.0,1.6,0, 1.5, false)); - Rituals.registerRitual("AW004Interdiction", 1, 1000, new RitualEffectInterdiction(), "Interdiction Ritual", new AlchemyCircleRenderer(new ResourceLocation("alchemicalwizardry:textures/models/SimpleTransCircle.png"),27,227,206,255,0,0.501,0.8, 0, 1.5, false)); - Rituals.registerRitual("AW005Containment", 1, 2000, new RitualEffectContainment(), "Ritual of Containment", new AlchemyCircleRenderer(new ResourceLocation("alchemicalwizardry:textures/models/SimpleTransCircle.png"),186,21,21,255,0,2.5, 2.5, 0, 2.5, false)); - Rituals.registerRitual("AW006Binding", 1, 5000, new RitualEffectSoulBound(), "Ritual of Binding", new AlchemyCircleRenderer(new ResourceLocation("alchemicalwizardry:textures/models/TransCircleBinding.png"),193,7,7,255,0,0.501,1.0,0, 2.5, true)); - Rituals.registerRitual("AW007Unbinding", 1, 30000, new RitualEffectUnbinding(), "Ritual of Unbinding", new AlchemyCircleRenderer(new ResourceLocation("alchemicalwizardry:textures/models/SimpleTransCircle.png"),193,7,7,255, 0, 0.5, 0.8, 0, 2.5, false)); - Rituals.registerRitual("AW008HighJump", 1, 1000, new RitualEffectJumping(), "Ritual of the High Jump", new AlchemyCircleRenderer(new ResourceLocation("alchemicalwizardry:textures/models/SimpleTransCircle.png"),10,183,173,255, 0, 0.501, 1.501, 0, 1.5, false)); - Rituals.registerRitual("AW009Magnetism", 1, 5000, new RitualEffectMagnetic(), "Ritual of Magnetism", new AlchemyCircleRenderer(new ResourceLocation("alchemicalwizardry:textures/models/SimpleTransCircle.png"),126,39,0,255, 0, 0.501, 2.0, 0, 1.5, false)); - Rituals.registerRitual("AW010Crusher", 1, 2500, new RitualEffectCrushing(), "Ritual of the Crusher", new AlchemyCircleRenderer(new ResourceLocation("alchemicalwizardry:textures/models/SimpleTransCircle.png"),0,0,0,255, 0, 0.501, 0.501, 0, 1.5, false)); - Rituals.registerRitual("AW011Speed", 1, 1000, new RitualEffectLeap(), "Ritual of Speed", new AlchemyCircleRenderer(new ResourceLocation("alchemicalwizardry:textures/models/SimpleTransCircle.png"),0,0,0,255, 0, 0.501, 0.501, 0, 1.5, false)); - Rituals.registerRitual("AW012AnimalGrowth", 1, 10000, new RitualEffectAnimalGrowth(), "Ritual of the Shepherd", new AlchemyCircleRenderer(new ResourceLocation("alchemicalwizardry:textures/models/SimpleTransCircle.png"),0,0,0,255, 0, 0.501, 0.501, 0, 1.5, false)); - Rituals.registerRitual("AW013Suffering", 1, 50000, new RitualEffectWellOfSuffering(), "Well of Suffering", new AlchemyCircleRenderer(new ResourceLocation("alchemicalwizardry:textures/models/TransCircleSuffering.png"),0,0,0,255,0,0.501,0.8,0, 2.5, true)); - Rituals.registerRitual("AW014Regen", 1, 25000, new RitualEffectHealing(), "Ritual of Regeneration", new AlchemyCircleRenderer(new ResourceLocation("alchemicalwizardry:textures/models/SimpleTransCircle.png"),0,0,0,255, 0, 0.501, 0.501, 0, 1.5, false)); - Rituals.registerRitual("AW015FeatheredKnife", 1, 50000, new RitualEffectFeatheredKnife(), "Ritual of the Feathered Knife", new AlchemyCircleRenderer(new ResourceLocation("alchemicalwizardry:textures/models/SimpleTransCircle.png"),0,0,0,255, 0, 0.501, 0.501, 0, 1.5, false)); - Rituals.registerRitual("AW016FeatheredEarth", 2, 100000, new RitualEffectFeatheredEarth(), "Ritual of the Feathered Earth", new AlchemyCircleRenderer(new ResourceLocation("alchemicalwizardry:textures/models/SimpleTransCircle.png"),0,0,0,255, 0, 0.501, 0.501, 0, 1.5, false)); - Rituals.registerRitual("AW017Gaia", 2, 1000000, new RitualEffectBiomeChanger(), "Ritual of Gaia's Transformation", new AlchemyCircleRenderer(new ResourceLocation("alchemicalwizardry:textures/models/SimpleTransCircle.png"),0,0,0,255, 0, 0.501, 0.501, 0, 1.5, false)); - Rituals.registerRitual("AW018Condor", 2, 1000000, new RitualEffectFlight(), "Reverence of the Condor", new AlchemyCircleRenderer(new ResourceLocation("alchemicalwizardry:textures/models/SimpleTransCircle.png"),0,0,0,255, 0, 0.501, 0.501, 0, 1.5, false)); - Rituals.registerRitual("AW019FallingTower", 2, 1000000, new RitualEffectSummonMeteor(), "Mark of the Falling Tower", new AlchemyCircleRenderer(new ResourceLocation("alchemicalwizardry:textures/models/SimpleTransCircle.png"),0,0,0,255, 0, 0.501, 0.501, 0, 1.5, false)); - Rituals.registerRitual("AW020BalladOfAlchemy", 1, 20000, new RitualEffectAutoAlchemy(), "Ballad of Alchemy", new AlchemyCircleRenderer(new ResourceLocation("alchemicalwizardry:textures/models/SimpleTransCircle.png"),0,0,0,255, 0, 0.501, 0.501, 0, 1.5, false)); - Rituals.registerRitual("AW021Expulsion", 1, 1000000, new RitualEffectExpulsion(), "Aura of Expulsion", new AlchemyCircleRenderer(new ResourceLocation("alchemicalwizardry:textures/models/SimpleTransCircle.png"),0,0,0,255, 0, 0.501, 0.501, 0, 1.5, false)); - Rituals.registerRitual("AW022Supression", 1, 10000, new RitualEffectSupression(), "Dome of Supression", new AlchemyCircleRenderer(new ResourceLocation("alchemicalwizardry:textures/models/SimpleTransCircle.png"),0,0,0,255, 0, 0.501, 0.501, 0, 1.5, false)); - Rituals.registerRitual("AW023Zephyr", 1, 25000, new RitualEffectItemSuction(),"Call of the Zephyr", new AlchemyCircleRenderer(new ResourceLocation("alchemicalwizardry:textures/models/SimpleTransCircle.png"),0,0,0,255, 0, 0.501, 0.501, 0, 1.5, false)); - Rituals.registerRitual("AW024Harvest", 1, 20000, new RitualEffectHarvest(), "Reap of the Harvest Moon", new AlchemyCircleRenderer(new ResourceLocation("alchemicalwizardry:textures/models/SimpleTransCircle.png"),0,0,0,255, 0, 0.501, 0.501, 0, 1.5, false)); - Rituals.registerRitual("AW025Conduit", 2, 2000000, new RitualEffectLifeConduit(), "Cry of the Eternal Soul", new AlchemyCircleRenderer(new ResourceLocation("alchemicalwizardry:textures/models/SimpleTransCircle.png"),0,0,0,255, 0, 0.501, 0.501, 0, 1.5, false)); - Rituals.registerRitual("AW026Ellipsoid", 1, 25000, new RitualEffectEllipsoid(), "Focus of the Ellipsoid", new AlchemyCircleRenderer(new ResourceLocation("alchemicalwizardry:textures/models/SimpleTransCircle.png"),0,0,0,255, 0, 0.501, 0.501, 0, 1.5, false)); - Rituals.registerRitual("AW027Evaporation", 1, 20000, new RitualEffectEvaporation(), "Song of Evaporation", new AlchemyCircleRenderer(new ResourceLocation("alchemicalwizardry:textures/models/SimpleTransCircle.png"),0,0,0,255, 0, 0.501, 0.501, 0, 1.5, false)); - Rituals.registerRitual("AW028SpawnWard", 1, 150000, new RitualEffectSpawnWard(), "Ward of Sacrosanctity", new AlchemyCircleRenderer(new ResourceLocation("alchemicalwizardry:textures/models/SimpleTransCircle.png"),0,0,0,255, 0, 0.501, 0.501, 0, 1.5, false)); - Rituals.registerRitual("AW029VeilOfEvil", 1, 150000, new RitualEffectVeilOfEvil(), "Veil of Evil", new AlchemyCircleRenderer(new ResourceLocation("alchemicalwizardry:textures/models/SimpleTransCircle.png"),0,0,0,255, 0, 0.501, 0.501, 0, 1.5, false)); - Rituals.registerRitual("AW030FullStomach", 1, 100000, new RitualEffectFullStomach(), "Requiem of the Satiated Stomach", new AlchemyCircleRenderer(new ResourceLocation("alchemicalwizardry:textures/models/SimpleTransCircle.png"),0,0,0,255, 0, 0.501, 0.501, 0, 1.5, false)); - //Rituals.registerRitual(1,100,new RitualEffectApiaryOverclock(),"Apiary Overclock")); - } - - public static void initBindingRecipes() - { - BindingRegistry.registerRecipe(new ItemStack(ModItems.boundPickaxe), new ItemStack(Items.diamond_pickaxe)); - BindingRegistry.registerRecipe(new ItemStack(ModItems.boundAxe), new ItemStack(Items.diamond_axe)); - BindingRegistry.registerRecipe(new ItemStack(ModItems.boundShovel), new ItemStack(Items.diamond_shovel)); - BindingRegistry.registerRecipe(new ItemStack(ModItems.energySword), new ItemStack(Items.diamond_sword)); - BindingRegistry.registerRecipe(new ItemStack(ModItems.energyBlaster), new ItemStack(ModItems.apprenticeBloodOrb)); - } - - public static void initHarvestRegistry() - { - HarvestRegistry.registerHarvestHandler(new BloodMagicHarvestHandler()); - HarvestRegistry.registerHarvestHandler(new GourdHarvestHandler()); - HarvestRegistry.registerHarvestHandler(new CactusReedHarvestHandler()); - } - - public static void initCombinedAlchemyPotionRecipes() - { - CombinedPotionRegistry.registerCombinedPotionRecipe(customPotionFlameCloak, Potion.moveSpeed, Potion.regeneration); - } -} diff --git a/src-backup/main/java/WayofTime/alchemicalWizardry/BloodMagicConfiguration.java b/src-backup/main/java/WayofTime/alchemicalWizardry/BloodMagicConfiguration.java deleted file mode 100644 index 4e581591..00000000 --- a/src-backup/main/java/WayofTime/alchemicalWizardry/BloodMagicConfiguration.java +++ /dev/null @@ -1,147 +0,0 @@ -package WayofTime.alchemicalWizardry; - -import java.io.File; -import java.lang.reflect.Modifier; -import java.util.ArrayList; -import java.util.List; -import java.util.Map.Entry; - -import net.minecraft.entity.EntityList; -import net.minecraft.entity.EntityLivingBase; -import net.minecraftforge.common.config.Configuration; -import WayofTime.alchemicalWizardry.client.renderer.ColourThreshold; -import WayofTime.alchemicalWizardry.client.renderer.RenderHelper; -import WayofTime.alchemicalWizardry.common.summoning.meteor.MeteorParadigm; -import cpw.mods.fml.common.FMLCommonHandler; -import cpw.mods.fml.relauncher.Side; - -/** - * Created with IntelliJ IDEA. - * User: Pokefenn - * Date: 17/01/14 - * Time: 19:50 - */ -public class BloodMagicConfiguration -{ - private static final String DEFAULT_COLOR_LIST = "100,f; 80,7; 60,e; 40,6; 25,c; 10,4"; - public static final List colorList = new ArrayList(); - - public static Configuration config; - public static final String CATEGORY_GAMEPLAY = "gameplay"; - - - public static void init(File configFile) - { - for (String s : DEFAULT_COLOR_LIST.split(";")) - { - String[] ct = s.split(","); - colorList.add(new ColourThreshold(Integer.valueOf(ct[0].trim()), ct[1].trim())); - } - - - config = new Configuration(configFile); - - try - { - - config.load(); - - AlchemicalWizardry.standardBindingAgentDungeonChance = config.get("Dungeon Loot Chances", "standardBindingAgent", 30).getInt(); - AlchemicalWizardry.mundanePowerCatalystDungeonChance = config.get("Dungeon Loot Chances", "mundanePowerCatalyst", 20).getInt(); - AlchemicalWizardry.averagePowerCatalystDungeonChance = config.get("Dungeon Loot Chances", "averagePowerCatalyst", 10).getInt(); - AlchemicalWizardry.greaterPowerCatalystDungeonChance = config.get("Dungeon Loot Chances", "greaterPowerCatalyst", 05).getInt(); - AlchemicalWizardry.mundaneLengtheningCatalystDungeonChance = config.get("Dungeon Loot Chances", "mundaneLengtheningCatalyst", 20).getInt(); - AlchemicalWizardry.averageLengtheningCatalystDungeonChance = config.get("Dungeon Loot Chances", "averageLengtheningCatalyst", 10).getInt(); - AlchemicalWizardry.greaterLengtheningCatalystDungeonChance = config.get("Dungeon Loot Chances", "greaterLengtheningCatalyst", 05).getInt(); - AlchemicalWizardry.customPotionDrowningID = config.get("Potion ID", "Drowning", 100).getInt(); - AlchemicalWizardry.customPotionBoostID = config.get("Potion ID", "Boost", 101).getInt(); - AlchemicalWizardry.customPotionProjProtID = config.get("Potion ID", "ProjProt", 102).getInt(); - AlchemicalWizardry.customPotionInhibitID = config.get("Potion ID", "Inhibit", 103).getInt(); - AlchemicalWizardry.customPotionFlightID = config.get("Potion ID", "Flight", 104).getInt(); - AlchemicalWizardry.customPotionReciprocationID = config.get("Potion ID", "Reciprocation", 105).getInt(); - AlchemicalWizardry.customPotionFlameCloakID = config.get("Potion ID","FlameCloak",106).getInt(); - AlchemicalWizardry.customPotionIceCloakID = config.get("Potion ID","IceCloak",107).getInt(); - AlchemicalWizardry.customPotionHeavyHeartID = config.get("Potion ID","HeavyHeart",108).getInt(); - AlchemicalWizardry.customPotionFireFuseID = config.get("Potion ID","FireFuse",109).getInt(); - AlchemicalWizardry.customPotionPlanarBindingID = config.get("Potion ID","PlanarBinding",110).getInt(); - AlchemicalWizardry.customPotionSoulFrayID = config.get("Potion ID","SoulFray",111).getInt(); - AlchemicalWizardry.customPotionSoulHardenID = config.get("Potion ID", "SoulHarden", 112).getInt(); - AlchemicalWizardry.customPotionDeafID = config.get("Potion ID", "Deaf", 113).getInt(); - AlchemicalWizardry.customPotionFeatherFallID = config.get("Potion ID", "FeatherFall", 114).getInt(); - - MeteorParadigm.maxChance = config.get("meteor", "maxChance", 1000).getInt(); - AlchemicalWizardry.doMeteorsDestroyBlocks = config.get("meteor", "doMeteorsDestroyBlocks", true).getBoolean(true); - AlchemicalWizardry.diamondMeteorArray = config.get("meteor", "diamondMeteor", new String[]{"oreDiamond", "100", "oreEmerald", "75", "oreCinnabar", "200", "oreAmber", "200"}).getStringList(); - AlchemicalWizardry.diamondMeteorRadius = config.get("meteor", "diamondMeteorRadius", 5).getInt(); - AlchemicalWizardry.stoneMeteorArray = config.get("meteor", "stoneBlockMeteor", new String[]{"oreCoal", "150", "oreApatite", "50", "oreIron", "50"}).getStringList(); - AlchemicalWizardry.stoneMeteorRadius = config.get("meteor", "stoneMeteorRadius", 16).getInt(); - AlchemicalWizardry.ironBlockMeteorArray = config.get("meteor", "ironBlockMeteor", new String[]{"oreIron", "400", "oreGold", "30", "oreCopper", "200", "oreTin", "140", "oreSilver", "70", "oreLead", "80", "oreLapis", "60", "oreRedstone", "100"}).getStringList(); - AlchemicalWizardry.ironBlockMeteorRadius = config.get("meteor", "ironBlockMeteorRadius", 7).getInt(); - AlchemicalWizardry.netherStarMeteorArray = config.get("meteor", "netherStarMeteor", new String[]{"oreDiamond", "150", "oreEmerald", "100", "oreQuartz", "250", "oreSunstone", "5", "oreMoonstone", "50", "oreIridium", "5", "oreCertusQuartz", "150"}).getStringList(); - AlchemicalWizardry.netherStarMeteorRadius = config.get("meteor", "netherStarMeteorRadius", 3).getInt(); - - AlchemicalWizardry.allowedCrushedOresArray = config.get("oreCrushing", "allowedOres", new String[]{"iron","gold","copper","tin","lead","silver","osmium"}).getStringList(); - - AlchemicalWizardry.wimpySettings = config.get("WimpySettings","IDontLikeFun",false).getBoolean(false); - AlchemicalWizardry.respawnWithDebuff = config.get("WimpySettings", "RespawnWithDebuff", true).getBoolean(); - AlchemicalWizardry.causeHungerWithRegen = config.get("WimpySettings", "causeHungerWithRegen", true).getBoolean(); -// AlchemicalWizardry.lockdownAltar = config.get("WimpySettings", "LockdownAltarWithRegen", true).getBoolean(); - AlchemicalWizardry.lockdownAltar = false; - - Side side = FMLCommonHandler.instance().getSide(); - if(side == Side.CLIENT) - { - RenderHelper.xOffset = config.get("ClientSettings", "AlchemyHUDxOffset", 50).getInt(); - RenderHelper.yOffset = config.get("ClientSettings", "AlchemyHUDyOffset", 2).getInt(); - } - - - } catch (Exception e) - { - - //TODO Log - //FMLLog.log(Level.SEVERE, e, "Blood Magic" + " has had a problem loading its configuration, go ask on the forums :p"); - - } finally - { - config.save(); - } - } - - public static void set(String categoryName, String propertyName, String newValue) - { - - config.load(); - if (config.getCategoryNames().contains(categoryName)) - { - if (config.getCategory(categoryName).containsKey(propertyName)) - { - config.getCategory(categoryName).get(propertyName).set(newValue); - } - } - config.save(); - - - } - - public static void loadBlacklist() - { - AlchemicalWizardry.wellBlacklist=new ArrayList(); - for( Object o : EntityList.stringToClassMapping.entrySet()) - { - Entry entry=(Entry) o; - Class curClass=(Class)entry.getValue(); - boolean valid=EntityLivingBase.class.isAssignableFrom(curClass) && !Modifier.isAbstract(curClass.getModifiers()); - if(valid) - { - boolean blacklisted=config.get("wellOfSufferingBlackList", entry.getKey().toString(), false).getBoolean(); - if(blacklisted) - AlchemicalWizardry.wellBlacklist.add(curClass); - } - - } - config.save(); - } - - -} diff --git a/src-backup/main/java/WayofTime/alchemicalWizardry/ModBlocks.java b/src-backup/main/java/WayofTime/alchemicalWizardry/ModBlocks.java deleted file mode 100644 index 6c29b331..00000000 --- a/src-backup/main/java/WayofTime/alchemicalWizardry/ModBlocks.java +++ /dev/null @@ -1,174 +0,0 @@ -package WayofTime.alchemicalWizardry; - -import net.minecraft.block.Block; -import WayofTime.alchemicalWizardry.common.block.ArmourForge; -import WayofTime.alchemicalWizardry.common.block.BlockAlchemicCalcinator; -import WayofTime.alchemicalWizardry.common.block.BlockAltar; -import WayofTime.alchemicalWizardry.common.block.BlockBelljar; -import WayofTime.alchemicalWizardry.common.block.BlockBloodLightSource; -import WayofTime.alchemicalWizardry.common.block.BlockConduit; -import WayofTime.alchemicalWizardry.common.block.BlockDemonPortal; -import WayofTime.alchemicalWizardry.common.block.BlockHomHeart; -import WayofTime.alchemicalWizardry.common.block.BlockMasterStone; -import WayofTime.alchemicalWizardry.common.block.BlockPedestal; -import WayofTime.alchemicalWizardry.common.block.BlockPlinth; -import WayofTime.alchemicalWizardry.common.block.BlockReagentConduit; -import WayofTime.alchemicalWizardry.common.block.BlockSchematicSaver; -import WayofTime.alchemicalWizardry.common.block.BlockSocket; -import WayofTime.alchemicalWizardry.common.block.BlockSpectralContainer; -import WayofTime.alchemicalWizardry.common.block.BlockSpellEffect; -import WayofTime.alchemicalWizardry.common.block.BlockSpellEnhancement; -import WayofTime.alchemicalWizardry.common.block.BlockSpellModifier; -import WayofTime.alchemicalWizardry.common.block.BlockSpellParadigm; -import WayofTime.alchemicalWizardry.common.block.BlockTeleposer; -import WayofTime.alchemicalWizardry.common.block.BlockWritingTable; -import WayofTime.alchemicalWizardry.common.block.BloodRune; -import WayofTime.alchemicalWizardry.common.block.BloodStoneBrick; -import WayofTime.alchemicalWizardry.common.block.EfficiencyRune; -import WayofTime.alchemicalWizardry.common.block.EmptySocket; -import WayofTime.alchemicalWizardry.common.block.ImperfectRitualStone; -import WayofTime.alchemicalWizardry.common.block.LargeBloodStoneBrick; -import WayofTime.alchemicalWizardry.common.block.LifeEssenceBlock; -import WayofTime.alchemicalWizardry.common.block.RitualStone; -import WayofTime.alchemicalWizardry.common.block.RuneOfSacrifice; -import WayofTime.alchemicalWizardry.common.block.RuneOfSelfSacrifice; -import WayofTime.alchemicalWizardry.common.block.SpectralBlock; -import WayofTime.alchemicalWizardry.common.block.SpeedRune; -import WayofTime.alchemicalWizardry.common.items.ItemBlockCrystalBelljar; -import WayofTime.alchemicalWizardry.common.items.ItemBloodRuneBlock; -import WayofTime.alchemicalWizardry.common.items.ItemSpellEffectBlock; -import WayofTime.alchemicalWizardry.common.items.ItemSpellEnhancementBlock; -import WayofTime.alchemicalWizardry.common.items.ItemSpellModifierBlock; -import WayofTime.alchemicalWizardry.common.items.ItemSpellParadigmBlock; -import cpw.mods.fml.common.registry.GameRegistry; - -/** - * Created with IntelliJ IDEA. - * User: Pokefenn - * Date: 17/01/14 - * Time: 19:48 - */ -public class ModBlocks -{ - - public static Block testingBlock; - public static Block bloodStoneBrick; - public static Block largeBloodStoneBrick; - // public static Block lifeEssenceStill; -// public static Block lifeEssenceFlowing; - public static BlockAltar blockAltar; - public static BloodRune bloodRune; - public static SpeedRune speedRune; - public static EfficiencyRune efficiencyRune; - public static RuneOfSacrifice runeOfSacrifice; - public static RuneOfSelfSacrifice runeOfSelfSacrifice; - public static Block blockMasterStone; - public static Block ritualStone; - public static Block imperfectRitualStone; - public static Block bloodSocket; - public static Block emptySocket; - public static Block armourForge; - public static Block blockWritingTable; - public static Block blockHomHeart; - public static Block blockPedestal; - public static Block blockPlinth; - public static Block blockLifeEssence; - public static Block blockTeleposer; - public static Block spectralBlock; - public static Block blockConduit; - public static Block blockBloodLight; - public static Block blockSpellEffect; - public static Block blockSpellParadigm; - public static Block blockSpellModifier; - public static Block blockSpellEnhancement; - public static Block blockSpectralContainer; - public static Block blockBuildingSchematicSaver; - public static Block blockDemonPortal; - public static Block blockReagentConduit; - public static Block blockAlchemicCalcinator; - public static Block blockCrystalBelljar; - - public static void init() - { - blockAltar = new BlockAltar(); - bloodRune = new BloodRune(); - speedRune = new SpeedRune(); - efficiencyRune = new EfficiencyRune(); - runeOfSacrifice = new RuneOfSacrifice(); - runeOfSelfSacrifice = new RuneOfSelfSacrifice(); - - blockTeleposer = new BlockTeleposer(); - spectralBlock = new SpectralBlock(); - ritualStone = new RitualStone(); - blockMasterStone = new BlockMasterStone(); - imperfectRitualStone = new ImperfectRitualStone(); - bloodSocket = new BlockSocket(); - armourForge = new ArmourForge(); - emptySocket = new EmptySocket(); - largeBloodStoneBrick = new LargeBloodStoneBrick(); - bloodStoneBrick = new BloodStoneBrick(); - blockWritingTable = new BlockWritingTable(); - blockHomHeart = new BlockHomHeart(); - blockPedestal = new BlockPedestal(); - blockPlinth = new BlockPlinth(); - blockConduit = new BlockConduit(); - blockBloodLight = new BlockBloodLightSource(); - blockSpellEffect = new BlockSpellEffect(); - blockSpellParadigm = new BlockSpellParadigm(); - blockSpellModifier = new BlockSpellModifier(); - blockSpellEnhancement = new BlockSpellEnhancement(); - blockSpectralContainer = new BlockSpectralContainer(); - blockDemonPortal = new BlockDemonPortal(); - blockBuildingSchematicSaver = new BlockSchematicSaver(); - blockReagentConduit = new BlockReagentConduit(); - blockAlchemicCalcinator = new BlockAlchemicCalcinator(); - blockCrystalBelljar = new BlockBelljar(); - - blockLifeEssence = new LifeEssenceBlock(); - } - - public static void registerBlocksInPre() - { - GameRegistry.registerBlock(ModBlocks.blockAltar, "Altar"); - GameRegistry.registerBlock(ModBlocks.bloodRune, ItemBloodRuneBlock.class, "AlchemicalWizardry" + (ModBlocks.bloodRune.getUnlocalizedName().substring(5))); - GameRegistry.registerBlock(ModBlocks.blockLifeEssence, "lifeEssence"); - GameRegistry.registerBlock(ModBlocks.speedRune, "speedRune"); - GameRegistry.registerBlock(ModBlocks.efficiencyRune, "efficiencyRune"); - GameRegistry.registerBlock(ModBlocks.runeOfSacrifice, "runeOfSacrifice"); - GameRegistry.registerBlock(ModBlocks.runeOfSelfSacrifice, "runeOfSelfSacrifice"); - GameRegistry.registerBlock(ModBlocks.ritualStone, "ritualStone"); - GameRegistry.registerBlock(ModBlocks.blockMasterStone, "masterStone"); - GameRegistry.registerBlock(ModBlocks.bloodSocket, "bloodSocket"); - GameRegistry.registerBlock(ModBlocks.imperfectRitualStone, "imperfectRitualStone"); - - GameRegistry.registerBlock(ModBlocks.armourForge, "armourForge"); - GameRegistry.registerBlock(ModBlocks.emptySocket, "emptySocket"); - GameRegistry.registerBlock(ModBlocks.bloodStoneBrick, "bloodStoneBrick"); - GameRegistry.registerBlock(ModBlocks.largeBloodStoneBrick, "largeBloodStoneBrick"); - GameRegistry.registerBlock(ModBlocks.blockWritingTable, "blockWritingTable"); - GameRegistry.registerBlock(ModBlocks.blockHomHeart, "blockHomHeart"); - GameRegistry.registerBlock(ModBlocks.blockPedestal, "blockPedestal"); - GameRegistry.registerBlock(ModBlocks.blockPlinth, "blockPlinth"); - GameRegistry.registerBlock(ModBlocks.blockTeleposer, "blockTeleposer"); - GameRegistry.registerBlock(ModBlocks.spectralBlock, "spectralBlock"); - GameRegistry.registerBlock(ModBlocks.blockBloodLight, "bloodLight"); - - GameRegistry.registerBlock(ModBlocks.blockConduit,"blockConduit"); - GameRegistry.registerBlock(ModBlocks.blockSpellParadigm, ItemSpellParadigmBlock.class, "AlchemicalWizardry" + (ModBlocks.blockSpellParadigm.getUnlocalizedName())); - GameRegistry.registerBlock(ModBlocks.blockSpellEnhancement, ItemSpellEnhancementBlock.class,"AlchemicalWizardry" + (ModBlocks.blockSpellEnhancement.getUnlocalizedName())); - GameRegistry.registerBlock(ModBlocks.blockSpellModifier, ItemSpellModifierBlock.class,"AlchemicalWizardry" + (ModBlocks.blockSpellModifier.getUnlocalizedName())); - GameRegistry.registerBlock(ModBlocks.blockSpellEffect, ItemSpellEffectBlock.class,"AlchemicalWizardry" + (ModBlocks.blockSpellEffect.getUnlocalizedName())); - - GameRegistry.registerBlock(ModBlocks.blockSpectralContainer, "spectralContainer"); - GameRegistry.registerBlock(ModBlocks.blockDemonPortal, "demonPortalMain"); - GameRegistry.registerBlock(ModBlocks.blockBuildingSchematicSaver, "blockSchemSaver"); - GameRegistry.registerBlock(ModBlocks.blockReagentConduit, "blockReagentConduit"); - GameRegistry.registerBlock(ModBlocks.blockAlchemicCalcinator, "blockAlchemicCalcinator"); - GameRegistry.registerBlock(ModBlocks.blockCrystalBelljar, ItemBlockCrystalBelljar.class, "blockCrystalBelljar"); - } - - public static void registerBlocksInInit() - { - //GameRegistry.registerBlock(ModBlocks.blockLifeEssence, "lifeEssence"); - } -} diff --git a/src-backup/main/java/WayofTime/alchemicalWizardry/ModItems.java b/src-backup/main/java/WayofTime/alchemicalWizardry/ModItems.java deleted file mode 100644 index b7f2fcfa..00000000 --- a/src-backup/main/java/WayofTime/alchemicalWizardry/ModItems.java +++ /dev/null @@ -1,384 +0,0 @@ -package WayofTime.alchemicalWizardry; - -import net.minecraft.creativetab.CreativeTabs; -import net.minecraft.init.Items; -import net.minecraft.item.Item; -import WayofTime.alchemicalWizardry.common.items.AWBaseItems; -import WayofTime.alchemicalWizardry.common.items.ActivationCrystal; -import WayofTime.alchemicalWizardry.common.items.AirScribeTool; -import WayofTime.alchemicalWizardry.common.items.ApprenticeBloodOrb; -import WayofTime.alchemicalWizardry.common.items.ArchmageBloodOrb; -import WayofTime.alchemicalWizardry.common.items.ArmourInhibitor; -import WayofTime.alchemicalWizardry.common.items.BlankSpell; -import WayofTime.alchemicalWizardry.common.items.BloodShard; -import WayofTime.alchemicalWizardry.common.items.BoundArmour; -import WayofTime.alchemicalWizardry.common.items.BoundAxe; -import WayofTime.alchemicalWizardry.common.items.BoundPickaxe; -import WayofTime.alchemicalWizardry.common.items.BoundShovel; -import WayofTime.alchemicalWizardry.common.items.CheatyItem; -import WayofTime.alchemicalWizardry.common.items.DaggerOfSacrifice; -import WayofTime.alchemicalWizardry.common.items.DemonPlacer; -import WayofTime.alchemicalWizardry.common.items.DemonicTelepositionFocus; -import WayofTime.alchemicalWizardry.common.items.DuskScribeTool; -import WayofTime.alchemicalWizardry.common.items.EarthScribeTool; -import WayofTime.alchemicalWizardry.common.items.EnergyBattery; -import WayofTime.alchemicalWizardry.common.items.EnergyBazooka; -import WayofTime.alchemicalWizardry.common.items.EnergyBlast; -import WayofTime.alchemicalWizardry.common.items.EnergySword; -import WayofTime.alchemicalWizardry.common.items.EnhancedTelepositionFocus; -import WayofTime.alchemicalWizardry.common.items.FireScribeTool; -import WayofTime.alchemicalWizardry.common.items.ItemAlchemyBase; -import WayofTime.alchemicalWizardry.common.items.ItemComplexSpellCrystal; -import WayofTime.alchemicalWizardry.common.items.ItemComponents; -import WayofTime.alchemicalWizardry.common.items.ItemDiabloKey; -import WayofTime.alchemicalWizardry.common.items.ItemRitualDiviner; -import WayofTime.alchemicalWizardry.common.items.LavaCrystal; -import WayofTime.alchemicalWizardry.common.items.LifeBucket; -import WayofTime.alchemicalWizardry.common.items.MagicianBloodOrb; -import WayofTime.alchemicalWizardry.common.items.MasterBloodOrb; -import WayofTime.alchemicalWizardry.common.items.ReinforcedTelepositionFocus; -import WayofTime.alchemicalWizardry.common.items.SacrificialDagger; -import WayofTime.alchemicalWizardry.common.items.TelepositionFocus; -import WayofTime.alchemicalWizardry.common.items.WaterScribeTool; -import WayofTime.alchemicalWizardry.common.items.energy.ItemAttunedCrystal; -import WayofTime.alchemicalWizardry.common.items.energy.ItemDestinationClearer; -import WayofTime.alchemicalWizardry.common.items.energy.ItemTankSegmenter; -import WayofTime.alchemicalWizardry.common.items.potion.AlchemyFlask; -import WayofTime.alchemicalWizardry.common.items.potion.AlchemyReagent; -import WayofTime.alchemicalWizardry.common.items.potion.AverageLengtheningCatalyst; -import WayofTime.alchemicalWizardry.common.items.potion.AveragePowerCatalyst; -import WayofTime.alchemicalWizardry.common.items.potion.CombinationalCatalyst; -import WayofTime.alchemicalWizardry.common.items.potion.EnhancedFillingAgent; -import WayofTime.alchemicalWizardry.common.items.potion.GreaterLengtheningCatalyst; -import WayofTime.alchemicalWizardry.common.items.potion.GreaterPowerCatalyst; -import WayofTime.alchemicalWizardry.common.items.potion.MundaneLengtheningCatalyst; -import WayofTime.alchemicalWizardry.common.items.potion.MundanePowerCatalyst; -import WayofTime.alchemicalWizardry.common.items.potion.StandardBindingAgent; -import WayofTime.alchemicalWizardry.common.items.potion.StandardFillingAgent; -import WayofTime.alchemicalWizardry.common.items.potion.WeakBindingAgent; -import WayofTime.alchemicalWizardry.common.items.potion.WeakFillingAgent; -import WayofTime.alchemicalWizardry.common.items.sigil.AirSigil; -import WayofTime.alchemicalWizardry.common.items.sigil.DivinationSigil; -import WayofTime.alchemicalWizardry.common.items.sigil.ItemBloodLightSigil; -import WayofTime.alchemicalWizardry.common.items.sigil.ItemFluidSigil; -import WayofTime.alchemicalWizardry.common.items.sigil.ItemSeerSigil; -import WayofTime.alchemicalWizardry.common.items.sigil.ItemSigilOfEnderSeverance; -import WayofTime.alchemicalWizardry.common.items.sigil.ItemSigilOfSupression; -import WayofTime.alchemicalWizardry.common.items.sigil.LavaSigil; -import WayofTime.alchemicalWizardry.common.items.sigil.SigilOfElementalAffinity; -import WayofTime.alchemicalWizardry.common.items.sigil.SigilOfGrowth; -import WayofTime.alchemicalWizardry.common.items.sigil.SigilOfHaste; -import WayofTime.alchemicalWizardry.common.items.sigil.SigilOfHolding; -import WayofTime.alchemicalWizardry.common.items.sigil.SigilOfMagnetism; -import WayofTime.alchemicalWizardry.common.items.sigil.SigilOfTheBridge; -import WayofTime.alchemicalWizardry.common.items.sigil.SigilOfTheFastMiner; -import WayofTime.alchemicalWizardry.common.items.sigil.SigilOfWind; -import WayofTime.alchemicalWizardry.common.items.sigil.VoidSigil; -import WayofTime.alchemicalWizardry.common.items.sigil.WaterSigil; -import WayofTime.alchemicalWizardry.common.items.spell.ItemSpellMultiTool; -import cpw.mods.fml.common.registry.GameRegistry; - -/** - * Created with IntelliJ IDEA. - * User: Pokefenn - * Date: 17/01/14 - * Time: 19:48 - */ -public class ModItems -{ - public static Item weakBloodOrb; - public static Item apprenticeBloodOrb; - public static Item magicianBloodOrb; - public static Item energyBlaster; - public static Item energySword; - public static Item lavaCrystal; - public static Item waterSigil; - public static Item lavaSigil; - public static Item voidSigil; - public static Item blankSlate; - public static Item reinforcedSlate; - public static Item sacrificialDagger; - public static Item daggerOfSacrifice; - public static Item airSigil; - public static Item sigilOfTheFastMiner; - public static Item sigilOfElementalAffinity; - public static Item sigilOfHaste; - public static Item sigilOfHolding; - public static Item divinationSigil; - public static Item waterScribeTool; - public static Item fireScribeTool; - public static Item earthScribeTool; - public static Item airScribeTool; - public static Item activationCrystal; - public static Item boundPickaxe; - public static Item boundAxe; - public static Item boundShovel; - public static Item boundHelmet; - public static Item boundPlate; - public static Item boundLeggings; - public static Item boundBoots; - public static Item weakBloodShard; - public static Item growthSigil; - public static Item blankSpell; - public static Item masterBloodOrb; - public static Item alchemyFlask; - public static Item standardBindingAgent; - public static Item mundanePowerCatalyst; - public static Item averagePowerCatalyst; - public static Item greaterPowerCatalyst; - public static Item mundaneLengtheningCatalyst; - public static Item averageLengtheningCatalyst; - public static Item greaterLengtheningCatalyst; - public static Item incendium; - public static Item magicales; - public static Item sanctus; - public static Item aether; - public static Item simpleCatalyst; - public static Item crepitous; - public static Item crystallos; - public static Item terrae; - public static Item aquasalus; - public static Item tennebrae; - public static Item demonBloodShard; - public static Item archmageBloodOrb; - public static Item sigilOfWind; - public static Item telepositionFocus; - public static Item enhancedTelepositionFocus; - public static Item reinforcedTelepositionFocus; - public static Item demonicTelepositionFocus; - public static Item imbuedSlate; - public static Item demonicSlate; - public static Item duskScribeTool; - public static Item sigilOfTheBridge; - public static Item armourInhibitor; - public static Item creativeFiller; - public static Item demonPlacer; - - public static Item baseItems; - public static Item baseAlchemyItems; - - public static Item weakFillingAgent; - public static Item standardFillingAgent; - public static Item enhancedFillingAgent; - public static Item weakBindingAgent; - public static Item itemRitualDiviner; - public static Item sanguineHelmet; - public static Item sanguineRobe; - public static Item sanguinePants; - public static Item sanguineBoots; - public static Item focusBloodBlast; - public static Item focusGravityWell; - public static Item sigilOfMagnetism; - public static Item itemKeyOfDiablo; - public static Item energyBazooka; - public static Item itemBloodLightSigil; - public static Item itemComplexSpellCrystal; - public static Item itemBloodFrame; - - public static Item itemSigilOfEnderSeverance; - public static Item itemSigilOfSupression; - public static Item itemFluidSigil; - public static Item itemSeerSigil; - public static Item itemCombinationalCatalyst; - - public static Item customTool; - - public static Item itemAttunedCrystal; - public static Item itemTankSegmenter; - public static Item itemDestinationClearer; - - public static Item bucketLife; - - public static void init() - { - weakBloodOrb = new EnergyBattery(5000).setUnlocalizedName("weakBloodOrb"); - apprenticeBloodOrb = new ApprenticeBloodOrb(25000).setUnlocalizedName("apprenticeBloodOrb"); - magicianBloodOrb = new MagicianBloodOrb(150000).setUnlocalizedName("magicianBloodOrb"); - masterBloodOrb = new MasterBloodOrb(1000000).setUnlocalizedName("masterBloodOrb"); - archmageBloodOrb = new ArchmageBloodOrb(10000000).setUnlocalizedName("archmageBloodOrb"); - energyBlaster = new EnergyBlast().setUnlocalizedName("energyBlast"); - energySword = new EnergySword().setUnlocalizedName("energySword"); - lavaCrystal = new LavaCrystal().setUnlocalizedName("lavaCrystal"); - waterSigil = new WaterSigil().setUnlocalizedName("waterSigil"); - lavaSigil = new LavaSigil().setUnlocalizedName("lavaSigil"); - voidSigil = new VoidSigil().setUnlocalizedName("voidSigil"); - blankSlate = new AWBaseItems().setUnlocalizedName("blankSlate"); - reinforcedSlate = new AWBaseItems().setUnlocalizedName("reinforcedSlate"); - sacrificialDagger = new SacrificialDagger().setUnlocalizedName("sacrificialDagger"); - daggerOfSacrifice = new DaggerOfSacrifice().setUnlocalizedName("daggerOfSacrifice"); - airSigil = new AirSigil().setUnlocalizedName("airSigil"); - sigilOfTheFastMiner = new SigilOfTheFastMiner().setUnlocalizedName("sigilOfTheFastMiner"); - sigilOfElementalAffinity = new SigilOfElementalAffinity().setUnlocalizedName("sigilOfElementalAffinity"); - sigilOfHaste = new SigilOfHaste().setUnlocalizedName("sigilOfHaste"); - sigilOfHolding = new SigilOfHolding().setUnlocalizedName("sigilOfHolding"); - divinationSigil = new DivinationSigil().setUnlocalizedName("divinationSigil"); - waterScribeTool = new WaterScribeTool().setUnlocalizedName("waterScribeTool"); - fireScribeTool = new FireScribeTool().setUnlocalizedName("fireScribeTool"); - earthScribeTool = new EarthScribeTool().setUnlocalizedName("earthScribeTool"); - airScribeTool = new AirScribeTool().setUnlocalizedName("airScribeTool"); - activationCrystal = new ActivationCrystal(); - boundPickaxe = new BoundPickaxe().setUnlocalizedName("boundPickaxe"); - boundAxe = new BoundAxe().setUnlocalizedName("boundAxe"); - boundShovel = new BoundShovel().setUnlocalizedName("boundShovel"); - boundHelmet = new BoundArmour(0).setUnlocalizedName("boundHelmet"); - boundPlate = new BoundArmour(1).setUnlocalizedName("boundPlate"); - boundLeggings = new BoundArmour(2).setUnlocalizedName("boundLeggings"); - boundBoots = new BoundArmour(3).setUnlocalizedName("boundBoots"); - weakBloodShard = new BloodShard().setUnlocalizedName("weakBloodShard"); - growthSigil = new SigilOfGrowth().setUnlocalizedName("growthSigil"); - blankSpell = new BlankSpell().setUnlocalizedName("blankSpell"); - alchemyFlask = new AlchemyFlask().setUnlocalizedName("alchemyFlask"); - standardBindingAgent = new StandardBindingAgent().setUnlocalizedName("standardBindingAgent"); - mundanePowerCatalyst = new MundanePowerCatalyst().setUnlocalizedName("mundanePowerCatalyst"); - averagePowerCatalyst = new AveragePowerCatalyst().setUnlocalizedName("averagePowerCatalyst"); - greaterPowerCatalyst = new GreaterPowerCatalyst().setUnlocalizedName("greaterPowerCatalyst"); - mundaneLengtheningCatalyst = new MundaneLengtheningCatalyst().setUnlocalizedName("mundaneLengtheningCatalyst"); - averageLengtheningCatalyst = new AverageLengtheningCatalyst().setUnlocalizedName("averageLengtheningCatalyst"); - greaterLengtheningCatalyst = new GreaterLengtheningCatalyst().setUnlocalizedName("greaterLengtheningCatalyst"); - incendium = new AlchemyReagent().setUnlocalizedName("incendium"); - magicales = new AlchemyReagent().setUnlocalizedName("magicales"); - sanctus = new AlchemyReagent().setUnlocalizedName("sanctus"); - aether = new AlchemyReagent().setUnlocalizedName("aether"); - simpleCatalyst = new AlchemyReagent().setUnlocalizedName("simpleCatalyst"); - crepitous = new AlchemyReagent().setUnlocalizedName("crepitous"); - crystallos = new AlchemyReagent().setUnlocalizedName("crystallos"); - terrae = new AlchemyReagent().setUnlocalizedName("terrae"); - aquasalus = new AlchemyReagent().setUnlocalizedName("aquasalus"); - tennebrae = new AlchemyReagent().setUnlocalizedName("tennebrae"); - demonBloodShard = new BloodShard().setUnlocalizedName("demonBloodShard"); - sigilOfWind = new SigilOfWind().setUnlocalizedName("sigilOfWind"); - telepositionFocus = new TelepositionFocus(1).setUnlocalizedName("telepositionFocus"); - enhancedTelepositionFocus = new EnhancedTelepositionFocus().setUnlocalizedName("enhancedTelepositionFocus"); - reinforcedTelepositionFocus = new ReinforcedTelepositionFocus().setUnlocalizedName("reinforcedTelepositionFocus"); - demonicTelepositionFocus = new DemonicTelepositionFocus().setUnlocalizedName("demonicTelepositionFocus"); - imbuedSlate = new AWBaseItems().setUnlocalizedName("imbuedSlate"); - demonicSlate = new AWBaseItems().setUnlocalizedName("demonicSlate"); - duskScribeTool = new DuskScribeTool().setUnlocalizedName("duskScribeTool"); - sigilOfTheBridge = new SigilOfTheBridge().setUnlocalizedName("sigilOfTheBridge"); - armourInhibitor = new ArmourInhibitor().setUnlocalizedName("armourInhibitor"); - creativeFiller = new CheatyItem().setUnlocalizedName("cheatyItem"); - demonPlacer = new DemonPlacer().setUnlocalizedName("demonPlacer"); - weakFillingAgent = new WeakFillingAgent().setUnlocalizedName("weakFillingAgent"); - standardFillingAgent = new StandardFillingAgent().setUnlocalizedName("standardFillingAgent"); - enhancedFillingAgent = new EnhancedFillingAgent().setUnlocalizedName("enhancedFillingAgent"); - weakBindingAgent = new WeakBindingAgent().setUnlocalizedName("weakBindingAgent"); - itemRitualDiviner = new ItemRitualDiviner().setUnlocalizedName("ritualDiviner"); - sigilOfMagnetism = new SigilOfMagnetism().setUnlocalizedName("sigilOfMagnetism"); - itemKeyOfDiablo = new ItemDiabloKey().setUnlocalizedName("itemDiabloKey"); - energyBazooka = new EnergyBazooka().setUnlocalizedName("energyBazooka"); - itemBloodLightSigil = new ItemBloodLightSigil().setUnlocalizedName("bloodLightSigil"); - itemComplexSpellCrystal = new ItemComplexSpellCrystal().setUnlocalizedName("itemComplexSpellCrystal"); - bucketLife = (new LifeBucket(ModBlocks.blockLifeEssence)).setUnlocalizedName("bucketLife").setContainerItem(Items.bucket).setCreativeTab(CreativeTabs.tabMisc); - itemSigilOfEnderSeverance = (new ItemSigilOfEnderSeverance()).setUnlocalizedName("itemSigilOfEnderSeverance"); - baseItems = new ItemComponents().setUnlocalizedName("baseItems"); - baseAlchemyItems = new ItemAlchemyBase().setUnlocalizedName("baseAlchemyItems"); - itemSigilOfSupression = new ItemSigilOfSupression().setUnlocalizedName("itemSigilOfSupression"); - itemFluidSigil = new ItemFluidSigil().setUnlocalizedName("itemFluidSigil"); - itemSeerSigil = new ItemSeerSigil().setUnlocalizedName("itemSeerSigil"); - customTool = new ItemSpellMultiTool().setUnlocalizedName("multiTool"); - itemCombinationalCatalyst = new CombinationalCatalyst().setUnlocalizedName("itemCombinationalCatalyst"); - itemAttunedCrystal = new ItemAttunedCrystal().setUnlocalizedName("itemAttunedCrystal"); - itemTankSegmenter = new ItemTankSegmenter().setUnlocalizedName("itemTankSegmenter"); - itemDestinationClearer = new ItemDestinationClearer().setUnlocalizedName("destinationClearer"); - } - - public static void registerItems() - { - GameRegistry.registerItem(ModItems.weakBloodOrb, "weakBloodOrb"); - GameRegistry.registerItem(ModItems.apprenticeBloodOrb, "apprenticeBloodOrb"); - GameRegistry.registerItem(ModItems.magicianBloodOrb, "magicianBloodOrb"); - GameRegistry.registerItem(ModItems.energyBlaster, "energyBlaster"); - - GameRegistry.registerItem(ModItems.energySword, "energySword"); - GameRegistry.registerItem(ModItems.lavaCrystal, "lavaCrystal"); - GameRegistry.registerItem(ModItems.waterSigil, "waterSigil"); - GameRegistry.registerItem(ModItems.lavaSigil, "lavaSigil"); - GameRegistry.registerItem(ModItems.voidSigil, "voidSigil"); - GameRegistry.registerItem(ModItems.blankSlate, "blankSlate"); - GameRegistry.registerItem(ModItems.reinforcedSlate, "reinforcedSlate"); - GameRegistry.registerItem(ModItems.sacrificialDagger, "sacrificialKnife"); - GameRegistry.registerItem(ModItems.daggerOfSacrifice, "daggerOfSacrifice"); - GameRegistry.registerItem(ModItems.airSigil, "airSigil"); - GameRegistry.registerItem(ModItems.sigilOfTheFastMiner, "sigilOfTheFastMiner"); - GameRegistry.registerItem(ModItems.sigilOfElementalAffinity, "sigilOfElementalAffinity"); - GameRegistry.registerItem(ModItems.sigilOfHaste, "sigilOfHaste"); - GameRegistry.registerItem(ModItems.sigilOfHolding, "sigilOfHolding"); - GameRegistry.registerItem(ModItems.divinationSigil, "divinationSigil"); - GameRegistry.registerItem(ModItems.waterScribeTool, "waterScribeTool"); - GameRegistry.registerItem(ModItems.fireScribeTool, "fireScribeTool"); - GameRegistry.registerItem(ModItems.earthScribeTool, "earthScribeTool"); - GameRegistry.registerItem(ModItems.airScribeTool, "airScribeTool"); - GameRegistry.registerItem(ModItems.activationCrystal, "activationCrystal"); - GameRegistry.registerItem(ModItems.boundPickaxe, "boundPickaxe"); - GameRegistry.registerItem(ModItems.boundAxe, "boundAxe"); - GameRegistry.registerItem(ModItems.boundShovel, "boundShovel"); - GameRegistry.registerItem(ModItems.boundHelmet, "boundHelmet"); - GameRegistry.registerItem(ModItems.boundPlate, "boundPlate"); - GameRegistry.registerItem(ModItems.boundLeggings, "boundLeggings"); - GameRegistry.registerItem(ModItems.boundBoots, "boundBoots"); - GameRegistry.registerItem(ModItems.weakBloodShard, "weakBloodShard"); - GameRegistry.registerItem(ModItems.growthSigil, "growthSigil"); - GameRegistry.registerItem(ModItems.blankSpell, "blankSpell"); - GameRegistry.registerItem(ModItems.masterBloodOrb, "masterBloodOrb"); - GameRegistry.registerItem(ModItems.alchemyFlask, "alchemyFlask"); - GameRegistry.registerItem(ModItems.standardBindingAgent, "standardBindingAgent"); - GameRegistry.registerItem(ModItems.mundanePowerCatalyst, "mundanePowerCatalyst"); - GameRegistry.registerItem(ModItems.averagePowerCatalyst, "averagePowerCatalyst"); - GameRegistry.registerItem(ModItems.greaterPowerCatalyst, "greaterPowerCatalyst"); - GameRegistry.registerItem(ModItems.mundaneLengtheningCatalyst, "mundaneLengtheningCatalyst"); - GameRegistry.registerItem(ModItems.averageLengtheningCatalyst, "averageLengtheningCatalyst"); - GameRegistry.registerItem(ModItems.greaterLengtheningCatalyst, "greaterLengtheningCatalyst"); - GameRegistry.registerItem(ModItems.incendium, "incendium"); - GameRegistry.registerItem(ModItems.magicales, "magicales"); - GameRegistry.registerItem(ModItems.sanctus, "sanctus"); - GameRegistry.registerItem(ModItems.aether, "aether"); - GameRegistry.registerItem(ModItems.simpleCatalyst, "simpleCatalyst"); - GameRegistry.registerItem(ModItems.crepitous, "crepitous"); - GameRegistry.registerItem(ModItems.crystallos, "crystallos"); - GameRegistry.registerItem(ModItems.terrae, "terrae"); - GameRegistry.registerItem(ModItems.aquasalus, "aquasalus"); - GameRegistry.registerItem(ModItems.tennebrae, "tennebrae"); - GameRegistry.registerItem(ModItems.demonBloodShard, "demonBloodShard"); - GameRegistry.registerItem(ModItems.archmageBloodOrb, "archmageBloodOrb"); - GameRegistry.registerItem(ModItems.sigilOfWind, "sigilOfWind"); - GameRegistry.registerItem(ModItems.telepositionFocus, "telepositionFocus"); - GameRegistry.registerItem(ModItems.enhancedTelepositionFocus, "enhancedTelepositionFocus"); - GameRegistry.registerItem(ModItems.reinforcedTelepositionFocus, "reinforcedTelepositionFocus"); - GameRegistry.registerItem(ModItems.demonicTelepositionFocus, "demonicTelepositionFocus"); - GameRegistry.registerItem(ModItems.imbuedSlate, "imbuedSlate"); - GameRegistry.registerItem(ModItems.demonicSlate, "demonicSlate"); - GameRegistry.registerItem(ModItems.duskScribeTool, "duskScribeTool"); - GameRegistry.registerItem(ModItems.sigilOfTheBridge, "sigilOfTheBridge"); - GameRegistry.registerItem(ModItems.armourInhibitor, "armourInhibitor"); - GameRegistry.registerItem(ModItems.creativeFiller, "creativeFiller"); - GameRegistry.registerItem(ModItems.demonPlacer, "demonPlacer"); - - GameRegistry.registerItem(ModItems.weakFillingAgent, "weakFillingAgent"); - GameRegistry.registerItem(ModItems.standardFillingAgent, "standardFillingAgent"); - GameRegistry.registerItem(ModItems.enhancedFillingAgent, "enhancedFillingAgent"); - GameRegistry.registerItem(ModItems.weakBindingAgent, "weakBindingAgent"); - GameRegistry.registerItem(ModItems.itemRitualDiviner, "itemRitualDiviner"); - GameRegistry.registerItem(ModItems.sigilOfMagnetism, "sigilOfMagnetism"); - GameRegistry.registerItem(ModItems.itemKeyOfDiablo, "itemKeyOfDiablo"); - GameRegistry.registerItem(ModItems.energyBazooka, "energyBazooka"); - GameRegistry.registerItem(ModItems.itemBloodLightSigil, "itemBloodLightSigil"); - GameRegistry.registerItem(ModItems.itemComplexSpellCrystal, "itemComplexSpellCrystal"); - GameRegistry.registerItem(ModItems.itemSigilOfSupression, "sigilOfSupression"); - GameRegistry.registerItem(ModItems.itemSigilOfEnderSeverance, "sigilOfEnderSeverance"); - GameRegistry.registerItem(ModItems.itemFluidSigil, "fluidSigil"); - GameRegistry.registerItem(ModItems.itemSeerSigil, "seerSigil"); - - GameRegistry.registerItem(ModItems.customTool, "customTool"); - - GameRegistry.registerItem(ModItems.bucketLife, "bucketLife"); - GameRegistry.registerItem(ModItems.itemCombinationalCatalyst, "itemCombinationalCatalyst"); - - GameRegistry.registerItem(ModItems.itemAttunedCrystal, "itemAttunedCrystal"); - GameRegistry.registerItem(ModItems.itemTankSegmenter, "itemTankSegmenter"); - GameRegistry.registerItem(ModItems.itemDestinationClearer, "itemDestinationClearer"); - - GameRegistry.registerItem(ModItems.baseItems, "bloodMagicBaseItems"); - GameRegistry.registerItem(ModItems.baseAlchemyItems, "bloodMagicBaseAlchemyItems"); - //GameRegistry.registerItem(ModItems.itemBloodFrame, "itemBloodFrame"); - } -} diff --git a/src-backup/main/java/WayofTime/alchemicalWizardry/api/ColourAndCoords.java b/src-backup/main/java/WayofTime/alchemicalWizardry/api/ColourAndCoords.java deleted file mode 100644 index 08f71bff..00000000 --- a/src-backup/main/java/WayofTime/alchemicalWizardry/api/ColourAndCoords.java +++ /dev/null @@ -1,45 +0,0 @@ -package WayofTime.alchemicalWizardry.api; - -import net.minecraft.nbt.NBTTagCompound; - -public class ColourAndCoords -{ - public int colourRed; - public int colourGreen; - public int colourBlue; - public int colourIntensity; - - public int xCoord; - public int yCoord; - public int zCoord; - - public ColourAndCoords(int red, int green, int blue, int intensity, int x, int y, int z) - { - this.colourRed = red; - this.colourGreen = green; - this.colourBlue = blue; - this.colourIntensity = intensity; - - this.xCoord = x; - this.yCoord = y; - this.zCoord = z; - } - - public static ColourAndCoords readFromNBT(NBTTagCompound tag) - { - return new ColourAndCoords(tag.getInteger("colourRed"), tag.getInteger("colourGreen"), tag.getInteger("colourBlue"), tag.getInteger("colourIntensity"), tag.getInteger("xCoord"), tag.getInteger("yCoord"), tag.getInteger("zCoord")); - } - - public NBTTagCompound writeToNBT(NBTTagCompound tag) - { - tag.setInteger("colourRed", colourRed); - tag.setInteger("colourGreen", colourGreen); - tag.setInteger("colourBlue", colourBlue); - tag.setInteger("colourIntensity", colourIntensity); - tag.setInteger("xCoord", xCoord); - tag.setInteger("yCoord", yCoord); - tag.setInteger("zCoord", zCoord); - - return tag; - } -} diff --git a/src-backup/main/java/WayofTime/alchemicalWizardry/api/alchemy/AlchemicalPotionCreationHandler.java b/src-backup/main/java/WayofTime/alchemicalWizardry/api/alchemy/AlchemicalPotionCreationHandler.java deleted file mode 100644 index 4a4b40e0..00000000 --- a/src-backup/main/java/WayofTime/alchemicalWizardry/api/alchemy/AlchemicalPotionCreationHandler.java +++ /dev/null @@ -1,79 +0,0 @@ -package WayofTime.alchemicalWizardry.api.alchemy; - -import java.util.ArrayList; - -import net.minecraft.item.ItemStack; - -public class AlchemicalPotionCreationHandler -{ - public static ArrayList registeredPotionEffects = new ArrayList(); - - public static void addPotion(ItemStack itemStack, int potionID, int tickDuration) - { - registeredPotionEffects.add(new AlchemyPotionHandlerComponent(itemStack, potionID, tickDuration)); - } - - public static int getPotionIDForStack(ItemStack itemStack) - { - for (AlchemyPotionHandlerComponent aphc : registeredPotionEffects) - { - if (aphc.compareItemStack(itemStack)) - { - return aphc.getPotionID(); - } - } - - return -1; - } - - public static int getPotionTickDurationForStack(ItemStack itemStack) - { - { - for (AlchemyPotionHandlerComponent aphc : registeredPotionEffects) - { - if (aphc.compareItemStack(itemStack)) - { - return aphc.getTickDuration(); - } - } - - return -1; - } - } - - public static boolean containsRegisteredPotionIngredient(ItemStack[] stackList) - { - for (ItemStack is : stackList) - { - for (AlchemyPotionHandlerComponent aphc : registeredPotionEffects) - { - if (aphc.compareItemStack(is)) - { - return true; - } - } - } - - return false; - } - - public static int getRegisteredPotionIngredientPosition(ItemStack[] stackList) - { - int i = 0; - - for (ItemStack is : stackList) - { - for (AlchemyPotionHandlerComponent aphc : registeredPotionEffects) - { - if (aphc.compareItemStack(is)) - { - return i; - } - } - - i++; - } - - return -1; - } -} diff --git a/src-backup/main/java/WayofTime/alchemicalWizardry/api/alchemy/AlchemyPotionHandlerComponent.java b/src-backup/main/java/WayofTime/alchemicalWizardry/api/alchemy/AlchemyPotionHandlerComponent.java deleted file mode 100644 index 6f0d461d..00000000 --- a/src-backup/main/java/WayofTime/alchemicalWizardry/api/alchemy/AlchemyPotionHandlerComponent.java +++ /dev/null @@ -1,52 +0,0 @@ -package WayofTime.alchemicalWizardry.api.alchemy; - -import net.minecraft.item.ItemBlock; -import net.minecraft.item.ItemStack; - -public class AlchemyPotionHandlerComponent -{ - private ItemStack itemStack; - private int potionID; - private int tickDuration; - - public AlchemyPotionHandlerComponent(ItemStack itemStack, int potionID, int tickDuration) - { - this.itemStack = itemStack; - this.potionID = potionID; - this.tickDuration = tickDuration; - } - - public boolean compareItemStack(ItemStack comparedStack) - { - if (comparedStack != null && itemStack != null) - { - if (comparedStack.getItem() instanceof ItemBlock) - { - if (itemStack.getItem() instanceof ItemBlock) - { - return comparedStack.getItem().equals(itemStack.getItem()) && comparedStack.getItemDamage() == itemStack.getItemDamage(); - } - } else if (!(itemStack.getItem() instanceof ItemBlock)) - { - return comparedStack.getItem().equals(itemStack.getItem()) && comparedStack.getItemDamage() == itemStack.getItemDamage(); - } - } - - return false; - } - - public ItemStack getItemStack() - { - return itemStack; - } - - public int getPotionID() - { - return this.potionID; - } - - public int getTickDuration() - { - return this.tickDuration; - } -} diff --git a/src-backup/main/java/WayofTime/alchemicalWizardry/api/alchemy/AlchemyPotionHelper.java b/src-backup/main/java/WayofTime/alchemicalWizardry/api/alchemy/AlchemyPotionHelper.java deleted file mode 100644 index d3462552..00000000 --- a/src-backup/main/java/WayofTime/alchemicalWizardry/api/alchemy/AlchemyPotionHelper.java +++ /dev/null @@ -1,76 +0,0 @@ -package WayofTime.alchemicalWizardry.api.alchemy; - -import net.minecraft.nbt.NBTTagCompound; -import net.minecraft.potion.Potion; -import net.minecraft.potion.PotionEffect; - -public class AlchemyPotionHelper -{ - private int potionID; - private int tickDuration; - private int concentration; - private int durationFactor; - - public AlchemyPotionHelper(int potionID, int tickDuration, int concentration, int durationFactor) - { - this.potionID = potionID; - this.tickDuration = tickDuration; - this.concentration = concentration; - this.durationFactor = durationFactor; - } - - public void setConcentration(int concentration) - { - this.concentration = concentration; - } - - public void setDurationFactor(int durationFactor) - { - this.durationFactor = durationFactor; - } - - public int getPotionID() - { - return this.potionID; - } - - public int getTickDuration() - { - return this.tickDuration; - } - - public int getConcentration() - { - return this.concentration; - } - - public int getdurationFactor() - { - return this.durationFactor; - } - - public PotionEffect getPotionEffect() - { - if (potionID == Potion.heal.id || potionID == Potion.harm.id) - { - return (new PotionEffect(potionID, 1, concentration)); - } - - return (new PotionEffect(potionID, (int) (tickDuration * Math.pow(0.5f, concentration) * Math.pow(8.0f / 3.0f, durationFactor)), concentration)); - } - - public static AlchemyPotionHelper readEffectFromNBT(NBTTagCompound tagCompound) - { - return new AlchemyPotionHelper(tagCompound.getInteger("potionID"), tagCompound.getInteger("tickDuration"), tagCompound.getInteger("concentration"), tagCompound.getInteger("durationFactor")); - } - - public static NBTTagCompound setEffectToNBT(AlchemyPotionHelper aph) - { - NBTTagCompound tagCompound = new NBTTagCompound(); - tagCompound.setInteger("potionID", aph.getPotionID()); - tagCompound.setInteger("tickDuration", aph.getTickDuration()); - tagCompound.setInteger("concentration", aph.getConcentration()); - tagCompound.setInteger("durationFactor", aph.getdurationFactor()); - return tagCompound; - } -} diff --git a/src-backup/main/java/WayofTime/alchemicalWizardry/api/alchemy/AlchemyRecipe.java b/src-backup/main/java/WayofTime/alchemicalWizardry/api/alchemy/AlchemyRecipe.java deleted file mode 100644 index f773d063..00000000 --- a/src-backup/main/java/WayofTime/alchemicalWizardry/api/alchemy/AlchemyRecipe.java +++ /dev/null @@ -1,143 +0,0 @@ -package WayofTime.alchemicalWizardry.api.alchemy; - -import net.minecraft.item.ItemBlock; -import net.minecraft.item.ItemStack; -import net.minecraftforge.oredict.OreDictionary; - -public class AlchemyRecipe -{ - private ItemStack output; - private ItemStack[] recipe; - private int bloodOrbLevel; - private int amountNeeded; - - public AlchemyRecipe(ItemStack output, int amountNeeded, ItemStack[] recipe, int bloodOrbLevel) - { - this.output = output; - this.recipe = recipe; - this.amountNeeded = amountNeeded; - this.bloodOrbLevel = bloodOrbLevel; - } - - public boolean doesRecipeMatch(ItemStack[] items, int slottedBloodOrbLevel) - { - if (slottedBloodOrbLevel < bloodOrbLevel) - { - return false; - } - - ItemStack[] recipe = new ItemStack[5]; - - if (items.length < 5) - { - return false; - } - - if (this.recipe.length != 5) - { - ItemStack[] newRecipe = new ItemStack[5]; - - for (int i = 0; i < 5; i++) - { - if (i + 1 > this.recipe.length) - { - newRecipe[i] = null; - } else - { - newRecipe[i] = this.recipe[i]; - } - } - - recipe = newRecipe; - } else - { - recipe = this.recipe; - } - - boolean[] checkList = new boolean[5]; - - for (int i = 0; i < 5; i++) - { - checkList[i] = false; - } - - for (int i = 0; i < 5; i++) - { - ItemStack recipeItemStack = recipe[i]; - - if (recipeItemStack == null) - { - continue; - } - - boolean test = false; - - for (int j = 0; j < 5; j++) - { - if (checkList[j]) - { - continue; - } - - ItemStack checkedItemStack = items[j]; - - if (checkedItemStack == null) - { - continue; - } - - boolean quickTest = false; - - if (recipeItemStack.getItem() instanceof ItemBlock) - { - if (checkedItemStack.getItem() instanceof ItemBlock) - { - quickTest = true; - } - } else if (!(checkedItemStack.getItem() instanceof ItemBlock)) - { - quickTest = true; - } - - if (!quickTest) - { - continue; - } - - if ((checkedItemStack.getItemDamage() == recipeItemStack.getItemDamage() || OreDictionary.WILDCARD_VALUE == recipeItemStack.getItemDamage()) && checkedItemStack.getItem()==recipeItemStack.getItem()) - { - test = true; - checkList[j] = true; - break; - } - } - - if (!test) - { - return false; - } - } - - return true; - } - - public ItemStack getResult() - { - return output.copy(); - } - - public int getAmountNeeded() - { - return this.amountNeeded; - } - - public ItemStack[] getRecipe() - { - return this.recipe; - } - - public int getOrbLevel() - { - return this.bloodOrbLevel; - } -} diff --git a/src-backup/main/java/WayofTime/alchemicalWizardry/api/alchemy/AlchemyRecipeRegistry.java b/src-backup/main/java/WayofTime/alchemicalWizardry/api/alchemy/AlchemyRecipeRegistry.java deleted file mode 100644 index 5753cff2..00000000 --- a/src-backup/main/java/WayofTime/alchemicalWizardry/api/alchemy/AlchemyRecipeRegistry.java +++ /dev/null @@ -1,85 +0,0 @@ -package WayofTime.alchemicalWizardry.api.alchemy; - -import java.util.ArrayList; -import java.util.List; - -import net.minecraft.item.ItemStack; -import WayofTime.alchemicalWizardry.api.items.interfaces.IBloodOrb; - -public class AlchemyRecipeRegistry -{ - public static List recipes = new ArrayList(); - - public static void registerRecipe(ItemStack output, int amountNeeded, ItemStack[] recipe, int bloodOrbLevel) - { - recipes.add(new AlchemyRecipe(output, amountNeeded, recipe, bloodOrbLevel)); - } - - public static ItemStack getResult(ItemStack[] recipe, ItemStack bloodOrb) - { - if (bloodOrb == null) - { - return null; - } - - if (!(bloodOrb.getItem() instanceof IBloodOrb)) - { - return null; - } - - int bloodOrbLevel = ((IBloodOrb) bloodOrb.getItem()).getOrbLevel(); - - for (AlchemyRecipe ar : recipes) - { - if (ar.doesRecipeMatch(recipe, bloodOrbLevel)) - { - return (ar.getResult()); - } - } - - return null; - } - - public static int getAmountNeeded(ItemStack[] recipe, ItemStack bloodOrb) - { - if (bloodOrb == null) - { - return 0; - } - - if (!(bloodOrb.getItem() instanceof IBloodOrb)) - { - return 0; - } - - int bloodOrbLevel = ((IBloodOrb) bloodOrb.getItem()).getOrbLevel(); - - for (AlchemyRecipe ar : recipes) - { - if (ar.doesRecipeMatch(recipe, bloodOrbLevel)) - { - return (ar.getAmountNeeded()); - } - } - - return 0; - } - - public static ItemStack[] getRecipeForItemStack(ItemStack itemStack) - { - for (AlchemyRecipe ar : recipes) - { - ItemStack result = ar.getResult(); - - if (result != null) - { - if (result.isItemEqual(itemStack)) - { - return ar.getRecipe(); - } - } - } - - return null; - } -} diff --git a/src-backup/main/java/WayofTime/alchemicalWizardry/api/alchemy/energy/IAlchemyGoggles.java b/src-backup/main/java/WayofTime/alchemicalWizardry/api/alchemy/energy/IAlchemyGoggles.java deleted file mode 100644 index 45eeaaa3..00000000 --- a/src-backup/main/java/WayofTime/alchemicalWizardry/api/alchemy/energy/IAlchemyGoggles.java +++ /dev/null @@ -1,10 +0,0 @@ -package WayofTime.alchemicalWizardry.api.alchemy.energy; - -import net.minecraft.entity.player.EntityPlayer; -import net.minecraft.item.ItemStack; -import net.minecraft.world.World; - -public interface IAlchemyGoggles -{ - public boolean showIngameHUD(World world, ItemStack stack, EntityPlayer player); -} diff --git a/src-backup/main/java/WayofTime/alchemicalWizardry/api/alchemy/energy/IReagentContainer.java b/src-backup/main/java/WayofTime/alchemicalWizardry/api/alchemy/energy/IReagentContainer.java deleted file mode 100644 index 91f93252..00000000 --- a/src-backup/main/java/WayofTime/alchemicalWizardry/api/alchemy/energy/IReagentContainer.java +++ /dev/null @@ -1,18 +0,0 @@ -package WayofTime.alchemicalWizardry.api.alchemy.energy; - -import net.minecraftforge.fluids.FluidTankInfo; - -public interface IReagentContainer -{ - public ReagentStack getReagent(); - - public int getReagentStackAmount(); - - public int getCapacity(); - - public int fill(ReagentStack resource, boolean doFill); - - public ReagentStack drain(int maxDrain, boolean doDrain); - - public ReagentContainerInfo getInfo(); -} diff --git a/src-backup/main/java/WayofTime/alchemicalWizardry/api/alchemy/energy/IReagentHandler.java b/src-backup/main/java/WayofTime/alchemicalWizardry/api/alchemy/energy/IReagentHandler.java deleted file mode 100644 index 37da7b69..00000000 --- a/src-backup/main/java/WayofTime/alchemicalWizardry/api/alchemy/energy/IReagentHandler.java +++ /dev/null @@ -1,18 +0,0 @@ -package WayofTime.alchemicalWizardry.api.alchemy.energy; - -import net.minecraftforge.common.util.ForgeDirection; - -public interface IReagentHandler -{ - int fill(ForgeDirection from, ReagentStack resource, boolean doFill); - - ReagentStack drain(ForgeDirection from, ReagentStack resource, boolean doDrain); - - ReagentStack drain(ForgeDirection from, int maxDrain, boolean doDrain); - - boolean canFill(ForgeDirection from, Reagent reagent); - - boolean canDrain(ForgeDirection from, Reagent reagent); - - ReagentContainerInfo[] getContainerInfo(ForgeDirection from); -} diff --git a/src-backup/main/java/WayofTime/alchemicalWizardry/api/alchemy/energy/ISegmentedReagentHandler.java b/src-backup/main/java/WayofTime/alchemicalWizardry/api/alchemy/energy/ISegmentedReagentHandler.java deleted file mode 100644 index a6335d9e..00000000 --- a/src-backup/main/java/WayofTime/alchemicalWizardry/api/alchemy/energy/ISegmentedReagentHandler.java +++ /dev/null @@ -1,14 +0,0 @@ -package WayofTime.alchemicalWizardry.api.alchemy.energy; - -import java.util.Map; - -public interface ISegmentedReagentHandler extends IReagentHandler -{ - public int getNumberOfTanks(); - - public int getTanksTunedToReagent(Reagent reagent); - - public void setTanksTunedToReagent(Reagent reagent, int total); - - public Map getAttunedTankMap(); -} diff --git a/src-backup/main/java/WayofTime/alchemicalWizardry/api/alchemy/energy/Reagent.java b/src-backup/main/java/WayofTime/alchemicalWizardry/api/alchemy/energy/Reagent.java deleted file mode 100644 index df4036b3..00000000 --- a/src-backup/main/java/WayofTime/alchemicalWizardry/api/alchemy/energy/Reagent.java +++ /dev/null @@ -1,54 +0,0 @@ -package WayofTime.alchemicalWizardry.api.alchemy.energy; - -import net.minecraft.item.ItemStack; - -public class Reagent -{ - public final String name; - - public static final int REAGENT_SIZE = 1000; - - private int colourRed = 0; - private int colourGreen = 0; - private int colourBlue = 0; - private int colourIntensity = 255; - - public Reagent(String name) - { - this.name = name; - } - - public void setColour(int red, int green, int blue, int intensity) - { - this.colourRed = red; - this.colourGreen = green; - this.colourBlue = blue; - this.colourIntensity = intensity; - } - - public int getColourRed() - { - return colourRed; - } - - public int getColourGreen() - { - return colourGreen; - } - - public int getColourBlue() - { - return colourBlue; - } - - public int getColourIntensity() - { - return colourIntensity; - } - - @Override - public boolean equals(Object o) - { - return o instanceof Reagent ? this == o && name.equals(((Reagent)o).name) : false; - } -} diff --git a/src-backup/main/java/WayofTime/alchemicalWizardry/api/alchemy/energy/ReagentContainer.java b/src-backup/main/java/WayofTime/alchemicalWizardry/api/alchemy/energy/ReagentContainer.java deleted file mode 100644 index ea6d8306..00000000 --- a/src-backup/main/java/WayofTime/alchemicalWizardry/api/alchemy/energy/ReagentContainer.java +++ /dev/null @@ -1,158 +0,0 @@ -package WayofTime.alchemicalWizardry.api.alchemy.energy; - -import net.minecraft.nbt.NBTTagCompound; -import net.minecraft.tileentity.TileEntity; -import net.minecraftforge.fluids.Fluid; -import net.minecraftforge.fluids.FluidStack; -import net.minecraftforge.fluids.FluidTank; - -public class ReagentContainer implements IReagentContainer -{ - protected ReagentStack reagentStack; - protected int capacity; - - public ReagentContainer(int capacity) - { - this(null, capacity); - } - - public ReagentContainer(ReagentStack stack, int capacity) - { - this.reagentStack = stack; - this.capacity = capacity; - } - - public ReagentContainer(Reagent reagent, int amount, int capacity) - { - this(new ReagentStack(reagent, amount), capacity); - } - - public static ReagentContainer readFromNBT(NBTTagCompound nbt) - { - ReagentStack reagent = ReagentStack.loadReagentStackFromNBT(nbt); - int capacity = nbt.getInteger("capacity"); - - if (reagent != null) - { - return new ReagentContainer(reagent, capacity); - }else - { - return new ReagentContainer(null, capacity); - } - } - - public NBTTagCompound writeToNBT(NBTTagCompound nbt) - { - if (reagentStack != null) - { - reagentStack.writeToNBT(nbt); - } - - nbt.setInteger("capacity", capacity); - - return nbt; - } - - @Override - public ReagentStack getReagent() - { - return reagentStack; - } - - @Override - public int getReagentStackAmount() - { - if (reagentStack == null) - { - return 0; - } - return reagentStack.amount; - } - - @Override - public int getCapacity() - { - return capacity; - } - - @Override - public int fill(ReagentStack resource, boolean doFill) - { - if (resource == null) - { - return 0; - } - - if (!doFill) - { - if (reagentStack == null) - { - return Math.min(capacity, resource.amount); - } - - if (!reagentStack.isReagentEqual(resource)) - { - return 0; - } - - return Math.min(capacity - reagentStack.amount, resource.amount); - } - - if (reagentStack == null) - { - reagentStack = new ReagentStack(resource, Math.min(capacity, resource.amount)); - - return reagentStack.amount; - } - - if (!reagentStack.isReagentEqual(resource)) - { - return 0; - } - int filled = capacity - reagentStack.amount; - - if (resource.amount < filled) - { - reagentStack.amount += resource.amount; - filled = resource.amount; - } - else - { - reagentStack.amount = capacity; - } - - return filled; - } - - @Override - public ReagentStack drain(int maxDrain, boolean doDrain) - { - if (reagentStack == null) - { - return null; - } - - int drained = maxDrain; - if (reagentStack.amount < drained) - { - drained = reagentStack.amount; - } - - ReagentStack stack = new ReagentStack(reagentStack, drained); - if (doDrain) - { - reagentStack.amount -= drained; - if (reagentStack.amount <= 0) - { - reagentStack = null; - } - } - return stack; - } - - @Override - public ReagentContainerInfo getInfo() - { - return new ReagentContainerInfo(this); - } -} diff --git a/src-backup/main/java/WayofTime/alchemicalWizardry/api/alchemy/energy/ReagentContainerInfo.java b/src-backup/main/java/WayofTime/alchemicalWizardry/api/alchemy/energy/ReagentContainerInfo.java deleted file mode 100644 index 8dea2a50..00000000 --- a/src-backup/main/java/WayofTime/alchemicalWizardry/api/alchemy/energy/ReagentContainerInfo.java +++ /dev/null @@ -1,22 +0,0 @@ -package WayofTime.alchemicalWizardry.api.alchemy.energy; - -import net.minecraftforge.fluids.FluidStack; -import net.minecraftforge.fluids.IFluidTank; - -public final class ReagentContainerInfo -{ - public final ReagentStack reagent; - public final int capacity; - - public ReagentContainerInfo(ReagentStack reagent, int capacity) - { - this.reagent = reagent; - this.capacity = capacity; - } - - public ReagentContainerInfo(IReagentContainer tank) - { - this.reagent = tank.getReagent(); - this.capacity = tank.getCapacity(); - } -} diff --git a/src-backup/main/java/WayofTime/alchemicalWizardry/api/alchemy/energy/ReagentRegistry.java b/src-backup/main/java/WayofTime/alchemicalWizardry/api/alchemy/energy/ReagentRegistry.java deleted file mode 100644 index 2120d9ef..00000000 --- a/src-backup/main/java/WayofTime/alchemicalWizardry/api/alchemy/energy/ReagentRegistry.java +++ /dev/null @@ -1,191 +0,0 @@ -package WayofTime.alchemicalWizardry.api.alchemy.energy; - -import java.util.HashMap; -import java.util.Map; -import java.util.Map.Entry; -import java.util.Set; - -import net.minecraft.item.ItemStack; -import WayofTime.alchemicalWizardry.ModItems; - -public class ReagentRegistry -{ - public static Map reagentList = new HashMap(); - public static Map itemToReagentMap = new HashMap(); - - public static Reagent sanctusReagent; - public static Reagent incendiumReagent; - public static Reagent aquasalusReagent; - public static Reagent magicalesReagent; - public static Reagent aetherReagent; - public static Reagent crepitousReagent; - public static Reagent crystallosReagent; - public static Reagent terraeReagent; - public static Reagent tenebraeReagent; - - public static Reagent offensaReagent; - public static Reagent praesidiumReagent; - public static Reagent orbisTerraeReagent; - public static Reagent virtusReagent; - public static Reagent reductusReagent; - public static Reagent potentiaReagent; - - public static void initReagents() - { - sanctusReagent = new Reagent("sanctus"); - incendiumReagent = new Reagent("incendium"); - aquasalusReagent = new Reagent("aquasalus"); - magicalesReagent = new Reagent("magicales"); - aetherReagent = new Reagent("aether"); - crepitousReagent = new Reagent("crepitous"); - crystallosReagent = new Reagent("crystallos"); - terraeReagent = new Reagent("terrae"); - tenebraeReagent = new Reagent("tenebrae"); - offensaReagent = new Reagent("offensa"); - praesidiumReagent = new Reagent("praesidium"); - orbisTerraeReagent = new Reagent("orbisTerrae"); - virtusReagent = new Reagent("virtus"); - reductusReagent = new Reagent("reductus"); - potentiaReagent = new Reagent("potentia"); - - sanctusReagent.setColour(255, 255, 0, 255); - incendiumReagent.setColour(255, 0, 0, 255); - aquasalusReagent.setColour(47, 0, 196, 255); - magicalesReagent.setColour(150, 0, 146, 255); - aetherReagent.setColour(105, 223, 86, 255); - crepitousReagent.setColour(145, 145, 145, 255); - crystallosReagent.setColour(135, 255, 231, 255); - terraeReagent.setColour(147, 48, 13, 255); - tenebraeReagent.setColour(86, 86, 86, 255); - offensaReagent.setColour(126, 0, 0, 255); - praesidiumReagent.setColour(135, 135, 135, 255); - orbisTerraeReagent.setColour(32, 94, 14, 255); - virtusReagent.setColour(180, 0, 0, 255); - reductusReagent.setColour(20, 93, 2, 255); - potentiaReagent.setColour(64, 81, 208, 255); - - registerReagent("sanctus", sanctusReagent); - registerReagent("incendium", incendiumReagent); - registerReagent("aquasalus", aquasalusReagent); - registerReagent("magicales", magicalesReagent); - registerReagent("aether", aetherReagent); - registerReagent("crepitous", crepitousReagent); - registerReagent("crystallos", crystallosReagent); - registerReagent("terrae", terraeReagent); - registerReagent("tenebrae", tenebraeReagent); - registerReagent("offensa", offensaReagent); - registerReagent("praesidium", praesidiumReagent); - registerReagent("orbisTerrae", orbisTerraeReagent); - registerReagent("virtus", virtusReagent); - registerReagent("reductus", reductusReagent); - registerReagent("potentia", potentiaReagent); - - ReagentRegistry.registerItemAndReagent(new ItemStack(ModItems.sanctus), new ReagentStack(sanctusReagent, 1000)); - ReagentRegistry.registerItemAndReagent(new ItemStack(ModItems.incendium), new ReagentStack(incendiumReagent, 1000)); - ReagentRegistry.registerItemAndReagent(new ItemStack(ModItems.aquasalus), new ReagentStack(aquasalusReagent, 1000)); - ReagentRegistry.registerItemAndReagent(new ItemStack(ModItems.magicales), new ReagentStack(magicalesReagent, 1000)); - ReagentRegistry.registerItemAndReagent(new ItemStack(ModItems.aether), new ReagentStack(aetherReagent, 1000)); - ReagentRegistry.registerItemAndReagent(new ItemStack(ModItems.crepitous), new ReagentStack(crepitousReagent, 1000)); - ReagentRegistry.registerItemAndReagent(new ItemStack(ModItems.crystallos), new ReagentStack(crystallosReagent, 1000)); - ReagentRegistry.registerItemAndReagent(new ItemStack(ModItems.terrae), new ReagentStack(terraeReagent, 1000)); - ReagentRegistry.registerItemAndReagent(new ItemStack(ModItems.tennebrae), new ReagentStack(tenebraeReagent, 1000)); - ReagentRegistry.registerItemAndReagent(new ItemStack(ModItems.baseAlchemyItems,1,0), new ReagentStack(offensaReagent, 1000)); - ReagentRegistry.registerItemAndReagent(new ItemStack(ModItems.baseAlchemyItems,1,1), new ReagentStack(praesidiumReagent, 1000)); - ReagentRegistry.registerItemAndReagent(new ItemStack(ModItems.baseAlchemyItems,1,2), new ReagentStack(orbisTerraeReagent, 1000)); - ReagentRegistry.registerItemAndReagent(new ItemStack(ModItems.baseAlchemyItems,1,6), new ReagentStack(virtusReagent, 1000)); - ReagentRegistry.registerItemAndReagent(new ItemStack(ModItems.baseAlchemyItems,1,7), new ReagentStack(reductusReagent, 1000)); - ReagentRegistry.registerItemAndReagent(new ItemStack(ModItems.baseAlchemyItems,1,8), new ReagentStack(potentiaReagent, 1000)); - } - - public static boolean registerReagent(String key, Reagent reagent) - { - if(reagentList.containsKey(key) || reagent == null) - { - return false; - } - - reagentList.put(key, reagent); - - return true; - } - - public static Reagent getReagentForKey(String key) - { - if(reagentList.containsKey(key)) - { - return reagentList.get(key); - } - - return null; - } - - public static String getKeyForReagent(Reagent reagent) - { - if(reagentList.containsValue(reagent)) - { - Set> set = reagentList.entrySet(); - for(Entry entry : set) - { - if(entry.getValue().equals(reagent)) - { - return entry.getKey(); - } - } - } - - return ""; - } - - public static void registerItemAndReagent(ItemStack stack, ReagentStack reagentStack) - { - itemToReagentMap.put(stack, reagentStack); - } - - public static ReagentStack getReagentStackForItem(ItemStack stack) - { - if(stack == null) - { - return null; - } - - for(Entry entry : itemToReagentMap.entrySet()) - { - if(entry.getKey() != null && entry.getKey().isItemEqual(stack)) - { - if(entry.getValue() == null) - { - return null; - }else - { - return entry.getValue().copy(); - } - } - } - - return null; - } - - public static ItemStack getItemForReagent(Reagent reagent) - { - if(reagent == null) - { - return null; - } - - for(Entry entry : itemToReagentMap.entrySet()) - { - if(entry.getValue() != null && entry.getValue().reagent == reagent) - { - if(entry.getKey() == null) - { - return null; - }else - { - return entry.getKey().copy(); - } - } - } - - return null; - } -} diff --git a/src-backup/main/java/WayofTime/alchemicalWizardry/api/alchemy/energy/ReagentStack.java b/src-backup/main/java/WayofTime/alchemicalWizardry/api/alchemy/energy/ReagentStack.java deleted file mode 100644 index f39b35ab..00000000 --- a/src-backup/main/java/WayofTime/alchemicalWizardry/api/alchemy/energy/ReagentStack.java +++ /dev/null @@ -1,64 +0,0 @@ -package WayofTime.alchemicalWizardry.api.alchemy.energy; - -import net.minecraft.nbt.NBTTagCompound; -import net.minecraftforge.fluids.FluidStack; - -public class ReagentStack -{ - public Reagent reagent; - public int amount; - - public ReagentStack(Reagent reagent, int amount) - { - this.reagent = reagent; - this.amount = amount; - } - - public ReagentStack(ReagentStack reagentStack, int amount) - { - this(reagentStack.reagent,amount); - } - - public static ReagentStack loadReagentStackFromNBT(NBTTagCompound tag) - { - Reagent reagent = ReagentRegistry.getReagentForKey(tag.getString("Reagent")); - - if(reagent == null) - { - return null; - } - - int amount = tag.getInteger("amount"); - ReagentStack stack = new ReagentStack(reagent, amount); - - return stack; - } - - public NBTTagCompound writeToNBT(NBTTagCompound tag) - { - tag.setString("Reagent", ReagentRegistry.getKeyForReagent(this.reagent)); - tag.setInteger("amount", this.amount); - - return tag; - } - - public ReagentStack splitStack(int amount) - { - ReagentStack copyStack = this.copy(); - int splitAmount = Math.min(amount, this.amount); - copyStack.amount = splitAmount; - this.amount -= splitAmount; - - return copyStack; - } - - public ReagentStack copy() - { - return new ReagentStack(this.reagent, this.amount); - } - - public boolean isReagentEqual(ReagentStack other) - { - return other != null && this.reagent == other.reagent; - } -} diff --git a/src-backup/main/java/WayofTime/alchemicalWizardry/api/alchemy/energy/TileReagentHandler.java b/src-backup/main/java/WayofTime/alchemicalWizardry/api/alchemy/energy/TileReagentHandler.java deleted file mode 100644 index 270efaa3..00000000 --- a/src-backup/main/java/WayofTime/alchemicalWizardry/api/alchemy/energy/TileReagentHandler.java +++ /dev/null @@ -1,68 +0,0 @@ - -package WayofTime.alchemicalWizardry.api.alchemy.energy; - -import net.minecraft.nbt.NBTTagCompound; -import net.minecraft.tileentity.TileEntity; -import net.minecraftforge.common.util.ForgeDirection; -import net.minecraftforge.fluids.FluidContainerRegistry; -import net.minecraftforge.fluids.IFluidHandler; - -public class TileReagentHandler extends TileEntity implements IReagentHandler -{ - protected ReagentContainer tank = new ReagentContainer(4000); - - @Override - public void readFromNBT(NBTTagCompound tag) - { - super.readFromNBT(tag); - tank.readFromNBT(tag); - } - - @Override - public void writeToNBT(NBTTagCompound tag) - { - super.writeToNBT(tag); - tank.writeToNBT(tag); - } - - /* IReagentHandler */ - @Override - public int fill(ForgeDirection from, ReagentStack resource, boolean doFill) - { - return tank.fill(resource, doFill); - } - - @Override - public ReagentStack drain(ForgeDirection from, ReagentStack resource, boolean doDrain) - { - if (resource == null || !resource.isReagentEqual(tank.getReagent())) - { - return null; - } - return tank.drain(resource.amount, doDrain); - } - - @Override - public ReagentStack drain(ForgeDirection from, int maxDrain, boolean doDrain) - { - return tank.drain(maxDrain, doDrain); - } - - @Override - public boolean canFill(ForgeDirection from, Reagent reagent) - { - return true; - } - - @Override - public boolean canDrain(ForgeDirection from, Reagent reagent) - { - return true; - } - - @Override - public ReagentContainerInfo[] getContainerInfo(ForgeDirection from) - { - return new ReagentContainerInfo[] {tank.getInfo()}; - } -} \ No newline at end of file diff --git a/src-backup/main/java/WayofTime/alchemicalWizardry/api/alchemy/energy/TileSegmentedReagentHandler.java b/src-backup/main/java/WayofTime/alchemicalWizardry/api/alchemy/energy/TileSegmentedReagentHandler.java deleted file mode 100644 index 6cf25c04..00000000 --- a/src-backup/main/java/WayofTime/alchemicalWizardry/api/alchemy/energy/TileSegmentedReagentHandler.java +++ /dev/null @@ -1,283 +0,0 @@ - -package WayofTime.alchemicalWizardry.api.alchemy.energy; - -import java.util.HashMap; -import java.util.Map; -import java.util.Map.Entry; - -import net.minecraft.nbt.NBTTagCompound; -import net.minecraft.nbt.NBTTagList; -import net.minecraft.tileentity.TileEntity; -import net.minecraftforge.common.util.Constants; -import net.minecraftforge.common.util.ForgeDirection; - -public class TileSegmentedReagentHandler extends TileEntity implements ISegmentedReagentHandler -{ - protected ReagentContainer[] tanks; - protected Map attunedTankMap; - - public TileSegmentedReagentHandler() - { - this(1); - } - - public TileSegmentedReagentHandler(int numberOfTanks) - { - this(numberOfTanks, 1000); - } - - public TileSegmentedReagentHandler(int numberOfTanks, int tankSize) - { - super(); - - this.attunedTankMap = new HashMap(); - this.tanks = new ReagentContainer[numberOfTanks]; - for(int i=0; i entry : this.attunedTankMap.entrySet()) - { - NBTTagCompound savedTag = new NBTTagCompound(); - savedTag.setString("reagent", ReagentRegistry.getKeyForReagent(entry.getKey())); - savedTag.setInteger("amount", entry.getValue()); - attunedTagList.appendTag(savedTag); - } - - tag.setTag("attunedTankMap", attunedTagList); - } - - /* ISegmentedReagentHandler */ - @Override - public int fill(ForgeDirection from, ReagentStack resource, boolean doFill) - { - int totalFill = 0; - - boolean useTankLimit = !this.attunedTankMap.isEmpty(); - - if(resource != null) - { - int totalTanksFillable = useTankLimit ? this.getTanksTunedToReagent(resource.reagent) : this.tanks.length; - int tanksFilled = 0; - - int maxFill = resource.amount; - - for(int i=this.tanks.length-1; i>=0; i--) - { - ReagentStack remainingStack = resource.copy(); - remainingStack.amount = maxFill - totalFill; - - boolean doesReagentMatch = tanks[i].getReagent() == null ? false : tanks[i].getReagent().isReagentEqual(remainingStack); - - if(doesReagentMatch) - { - totalFill += tanks[i].fill(remainingStack, doFill); - tanksFilled++; - }else - { - continue; - } - - if(totalFill >= maxFill || tanksFilled >= totalTanksFillable) - { - return totalFill; - } - } - - if(tanksFilled >= totalTanksFillable) - { - return totalFill; - } - - for(int i=this.tanks.length-1; i>=0; i--) - { - ReagentStack remainingStack = resource.copy(); - remainingStack.amount = maxFill - totalFill; - - boolean isTankEmpty = tanks[i].getReagent() == null; - - if(isTankEmpty) - { - totalFill += tanks[i].fill(remainingStack, doFill); - tanksFilled++; - }else - { - continue; - } - - if(totalFill >= maxFill || tanksFilled >= totalTanksFillable) - { - return totalFill; - } - } - } - return totalFill; - } - - @Override - public ReagentStack drain(ForgeDirection from, ReagentStack resource, boolean doDrain) - { - if(resource == null) - { - return null; - } - - int maxDrain = resource.amount; - Reagent reagent = resource.reagent; - int drained = 0; - - for(int i=0; i= maxDrain) - { - break; - } - - if(resource.isReagentEqual(tanks[i].getReagent())) - { - ReagentStack drainStack = tanks[i].drain(maxDrain-drained, doDrain); - if(drainStack != null) - { - drained += drainStack.amount; - } - } - } - - return new ReagentStack(reagent, drained); - } - - /* Only returns the amount from the first available tank */ - @Override - public ReagentStack drain(ForgeDirection from, int maxDrain, boolean doDrain) - { - for(int i=0; i getAttunedTankMap() - { - return this.attunedTankMap; - } - - public boolean areTanksEmpty() - { - for(int i=0; i=minTier && this.requiredItem.isItemEqual(comparedStack); - } - - public int getMinTier() - { - return this.minTier; - } - - public int getLiquidRequired() - { - return this.liquidRequired; - } - - public int getConsumptionRate() - { - return this.consumptionRate; - } - - public int getDrainRate() - { - return this.drainRate; - } - - public boolean getCanBeFilled() - { - return this.canBeFilled; - } -} diff --git a/src-backup/main/java/WayofTime/alchemicalWizardry/api/altarRecipeRegistry/AltarRecipeRegistry.java b/src-backup/main/java/WayofTime/alchemicalWizardry/api/altarRecipeRegistry/AltarRecipeRegistry.java deleted file mode 100644 index 89c0be46..00000000 --- a/src-backup/main/java/WayofTime/alchemicalWizardry/api/altarRecipeRegistry/AltarRecipeRegistry.java +++ /dev/null @@ -1,60 +0,0 @@ -package WayofTime.alchemicalWizardry.api.altarRecipeRegistry; - -import java.util.LinkedList; -import java.util.List; - -import net.minecraft.item.ItemStack; - -public class AltarRecipeRegistry -{ - public static List altarRecipes = new LinkedList(); - - public static void registerAltarRecipe(ItemStack result, ItemStack requiredItem, int minTier, int liquidRequired, int consumptionRate, int drainRate, boolean canBeFilled) - { - altarRecipes.add(new AltarRecipe(result, requiredItem, minTier, liquidRequired, consumptionRate, drainRate, canBeFilled)); - } - - public static void registerAltarOrbRecipe(ItemStack orbStack, int minTier, int consumptionRate) - { - registerAltarRecipe(null, orbStack, minTier, 0, consumptionRate, 0, true); - } - - public static boolean isRequiredItemValid(ItemStack testItem, int currentTierAltar) - { - for(AltarRecipe recipe : altarRecipes) - { - if(recipe.doesRequiredItemMatch(testItem, currentTierAltar)) - { - return true; - } - } - - return false; - } - - public static ItemStack getItemForItemAndTier(ItemStack testItem, int currentTierAltar) - { - for(AltarRecipe recipe : altarRecipes) - { - if(recipe.doesRequiredItemMatch(testItem, currentTierAltar)) - { - return ItemStack.copyItemStack(recipe.getResult()); - } - } - - return null; - } - - public static AltarRecipe getAltarRecipeForItemAndTier(ItemStack testItem, int currentTierAltar) - { - for(AltarRecipe recipe : altarRecipes) - { - if(recipe.doesRequiredItemMatch(testItem, currentTierAltar)) - { - return recipe; - } - } - - return null; - } -} diff --git a/src-backup/main/java/WayofTime/alchemicalWizardry/api/bindingRegistry/BindingRecipe.java b/src-backup/main/java/WayofTime/alchemicalWizardry/api/bindingRegistry/BindingRecipe.java deleted file mode 100644 index 111f585f..00000000 --- a/src-backup/main/java/WayofTime/alchemicalWizardry/api/bindingRegistry/BindingRecipe.java +++ /dev/null @@ -1,35 +0,0 @@ -package WayofTime.alchemicalWizardry.api.bindingRegistry; - -import net.minecraft.item.ItemStack; - -public class BindingRecipe -{ - public ItemStack requiredItem; - public ItemStack outputItem; - - public BindingRecipe(ItemStack outputItem, ItemStack requiredItem) - { - this.requiredItem = requiredItem; - this.outputItem = outputItem; - } - - public boolean doesRequiredItemMatch(ItemStack testStack) - { - if(testStack == null || this.requiredItem == null) - { - return false; - } - - return this.requiredItem.isItemEqual(testStack); - } - - public ItemStack getResult(ItemStack inputItem) - { - return this.getResult(); - } - - public ItemStack getResult() - { - return this.outputItem; - } -} diff --git a/src-backup/main/java/WayofTime/alchemicalWizardry/api/bindingRegistry/BindingRegistry.java b/src-backup/main/java/WayofTime/alchemicalWizardry/api/bindingRegistry/BindingRegistry.java deleted file mode 100644 index 636fb3f6..00000000 --- a/src-backup/main/java/WayofTime/alchemicalWizardry/api/bindingRegistry/BindingRegistry.java +++ /dev/null @@ -1,67 +0,0 @@ -package WayofTime.alchemicalWizardry.api.bindingRegistry; - -import java.util.LinkedList; -import java.util.List; - -import net.minecraft.item.ItemStack; - -public class BindingRegistry -{ - public static List bindingRecipes = new LinkedList(); - - public static void registerRecipe(ItemStack output, ItemStack input) - { - bindingRecipes.add(new BindingRecipe(output, input)); - } - - public static boolean isRequiredItemValid(ItemStack testItem) - { - for(BindingRecipe recipe : bindingRecipes) - { - if(recipe.doesRequiredItemMatch(testItem)) - { - return true; - } - } - - return false; - } - - public static ItemStack getItemForItemAndTier(ItemStack testItem) - { - for(BindingRecipe recipe : bindingRecipes) - { - if(recipe.doesRequiredItemMatch(testItem)) - { - return recipe.getResult(testItem).copy(); - } - } - - return null; - } - - public static int getIndexForItem(ItemStack testItem) - { - int i=0; - for(BindingRecipe recipe : bindingRecipes) - { - if(recipe.doesRequiredItemMatch(testItem)) - { - return i; - } - i++; - } - - return -1; - } - - public static ItemStack getOutputForIndex(int index) - { - if(bindingRecipes.size()<=index) - { - return null; - } - - return bindingRecipes.get(index).getResult(); - } -} diff --git a/src-backup/main/java/WayofTime/alchemicalWizardry/api/harvest/HarvestRegistry.java b/src-backup/main/java/WayofTime/alchemicalWizardry/api/harvest/HarvestRegistry.java deleted file mode 100644 index 244e227c..00000000 --- a/src-backup/main/java/WayofTime/alchemicalWizardry/api/harvest/HarvestRegistry.java +++ /dev/null @@ -1,33 +0,0 @@ -package WayofTime.alchemicalWizardry.api.harvest; - -import java.util.ArrayList; -import java.util.List; - -import net.minecraft.block.Block; -import net.minecraft.world.World; - -public class HarvestRegistry -{ - public static List handlerList = new ArrayList(); - - public static void registerHarvestHandler(IHarvestHandler handler) - { - handlerList.add(handler); - } - - public static boolean harvestBlock(World world, int xCoord, int yCoord, int zCoord) - { - Block block = world.getBlock(xCoord, yCoord, zCoord); - int meta = world.getBlockMetadata(xCoord, yCoord, zCoord); - - for(IHarvestHandler handler : handlerList) - { - if(handler.harvestAndPlant(world, xCoord, yCoord, zCoord, block, meta)) - { - return true; - } - } - - return false; - } -} diff --git a/src-backup/main/java/WayofTime/alchemicalWizardry/api/harvest/IHarvestHandler.java b/src-backup/main/java/WayofTime/alchemicalWizardry/api/harvest/IHarvestHandler.java deleted file mode 100644 index 888dff58..00000000 --- a/src-backup/main/java/WayofTime/alchemicalWizardry/api/harvest/IHarvestHandler.java +++ /dev/null @@ -1,21 +0,0 @@ -package WayofTime.alchemicalWizardry.api.harvest; - -import net.minecraft.block.Block; -import net.minecraft.world.World; -import net.minecraftforge.common.IPlantable; - -public interface IHarvestHandler -{ - /** - * A handler that is used to harvest and replant the block at the specified location - * - * @param world - * @param xCoord - * @param yCoord - * @param zCoord - * @param block block at this given location - * @param meta meta at this given location - * @return true if successfully harvested, false if not - */ - public boolean harvestAndPlant(World world, int xCoord, int yCoord, int zCoord, Block block, int meta); -} diff --git a/src-backup/main/java/WayofTime/alchemicalWizardry/api/items/ShapedBloodOrbRecipe.java b/src-backup/main/java/WayofTime/alchemicalWizardry/api/items/ShapedBloodOrbRecipe.java deleted file mode 100644 index cdf82e6e..00000000 --- a/src-backup/main/java/WayofTime/alchemicalWizardry/api/items/ShapedBloodOrbRecipe.java +++ /dev/null @@ -1,227 +0,0 @@ -package WayofTime.alchemicalWizardry.api.items; - -import java.util.ArrayList; -import java.util.HashMap; -import java.util.Iterator; -import java.util.Map; -import java.util.Map.Entry; - -import net.minecraft.block.Block; -import net.minecraft.inventory.InventoryCrafting; -import net.minecraft.item.Item; -import net.minecraft.item.ItemStack; -import net.minecraft.item.crafting.IRecipe; -import net.minecraft.item.crafting.ShapedRecipes; -import net.minecraft.world.World; -import net.minecraftforge.oredict.OreDictionary; -import WayofTime.alchemicalWizardry.api.items.interfaces.IBloodOrb; - -/** Shaped Blood Orb Recipe Handler by joshie **/ -public class ShapedBloodOrbRecipe implements IRecipe { - private static final int MAX_CRAFT_GRID_WIDTH = 3; - private static final int MAX_CRAFT_GRID_HEIGHT = 3; - - private ItemStack output = null; - private Object[] input = null; - public int width = 0; - public int height = 0; - private boolean mirrored = true; - - public ShapedBloodOrbRecipe(Block result, Object... recipe) { - this(new ItemStack(result), recipe); - } - - public ShapedBloodOrbRecipe(Item result, Object... recipe) { - this(new ItemStack(result), recipe); - } - - public ShapedBloodOrbRecipe(ItemStack result, Object... recipe) { - output = result.copy(); - - 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 IBloodOrb || (in instanceof ItemStack && ((ItemStack)in).getItem() instanceof IBloodOrb)) { //If the item is an instanceof IBloodOrb then save the level of the orb - if(in instanceof ItemStack) itemMap.put(chr, (Integer)(((IBloodOrb)((ItemStack)in).getItem()).getOrbLevel())); - else itemMap.put(chr, (Integer)(((IBloodOrb)in).getOrbLevel())); - } else 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); - } - } - - ShapedBloodOrbRecipe(ShapedRecipes recipe, Map replacements) { - output = recipe.getRecipeOutput(); - width = recipe.recipeWidth; - height = recipe.recipeHeight; - - input = new Object[recipe.recipeItems.length]; - - for (int i = 0; i < input.length; i++) { - ItemStack ingred = recipe.recipeItems[i]; - - if (ingred == null) - continue; - - input[i] = recipe.recipeItems[i]; - - for (Entry replace : replacements.entrySet()) { - if (OreDictionary.itemMatches(replace.getKey(), ingred, true)) { - input[i] = OreDictionary.getOres(replace.getValue()); - break; - } - } - } - } - - @Override - public ItemStack getCraftingResult(InventoryCrafting var1) { - return output.copy(); - } - - @Override - public int getRecipeSize() { - return input.length; - } - - @Override - public ItemStack getRecipeOutput() { - return output; - } - - @Override - public boolean matches(InventoryCrafting inv, World world) { - 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; - } - - @SuppressWarnings("unchecked") - private boolean checkMatch(InventoryCrafting 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 = inv.getStackInRowAndColumn(x, y); - //If target is integer, then we should be check the blood orb value of the item instead - if(target instanceof Integer) { - if(slot != null && slot.getItem() instanceof IBloodOrb) { - IBloodOrb orb = (IBloodOrb) slot.getItem(); - if(orb.getOrbLevel() < (Integer)target) { - return false; - } - } else return false; - } else if (target instanceof ItemStack) { - if (!OreDictionary.itemMatches((ItemStack) target, slot, false)) { - return false; - } - } else if (target instanceof ArrayList) { - boolean matched = false; - - Iterator itr = ((ArrayList) target).iterator(); - while (itr.hasNext() && !matched) { - matched = OreDictionary.itemMatches(itr.next(), slot, false); - } - - if (!matched) { - return false; - } - } else if (target == null && slot != null) { - return false; - } - } - } - - return true; - } - - public ShapedBloodOrbRecipe setMirrored(boolean mirror) { - mirrored = mirror; - return this; - } - - public Object[] getInput() { - return this.input; - } -} \ No newline at end of file diff --git a/src-backup/main/java/WayofTime/alchemicalWizardry/api/items/ShapelessBloodOrbRecipe.java b/src-backup/main/java/WayofTime/alchemicalWizardry/api/items/ShapelessBloodOrbRecipe.java deleted file mode 100644 index fbf28a45..00000000 --- a/src-backup/main/java/WayofTime/alchemicalWizardry/api/items/ShapelessBloodOrbRecipe.java +++ /dev/null @@ -1,140 +0,0 @@ -package WayofTime.alchemicalWizardry.api.items; - -import java.util.ArrayList; -import java.util.Iterator; -import java.util.List; -import java.util.Map; -import java.util.Map.Entry; - -import net.minecraft.block.Block; -import net.minecraft.inventory.InventoryCrafting; -import net.minecraft.item.Item; -import net.minecraft.item.ItemStack; -import net.minecraft.item.crafting.IRecipe; -import net.minecraft.item.crafting.ShapelessRecipes; -import net.minecraft.world.World; -import net.minecraftforge.oredict.OreDictionary; -import WayofTime.alchemicalWizardry.api.items.interfaces.IBloodOrb; - -/** Shapeless Blood Orb Recipe Handler by joshie **/ -public class ShapelessBloodOrbRecipe implements IRecipe { - private ItemStack output = null; - private ArrayList input = new ArrayList(); - - public ShapelessBloodOrbRecipe(Block result, Object... recipe) { - this(new ItemStack(result), recipe); - } - - public ShapelessBloodOrbRecipe(Item result, Object... recipe) { - this(new ItemStack(result), recipe); - } - - public ShapelessBloodOrbRecipe(ItemStack result, Object... recipe) { - output = result.copy(); - for (Object in : recipe) { - if (in instanceof ItemStack) { - input.add(((ItemStack) in).copy()); - } else if (in instanceof IBloodOrb) { //If the item is an instanceof IBloodOrb then save the level of the orb - input.add((Integer)(((IBloodOrb)in).getOrbLevel())); - } 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); - } - } - } - - @SuppressWarnings("unchecked") - ShapelessBloodOrbRecipe(ShapelessRecipes recipe, Map replacements) { - output = recipe.getRecipeOutput(); - - for (ItemStack ingred : ((List) recipe.recipeItems)) { - Object finalObj = ingred; - for (Entry replace : replacements.entrySet()) { - if (OreDictionary.itemMatches(replace.getKey(), ingred, false)) { - finalObj = OreDictionary.getOres(replace.getValue()); - break; - } - } - input.add(finalObj); - } - } - - @Override - public int getRecipeSize() { - return input.size(); - } - - @Override - public ItemStack getRecipeOutput() { - return output; - } - - @Override - public ItemStack getCraftingResult(InventoryCrafting var1) { - return output.copy(); - } - - @SuppressWarnings("unchecked") - @Override - public boolean matches(InventoryCrafting var1, World world) { - ArrayList required = new ArrayList(input); - - for (int x = 0; x < var1.getSizeInventory(); 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 target is integer, then we should be check the blood orb value of the item instead - if(next instanceof Integer) { - if(slot != null && slot.getItem() instanceof IBloodOrb) { - IBloodOrb orb = (IBloodOrb) slot.getItem(); - if(orb.getOrbLevel() < (Integer)next) { - return false; - } - } else return false; - } else if (next instanceof ItemStack) { - match = OreDictionary.itemMatches((ItemStack) next, slot, false); - } else if (next instanceof ArrayList) { - Iterator itr = ((ArrayList) next).iterator(); - while (itr.hasNext() && !match) { - match = OreDictionary.itemMatches(itr.next(), slot, false); - } - } - - if (match) { - inRecipe = true; - required.remove(next); - break; - } - } - - if (!inRecipe) { - return false; - } - } - } - - return required.isEmpty(); - } - - public ArrayList getInput() { - return this.input; - } -} \ No newline at end of file diff --git a/src-backup/main/java/WayofTime/alchemicalWizardry/api/items/interfaces/ArmourUpgrade.java b/src-backup/main/java/WayofTime/alchemicalWizardry/api/items/interfaces/ArmourUpgrade.java deleted file mode 100644 index 7fce7cd0..00000000 --- a/src-backup/main/java/WayofTime/alchemicalWizardry/api/items/interfaces/ArmourUpgrade.java +++ /dev/null @@ -1,15 +0,0 @@ -package WayofTime.alchemicalWizardry.api.items.interfaces; - -import net.minecraft.entity.player.EntityPlayer; -import net.minecraft.item.ItemStack; -import net.minecraft.world.World; - -public interface ArmourUpgrade -{ - //Called when the armour ticks - public void onArmourUpdate(World world, EntityPlayer player, ItemStack thisItemStack); - - public boolean isUpgrade(); - - public int getEnergyForTenSeconds(); -} diff --git a/src-backup/main/java/WayofTime/alchemicalWizardry/api/items/interfaces/IBindable.java b/src-backup/main/java/WayofTime/alchemicalWizardry/api/items/interfaces/IBindable.java deleted file mode 100644 index 46a79939..00000000 --- a/src-backup/main/java/WayofTime/alchemicalWizardry/api/items/interfaces/IBindable.java +++ /dev/null @@ -1,5 +0,0 @@ -package WayofTime.alchemicalWizardry.api.items.interfaces; - -public interface IBindable -{ -} diff --git a/src-backup/main/java/WayofTime/alchemicalWizardry/api/items/interfaces/IBloodOrb.java b/src-backup/main/java/WayofTime/alchemicalWizardry/api/items/interfaces/IBloodOrb.java deleted file mode 100644 index 794172cc..00000000 --- a/src-backup/main/java/WayofTime/alchemicalWizardry/api/items/interfaces/IBloodOrb.java +++ /dev/null @@ -1,8 +0,0 @@ -package WayofTime.alchemicalWizardry.api.items.interfaces; - -public interface IBloodOrb -{ - public int getMaxEssence(); - - public int getOrbLevel(); -} diff --git a/src-backup/main/java/WayofTime/alchemicalWizardry/api/items/interfaces/IHolding.java b/src-backup/main/java/WayofTime/alchemicalWizardry/api/items/interfaces/IHolding.java deleted file mode 100644 index cb07b998..00000000 --- a/src-backup/main/java/WayofTime/alchemicalWizardry/api/items/interfaces/IHolding.java +++ /dev/null @@ -1,6 +0,0 @@ -package WayofTime.alchemicalWizardry.api.items.interfaces; - -public interface IHolding -{ - -} diff --git a/src-backup/main/java/WayofTime/alchemicalWizardry/api/items/interfaces/IReagentManipulator.java b/src-backup/main/java/WayofTime/alchemicalWizardry/api/items/interfaces/IReagentManipulator.java deleted file mode 100644 index df2c84bb..00000000 --- a/src-backup/main/java/WayofTime/alchemicalWizardry/api/items/interfaces/IReagentManipulator.java +++ /dev/null @@ -1,9 +0,0 @@ -package WayofTime.alchemicalWizardry.api.items.interfaces; - -/** - * Implement this interface to have reagent blocks return false on activating them, to allow manipulation of said block - */ -public interface IReagentManipulator -{ - -} diff --git a/src-backup/main/java/WayofTime/alchemicalWizardry/api/rituals/IMasterRitualStone.java b/src-backup/main/java/WayofTime/alchemicalWizardry/api/rituals/IMasterRitualStone.java deleted file mode 100644 index be31cbf8..00000000 --- a/src-backup/main/java/WayofTime/alchemicalWizardry/api/rituals/IMasterRitualStone.java +++ /dev/null @@ -1,36 +0,0 @@ -package WayofTime.alchemicalWizardry.api.rituals; - -import net.minecraft.nbt.NBTTagCompound; -import net.minecraft.world.World; -import WayofTime.alchemicalWizardry.api.alchemy.energy.ISegmentedReagentHandler; - -public interface IMasterRitualStone extends ISegmentedReagentHandler -{ - public void performRitual(World world, int x, int y, int z, String ritualID); - - public String getOwner(); - - public void setCooldown(int newCooldown); - - public int getCooldown(); - - public void setVar1(int newVar1); - - public int getVar1(); - - public void setActive(boolean active); - - public int getDirection(); - - public World getWorld(); - - public int getXCoord(); - - public int getYCoord(); - - public int getZCoord(); - - public NBTTagCompound getCustomRitualTag(); - - public void setCustomRitualTag(NBTTagCompound tag); -} diff --git a/src-backup/main/java/WayofTime/alchemicalWizardry/api/rituals/IRitualStone.java b/src-backup/main/java/WayofTime/alchemicalWizardry/api/rituals/IRitualStone.java deleted file mode 100644 index 078cfd40..00000000 --- a/src-backup/main/java/WayofTime/alchemicalWizardry/api/rituals/IRitualStone.java +++ /dev/null @@ -1,6 +0,0 @@ -package WayofTime.alchemicalWizardry.api.rituals; - -public interface IRitualStone -{ - -} diff --git a/src-backup/main/java/WayofTime/alchemicalWizardry/api/rituals/RitualComponent.java b/src-backup/main/java/WayofTime/alchemicalWizardry/api/rituals/RitualComponent.java deleted file mode 100644 index b7149858..00000000 --- a/src-backup/main/java/WayofTime/alchemicalWizardry/api/rituals/RitualComponent.java +++ /dev/null @@ -1,43 +0,0 @@ -package WayofTime.alchemicalWizardry.api.rituals; - -public class RitualComponent -{ - private int x; - private int y; - private int z; - private int stoneType; - public static final int BLANK = 0; - public static final int WATER = 1; - public static final int FIRE = 2; - public static final int EARTH = 3; - public static final int AIR = 4; - public static final int DUSK = 5; - - public RitualComponent(int x, int y, int z, int stoneType) - { - this.x = x; - this.y = y; - this.z = z; - this.stoneType = stoneType; - } - - public int getX() - { - return this.x; - } - - public int getY() - { - return this.y; - } - - public int getZ() - { - return this.z; - } - - public int getStoneType() - { - return this.stoneType; - } -} diff --git a/src-backup/main/java/WayofTime/alchemicalWizardry/api/rituals/RitualEffect.java b/src-backup/main/java/WayofTime/alchemicalWizardry/api/rituals/RitualEffect.java deleted file mode 100644 index f5339288..00000000 --- a/src-backup/main/java/WayofTime/alchemicalWizardry/api/rituals/RitualEffect.java +++ /dev/null @@ -1,56 +0,0 @@ -package WayofTime.alchemicalWizardry.api.rituals; - -import java.util.List; - -import net.minecraft.entity.player.EntityPlayer; -import net.minecraftforge.common.util.ForgeDirection; -import WayofTime.alchemicalWizardry.api.alchemy.energy.Reagent; -import WayofTime.alchemicalWizardry.api.alchemy.energy.ReagentStack; - -public abstract class RitualEffect -{ - public abstract void performEffect(IMasterRitualStone ritualStone); - - public boolean startRitual(IMasterRitualStone ritualStone, EntityPlayer player) - { - return true; - } - - public void onRitualBroken(IMasterRitualStone ritualStone) - { - - } - - public abstract int getCostPerRefresh(); - - public int getInitialCooldown() - { - return 0; - } - - public abstract List getRitualComponentList(); - - public boolean canDrainReagent(IMasterRitualStone ritualStone, Reagent reagent, int amount, boolean doDrain) - { - if(ritualStone == null || reagent == null || amount == 0) - { - return false; - } - - ReagentStack reagentStack = new ReagentStack(reagent, amount); - - ReagentStack stack = ritualStone.drain(ForgeDirection.UNKNOWN, reagentStack, false); - - if(stack != null && stack.amount >= amount) - { - if(doDrain) - { - ritualStone.drain(ForgeDirection.UNKNOWN, reagentStack, true); - } - - return true; - } - - return false; - } -} diff --git a/src-backup/main/java/WayofTime/alchemicalWizardry/api/rituals/Rituals.java b/src-backup/main/java/WayofTime/alchemicalWizardry/api/rituals/Rituals.java deleted file mode 100644 index 212a43e0..00000000 --- a/src-backup/main/java/WayofTime/alchemicalWizardry/api/rituals/Rituals.java +++ /dev/null @@ -1,422 +0,0 @@ -package WayofTime.alchemicalWizardry.api.rituals; - -import java.util.HashMap; -import java.util.LinkedList; -import java.util.List; -import java.util.Map; - -import net.minecraft.block.Block; -import net.minecraft.entity.player.EntityPlayer; -import net.minecraft.world.World; -import WayofTime.alchemicalWizardry.common.renderer.MRSRenderer; - -public class Rituals -{ - private int crystalLevel; - private int actCost; - private RitualEffect effect; - private String name; - - private MRSRenderer customRenderer; - - public static Map ritualMap = new HashMap(); - public static List keyList = new LinkedList(); - - public Rituals(int crystalLevel, int actCost, RitualEffect effect, String name, MRSRenderer renderer) - { - this.crystalLevel = crystalLevel; - this.actCost = actCost; - this.effect = effect; - this.name = name; - keyList.add(name); - ritualMap.put(name, this); - this.customRenderer = renderer; - } - - public Rituals(int crystalLevel, int actCost, RitualEffect effect, String name) - { - this(crystalLevel, actCost, effect, name, null); - } - - /** - * Static method to register a ritual to the Ritual Registry - * @param key Unique identification key - must be different from all others to properly register - * @param crystalLevel Crystal level required to activate - * @param actCost LP amount required to activate - * @param effect The effect that will be ticked - * @param name The name of the ritual - * @return Returns true if properly registered, or false if the key is already used - */ - public static boolean registerRitual(String key, int crystalLevel, int actCost, RitualEffect effect, String name, MRSRenderer renderer) - { - if(ritualMap.containsKey(key)) - { - return false; - } - else - { - Rituals ritual = new Rituals(crystalLevel, actCost, effect, name, renderer); - ritual.removeRitualFromList(); - ritualMap.put(key, ritual); - keyList.add(key); - return true; - } - } - - public static boolean registerRitual(String key, int crystalLevel, int actCost, RitualEffect effect, String name) - { - if(ritualMap.containsKey(key)) - { - return false; - } - else - { - Rituals ritual = new Rituals(crystalLevel, actCost, effect, name); - ritual.removeRitualFromList(); - ritualMap.put(key, ritual); - keyList.add(key); - return true; - } - } - - public void removeRitualFromList() - { - if(ritualMap.containsValue(this)) - { - ritualMap.remove(ritualMap.remove(this.name)); - } - if(keyList.contains(this.name)) - { - keyList.remove(this.name); - } - } - - public static String checkValidRitual(World world, int x, int y, int z) - { - for(String key : ritualMap.keySet()) - { - if(checkRitualIsValid(world,x,y,z,key)) - { - return key; - } - } - - return ""; - } - - public static boolean canCrystalActivate(String ritualID, int crystalLevel) - { - if(ritualMap.containsKey(ritualID)) - { - Rituals ritual = ritualMap.get(ritualID); - if(ritual != null) - { - return ritual.getCrystalLevel() <= crystalLevel; - } - } - - return false; - } - - public static boolean checkRitualIsValid(World world, int x, int y, int z, String ritualID) - { - int direction = Rituals.getDirectionOfRitual(world, x, y, z, ritualID); - - if (direction != -1) - { - return true; - } - - return false; - } - - /** - * 1 - NORTH - * 2 - EAST - * 3 - SOUTH - * 4 - WEST - */ - public static boolean checkDirectionOfRitualValid(World world, int x, int y, int z, String ritualID, int direction) - { - List ritual = Rituals.getRitualList(ritualID); - - if (ritual == null) - { - return false; - } - - Block test = null; - - switch (direction) - { - case 1: - for (RitualComponent rc : ritual) - { - test = world.getBlock(x + rc.getX(), y + rc.getY(), z + rc.getZ()); - - if (!(test instanceof IRitualStone)) - { - return false; - } - - if (world.getBlockMetadata(x + rc.getX(), y + rc.getY(), z + rc.getZ()) != rc.getStoneType()) - { - return false; - } - } - - return true; - - case 2: - for (RitualComponent rc : ritual) - { - test = world.getBlock(x - rc.getZ(), y + rc.getY(), z + rc.getX()); - - if (!(test instanceof IRitualStone)) - { - return false; - } - - if (world.getBlockMetadata(x - rc.getZ(), y + rc.getY(), z + rc.getX()) != rc.getStoneType()) - { - return false; - } - } - - return true; - - case 3: - for (RitualComponent rc : ritual) - { - test = world.getBlock(x - rc.getX(), y + rc.getY(), z - rc.getZ()); - - if (!(test instanceof IRitualStone)) - { - return false; - } - - if (world.getBlockMetadata(x - rc.getX(), y + rc.getY(), z - rc.getZ()) != rc.getStoneType()) - { - return false; - } - } - - return true; - - case 4: - for (RitualComponent rc : ritual) - { - test = world.getBlock(x + rc.getZ(), y + rc.getY(), z - rc.getX()); - - if (!(test instanceof IRitualStone)) - { - return false; - } - - if (world.getBlockMetadata(x + rc.getZ(), y + rc.getY(), z - rc.getX()) != rc.getStoneType()) - { - return false; - } - } - - return true; - } - - return false; - } - - public static int getDirectionOfRitual(World world, int x, int y, int z, String ritualID) - { - for (int i = 1; i <= 4; i++) - { - if (Rituals.checkDirectionOfRitualValid(world, x, y, z, ritualID, i)) - { - return i; - } - } - - return -1; - } - - public static int getCostForActivation(String ritualID) - { - if(ritualMap.containsKey(ritualID)) - { - Rituals ritual = ritualMap.get(ritualID); - if(ritual != null) - { - return ritual.actCost; - } - } - - return 0; - } - - public static int getInitialCooldown(String ritualID) - { - if(ritualMap.containsKey(ritualID)) - { - Rituals ritual = ritualMap.get(ritualID); - if(ritual != null && ritual.effect != null) - { - return ritual.effect.getInitialCooldown(); - } - } - - return 0; - } - - public static List getRitualList(String ritualID) - { - if(ritualMap.containsKey(ritualID)) - { - Rituals ritual = ritualMap.get(ritualID); - if(ritual != null) - { - return ritual.obtainComponents(); - }else - { - return null; - } - }else - { - return null; - } - } - - private List obtainComponents() - { - return this.effect.getRitualComponentList(); - } - - private int getCrystalLevel() - { - return this.crystalLevel; - } - - private MRSRenderer getRenderer() - { - return this.customRenderer; - } - - public static void performEffect(IMasterRitualStone ritualStone, String ritualID) - { - if(ritualMap.containsKey(ritualID)) - { - Rituals ritual = ritualMap.get(ritualID); - if(ritual != null && ritual.effect != null) - { - ritual.effect.performEffect(ritualStone); - } - } - } - - public static boolean startRitual(IMasterRitualStone ritualStone, String ritualID, EntityPlayer player) - { - if(ritualMap.containsKey(ritualID)) - { - Rituals ritual = ritualMap.get(ritualID); - if(ritual != null && ritual.effect != null) - { - return ritual.effect.startRitual(ritualStone, player); - } - } - - return false; - } - - public static void onRitualBroken(IMasterRitualStone ritualStone, String ritualID) - { - if(ritualMap.containsKey(ritualID)) - { - Rituals ritual = ritualMap.get(ritualID); - if(ritual != null && ritual.effect != null) - { - ritual.effect.onRitualBroken(ritualStone); - } - } - } - - public static int getNumberOfRituals() - { - return ritualMap.size(); - } - - public String getRitualName() - { - return this.name; - } - - public static String getNameOfRitual(String id) - { - if(ritualMap.containsKey(id)) - { - Rituals ritual = ritualMap.get(id); - if(ritual != null) - { - return ritual.getRitualName(); - } - } - - return ""; - } - - public static String getNextRitualKey(String key) - { - boolean hasSpotted = false; - String firstKey = ""; - - for(String str : keyList) - { - if(firstKey.equals("")) - { - firstKey = str; - } - if(hasSpotted) - { - return str; - } - if(str.equals(key)) - { - hasSpotted = true; - } - } - - return firstKey; - } - - public static String getPreviousRitualKey(String key) - { - boolean hasSpotted = false; - String lastKey = keyList.get(keyList.size()-1); - - for(String str : keyList) - { - if(str.equals(key)) - { - hasSpotted = true; - } - if(hasSpotted) - { - return lastKey; - } - lastKey = str; - } - - return lastKey; - } - - public static MRSRenderer getRendererForKey(String ritualID) - { - if(ritualMap.containsKey(ritualID)) - { - Rituals ritual = ritualMap.get(ritualID); - if(ritual != null) - { - return ritual.getRenderer(); - } - } - - return null; - } -} diff --git a/src-backup/main/java/WayofTime/alchemicalWizardry/api/soulNetwork/LifeEssenceNetwork.java b/src-backup/main/java/WayofTime/alchemicalWizardry/api/soulNetwork/LifeEssenceNetwork.java deleted file mode 100644 index 61d24eee..00000000 --- a/src-backup/main/java/WayofTime/alchemicalWizardry/api/soulNetwork/LifeEssenceNetwork.java +++ /dev/null @@ -1,26 +0,0 @@ -package WayofTime.alchemicalWizardry.api.soulNetwork; - -import net.minecraft.nbt.NBTTagCompound; - -public class LifeEssenceNetwork extends net.minecraft.world.WorldSavedData -{ - public int currentEssence; - - public LifeEssenceNetwork(String par1Str) - { - super(par1Str); - currentEssence = 0; - } - - @Override - public void readFromNBT(NBTTagCompound nbttagcompound) - { - currentEssence = nbttagcompound.getInteger("currentEssence"); - } - - @Override - public void writeToNBT(NBTTagCompound nbttagcompound) - { - nbttagcompound.setInteger("currentEssence", currentEssence); - } -} diff --git a/src-backup/main/java/WayofTime/alchemicalWizardry/api/soulNetwork/SoulNetworkHandler.java b/src-backup/main/java/WayofTime/alchemicalWizardry/api/soulNetwork/SoulNetworkHandler.java deleted file mode 100644 index 0bf21a6e..00000000 --- a/src-backup/main/java/WayofTime/alchemicalWizardry/api/soulNetwork/SoulNetworkHandler.java +++ /dev/null @@ -1,292 +0,0 @@ -package WayofTime.alchemicalWizardry.api.soulNetwork; - -import java.util.UUID; - -import net.minecraft.entity.player.EntityPlayer; -import net.minecraft.item.ItemStack; -import net.minecraft.nbt.NBTTagCompound; -import net.minecraft.potion.Potion; -import net.minecraft.potion.PotionEffect; -import net.minecraft.server.MinecraftServer; -import net.minecraft.util.DamageSource; -import net.minecraft.world.World; - -import com.mojang.authlib.GameProfile; - -public class SoulNetworkHandler -{ - public static UUID getUUIDFromPlayer(EntityPlayer player) - { - return player.getPersistentID(); - } - - public static EntityPlayer getPlayerFromUUID(UUID uuid) - { - MinecraftServer server = MinecraftServer.getServer(); - GameProfile gameProfile; - gameProfile = server.func_152358_ax().func_152652_a(uuid); -// LogHelper.info("player is " + gameProfile.getName() + " : " + gameProfile.getId()); - - return null; - } - - public static int syphonFromNetwork(ItemStack ist, int damageToBeDone) - { - if (ist.getTagCompound() != null && !(ist.getTagCompound().getString("ownerName").equals(""))) - { - String ownerName = ist.getTagCompound().getString("ownerName"); - - return syphonFromNetwork(ownerName, damageToBeDone); - } - return 0; - } - - public static int syphonFromNetwork(String ownerName, int damageToBeDone) - { - if (MinecraftServer.getServer() == null) - { - return 0; - } - - World world = MinecraftServer.getServer().worldServers[0]; - LifeEssenceNetwork data = (LifeEssenceNetwork) world.loadItemData(LifeEssenceNetwork.class, ownerName); - - if (data == null) - { - data = new LifeEssenceNetwork(ownerName); - world.setItemData(ownerName, data); - } - - if (data.currentEssence >= damageToBeDone) - { - data.currentEssence -= damageToBeDone; - data.markDirty(); - return damageToBeDone; - } - - return 0; - } - - /** - * Master method used to syphon from the player's network, and will damage them accordingly if they do not have enough LP. - * Does not drain on the client side. - * - * @param ist Owned itemStack - * @param player Player using the item - * @param damageToBeDone - * @return True if server-sided, false if client-sided - */ - public static boolean syphonAndDamageFromNetwork(ItemStack ist, EntityPlayer player, int damageToBeDone) - { - if(player.worldObj.isRemote) - { - return false; - } - - int amount = SoulNetworkHandler.syphonFromNetwork(ist, damageToBeDone); - - hurtPlayer(player, damageToBeDone-amount); - - return true; - } - - public static boolean canSyphonFromOnlyNetwork(ItemStack ist, int damageToBeDone) - { - if (ist.getTagCompound() != null && !(ist.getTagCompound().getString("ownerName").equals(""))) - { - String ownerName = ist.getTagCompound().getString("ownerName"); - - return canSyphonFromOnlyNetwork(ownerName, damageToBeDone); - } - - return false; - } - - public static boolean canSyphonFromOnlyNetwork(String ownerName, int damageToBeDone) - { - if (MinecraftServer.getServer() == null) - { - return false; - } - - World world = MinecraftServer.getServer().worldServers[0]; - LifeEssenceNetwork data = (LifeEssenceNetwork) world.loadItemData(LifeEssenceNetwork.class, ownerName); - - if (data == null) - { - data = new LifeEssenceNetwork(ownerName); - world.setItemData(ownerName, data); - } - - return data.currentEssence >= damageToBeDone; - } - - public static int getCurrentEssence(String ownerName) - { - if (MinecraftServer.getServer() == null) - { - return 0; - } - - World world = MinecraftServer.getServer().worldServers[0]; - LifeEssenceNetwork data = (LifeEssenceNetwork) world.loadItemData(LifeEssenceNetwork.class, ownerName); - - if (data == null) - { - data = new LifeEssenceNetwork(ownerName); - world.setItemData(ownerName, data); - } - - return data.currentEssence; - } - - public static void setCurrentEssence(String ownerName, int essence) - { - if (MinecraftServer.getServer() == null) - { - return; - } - - World world = MinecraftServer.getServer().worldServers[0]; - LifeEssenceNetwork data = (LifeEssenceNetwork) world.loadItemData(LifeEssenceNetwork.class, ownerName); - - if (data == null) - { - data = new LifeEssenceNetwork(ownerName); - world.setItemData(ownerName, data); - } - - data.currentEssence = essence; - data.markDirty(); - } - - /** - * A method to add to an owner's network up to a maximum value. - * - * @param ownerName - * @param addedEssence - * @param maximum - * @return amount added to the network - */ - public static int addCurrentEssenceToMaximum(String ownerName, int addedEssence, int maximum) - { - if (MinecraftServer.getServer() == null) - { - return 0; - } - - World world = MinecraftServer.getServer().worldServers[0]; - LifeEssenceNetwork data = (LifeEssenceNetwork) world.loadItemData(LifeEssenceNetwork.class, ownerName); - - if (data == null) - { - data = new LifeEssenceNetwork(ownerName); - world.setItemData(ownerName, data); - } - - int currEss = data.currentEssence; - - if(currEss>=maximum) - { - return 0; - } - - int newEss = Math.min(maximum, currEss+addedEssence); - data.currentEssence = newEss; - - return newEss-currEss; - } - - public static void hurtPlayer(EntityPlayer user, int energySyphoned) - { - if (energySyphoned < 100 && energySyphoned > 0) - { - if (!user.capabilities.isCreativeMode) - { - user.setHealth((user.getHealth() - 1)); - - if (user.getHealth() <= 0.0005f) - { - user.onDeath(DamageSource.generic); - } - } - } else if (energySyphoned >= 100) - { - if (!user.capabilities.isCreativeMode) - { - for (int i = 0; i < ((energySyphoned + 99) / 100); i++) - { - user.setHealth((user.getHealth() - 1)); - - if (user.getHealth() <= 0.0005f) - { - user.onDeath(DamageSource.generic); - break; - } - } - } - } - } - - public static void checkAndSetItemOwner(ItemStack item, EntityPlayer player) - { - if (item.stackTagCompound == null) - { - item.setTagCompound(new NBTTagCompound()); - } - - if (item.stackTagCompound.getString("ownerName").equals("")) - { - item.stackTagCompound.setString("ownerName", SoulNetworkHandler.getUsername(player)); - } - } - - public static void checkAndSetItemOwner(ItemStack item, String ownerName) - { - if (item.stackTagCompound == null) - { - item.setTagCompound(new NBTTagCompound()); - } - - if (item.stackTagCompound.getString("ownerName").equals("")) - { - item.stackTagCompound.setString("ownerName", ownerName); - } - } - - public static String getUsername(EntityPlayer player) - { - return player.getDisplayName(); - } - - public static EntityPlayer getPlayerForUsername(String str) - { - if(MinecraftServer.getServer() == null) - { - return null; - } - return MinecraftServer.getServer().getConfigurationManager().func_152612_a(str); - } - - public static void causeNauseaToPlayer(ItemStack stack) - { - if (stack.getTagCompound() != null && !(stack.getTagCompound().getString("ownerName").equals(""))) - { - String ownerName = stack.getTagCompound().getString("ownerName"); - - SoulNetworkHandler.causeNauseaToPlayer(ownerName); - } - } - - public static void causeNauseaToPlayer(String ownerName) - { - EntityPlayer entityOwner = SoulNetworkHandler.getPlayerForUsername(ownerName); - - if (entityOwner == null) - { - return; - } - - entityOwner.addPotionEffect(new PotionEffect(Potion.confusion.id, 80)); - } -} diff --git a/src-backup/main/java/WayofTime/alchemicalWizardry/api/summoningRegistry/SummoningHelper.java b/src-backup/main/java/WayofTime/alchemicalWizardry/api/summoningRegistry/SummoningHelper.java deleted file mode 100644 index cccfe3f4..00000000 --- a/src-backup/main/java/WayofTime/alchemicalWizardry/api/summoningRegistry/SummoningHelper.java +++ /dev/null @@ -1,21 +0,0 @@ -package WayofTime.alchemicalWizardry.api.summoningRegistry; - -import net.minecraft.entity.EntityLivingBase; -import net.minecraft.world.World; - -public abstract class SummoningHelper -{ - protected int id; - - public SummoningHelper(int id) - { - this.id = id; - } - - public abstract EntityLivingBase getEntity(World worldObj); - - public int getSummoningHelperID() - { - return id; - } -} diff --git a/src-backup/main/java/WayofTime/alchemicalWizardry/api/summoningRegistry/SummoningRegistry.java b/src-backup/main/java/WayofTime/alchemicalWizardry/api/summoningRegistry/SummoningRegistry.java deleted file mode 100644 index 9fda5822..00000000 --- a/src-backup/main/java/WayofTime/alchemicalWizardry/api/summoningRegistry/SummoningRegistry.java +++ /dev/null @@ -1,70 +0,0 @@ -package WayofTime.alchemicalWizardry.api.summoningRegistry; - -import net.minecraft.entity.EntityLivingBase; -import net.minecraft.item.ItemStack; -import net.minecraft.world.World; - -import java.util.ArrayList; -import java.util.List; - -public class SummoningRegistry -{ - public static List summoningList = new ArrayList(); - - public static void registerSummon(SummoningHelper s, ItemStack[] ring1, ItemStack[] ring2, ItemStack[] ring3, int amountUsed, int bloodOrbLevel) - { - summoningList.add(new SummoningRegistryComponent(s, ring1, ring2, ring3, amountUsed, bloodOrbLevel)); - } - - public static boolean isRecipeValid(int bloodOrbLevel, ItemStack[] test1, ItemStack[] test2, ItemStack[] test3) - { - for (SummoningRegistryComponent src : summoningList) - { - if (src.getBloodOrbLevel() <= bloodOrbLevel && src.compareRing(1, test1) && src.compareRing(2, test2) && src.compareRing(3, test3)) - { - return true; - } - } - - return false; - } - - public static SummoningRegistryComponent getRegistryComponent(int bloodOrbLevel, ItemStack[] test1, ItemStack[] test2, ItemStack[] test3) - { - for (SummoningRegistryComponent src : summoningList) - { - if (src.getBloodOrbLevel() <= bloodOrbLevel && src.compareRing(1, test1) && src.compareRing(2, test2) && src.compareRing(3, test3)) - { - return src; - } - } - - return null; - } - - public static EntityLivingBase getEntity(World worldObj, int bloodOrbLevel, ItemStack[] test1, ItemStack[] test2, ItemStack[] test3) - { - for (SummoningRegistryComponent src : summoningList) - { - if (src.getBloodOrbLevel() <= bloodOrbLevel && src.compareRing(1, test1) && src.compareRing(2, test2) && src.compareRing(3, test3)) - { - return src.getEntity(worldObj); - } - } - - return null; - } - - public static EntityLivingBase getEntityWithID(World worldObj, int id) - { - for (SummoningRegistryComponent src : summoningList) - { - if (src.getSummoningHelperID() == id) - { - return src.getEntity(worldObj); - } - } - - return null; - } -} diff --git a/src-backup/main/java/WayofTime/alchemicalWizardry/api/summoningRegistry/SummoningRegistryComponent.java b/src-backup/main/java/WayofTime/alchemicalWizardry/api/summoningRegistry/SummoningRegistryComponent.java deleted file mode 100644 index 8496b0f2..00000000 --- a/src-backup/main/java/WayofTime/alchemicalWizardry/api/summoningRegistry/SummoningRegistryComponent.java +++ /dev/null @@ -1,231 +0,0 @@ -package WayofTime.alchemicalWizardry.api.summoningRegistry; - -import net.minecraft.entity.EntityLivingBase; -import net.minecraft.item.ItemBlock; -import net.minecraft.item.ItemStack; -import net.minecraft.world.World; -import net.minecraftforge.oredict.OreDictionary; - -public class SummoningRegistryComponent -{ - public ItemStack[] ring1 = new ItemStack[6]; - public ItemStack[] ring2 = new ItemStack[6]; - public ItemStack[] ring3 = new ItemStack[6]; - public SummoningHelper summoningHelper; - public int summoningCost; - public int bloodOrbLevel; - - public SummoningRegistryComponent(SummoningHelper s, ItemStack[] newRing1, ItemStack[] newRing2, ItemStack[] newRing3, int amount, int bloodOrbLevel) - { - this.summoningHelper = s; - this.ring1 = newRing1; - this.ring2 = newRing2; - this.ring3 = newRing3; - this.summoningCost = amount; - this.bloodOrbLevel = bloodOrbLevel; - - if (this.ring1.length != 6) - { - ItemStack[] newRecipe = new ItemStack[6]; - - for (int i = 0; i < 6; i++) - { - if (i + 1 > this.ring1.length) - { - newRecipe[i] = null; - } else - { - newRecipe[i] = this.ring1[i]; - } - } - - this.ring1 = newRecipe; - } - - if (this.ring2.length != 6) - { - ItemStack[] newRecipe = new ItemStack[6]; - - for (int i = 0; i < 6; i++) - { - if (i + 1 > this.ring2.length) - { - newRecipe[i] = null; - } else - { - newRecipe[i] = this.ring2[i]; - } - } - - this.ring2 = newRecipe; - } - - if (this.ring3.length != 6) - { - ItemStack[] newRecipe = new ItemStack[6]; - - for (int i = 0; i < 6; i++) - { - if (i + 1 > this.ring3.length) - { - newRecipe[i] = null; - } else - { - newRecipe[i] = this.ring3[i]; - } - } - - this.ring3 = newRecipe; - } - } - - public boolean compareRing(int ring, ItemStack[] checkedRingRecipe) - { - ItemStack[] recipe; - - if (checkedRingRecipe.length < 6) - { - return false; - } - - switch (ring) - { - case 1: - recipe = ring1; - break; - - case 2: - recipe = ring2; - break; - - case 3: - recipe = ring3; - break; - - default: - recipe = ring1; - } - - if (recipe.length != 6) - { - ItemStack[] newRecipe = new ItemStack[6]; - - for (int i = 0; i < 6; i++) - { - if (i + 1 > recipe.length) - { - newRecipe[i] = null; - } else - { - newRecipe[i] = recipe[i]; - } - } - - recipe = newRecipe; - } - - boolean[] checkList = new boolean[6]; - - for (int i = 0; i < 6; i++) - { - checkList[i] = false; - } - - for (int i = 0; i < 6; i++) - { - ItemStack recipeItemStack = recipe[i]; - - if (recipeItemStack == null) - { - continue; - } - - boolean test = false; - - for (int j = 0; j < 6; j++) - { - if (checkList[j]) - { - continue; - } - - ItemStack checkedItemStack = checkedRingRecipe[j]; - - if (checkedItemStack == null) - { - continue; - } - - boolean quickTest = false; - - if (recipeItemStack.getItem() instanceof ItemBlock) - { - if (checkedItemStack.getItem() instanceof ItemBlock) - { - quickTest = true; - } - } else if (!(checkedItemStack.getItem() instanceof ItemBlock)) - { - quickTest = true; - } - - if (!quickTest) - { - continue; - } - - if ((checkedItemStack.getItemDamage() == recipeItemStack.getItemDamage() || OreDictionary.WILDCARD_VALUE == recipeItemStack.getItemDamage()) && checkedItemStack.getItem() == recipeItemStack.getItem()) - { - test = true; - checkList[j] = true; - break; - } - } - - if (!test) - { - return false; - } - } - - return true; - } - - public int getSummoningCost() - { - return summoningCost; - } - - public EntityLivingBase getEntity(World world) - { - return this.summoningHelper.getEntity(world); - } - - public int getBloodOrbLevel() - { - return this.bloodOrbLevel; - } - - public ItemStack[] getRingRecipeForRing(int ring) - { - switch (ring) - { - case 1: - return ring1; - - case 2: - return ring2; - - case 3: - return ring3; - - default: - return null; - } - } - - public int getSummoningHelperID() - { - return this.summoningHelper.getSummoningHelperID(); - } -} diff --git a/src-backup/main/java/WayofTime/alchemicalWizardry/api/tile/IBloodAltar.java b/src-backup/main/java/WayofTime/alchemicalWizardry/api/tile/IBloodAltar.java deleted file mode 100644 index c70d6188..00000000 --- a/src-backup/main/java/WayofTime/alchemicalWizardry/api/tile/IBloodAltar.java +++ /dev/null @@ -1,26 +0,0 @@ -package WayofTime.alchemicalWizardry.api.tile; - -/** - * Created by Pokefenn. - */ -public interface IBloodAltar -{ - - public int getCapacity(); - - public int getCurrentBlood(); - - public int getTier(); - - public int getProgress(); - - public float getSacrificeMultiplier(); - - public float getSelfSacrificeMultiplier(); - - public float getOrbMultiplier(); - - public float getDislocationMultiplier(); - - public int getBufferCapacity(); -} diff --git a/src-backup/main/java/WayofTime/alchemicalWizardry/client/ClientEventHandler.java b/src-backup/main/java/WayofTime/alchemicalWizardry/client/ClientEventHandler.java deleted file mode 100644 index 864de3c4..00000000 --- a/src-backup/main/java/WayofTime/alchemicalWizardry/client/ClientEventHandler.java +++ /dev/null @@ -1,58 +0,0 @@ -package WayofTime.alchemicalWizardry.client; - -import org.lwjgl.opengl.GL11; - -import net.minecraft.client.Minecraft; -import net.minecraft.entity.player.EntityPlayer; -import net.minecraftforge.client.event.RenderPlayerEvent; -import net.minecraftforge.client.event.sound.SoundEvent; -import WayofTime.alchemicalWizardry.AlchemicalWizardry; -import WayofTime.alchemicalWizardry.client.renderer.RenderHelper; -import cpw.mods.fml.client.FMLClientHandler; -import cpw.mods.fml.common.eventhandler.Event.Result; -import cpw.mods.fml.common.eventhandler.SubscribeEvent; -import cpw.mods.fml.common.gameevent.TickEvent.Phase; -import cpw.mods.fml.common.gameevent.TickEvent.RenderTickEvent; - -public class ClientEventHandler -{ - private Minecraft mcClient = FMLClientHandler.instance().getClient(); - - @SubscribeEvent - public void onPlayerSoundEvent(SoundEvent event) - { - if(Minecraft.getMinecraft() != null) - { - EntityPlayer player = Minecraft.getMinecraft().thePlayer; - - if(player != null && player.isPotionActive(AlchemicalWizardry.customPotionDeaf)) - { - event.setResult(Result.DENY); - } - } - } - - @SubscribeEvent - public void onTick(RenderTickEvent event) - { - if (event.phase.equals(Phase.START)) - return; - - if (!RenderHelper.onTickInGame(mcClient)) - { - - } - } - - @SubscribeEvent - public void onRenderLivingPlayerPre(RenderPlayerEvent.Pre event) - { - GL11.glDisable(2929); - } - - @SubscribeEvent - public void onRenderLivingPlayerPost(RenderPlayerEvent.Post event) - { - GL11.glEnable(2929); - } -} diff --git a/src-backup/main/java/WayofTime/alchemicalWizardry/client/ClientProxy.java b/src-backup/main/java/WayofTime/alchemicalWizardry/client/ClientProxy.java deleted file mode 100644 index ac7d29e2..00000000 --- a/src-backup/main/java/WayofTime/alchemicalWizardry/client/ClientProxy.java +++ /dev/null @@ -1,178 +0,0 @@ -package WayofTime.alchemicalWizardry.client; - -import net.minecraft.item.ItemBlock; -import net.minecraft.world.World; -import net.minecraftforge.client.MinecraftForgeClient; -import WayofTime.alchemicalWizardry.ModBlocks; -import WayofTime.alchemicalWizardry.common.CommonProxy; -import WayofTime.alchemicalWizardry.common.EntityAirElemental; -import WayofTime.alchemicalWizardry.common.entity.mob.EntityBileDemon; -import WayofTime.alchemicalWizardry.common.entity.mob.EntityBoulderFist; -import WayofTime.alchemicalWizardry.common.entity.mob.EntityEarthElemental; -import WayofTime.alchemicalWizardry.common.entity.mob.EntityFallenAngel; -import WayofTime.alchemicalWizardry.common.entity.mob.EntityFireElemental; -import WayofTime.alchemicalWizardry.common.entity.mob.EntityHolyElemental; -import WayofTime.alchemicalWizardry.common.entity.mob.EntityIceDemon; -import WayofTime.alchemicalWizardry.common.entity.mob.EntityLowerGuardian; -import WayofTime.alchemicalWizardry.common.entity.mob.EntityShade; -import WayofTime.alchemicalWizardry.common.entity.mob.EntityShadeElemental; -import WayofTime.alchemicalWizardry.common.entity.mob.EntitySmallEarthGolem; -import WayofTime.alchemicalWizardry.common.entity.mob.EntityWaterElemental; -import WayofTime.alchemicalWizardry.common.entity.mob.EntityWingedFireDemon; -import WayofTime.alchemicalWizardry.common.entity.projectile.EnergyBlastProjectile; -import WayofTime.alchemicalWizardry.common.entity.projectile.EntityEnergyBazookaMainProjectile; -import WayofTime.alchemicalWizardry.common.entity.projectile.EntityMeteor; -import WayofTime.alchemicalWizardry.common.entity.projectile.EntityParticleBeam; -import WayofTime.alchemicalWizardry.common.renderer.block.RenderAlchemicCalcinator; -import WayofTime.alchemicalWizardry.common.renderer.block.RenderConduit; -import WayofTime.alchemicalWizardry.common.renderer.block.RenderCrystalBelljar; -import WayofTime.alchemicalWizardry.common.renderer.block.RenderMasterStone; -import WayofTime.alchemicalWizardry.common.renderer.block.RenderPedestal; -import WayofTime.alchemicalWizardry.common.renderer.block.RenderPlinth; -import WayofTime.alchemicalWizardry.common.renderer.block.RenderReagentConduit; -import WayofTime.alchemicalWizardry.common.renderer.block.RenderSpellEffectBlock; -import WayofTime.alchemicalWizardry.common.renderer.block.RenderSpellEnhancementBlock; -import WayofTime.alchemicalWizardry.common.renderer.block.RenderSpellModifierBlock; -import WayofTime.alchemicalWizardry.common.renderer.block.RenderSpellParadigmBlock; -import WayofTime.alchemicalWizardry.common.renderer.block.RenderWritingTable; -import WayofTime.alchemicalWizardry.common.renderer.block.ShaderHelper; -import WayofTime.alchemicalWizardry.common.renderer.block.TEAltarRenderer; -import WayofTime.alchemicalWizardry.common.renderer.block.itemRender.TEAlchemicalCalcinatorItemRenderer; -import WayofTime.alchemicalWizardry.common.renderer.block.itemRender.TEAltarItemRenderer; -import WayofTime.alchemicalWizardry.common.renderer.block.itemRender.TEBellJarItemRenderer; -import WayofTime.alchemicalWizardry.common.renderer.block.itemRender.TEConduitItemRenderer; -import WayofTime.alchemicalWizardry.common.renderer.block.itemRender.TESpellEffectBlockItemRenderer; -import WayofTime.alchemicalWizardry.common.renderer.block.itemRender.TESpellEnhancementBlockItemRenderer; -import WayofTime.alchemicalWizardry.common.renderer.block.itemRender.TESpellModifierBlockItemRenderer; -import WayofTime.alchemicalWizardry.common.renderer.block.itemRender.TESpellParadigmBlockItemRenderer; -import WayofTime.alchemicalWizardry.common.renderer.mob.RenderBileDemon; -import WayofTime.alchemicalWizardry.common.renderer.mob.RenderBoulderFist; -import WayofTime.alchemicalWizardry.common.renderer.mob.RenderElemental; -import WayofTime.alchemicalWizardry.common.renderer.mob.RenderFallenAngel; -import WayofTime.alchemicalWizardry.common.renderer.mob.RenderIceDemon; -import WayofTime.alchemicalWizardry.common.renderer.mob.RenderLowerGuardian; -import WayofTime.alchemicalWizardry.common.renderer.mob.RenderShade; -import WayofTime.alchemicalWizardry.common.renderer.mob.RenderSmallEarthGolem; -import WayofTime.alchemicalWizardry.common.renderer.mob.RenderWingedFireDemon; -import WayofTime.alchemicalWizardry.common.renderer.model.ModelBileDemon; -import WayofTime.alchemicalWizardry.common.renderer.model.ModelBoulderFist; -import WayofTime.alchemicalWizardry.common.renderer.model.ModelElemental; -import WayofTime.alchemicalWizardry.common.renderer.model.ModelFallenAngel; -import WayofTime.alchemicalWizardry.common.renderer.model.ModelIceDemon; -import WayofTime.alchemicalWizardry.common.renderer.model.ModelLowerGuardian; -import WayofTime.alchemicalWizardry.common.renderer.model.ModelShade; -import WayofTime.alchemicalWizardry.common.renderer.model.ModelSmallEarthGolem; -import WayofTime.alchemicalWizardry.common.renderer.model.ModelWingedFireDemon; -import WayofTime.alchemicalWizardry.common.renderer.projectile.RenderEnergyBazookaMainProjectile; -import WayofTime.alchemicalWizardry.common.renderer.projectile.RenderEnergyBlastProjectile; -import WayofTime.alchemicalWizardry.common.renderer.projectile.RenderMeteor; -import WayofTime.alchemicalWizardry.common.spell.complex.EntitySpellProjectile; -import WayofTime.alchemicalWizardry.common.tileEntity.TEAlchemicCalcinator; -import WayofTime.alchemicalWizardry.common.tileEntity.TEAltar; -import WayofTime.alchemicalWizardry.common.tileEntity.TEBellJar; -import WayofTime.alchemicalWizardry.common.tileEntity.TEConduit; -import WayofTime.alchemicalWizardry.common.tileEntity.TEMasterStone; -import WayofTime.alchemicalWizardry.common.tileEntity.TEPedestal; -import WayofTime.alchemicalWizardry.common.tileEntity.TEPlinth; -import WayofTime.alchemicalWizardry.common.tileEntity.TEReagentConduit; -import WayofTime.alchemicalWizardry.common.tileEntity.TESpellEffectBlock; -import WayofTime.alchemicalWizardry.common.tileEntity.TESpellEnhancementBlock; -import WayofTime.alchemicalWizardry.common.tileEntity.TESpellModifierBlock; -import WayofTime.alchemicalWizardry.common.tileEntity.TESpellParadigmBlock; -import WayofTime.alchemicalWizardry.common.tileEntity.TEWritingTable; -import cpw.mods.fml.client.FMLClientHandler; -import cpw.mods.fml.client.registry.ClientRegistry; -import cpw.mods.fml.client.registry.RenderingRegistry; -import cpw.mods.fml.common.FMLCommonHandler; - -public class ClientProxy extends CommonProxy -{ - public static int renderPass; - public static int altarRenderType; - - @Override - public void registerRenderers() - { - //altarRenderType = RenderingRegistry.getNextAvailableRenderId(); - RenderingRegistry.registerEntityRenderingHandler(EnergyBlastProjectile.class, new RenderEnergyBlastProjectile()); - RenderingRegistry.registerEntityRenderingHandler(EntityEnergyBazookaMainProjectile.class, new RenderEnergyBazookaMainProjectile()); - RenderingRegistry.registerEntityRenderingHandler(EntitySpellProjectile.class, new RenderEnergyBlastProjectile()); - RenderingRegistry.registerEntityRenderingHandler(EntityParticleBeam.class, new RenderEnergyBlastProjectile()); - RenderingRegistry.registerEntityRenderingHandler(EntityMeteor.class, new RenderMeteor()); - //EntityRegistry.registerGlobalEntityID(EntityFallenAngel.class, "AlchemicalWizardry.FallenAngel", EntityRegistry.findGlobalUniqueEntityId(),0x40FF00, 0x0B610B); - RenderingRegistry.registerEntityRenderingHandler(EntityFallenAngel.class, new RenderFallenAngel(new ModelFallenAngel(), 0.5F)); - //EntityRegistry.registerGlobalEntityID(EntityLowerGuardian.class, "AlchemicalWizardry.LowerGuardian", EntityRegistry.findGlobalUniqueEntityId(),0x40FF00, 0x0B610B); - RenderingRegistry.registerEntityRenderingHandler(EntityLowerGuardian.class, new RenderLowerGuardian(new ModelLowerGuardian(), 0.5F)); - //EntityRegistry.registerGlobalEntityID(EntityBileDemon.class, "AlchemicalWizardry.BileDemon", EntityRegistry.findGlobalUniqueEntityId(),0x40FF00, 0x0B610B); - RenderingRegistry.registerEntityRenderingHandler(EntityBileDemon.class, new RenderBileDemon(new ModelBileDemon(), 1.5F)); - //EntityRegistry.registerGlobalEntityID(EntityWingedFireDemon.class, "AlchemicalWizardry.WingedFireDemon", EntityRegistry.findGlobalUniqueEntityId(),0x40FF00, 0x0B610B); - RenderingRegistry.registerEntityRenderingHandler(EntityWingedFireDemon.class, new RenderWingedFireDemon(new ModelWingedFireDemon(), 1.0F)); - //EntityRegistry.registerGlobalEntityID(EntitySmallEarthGolem.class, "AlchemicalWizardry.SmallEarthGolem", EntityRegistry.findGlobalUniqueEntityId(),0x40FF00, 0x0B610B); - RenderingRegistry.registerEntityRenderingHandler(EntitySmallEarthGolem.class, new RenderSmallEarthGolem(new ModelSmallEarthGolem(), 0.5F)); - //EntityRegistry.registerGlobalEntityID(EntityIceDemon.class, "AlchemicalWizardry.IceDemon", EntityRegistry.findGlobalUniqueEntityId(),0x40FF00, 0x0B610B); - RenderingRegistry.registerEntityRenderingHandler(EntityIceDemon.class, new RenderIceDemon(new ModelIceDemon(), 0.5F)); - // EntityRegistry.registerGlobalEntityID(EntityBoulderFist.class, "AlchemicalWizardry.BoulderFist", EntityRegistry.findGlobalUniqueEntityId(),0x40FF00, 0x0B610B); - RenderingRegistry.registerEntityRenderingHandler(EntityBoulderFist.class, new RenderBoulderFist(new ModelBoulderFist(), 0.5F)); - //EntityRegistry.registerGlobalEntityID(EntityShade.class, "AlchemicalWizardry.Shade", EntityRegistry.findGlobalUniqueEntityId(),0x40FF00, 0x0B610B); - RenderingRegistry.registerEntityRenderingHandler(EntityShade.class, new RenderShade(new ModelShade(), 0.5F)); - //EntityRegistry.registerGlobalEntityID(EntityAirElemental.class, "AlchemicalWizardry.AirElemental", EntityRegistry.findGlobalUniqueEntityId(),0x40FF00, 0x0B610B); - RenderingRegistry.registerEntityRenderingHandler(EntityAirElemental.class, new RenderElemental(new ModelElemental(), 0.5F)); - //EntityRegistry.registerGlobalEntityID(EntityWaterElemental.class, "AlchemicalWizardry.WaterElemental", EntityRegistry.findGlobalUniqueEntityId(),0x40FF00, 0x0B610B); - RenderingRegistry.registerEntityRenderingHandler(EntityWaterElemental.class, new RenderElemental(new ModelElemental(), 0.5F)); - //EntityRegistry.registerGlobalEntityID(EntityEarthElemental.class, "AlchemicalWizardry.EarthElemental", EntityRegistry.findGlobalUniqueEntityId(),0x40FF00, 0x0B610B); - RenderingRegistry.registerEntityRenderingHandler(EntityEarthElemental.class, new RenderElemental(new ModelElemental(), 0.5F)); - //EntityRegistry.registerGlobalEntityID(EntityFireElemental.class, "AlchemicalWizardry.FireElemental", EntityRegistry.findGlobalUniqueEntityId(),0x40FF00, 0x0B610B); - RenderingRegistry.registerEntityRenderingHandler(EntityFireElemental.class, new RenderElemental(new ModelElemental(), 0.5F)); - //EntityRegistry.registerGlobalEntityID(EntityShadeElemental.class, "AlchemicalWizardry.ShadeElemental", EntityRegistry.findGlobalUniqueEntityId(),0x40FF00, 0x0B610B); - RenderingRegistry.registerEntityRenderingHandler(EntityShadeElemental.class, new RenderElemental(new ModelElemental(), 0.5F)); - //EntityRegistry.registerGlobalEntityID(EntityHolyElemental.class, "AlchemicalWizardry.HolyElemental", EntityRegistry.findGlobalUniqueEntityId(),0x40FF00, 0x0B610B); - RenderingRegistry.registerEntityRenderingHandler(EntityHolyElemental.class, new RenderElemental(new ModelElemental(), 0.5F)); - ClientRegistry.bindTileEntitySpecialRenderer(TEAltar.class, new TEAltarRenderer()); - ClientRegistry.bindTileEntitySpecialRenderer(TEPedestal.class, new RenderPedestal()); - ClientRegistry.bindTileEntitySpecialRenderer(TEPlinth.class, new RenderPlinth()); - ClientRegistry.bindTileEntitySpecialRenderer(TEWritingTable.class, new RenderWritingTable()); - ClientRegistry.bindTileEntitySpecialRenderer(TEConduit.class, new RenderConduit()); - ClientRegistry.bindTileEntitySpecialRenderer(TESpellEffectBlock.class, new RenderSpellEffectBlock()); - ClientRegistry.bindTileEntitySpecialRenderer(TESpellEnhancementBlock.class, new RenderSpellEnhancementBlock()); - ClientRegistry.bindTileEntitySpecialRenderer(TESpellParadigmBlock.class, new RenderSpellParadigmBlock()); - ClientRegistry.bindTileEntitySpecialRenderer(TESpellModifierBlock.class, new RenderSpellModifierBlock()); - ClientRegistry.bindTileEntitySpecialRenderer(TEReagentConduit.class, new RenderReagentConduit()); - ClientRegistry.bindTileEntitySpecialRenderer(TEMasterStone.class, new RenderMasterStone()); - ClientRegistry.bindTileEntitySpecialRenderer(TEAlchemicCalcinator.class, new RenderAlchemicCalcinator()); - ClientRegistry.bindTileEntitySpecialRenderer(TEBellJar.class, new RenderCrystalBelljar()); - - //Item Renderer stuff - MinecraftForgeClient.registerItemRenderer(ItemBlock.getItemFromBlock(ModBlocks.blockConduit), new TEConduitItemRenderer()); - MinecraftForgeClient.registerItemRenderer(ItemBlock.getItemFromBlock(ModBlocks.blockSpellEffect), new TESpellEffectBlockItemRenderer()); - MinecraftForgeClient.registerItemRenderer(ItemBlock.getItemFromBlock(ModBlocks.blockSpellEnhancement), new TESpellEnhancementBlockItemRenderer()); - MinecraftForgeClient.registerItemRenderer(ItemBlock.getItemFromBlock(ModBlocks.blockSpellParadigm), new TESpellParadigmBlockItemRenderer()); - MinecraftForgeClient.registerItemRenderer(ItemBlock.getItemFromBlock(ModBlocks.blockSpellModifier), new TESpellModifierBlockItemRenderer()); - MinecraftForgeClient.registerItemRenderer(ItemBlock.getItemFromBlock(ModBlocks.blockAlchemicCalcinator), new TEAlchemicalCalcinatorItemRenderer()); - MinecraftForgeClient.registerItemRenderer(ItemBlock.getItemFromBlock(ModBlocks.blockCrystalBelljar), new TEBellJarItemRenderer()); - - //RenderingRegistry.registerEntityRenderingHandler(FireProjectile.class, new RenderFireProjectile()); - //RenderingRegistry.registerBlockHandler(new AltarRenderer()); - - ShaderHelper.initShaders(); - } - - @Override - public World getClientWorld() - { - return FMLClientHandler.instance().getClient().theWorld; - } - - @Override - public void InitRendering() - { - - MinecraftForgeClient.registerItemRenderer(ItemBlock.getItemFromBlock(ModBlocks.blockAltar), new TEAltarItemRenderer()); - //MinecraftForgeClient.registerItemRenderer(AlchemicalWizardry.blockWritingTable.blockID, new TEWritingTableItemRenderer()); - } - - @Override - public void registerEvents() - { - FMLCommonHandler.instance().bus().register(new ClientEventHandler()); - } -} diff --git a/src-backup/main/java/WayofTime/alchemicalWizardry/client/renderer/ColourThreshold.java b/src-backup/main/java/WayofTime/alchemicalWizardry/client/renderer/ColourThreshold.java deleted file mode 100644 index f7ee748a..00000000 --- a/src-backup/main/java/WayofTime/alchemicalWizardry/client/renderer/ColourThreshold.java +++ /dev/null @@ -1,49 +0,0 @@ -package WayofTime.alchemicalWizardry.client.renderer; - -import java.util.List; -/** - * This class is a utility class that was created by bspkrs. - * https://github.com/bspkrs/bspkrsCore/blob/master/src/main/java/bspkrs/client/util/ColorThreshold.java - */ -public class ColourThreshold implements Comparable -{ - public int threshold; - public String colorCode; - - public ColourThreshold(int t, String c) - { - threshold = t; - colorCode = c; - } - - @Override - public String toString() - { - return String.valueOf(threshold) + ", " + colorCode; - } - - @Override - public int compareTo(ColourThreshold o) - { - if (this.threshold > o.threshold) - return 1; - else if (this.threshold < o.threshold) - return -1; - else - return 0; - } - - /** - * Returns the colorCode attached to the first threshold in the list that is - * >= value. Expects that the list has been sorted by threshold ascending. - */ - public static String getColorCode(List colorList, int value) - { - for (ColourThreshold ct : colorList) - if (value <= ct.threshold) - return ct.colorCode; - - return "f"; - } -} - diff --git a/src-backup/main/java/WayofTime/alchemicalWizardry/client/renderer/HUDElement.java b/src-backup/main/java/WayofTime/alchemicalWizardry/client/renderer/HUDElement.java deleted file mode 100644 index e597135f..00000000 --- a/src-backup/main/java/WayofTime/alchemicalWizardry/client/renderer/HUDElement.java +++ /dev/null @@ -1,146 +0,0 @@ -package WayofTime.alchemicalWizardry.client.renderer; - -import net.minecraft.client.Minecraft; -import net.minecraft.client.renderer.RenderHelper; -import net.minecraft.client.renderer.entity.RenderItem; -import net.minecraft.item.ItemStack; - -import org.lwjgl.opengl.GL11; - -import WayofTime.alchemicalWizardry.BloodMagicConfiguration; - -public class HUDElement -{ - public final ItemStack itemStack; - public final int iconW; - public final int iconH; - public final int padW; - public final int value; - private int elementW; - private int elementH; - private String itemName = ""; - private int itemNameW; - private String itemDamage = ""; - private int itemDamageW; - private Minecraft mc = Minecraft.getMinecraft(); - - private static final int offset = 5; - - public boolean enableItemName = false; - public boolean showValue = true; - public boolean showDamageOverlay = false; - public boolean showItemCount = false; - - static RenderItem itemRenderer = new RenderItem(); - - public HUDElement(ItemStack itemStack, int iconW, int iconH, int padW, int value) - { - this.itemStack = itemStack; - this.iconW = iconW; - this.iconH = iconH; - this.padW = padW; - this.value = value; - - initSize(); - } - - public int width() - { - return elementW; - } - - public int height() - { - return elementH; - } - - private void initSize() - { - elementH = enableItemName ? Math.max(Minecraft.getMinecraft().fontRenderer.FONT_HEIGHT * 2, iconH) : - Math.max(mc.fontRenderer.FONT_HEIGHT, iconH); - - if (itemStack != null) - { - int damage = 1; - int maxDamage = 1; - - if (showValue) - { - maxDamage = itemStack.getMaxDamage() + 1; - damage = maxDamage - itemStack.getItemDamageForDisplay(); - - boolean showSpecialValue = true; - boolean showValue = false; - boolean showPercent = false; - - boolean showMaxDamage = true; - boolean thresholdPercent = true; - - if(showSpecialValue) - { - itemDamage = "\247" + ColourThreshold.getColorCode(BloodMagicConfiguration.colorList, - (thresholdPercent ? damage * 100 / maxDamage : damage)) + this.value; - } - else if (showValue) - itemDamage = "\247" + ColourThreshold.getColorCode(BloodMagicConfiguration.colorList, - (thresholdPercent ? damage * 100 / maxDamage : damage)) + damage + - (showMaxDamage ? "/" + maxDamage : ""); - else if (showPercent) - itemDamage = "\247" + ColourThreshold.getColorCode(BloodMagicConfiguration.colorList, - (thresholdPercent ? damage * 100 / maxDamage : damage)) + - (damage * 100 / maxDamage) + "%"; - } - - itemDamageW = mc.fontRenderer.getStringWidth(HUDUtils.stripCtrl(itemDamage)); - elementW = padW + iconW + padW + itemDamageW + offset; - - if (enableItemName) - { - itemName = itemStack.getDisplayName(); - elementW = padW + iconW + padW + - Math.max(mc.fontRenderer.getStringWidth(HUDUtils.stripCtrl(itemName)), itemDamageW); - } - - itemNameW = mc.fontRenderer.getStringWidth(HUDUtils.stripCtrl(itemName)); - } - } - - public void renderToHud(int x, int y) - { - GL11.glColor4f(1.0F, 1.0F, 1.0F, 1.0F); - GL11.glEnable(32826 /* GL_RESCALE_NORMAL_EXT */); - RenderHelper.enableStandardItemLighting(); - RenderHelper.enableGUIStandardItemLighting(); - itemRenderer.zLevel = 200.0F; - - //if (ArmorStatusHUD.alignMode.toLowerCase().contains("right")) - boolean toRight = true; - if(toRight) - { - itemRenderer.renderItemAndEffectIntoGUI(mc.fontRenderer, mc.getTextureManager(), itemStack, x - (iconW + padW), y); - HUDUtils.renderItemOverlayIntoGUI(mc.fontRenderer, itemStack, x - (iconW + padW), y, showDamageOverlay, showItemCount); - - RenderHelper.disableStandardItemLighting(); - GL11.glDisable(32826 /* GL_RESCALE_NORMAL_EXT */); - GL11.glDisable(GL11.GL_BLEND); - - mc.fontRenderer.drawStringWithShadow(itemName + "\247r", x - (padW + iconW + padW) - itemNameW, y, 0xffffff); - mc.fontRenderer.drawStringWithShadow(itemDamage + "\247r", x - (padW + iconW + padW) - itemDamageW, - y + (enableItemName ? elementH / 2 : elementH / 4), 0xffffff); - } - else - { - itemRenderer.renderItemAndEffectIntoGUI(mc.fontRenderer, mc.getTextureManager(), itemStack, x, y); - HUDUtils.renderItemOverlayIntoGUI(mc.fontRenderer, itemStack, x, y, showDamageOverlay, showItemCount); - - RenderHelper.disableStandardItemLighting(); - GL11.glDisable(32826 /* GL_RESCALE_NORMAL_EXT */); - GL11.glDisable(GL11.GL_BLEND); - - mc.fontRenderer.drawStringWithShadow(itemName + "\247r", x + iconW + padW, y, 0xffffff); - mc.fontRenderer.drawStringWithShadow(itemDamage + "\247r", x + iconW + padW, - y + (enableItemName ? elementH / 2 : elementH / 4), 0xffffff); - } - GL11.glColor4f(1.0F, 1.0F, 1.0F, 1.0F); - } -} \ No newline at end of file diff --git a/src-backup/main/java/WayofTime/alchemicalWizardry/client/renderer/HUDUtils.java b/src-backup/main/java/WayofTime/alchemicalWizardry/client/renderer/HUDUtils.java deleted file mode 100644 index 08217699..00000000 --- a/src-backup/main/java/WayofTime/alchemicalWizardry/client/renderer/HUDUtils.java +++ /dev/null @@ -1,272 +0,0 @@ -package WayofTime.alchemicalWizardry.client.renderer; - -import net.minecraft.client.Minecraft; -import net.minecraft.client.gui.FontRenderer; -import net.minecraft.client.renderer.OpenGlHelper; -import net.minecraft.client.renderer.Tessellator; -import net.minecraft.entity.player.EntityPlayer; -import net.minecraft.init.Items; -import net.minecraft.item.Item; -import net.minecraft.item.ItemStack; -import net.minecraft.util.ResourceLocation; - -import org.lwjgl.opengl.GL11; - -/** - * This class is a utility class that was created by bspkrs. - * https://github.com/bspkrs/bspkrsCore/blob/master/src/main/java/bspkrs/client/util/HUDUtils.java - */ -public final class HUDUtils -{ - private static int[] colorCodes = new int[] { 0, 170, 43520, 43690, 11141120, 11141290, 16755200, 11184810, 5592405, 5592575, 5635925, 5636095, 16733525, 16733695, 16777045, 16777215, - 0, 42, 10752, 10794, 2752512, 2752554, 2763264, 2763306, 1381653, 1381695, 1392405, 1392447, 4134165, 4134207, 4144917, 4144959 }; - - public static int getColorCode(char c, boolean isLighter) - { - return colorCodes[isLighter ? "0123456789abcdef".indexOf(c) : "0123456789abcdef".indexOf(c) + 16]; - } - - /** - * Draws a textured box of any size (smallest size is borderSize * 2 square) based on a fixed size textured box with continuous borders - * and filler. It is assumed that the desired texture ResourceLocation object has been bound using - * Minecraft.getMinecraft().getTextureManager().bindTexture(resourceLocation). - * - * @param x x axis offset - * @param y y axis offset - * @param u bound resource location image x offset - * @param v bound resource location image y offset - * @param width the desired box width - * @param height the desired box height - * @param textureWidth the width of the box texture in the resource location image - * @param textureHeight the height of the box texture in the resource location image - * @param borderSize the size of the box's borders - * @param zLevel the zLevel to draw at - */ - public static void drawContinuousTexturedBox(int x, int y, int u, int v, int width, int height, int textureWidth, int textureHeight, - int borderSize, float zLevel) - { - drawContinuousTexturedBox(x, y, u, v, width, height, textureWidth, textureHeight, borderSize, borderSize, borderSize, borderSize, zLevel); - } - - /** - * Draws a textured box of any size (smallest size is borderSize * 2 square) based on a fixed size textured box with continuous borders - * and filler. The provided ResourceLocation object will be bound using - * Minecraft.getMinecraft().getTextureManager().bindTexture(resourceLocation). - * - * @param res the ResourceLocation object that contains the desired image - * @param x x axis offset - * @param y y axis offset - * @param u bound resource location image x offset - * @param v bound resource location image y offset - * @param width the desired box width - * @param height the desired box height - * @param textureWidth the width of the box texture in the resource location image - * @param textureHeight the height of the box texture in the resource location image - * @param borderSize the size of the box's borders - * @param zLevel the zLevel to draw at - */ - public static void drawContinuousTexturedBox(ResourceLocation res, int x, int y, int u, int v, int width, int height, int textureWidth, int textureHeight, - int borderSize, float zLevel) - { - drawContinuousTexturedBox(res, x, y, u, v, width, height, textureWidth, textureHeight, borderSize, borderSize, borderSize, borderSize, zLevel); - } - - /** - * Draws a textured box of any size (smallest size is borderSize * 2 square) based on a fixed size textured box with continuous borders - * and filler. The provided ResourceLocation object will be bound using - * Minecraft.getMinecraft().getTextureManager().bindTexture(resourceLocation). - * - * @param res the ResourceLocation object that contains the desired image - * @param x x axis offset - * @param y y axis offset - * @param u bound resource location image x offset - * @param v bound resource location image y offset - * @param width the desired box width - * @param height the desired box height - * @param textureWidth the width of the box texture in the resource location image - * @param textureHeight the height of the box texture in the resource location image - * @param topBorder the size of the box's top border - * @param bottomBorder the size of the box's bottom border - * @param leftBorder the size of the box's left border - * @param rightBorder the size of the box's right border - * @param zLevel the zLevel to draw at - */ - public static void drawContinuousTexturedBox(ResourceLocation res, int x, int y, int u, int v, int width, int height, int textureWidth, int textureHeight, - int topBorder, int bottomBorder, int leftBorder, int rightBorder, float zLevel) - { - Minecraft.getMinecraft().getTextureManager().bindTexture(res); - drawContinuousTexturedBox(x, y, u, v, width, height, textureWidth, textureHeight, topBorder, bottomBorder, leftBorder, rightBorder, zLevel); - } - - /** - * Draws a textured box of any size (smallest size is borderSize * 2 square) based on a fixed size textured box with continuous borders - * and filler. It is assumed that the desired texture ResourceLocation object has been bound using - * Minecraft.getMinecraft().getTextureManager().bindTexture(resourceLocation). - * - * @param x x axis offset - * @param y y axis offset - * @param u bound resource location image x offset - * @param v bound resource location image y offset - * @param width the desired box width - * @param height the desired box height - * @param textureWidth the width of the box texture in the resource location image - * @param textureHeight the height of the box texture in the resource location image - * @param topBorder the size of the box's top border - * @param bottomBorder the size of the box's bottom border - * @param leftBorder the size of the box's left border - * @param rightBorder the size of the box's right border - * @param zLevel the zLevel to draw at - */ - public static void drawContinuousTexturedBox(int x, int y, int u, int v, int width, int height, int textureWidth, int textureHeight, - int topBorder, int bottomBorder, int leftBorder, int rightBorder, float zLevel) - { - GL11.glColor4f(1.0F, 1.0F, 1.0F, 1.0F); - GL11.glEnable(GL11.GL_BLEND); - OpenGlHelper.glBlendFunc(770, 771, 1, 0); - GL11.glBlendFunc(GL11.GL_SRC_ALPHA, GL11.GL_ONE_MINUS_SRC_ALPHA); - - int fillerWidth = textureWidth - leftBorder - rightBorder; - int fillerHeight = textureHeight - topBorder - bottomBorder; - int canvasWidth = width - leftBorder - rightBorder; - int canvasHeight = height - topBorder - bottomBorder; - int xPasses = canvasWidth / fillerWidth; - int remainderWidth = canvasWidth % fillerWidth; - int yPasses = canvasHeight / fillerHeight; - int remainderHeight = canvasHeight % fillerHeight; - - // Draw Border - // Top Left - drawTexturedModalRect(x, y, u, v, leftBorder, topBorder, zLevel); - // Top Right - drawTexturedModalRect(x + leftBorder + canvasWidth, y, u + leftBorder + fillerWidth, v, rightBorder, topBorder, zLevel); - // Bottom Left - drawTexturedModalRect(x, y + topBorder + canvasHeight, u, v + topBorder + fillerHeight, leftBorder, bottomBorder, zLevel); - // Bottom Right - drawTexturedModalRect(x + leftBorder + canvasWidth, y + topBorder + canvasHeight, u + leftBorder + fillerWidth, v + topBorder + fillerHeight, rightBorder, bottomBorder, zLevel); - - for (int i = 0; i < xPasses + (remainderWidth > 0 ? 1 : 0); i++) - { - // Top Border - drawTexturedModalRect(x + leftBorder + (i * fillerWidth), y, u + leftBorder, v, (i == xPasses ? remainderWidth : fillerWidth), topBorder, zLevel); - // Bottom Border - drawTexturedModalRect(x + leftBorder + (i * fillerWidth), y + topBorder + canvasHeight, u + leftBorder, v + topBorder + fillerHeight, (i == xPasses ? remainderWidth : fillerWidth), bottomBorder, zLevel); - - // Throw in some filler for good measure - for (int j = 0; j < yPasses + (remainderHeight > 0 ? 1 : 0); j++) - drawTexturedModalRect(x + leftBorder + (i * fillerWidth), y + topBorder + (j * fillerHeight), u + leftBorder, v + topBorder, (i == xPasses ? remainderWidth : fillerWidth), (j == yPasses ? remainderHeight : fillerHeight), zLevel); - } - - // Side Borders - for (int j = 0; j < yPasses + (remainderHeight > 0 ? 1 : 0); j++) - { - // Left Border - drawTexturedModalRect(x, y + topBorder + (j * fillerHeight), u, v + topBorder, leftBorder, (j == yPasses ? remainderHeight : fillerHeight), zLevel); - // Right Border - drawTexturedModalRect(x + leftBorder + canvasWidth, y + topBorder + (j * fillerHeight), u + leftBorder + fillerWidth, v + topBorder, rightBorder, (j == yPasses ? remainderHeight : fillerHeight), zLevel); - } - } - - public static void drawTexturedModalRect(int x, int y, int u, int v, int width, int height, float zLevel) - { - float var7 = 0.00390625F; - float var8 = 0.00390625F; - Tessellator tessellator = Tessellator.instance; - tessellator.startDrawingQuads(); - tessellator.addVertexWithUV((x + 0), (y + height), zLevel, ((u + 0) * var7), ((v + height) * var8)); - tessellator.addVertexWithUV((x + width), (y + height), zLevel, ((u + width) * var7), ((v + height) * var8)); - tessellator.addVertexWithUV((x + width), (y + 0), zLevel, ((u + width) * var7), ((v + 0) * var8)); - tessellator.addVertexWithUV((x + 0), (y + 0), zLevel, ((u + 0) * var7), ((v + 0) * var8)); - tessellator.draw(); - } - - /** - * Renders the item's overlay information. Examples being stack count or damage on top of the item's image at the specified position. - */ - public static void renderItemOverlayIntoGUI(FontRenderer fontRenderer, ItemStack itemStack, int x, int y) - { - renderItemOverlayIntoGUI(fontRenderer, itemStack, x, y, true, true); - } - - /** - * Renders the item's overlay information. Examples being stack count or damage on top of the item's image at the specified position. - */ - public static void renderItemOverlayIntoGUI(FontRenderer fontRenderer, ItemStack itemStack, int x, int y, boolean showDamageBar, boolean showCount) - { - if (itemStack != null && (showDamageBar || showCount)) - { - if (itemStack.isItemDamaged() && showDamageBar) - { - int var11 = (int) Math.round(13.0D - itemStack.getItemDamageForDisplay() * 13.0D / itemStack.getMaxDamage()); - int var7 = (int) Math.round(255.0D - itemStack.getItemDamageForDisplay() * 255.0D / itemStack.getMaxDamage()); - GL11.glDisable(GL11.GL_LIGHTING); - GL11.glDisable(GL11.GL_DEPTH_TEST); - GL11.glDisable(GL11.GL_TEXTURE_2D); - Tessellator var8 = Tessellator.instance; - int var9 = 255 - var7 << 16 | var7 << 8; - int var10 = (255 - var7) / 4 << 16 | 16128; - renderQuad(var8, x + 2, y + 13, 13, 2, 0); - renderQuad(var8, x + 2, y + 13, 12, 1, var10); - renderQuad(var8, x + 2, y + 13, var11, 1, var9); - GL11.glEnable(GL11.GL_TEXTURE_2D); - GL11.glEnable(GL11.GL_LIGHTING); - GL11.glEnable(GL11.GL_DEPTH_TEST); - GL11.glColor4f(1.0F, 1.0F, 1.0F, 1.0F); - } - - if (showCount) - { - int count = 0; - - if (itemStack.getMaxStackSize() > 1) - count = HUDUtils.countInInventory(Minecraft.getMinecraft().thePlayer, itemStack.getItem(), itemStack.getItemDamage()); - else if (itemStack.getItem().equals(Items.bow)) - count = HUDUtils.countInInventory(Minecraft.getMinecraft().thePlayer, Items.arrow); - - if (count > 1) - { - String var6 = "" + count; - GL11.glDisable(GL11.GL_LIGHTING); - GL11.glDisable(GL11.GL_DEPTH_TEST); - fontRenderer.drawStringWithShadow(var6, x + 19 - 2 - fontRenderer.getStringWidth(var6), y + 6 + 3, 16777215); - GL11.glEnable(GL11.GL_LIGHTING); - GL11.glEnable(GL11.GL_DEPTH_TEST); - } - } - } - } - - /** - * Adds a quad to the tesselator at the specified position with the set width and height and color. Args: tessellator, x, y, width, - * height, color - */ - public static void renderQuad(Tessellator tessellator, int x, int y, int width, int height, int color) - { - tessellator.startDrawingQuads(); - tessellator.setColorOpaque_I(color); - tessellator.addVertex((x + 0), (y + 0), 0.0D); - tessellator.addVertex((x + 0), (y + height), 0.0D); - tessellator.addVertex((x + width), (y + height), 0.0D); - tessellator.addVertex((x + width), (y + 0), 0.0D); - tessellator.draw(); - } - - public static int countInInventory(EntityPlayer player, Item item) - { - return countInInventory(player, item, -1); - } - - public static int countInInventory(EntityPlayer player, Item item, int md) - { - int count = 0; - for (int i = 0; i < player.inventory.mainInventory.length; i++) - if (player.inventory.mainInventory[i] != null && item.equals(player.inventory.mainInventory[i].getItem()) && (md == -1 || player.inventory.mainInventory[i].getItemDamage() == md)) - count += player.inventory.mainInventory[i].stackSize; - return count; - } - - public static String stripCtrl(String s) - { - return s.replaceAll("(?i)\247[0-9a-fklmnor]", ""); - } -} - diff --git a/src-backup/main/java/WayofTime/alchemicalWizardry/client/renderer/RenderHelper.java b/src-backup/main/java/WayofTime/alchemicalWizardry/client/renderer/RenderHelper.java deleted file mode 100644 index e9cfc87a..00000000 --- a/src-backup/main/java/WayofTime/alchemicalWizardry/client/renderer/RenderHelper.java +++ /dev/null @@ -1,185 +0,0 @@ -package WayofTime.alchemicalWizardry.client.renderer; - -import java.util.ArrayList; -import java.util.List; - -import net.minecraft.client.Minecraft; -import net.minecraft.client.gui.GuiChat; -import net.minecraft.client.gui.ScaledResolution; -import net.minecraft.entity.player.EntityPlayer; -import net.minecraft.item.Item; -import net.minecraft.item.ItemStack; -import net.minecraft.tileentity.TileEntity; -import net.minecraft.util.MovingObjectPosition; -import net.minecraft.world.World; -import net.minecraftforge.common.util.ForgeDirection; - -import org.lwjgl.opengl.GL11; - -import WayofTime.alchemicalWizardry.api.alchemy.energy.IAlchemyGoggles; -import WayofTime.alchemicalWizardry.api.alchemy.energy.IReagentHandler; -import WayofTime.alchemicalWizardry.api.alchemy.energy.ReagentContainerInfo; -import WayofTime.alchemicalWizardry.api.alchemy.energy.ReagentRegistry; -import WayofTime.alchemicalWizardry.common.spell.complex.effect.SpellHelper; - -public class RenderHelper -{ - public static boolean showEquippedItem = true; - public static boolean enableItemName = false; - public static boolean enabled = true; - public static boolean showInChat = true; - - private static int xOffsetDefault = +50; - public static int xOffset = xOffsetDefault; - private static int yOffsetDefault = 2; - public static int yOffset = yOffsetDefault; - private static int yOffsetBottomCenterDefault = 41; - public static int yOffsetBottomCenter = yOffsetBottomCenterDefault; - private static boolean applyXOffsetToCenterDefault = true; - public static boolean applyXOffsetToCenter = applyXOffsetToCenterDefault; - private static boolean applyYOffsetToMiddleDefault = false; - public static boolean applyYOffsetToMiddle = applyYOffsetToMiddleDefault; - - public static String listMode = "horizontal"; - public static String alignMode = "bottomcenter"; - - private static ScaledResolution scaledResolution; - - public static boolean onTickInGame(Minecraft mc) - { - if (enabled && (mc.inGameHasFocus || mc.currentScreen == null || (mc.currentScreen instanceof GuiChat && showInChat)) - && !mc.gameSettings.showDebugInfo) - { - EntityPlayer player = mc.thePlayer; - World world = mc.theWorld; - if(SpellHelper.canPlayerSeeAlchemy(player)) - { - GL11.glColor4f(1.0f, 1.0f, 1.0f, 1.0f); - scaledResolution = new ScaledResolution(mc, mc.displayWidth, mc.displayHeight); - displayArmorStatus(mc); - GL11.glColor4f(1.0f, 1.0f, 1.0f, 1.0f); - } - - } - - return true; - } - - private static List getHUDElements(Minecraft mc) - { - List elements = new ArrayList(); - - MovingObjectPosition movingobjectposition = mc.objectMouseOver; - World world = mc.theWorld; - - if (movingobjectposition == null) - { - return elements; - } else - { - if (movingobjectposition.typeOfHit == MovingObjectPosition.MovingObjectType.BLOCK) - { - int x = movingobjectposition.blockX; - int y = movingobjectposition.blockY; - int z = movingobjectposition.blockZ; - - TileEntity tile = world.getTileEntity(x, y, z); - - if(!(tile instanceof IReagentHandler)) - { - return elements; - } - - IReagentHandler relay = (IReagentHandler)tile; - - ReagentContainerInfo[] infos = relay.getContainerInfo(ForgeDirection.getOrientation(movingobjectposition.sideHit)); - - if(infos != null) - { - for(ReagentContainerInfo info : infos) - { - if(info == null || info.reagent == null || info.reagent.reagent == null) - { - continue; - } - - ItemStack itemStack = ReagentRegistry.getItemForReagent(info.reagent.reagent); - - if (itemStack != null) - elements.add(new HUDElement(itemStack, 16, 16, 2, info.reagent.amount)); - } - } - } - } - - return elements; - } - - private static int getX(int width) - { - if (alignMode.toLowerCase().contains("center")) - return scaledResolution.getScaledWidth() / 2 - width / 2 + (applyXOffsetToCenter ? xOffset : 0); - else if (alignMode.toLowerCase().contains("right")) - return scaledResolution.getScaledWidth() - width - xOffset; - else - return xOffset; - } - - private static int getY(int rowCount, int height) - { - if (alignMode.toLowerCase().contains("middle")) - return (scaledResolution.getScaledHeight() / 2) - ((rowCount * height) / 2) + (applyYOffsetToMiddle ? yOffset : 0); - else if (alignMode.equalsIgnoreCase("bottomleft") || alignMode.equalsIgnoreCase("bottomright")) - return scaledResolution.getScaledHeight() - (rowCount * height) - yOffset; - else if (alignMode.equalsIgnoreCase("bottomcenter")) - return scaledResolution.getScaledHeight() - (rowCount * height) - yOffsetBottomCenter; - else - return yOffset; - } - - private static int getElementsWidth(List elements) - { - int r = 0; - for (HUDElement he : elements) - r += he.width(); - - return r; - } - - private static void displayArmorStatus(Minecraft mc) - { - List elements = getHUDElements(mc); - - if (elements.size() > 0) - { - int yOffset = enableItemName ? 18 : 16; - - if (listMode.equalsIgnoreCase("vertical")) - { - int yBase = getY(elements.size(), yOffset); - - for (HUDElement e : elements) - { - e.renderToHud((alignMode.toLowerCase().contains("right") ? getX(0) : getX(e.width())), yBase); - yBase += yOffset; - } - } - else if (listMode.equalsIgnoreCase("horizontal")) - { - int totalWidth = getElementsWidth(elements); - int yBase = getY(1, yOffset); - int xBase = getX(totalWidth); - int prevX = 0; - - for (HUDElement e : elements) - { - e.renderToHud(xBase + prevX + (alignMode.toLowerCase().contains("right") ? e.width() : 0), yBase); - prevX += (e.width()); - } - }else if(listMode.equalsIgnoreCase("compound")) - { - //TODO - } - } - } -} diff --git a/src-backup/main/java/WayofTime/alchemicalWizardry/common/AlchemicalWizardryEventHooks.java b/src-backup/main/java/WayofTime/alchemicalWizardry/common/AlchemicalWizardryEventHooks.java deleted file mode 100644 index c3ed52af..00000000 --- a/src-backup/main/java/WayofTime/alchemicalWizardry/common/AlchemicalWizardryEventHooks.java +++ /dev/null @@ -1,477 +0,0 @@ -package WayofTime.alchemicalWizardry.common; - -import java.util.ArrayList; -import java.util.HashMap; -import java.util.Iterator; -import java.util.List; -import java.util.Map; - -import net.minecraft.entity.Entity; -import net.minecraft.entity.EntityLivingBase; -import net.minecraft.entity.IProjectile; -import net.minecraft.entity.monster.EntityCreeper; -import net.minecraft.entity.monster.EntityMob; -import net.minecraft.entity.player.EntityPlayer; -import net.minecraft.entity.player.PlayerCapabilities; -import net.minecraft.entity.projectile.EntityArrow; -import net.minecraft.entity.projectile.EntityThrowable; -import net.minecraft.potion.Potion; -import net.minecraft.potion.PotionEffect; -import net.minecraft.tileentity.TileEntity; -import net.minecraft.util.AxisAlignedBB; -import net.minecraft.util.DamageSource; -import net.minecraft.util.Vec3; -import net.minecraftforge.event.entity.living.EnderTeleportEvent; -import net.minecraftforge.event.entity.living.LivingAttackEvent; -import net.minecraftforge.event.entity.living.LivingEvent.LivingJumpEvent; -import net.minecraftforge.event.entity.living.LivingEvent.LivingUpdateEvent; -import net.minecraftforge.event.entity.living.LivingSpawnEvent.CheckSpawn; -import WayofTime.alchemicalWizardry.AlchemicalWizardry; -import WayofTime.alchemicalWizardry.common.entity.projectile.EnergyBlastProjectile; -import WayofTime.alchemicalWizardry.common.spell.complex.effect.SpellHelper; -import WayofTime.alchemicalWizardry.common.tileEntity.TEMasterStone; -import cpw.mods.fml.common.ObfuscationReflectionHelper; -import cpw.mods.fml.common.eventhandler.Event.Result; -import cpw.mods.fml.common.eventhandler.SubscribeEvent; -import cpw.mods.fml.common.gameevent.PlayerEvent.PlayerRespawnEvent; - -public class AlchemicalWizardryEventHooks -{ - public static Map playerFlightBuff = new HashMap(); - public static Map playerBoostStepHeight = new HashMap(); - public static List playersWith1Step = new ArrayList(); - - public static Map> respawnMap = new HashMap(); - public static Map> forceSpawnMap = new HashMap(); - - @SubscribeEvent - public void onPlayerDamageEvent(LivingAttackEvent event) - { - if(event.source.isProjectile()) - { - if (event.entityLiving.isPotionActive(AlchemicalWizardry.customPotionProjProt) && event.isCancelable()) - { - event.setCanceled(true); - } - } - } - - @SubscribeEvent - public void onLivingSpawnEvent(CheckSpawn event) - { - if(!(event.entityLiving instanceof EntityMob)) - { - return; - } - - String respawnRitual = "AW028SpawnWard"; - - Integer dimension = new Integer(event.world.provider.dimensionId); - if(respawnMap.containsKey(dimension)) - { - List list = respawnMap.get(dimension); - - if(list != null) - { - for(CoordAndRange coords : list) - { - TileEntity tile = event.world.getTileEntity(coords.xCoord, coords.yCoord, coords.zCoord); - - if(tile instanceof TEMasterStone && ((TEMasterStone) tile).isRunning && ((TEMasterStone) tile).getCurrentRitual().equals(respawnRitual)) - { - if(event.x > coords.xCoord-coords.horizRadius && event.x < coords.xCoord+coords.horizRadius && event.z > coords.zCoord-coords.horizRadius && event.z < coords.zCoord+coords.horizRadius && event.y > coords.yCoord-coords.vertRadius && event.y < coords.yCoord+coords.vertRadius) - { - switch(event.getResult()) - { - case ALLOW: - event.setResult(Result.DEFAULT); - break; - case DEFAULT: - event.setResult(Result.DENY); - break; - case DENY: - break; - default: - break; - } - break; - } - }else - { - list.remove(coords); - } - } - } - } - - if(event.entityLiving instanceof EntityCreeper) - { - return; - } - - String forceSpawnRitual = "AW029VeilOfEvil"; - - if(forceSpawnMap.containsKey(dimension)) - { - List list = forceSpawnMap.get(dimension); - - if(list != null) - { - for(CoordAndRange coords : list) - { - TileEntity tile = event.world.getTileEntity(coords.xCoord, coords.yCoord, coords.zCoord); - - if(tile instanceof TEMasterStone && ((TEMasterStone) tile).isRunning && ((TEMasterStone) tile).getCurrentRitual().equals(forceSpawnRitual)) - { - if(event.x > coords.xCoord-coords.horizRadius && event.x < coords.xCoord+coords.horizRadius && event.z > coords.zCoord-coords.horizRadius && event.z < coords.zCoord+coords.horizRadius && event.y > coords.yCoord-coords.vertRadius && event.y < coords.yCoord+coords.vertRadius) - { - switch(event.getResult()) - { - case ALLOW: - break; - case DEFAULT: - event.setResult(Result.ALLOW); - break; - case DENY: - event.setResult(Result.DEFAULT); - break; - default: - break; - } - break; - } - }else - { - list.remove(coords); - } - } - } - } - } - - @SubscribeEvent - public void onPlayerRespawnEvent(PlayerRespawnEvent event) - { - if(AlchemicalWizardry.respawnWithDebuff) - { - event.player.addPotionEffect(new PotionEffect(AlchemicalWizardry.customPotionSoulFray.id, 20*60*5,0)); - } - } - - @SubscribeEvent - public void onLivingJumpEvent(LivingJumpEvent event) - { - if (event.entityLiving.isPotionActive(AlchemicalWizardry.customPotionBoost)) - { - int i = event.entityLiving.getActivePotionEffect(AlchemicalWizardry.customPotionBoost).getAmplifier(); - event.entityLiving.motionY += (0.1f) * (2 + i); - } - - if(event.entityLiving.isPotionActive(AlchemicalWizardry.customPotionHeavyHeart)) - { - event.entityLiving.motionY = 0; - } - } - - @SubscribeEvent - public void onEndermanTeleportEvent(EnderTeleportEvent event) - { - if(event.entityLiving.isPotionActive(AlchemicalWizardry.customPotionPlanarBinding) && event.isCancelable()) - { - event.setCanceled(true); - } - } - - @SubscribeEvent - public void onEntityDamaged(LivingAttackEvent event) - { - EntityLivingBase entityAttacked = event.entityLiving; - - if (entityAttacked.isPotionActive(AlchemicalWizardry.customPotionReciprocation)) - { - Entity entityAttacking = event.source.getSourceOfDamage(); - - if (entityAttacking != null && entityAttacking instanceof EntityLivingBase) - { - int i = event.entityLiving.getActivePotionEffect(AlchemicalWizardry.customPotionReciprocation).getAmplifier(); - float damageRecieve = event.ammount / 2 * (i + 1); - ((EntityLivingBase) entityAttacking).attackEntityFrom(DamageSource.generic, damageRecieve); - } - } - - if(entityAttacked.isPotionActive(AlchemicalWizardry.customPotionFlameCloak)) - { - int i = event.entityLiving.getActivePotionEffect(AlchemicalWizardry.customPotionFlameCloak).getAmplifier(); - - Entity entityAttacking = event.source.getSourceOfDamage(); - - if(entityAttacking != null && entityAttacking instanceof EntityLivingBase && !entityAttacking.isImmuneToFire() && !((EntityLivingBase)entityAttacking).isPotionActive(Potion.fireResistance)) - { - entityAttacking.attackEntityFrom(DamageSource.inFire, 2*i+2); - entityAttacking.setFire(3); - } - } - } - -// @ForgeSubscribe -// public void onFOVUpdate(FOVUpdateEvent event) -// { -// event.setResult(Result.DEFAULT); -// } - -// @SubscribeEvent -// public void onPlayerTickEnd(PlayerTickEvent event) -// { -// if(event.type.equals(Type.PLAYER) && event.phase.equals(TickEvent.Phase.END)) -// { -// ObfuscationReflectionHelper.setPrivateValue(PlayerCapabilities.class, event.player.capabilities, Float.valueOf(0.1f), new String[]{"walkSpeed", "g", "field_75097_g"}); -// } -// } - - @SubscribeEvent - public void onEntityUpdate(LivingUpdateEvent event) - { - EntityLivingBase entityLiving = event.entityLiving; - double x = entityLiving.posX; - double y = entityLiving.posY; - double z = entityLiving.posZ; - - Vec3 blockVector = SpellHelper.getEntityBlockVector(entityLiving); - int xPos = (int)(blockVector.xCoord); - int yPos = (int)(blockVector.yCoord); - int zPos = (int)(blockVector.zCoord); - - if(entityLiving instanceof EntityPlayer) - { - ObfuscationReflectionHelper.setPrivateValue(PlayerCapabilities.class, ((EntityPlayer)event.entityLiving).capabilities, Float.valueOf(0.1f), new String[]{"walkSpeed", "g", "field_75097_g"}); - } - - if (entityLiving instanceof EntityPlayer && entityLiving.worldObj.isRemote) - { - EntityPlayer entityPlayer = (EntityPlayer) entityLiving; - boolean highStepListed = playersWith1Step.contains(entityPlayer.getDisplayName()); - boolean hasHighStep = entityPlayer.isPotionActive(AlchemicalWizardry.customPotionBoost); - - if (hasHighStep && !highStepListed) - { - playersWith1Step.add(SpellHelper.getUsername(entityPlayer)); - } - - if (!hasHighStep && highStepListed) - { - playersWith1Step.remove(SpellHelper.getUsername(entityPlayer)); - entityPlayer.stepHeight = 0.5F; - } - } - - if (event.entityLiving.isPotionActive(AlchemicalWizardry.customPotionFeatherFall)) - { - event.entityLiving.fallDistance = 0; - } - - if (event.entityLiving.isPotionActive(AlchemicalWizardry.customPotionDrowning)) - { - int i = event.entityLiving.getActivePotionEffect(AlchemicalWizardry.customPotionDrowning).getAmplifier(); - - if (event.entityLiving.worldObj.getWorldTime() % ((int) (20 / (i + 1))) == 0) - { - event.entityLiving.attackEntityFrom(DamageSource.drown, 2); - event.entityLiving.hurtResistantTime = Math.min(event.entityLiving.hurtResistantTime, 20 / (i + 1)); - } - } - - if (event.entityLiving.isPotionActive(AlchemicalWizardry.customPotionBoost)) - { - int i = event.entityLiving.getActivePotionEffect(AlchemicalWizardry.customPotionBoost).getAmplifier(); - EntityLivingBase entity = event.entityLiving; - //if(!entity.isSneaking()) - { - float percentIncrease = (i + 1) * 0.05f; - - if (event.entityLiving instanceof EntityPlayer) - { - EntityPlayer entityPlayer = (EntityPlayer) event.entityLiving; - entityPlayer.stepHeight = 1.0f; - - if((entityPlayer.onGround || entityPlayer.capabilities.isFlying) && entityPlayer.moveForward > 0F) - entityPlayer.moveFlying(0F, 1F, entityPlayer.capabilities.isFlying ? (percentIncrease/2.0f) : percentIncrease); - } - } - } - - if (event.entityLiving.isPotionActive(AlchemicalWizardry.customPotionProjProt)) - { - int i = event.entityLiving.getActivePotionEffect(AlchemicalWizardry.customPotionProjProt).getAmplifier(); - EntityLivingBase entity = event.entityLiving; - int posX = (int) Math.round(entity.posX - 0.5f); - int posY = (int) Math.round(entity.posY); - int posZ = (int) Math.round(entity.posZ - 0.5f); - int d0 = (int)((i+1)*2.5); - AxisAlignedBB axisalignedbb = AxisAlignedBB.getBoundingBox(posX - 0.5, posY - 0.5, posZ - 0.5, posX + 0.5, posY + 0.5, posZ + 0.5).expand(d0, d0, d0); - List list = event.entityLiving.worldObj.getEntitiesWithinAABB(Entity.class, axisalignedbb); - Iterator iterator = list.iterator(); - EntityLivingBase livingEntity; - - while (iterator.hasNext()) - { - Entity projectile = (Entity) iterator.next(); - - if (projectile == null) - { - continue; - } - - if (!(projectile instanceof IProjectile)) - { - continue; - } - - Entity throwingEntity = null; - - if (projectile instanceof EntityArrow) - { - throwingEntity = ((EntityArrow) projectile).shootingEntity; - } else if (projectile instanceof EnergyBlastProjectile) - { - throwingEntity = ((EnergyBlastProjectile) projectile).shootingEntity; - }else if(projectile instanceof EntityThrowable) - { - throwingEntity = ((EntityThrowable) projectile).getThrower(); - } - - if(throwingEntity != null && throwingEntity.equals(entity)) - { - continue; - } - - double delX = projectile.posX - entity.posX; - double delY = projectile.posY - entity.posY; - double delZ = projectile.posZ - entity.posZ; - - if(throwingEntity != null) - { - delX = -projectile.posX + throwingEntity.posX; - delY = -projectile.posY + (throwingEntity.posY + throwingEntity.getEyeHeight()); - delZ = -projectile.posZ + throwingEntity.posZ; - } - - double curVel = Math.sqrt(delX * delX + delY * delY + delZ * delZ); - - delX /= curVel; - delY /= curVel; - delZ /= curVel; - double newVel = Math.sqrt(projectile.motionX * projectile.motionX + projectile.motionY * projectile.motionY + projectile.motionZ * projectile.motionZ); - projectile.motionX = newVel * delX; - projectile.motionY = newVel * delY; - projectile.motionZ = newVel * delZ; - //TODO make this not affect player's projectiles - } - } - - if (event.entityLiving.isPotionActive(AlchemicalWizardry.customPotionFlight)) - { - if (event.entityLiving instanceof EntityPlayer) - { - EntityPlayer entityPlayer = (EntityPlayer) event.entityLiving; - String ownerName = SpellHelper.getUsername(entityPlayer); - playerFlightBuff.put(ownerName, true); - entityPlayer.capabilities.allowFlying = true; - //entityPlayer.sendPlayerAbilities(); - } - } else - { - if (event.entityLiving instanceof EntityPlayer) - { - EntityPlayer entityPlayer = (EntityPlayer) event.entityLiving; - String ownerName = SpellHelper.getUsername(entityPlayer); - - if (!playerFlightBuff.containsKey(ownerName)) - { - playerFlightBuff.put(ownerName, false); - } - - if (playerFlightBuff.get(ownerName)) - { - playerFlightBuff.put(ownerName, false); - - if (!entityPlayer.capabilities.isCreativeMode) - { - entityPlayer.capabilities.allowFlying = false; - entityPlayer.capabilities.isFlying = false; - entityPlayer.sendPlayerAbilities(); - } - } - } - } - - if(entityLiving.isPotionActive(AlchemicalWizardry.customPotionFlameCloak)) - { - entityLiving.worldObj.spawnParticle("flame", x+SpellHelper.gaussian(1),y-1.3+SpellHelper.gaussian(0.3),z+SpellHelper.gaussian(1), 0, 0.06d, 0); - - int i = event.entityLiving.getActivePotionEffect(AlchemicalWizardry.customPotionFlameCloak).getAmplifier(); - double range = i*0.5; - - List entities = SpellHelper.getEntitiesInRange(entityLiving.worldObj, x, y, z, range, range); - if(entities!=null) - { - for(Entity entity : entities) - { - if(!entity.equals(entityLiving)&&!entity.isImmuneToFire()&&!(entity instanceof EntityLivingBase && ((EntityLivingBase)entity).isPotionActive(Potion.fireResistance))) - { - entity.setFire(3); - } - } - } - } - - if(entityLiving.isPotionActive(AlchemicalWizardry.customPotionIceCloak)) - { - if(entityLiving.worldObj.getWorldTime()%2==0) - entityLiving.worldObj.spawnParticle("reddust", x+SpellHelper.gaussian(1),y-1.3+SpellHelper.gaussian(0.3),z+SpellHelper.gaussian(1), 0x74,0xbb,0xfb); - - int r = event.entityLiving.getActivePotionEffect(AlchemicalWizardry.customPotionIceCloak).getAmplifier(); - int horizRange = r+1; - int vertRange = 1; - - if(!entityLiving.worldObj.isRemote) - { - for(int i=-horizRange; i<=horizRange;i++) - { - for(int k=-horizRange; k<=horizRange;k++) - { - for(int j=-vertRange-1; j<=vertRange-1; j++) - { - SpellHelper.freezeWaterBlock(entityLiving.worldObj, xPos+i, yPos+j, zPos+k); - } - } - } - } - } - - if(entityLiving.isPotionActive(AlchemicalWizardry.customPotionHeavyHeart)) - { - entityLiving.worldObj.spawnParticle("flame", x+SpellHelper.gaussian(1),y-1.3+SpellHelper.gaussian(0.3),z+SpellHelper.gaussian(1), 0, 0.06d, 0); - - int i = event.entityLiving.getActivePotionEffect(AlchemicalWizardry.customPotionHeavyHeart).getAmplifier(); - double decrease = 0.025*(i+1); - - if(entityLiving.motionY>-0.9) - { - entityLiving.motionY-=decrease; - } - } - - if(entityLiving.isPotionActive(AlchemicalWizardry.customPotionFireFuse)) - { - entityLiving.worldObj.spawnParticle("flame", x+SpellHelper.gaussian(1),y-1.3+SpellHelper.gaussian(0.3),z+SpellHelper.gaussian(1), 0, 0.06d, 0); - - int r = event.entityLiving.getActivePotionEffect(AlchemicalWizardry.customPotionFireFuse).getAmplifier(); - int radius = r+1; - - if(entityLiving.getActivePotionEffect(AlchemicalWizardry.customPotionFireFuse).getDuration()<=2) - { - entityLiving.worldObj.createExplosion(null, x, y, z, radius, false); - } - } - } -} diff --git a/src-backup/main/java/WayofTime/alchemicalWizardry/common/AlchemicalWizardryFuelHandler.java b/src-backup/main/java/WayofTime/alchemicalWizardry/common/AlchemicalWizardryFuelHandler.java deleted file mode 100644 index 157237ab..00000000 --- a/src-backup/main/java/WayofTime/alchemicalWizardry/common/AlchemicalWizardryFuelHandler.java +++ /dev/null @@ -1,72 +0,0 @@ -package WayofTime.alchemicalWizardry.common; - -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.server.MinecraftServer; -import WayofTime.alchemicalWizardry.ModItems; -import WayofTime.alchemicalWizardry.common.items.LavaCrystal; -import WayofTime.alchemicalWizardry.common.spell.complex.effect.SpellHelper; -import cpw.mods.fml.common.IFuelHandler; - -public class AlchemicalWizardryFuelHandler implements IFuelHandler -{ - @Override - public int getBurnTime(ItemStack fuel) - { - ItemStack itemStack = fuel; - if(itemStack == null) - { - return 0; - } - - Item fuelItem = itemStack.getItem(); - - if (fuelItem.equals(ModItems.lavaCrystal)) - { - /*ItemStack newItem = new ItemStack(AlchemicalWizardry.lavaCrystal); - newItem.getItem().setDamage(newItem, 50); - fuel.getItem().setContainerItem(((LavaCrystal)newItem.getItem()).change()); - */ - LavaCrystal item = (LavaCrystal) fuel.getItem(); - - if (item.hasEnoughEssence(fuel)) - { - return 200; - } else - { - NBTTagCompound tag = itemStack.stackTagCompound; - - if (tag == null) - { - return 0; - } - - if (MinecraftServer.getServer() == null) - { - return 0; - } - - if (MinecraftServer.getServer().getConfigurationManager() == null) - { - return 0; - } - - EntityPlayer owner = SpellHelper.getPlayerForUsername(tag.getString("ownerName")); - - if (owner == null) - { - return 0; - } - - owner.addPotionEffect(new PotionEffect(Potion.confusion.id, 80)); - return 0; - } - } - - return 0; - } -} diff --git a/src-backup/main/java/WayofTime/alchemicalWizardry/common/AlchemicalWizardryTickHandler.java b/src-backup/main/java/WayofTime/alchemicalWizardry/common/AlchemicalWizardryTickHandler.java deleted file mode 100644 index 40eaf0f1..00000000 --- a/src-backup/main/java/WayofTime/alchemicalWizardry/common/AlchemicalWizardryTickHandler.java +++ /dev/null @@ -1,47 +0,0 @@ -package WayofTime.alchemicalWizardry.common; - -import java.util.EnumSet; - -import net.minecraft.entity.player.EntityPlayer; -import net.minecraft.entity.player.PlayerCapabilities; -import net.minecraft.server.MinecraftServer; -import cpw.mods.fml.common.ObfuscationReflectionHelper; - -@Deprecated -public class AlchemicalWizardryTickHandler //implements ITickHandler -{ -// public void tickStart(EnumSet type, Object... tickData) -// { -// } -// -// public EnumSet ticks() -// { -// return EnumSet.of(TickType.PLAYER); -// } -// -// public String getLabel() -// { -// return "BloodMagic"; -// } -// -// public void tickEnd(EnumSet type, Object... tickData) -// { -// String[] usernames = MinecraftServer.getServer().getAllUsernames(); -// -// if (usernames == null) -// { -// return; -// } -// -// for (String userName : usernames) -// { -// EntityPlayer entityPlayer = MinecraftServer.getServer().getConfigurationManager().getPlayerForUsername(userName); -// -// if (entityPlayer != null) -// { -// ObfuscationReflectionHelper.setPrivateValue(PlayerCapabilities.class, entityPlayer.capabilities, Float.valueOf(0.1f), new String[]{"walkSpeed", "g", "field_75097_g"}); -// //entityPlayer.sendPlayerAbilities(); -// } -// } -// } -} diff --git a/src-backup/main/java/WayofTime/alchemicalWizardry/common/ArmourComponent.java b/src-backup/main/java/WayofTime/alchemicalWizardry/common/ArmourComponent.java deleted file mode 100644 index fb4f155b..00000000 --- a/src-backup/main/java/WayofTime/alchemicalWizardry/common/ArmourComponent.java +++ /dev/null @@ -1,23 +0,0 @@ -package WayofTime.alchemicalWizardry.common; - -public class ArmourComponent -{ - private int xOff; - private int zOff; - - public ArmourComponent(int xOff, int zOff) - { - this.xOff = xOff; - this.zOff = zOff; - } - - public int getXOff() - { - return xOff; - } - - public int getZOff() - { - return zOff; - } -} diff --git a/src-backup/main/java/WayofTime/alchemicalWizardry/common/CommonProxy.java b/src-backup/main/java/WayofTime/alchemicalWizardry/common/CommonProxy.java deleted file mode 100644 index 7135097c..00000000 --- a/src-backup/main/java/WayofTime/alchemicalWizardry/common/CommonProxy.java +++ /dev/null @@ -1,94 +0,0 @@ -package WayofTime.alchemicalWizardry.common; - -import net.minecraft.world.World; -import WayofTime.alchemicalWizardry.AlchemicalWizardry; -import WayofTime.alchemicalWizardry.common.entity.projectile.EnergyBlastProjectile; -import WayofTime.alchemicalWizardry.common.entity.projectile.EntityBloodLightProjectile; -import WayofTime.alchemicalWizardry.common.entity.projectile.EntityEnergyBazookaMainProjectile; -import WayofTime.alchemicalWizardry.common.entity.projectile.EntityEnergyBazookaSecondaryProjectile; -import WayofTime.alchemicalWizardry.common.entity.projectile.EntityMeteor; -import WayofTime.alchemicalWizardry.common.entity.projectile.EntityParticleBeam; -import WayofTime.alchemicalWizardry.common.entity.projectile.ExplosionProjectile; -import WayofTime.alchemicalWizardry.common.entity.projectile.FireProjectile; -import WayofTime.alchemicalWizardry.common.entity.projectile.HolyProjectile; -import WayofTime.alchemicalWizardry.common.entity.projectile.IceProjectile; -import WayofTime.alchemicalWizardry.common.entity.projectile.LightningBoltProjectile; -import WayofTime.alchemicalWizardry.common.entity.projectile.MudProjectile; -import WayofTime.alchemicalWizardry.common.entity.projectile.TeleportProjectile; -import WayofTime.alchemicalWizardry.common.entity.projectile.WaterProjectile; -import WayofTime.alchemicalWizardry.common.entity.projectile.WindGustProjectile; -import WayofTime.alchemicalWizardry.common.spell.complex.EntitySpellProjectile; -import WayofTime.alchemicalWizardry.common.tileEntity.TEAltar; -import WayofTime.alchemicalWizardry.common.tileEntity.TEMasterStone; -import cpw.mods.fml.common.registry.EntityRegistry; -import cpw.mods.fml.common.registry.GameRegistry; - -public class CommonProxy -{ - public static String ITEMS_PNG = "/WayofTime/alchemicalWizardry/items.png"; - public static String BLOCK_PNG = "/WayofTime/alchemicalWizardry/block.png"; - - // Client stuff - public void registerRenderers() - { - // Nothing here as the server doesn't render graphics! - } - - public void registerEntities() - { - } - - public World getClientWorld() - { - return null; - } - - public void registerActions() - { - } - - public void registerEvents() - { - - } - - public void registerSoundHandler() - { - // Nothing here as this is a server side proxy - } - - public void registerTileEntities() - { - GameRegistry.registerTileEntity(TEAltar.class, "containerAltar"); - GameRegistry.registerTileEntity(TEMasterStone.class, "containerMasterStone"); - } - - public void registerEntityTrackers() - { - EntityRegistry.registerModEntity(EnergyBlastProjectile.class, "energyBlastProjectile", 0, AlchemicalWizardry.instance, 128, 5, true); - EntityRegistry.registerModEntity(FireProjectile.class, "fireProjectile", 1, AlchemicalWizardry.instance, 128, 5, true); - EntityRegistry.registerModEntity(IceProjectile.class, "iceProjectile", 2, AlchemicalWizardry.instance, 128, 5, true); - EntityRegistry.registerModEntity(ExplosionProjectile.class, "explosionProjectile", 3, AlchemicalWizardry.instance, 128, 5, true); - EntityRegistry.registerModEntity(HolyProjectile.class, "holyProjectile", 4, AlchemicalWizardry.instance, 128, 5, true); - EntityRegistry.registerModEntity(WindGustProjectile.class, "windGustProjectile", 5, AlchemicalWizardry.instance, 128, 5, true); - EntityRegistry.registerModEntity(LightningBoltProjectile.class, "lightningBoltProjectile", 6, AlchemicalWizardry.instance, 128, 5, true); - EntityRegistry.registerModEntity(WaterProjectile.class, "waterProjectile", 7, AlchemicalWizardry.instance, 128, 5, true); - EntityRegistry.registerModEntity(MudProjectile.class, "mudProjectile", 8, AlchemicalWizardry.instance, 128, 5, true); - EntityRegistry.registerModEntity(TeleportProjectile.class, "teleportProjectile", 9, AlchemicalWizardry.instance, 128, 5, true); - EntityRegistry.registerModEntity(EntityEnergyBazookaMainProjectile.class, "energyBazookaMain", 10, AlchemicalWizardry.instance, 128, 3, true); - EntityRegistry.registerModEntity(EntityEnergyBazookaSecondaryProjectile.class, "energyBazookaSecondary", 11, AlchemicalWizardry.instance, 128, 3, true); - EntityRegistry.registerModEntity(EntityBloodLightProjectile.class, "bloodLightProjectile", 12, AlchemicalWizardry.instance, 128, 3, true); - EntityRegistry.registerModEntity(EntityMeteor.class, "meteor", 13, AlchemicalWizardry.instance, 120, 3, true); - EntityRegistry.registerModEntity(EntitySpellProjectile.class, "spellProjectile", 14, AlchemicalWizardry.instance, 128, 3, true); - EntityRegistry.registerModEntity(EntityParticleBeam.class, "particleBeam", 15, AlchemicalWizardry.instance, 120, 3, true); - } - - public void registerTickHandlers() - { - } - - public void InitRendering() - { - // TODO Auto-generated method stub - } -} diff --git a/src-backup/main/java/WayofTime/alchemicalWizardry/common/CoordAndRange.java b/src-backup/main/java/WayofTime/alchemicalWizardry/common/CoordAndRange.java deleted file mode 100644 index cb56ceb5..00000000 --- a/src-backup/main/java/WayofTime/alchemicalWizardry/common/CoordAndRange.java +++ /dev/null @@ -1,25 +0,0 @@ -package WayofTime.alchemicalWizardry.common; - -public class CoordAndRange -{ - public int xCoord; - public int yCoord; - public int zCoord; - public int horizRadius; - public int vertRadius; - - public CoordAndRange(int x, int y, int z, int horiz, int vert) - { - this.xCoord = x; - this.yCoord = y; - this.zCoord = z; - this.horizRadius = horiz; - this.vertRadius = vert; - } - - @Override - public boolean equals(Object o) - { - return o instanceof CoordAndRange ? ((CoordAndRange)o).xCoord == this.xCoord && ((CoordAndRange)o).yCoord == this.yCoord && ((CoordAndRange)o).zCoord == this.zCoord && ((CoordAndRange)o).horizRadius == this.horizRadius && ((CoordAndRange)o).vertRadius == this.vertRadius: false; - } -} diff --git a/src-backup/main/java/WayofTime/alchemicalWizardry/common/EntityAIFly.java b/src-backup/main/java/WayofTime/alchemicalWizardry/common/EntityAIFly.java deleted file mode 100644 index dffc65cf..00000000 --- a/src-backup/main/java/WayofTime/alchemicalWizardry/common/EntityAIFly.java +++ /dev/null @@ -1,5 +0,0 @@ -package WayofTime.alchemicalWizardry.common; - -public class EntityAIFly -{ -} diff --git a/src-backup/main/java/WayofTime/alchemicalWizardry/common/EntityAITargetAggro.java b/src-backup/main/java/WayofTime/alchemicalWizardry/common/EntityAITargetAggro.java deleted file mode 100644 index 2b6fb25a..00000000 --- a/src-backup/main/java/WayofTime/alchemicalWizardry/common/EntityAITargetAggro.java +++ /dev/null @@ -1,24 +0,0 @@ -package WayofTime.alchemicalWizardry.common; - -import WayofTime.alchemicalWizardry.common.entity.mob.EntityDemon; -import net.minecraft.entity.ai.EntityAINearestAttackableTarget; - -public class EntityAITargetAggro extends EntityAINearestAttackableTarget -{ - private EntityDemon theCreature; - - public EntityAITargetAggro(EntityDemon par1EntityDemon, Class par2Class, int par3, boolean par4) - { - super(par1EntityDemon, par2Class, par3, par4); - this.theCreature = par1EntityDemon; - } - - /** - * Returns whether the EntityAIBase should begin execution. - */ - @Override - public boolean shouldExecute() - { - return theCreature.isAggro() && super.shouldExecute(); - } -} diff --git a/src-backup/main/java/WayofTime/alchemicalWizardry/common/EntityAirElemental.java b/src-backup/main/java/WayofTime/alchemicalWizardry/common/EntityAirElemental.java deleted file mode 100644 index cc5ab8ed..00000000 --- a/src-backup/main/java/WayofTime/alchemicalWizardry/common/EntityAirElemental.java +++ /dev/null @@ -1,33 +0,0 @@ -package WayofTime.alchemicalWizardry.common; - -import ibxm.Player; -import net.minecraft.entity.Entity; -import net.minecraft.entity.EntityLivingBase; -import net.minecraft.entity.monster.IMob; -import net.minecraft.entity.player.EntityPlayer; -import net.minecraft.potion.PotionEffect; -import net.minecraft.world.World; -import WayofTime.alchemicalWizardry.AlchemicalWizardry; -import WayofTime.alchemicalWizardry.common.entity.mob.EntityElemental; -import WayofTime.alchemicalWizardry.common.spell.complex.effect.SpellHelper; - -public class EntityAirElemental extends EntityElemental implements IMob -{ - public EntityAirElemental(World world) - { - super(world, AlchemicalWizardry.entityAirElementalID); - } - - public void inflictEffectOnEntity(Entity target) - { - if (target instanceof EntityPlayer) - { - SpellHelper.setPlayerSpeedFromServer((EntityPlayer)target, target.motionX, target.motionY + 3, target.motionZ); - ((EntityLivingBase) target).addPotionEffect(new PotionEffect(AlchemicalWizardry.customPotionInhibit.id, 150, 0)); - } else if (target instanceof EntityLivingBase) - { - ((EntityLivingBase) target).motionY += 3.0D; - ((EntityLivingBase) target).addPotionEffect(new PotionEffect(AlchemicalWizardry.customPotionInhibit.id, 150, 0)); - } - } -} diff --git a/src-backup/main/java/WayofTime/alchemicalWizardry/common/IBindingAgent.java b/src-backup/main/java/WayofTime/alchemicalWizardry/common/IBindingAgent.java deleted file mode 100644 index 534d4b68..00000000 --- a/src-backup/main/java/WayofTime/alchemicalWizardry/common/IBindingAgent.java +++ /dev/null @@ -1,6 +0,0 @@ -package WayofTime.alchemicalWizardry.common; - -public interface IBindingAgent -{ - public abstract float getSuccessRateForPotionNumber(int potionEffects); -} diff --git a/src-backup/main/java/WayofTime/alchemicalWizardry/common/ICatalyst.java b/src-backup/main/java/WayofTime/alchemicalWizardry/common/ICatalyst.java deleted file mode 100644 index 230cd51c..00000000 --- a/src-backup/main/java/WayofTime/alchemicalWizardry/common/ICatalyst.java +++ /dev/null @@ -1,8 +0,0 @@ -package WayofTime.alchemicalWizardry.common; - -public interface ICatalyst -{ - public abstract int getCatalystLevel(); - - public abstract boolean isConcentration(); -} diff --git a/src-backup/main/java/WayofTime/alchemicalWizardry/common/IDemon.java b/src-backup/main/java/WayofTime/alchemicalWizardry/common/IDemon.java deleted file mode 100644 index eab1d15e..00000000 --- a/src-backup/main/java/WayofTime/alchemicalWizardry/common/IDemon.java +++ /dev/null @@ -1,10 +0,0 @@ -package WayofTime.alchemicalWizardry.common; - -public interface IDemon -{ - public abstract void setSummonedConditions(); - - public boolean isAggro(); - - public void setAggro(boolean aggro); -} diff --git a/src-backup/main/java/WayofTime/alchemicalWizardry/common/IFillingAgent.java b/src-backup/main/java/WayofTime/alchemicalWizardry/common/IFillingAgent.java deleted file mode 100644 index 2202a20d..00000000 --- a/src-backup/main/java/WayofTime/alchemicalWizardry/common/IFillingAgent.java +++ /dev/null @@ -1,6 +0,0 @@ -package WayofTime.alchemicalWizardry.common; - -public interface IFillingAgent -{ - public abstract int getFilledAmountForPotionNumber(int potionEffects); -} diff --git a/src-backup/main/java/WayofTime/alchemicalWizardry/common/Int3.java b/src-backup/main/java/WayofTime/alchemicalWizardry/common/Int3.java deleted file mode 100644 index a43776d9..00000000 --- a/src-backup/main/java/WayofTime/alchemicalWizardry/common/Int3.java +++ /dev/null @@ -1,38 +0,0 @@ -package WayofTime.alchemicalWizardry.common; - -import net.minecraft.nbt.NBTTagCompound; - - -public class Int3 -{ - public int xCoord; - public int yCoord; - public int zCoord; - - public Int3(int xCoord, int yCoord, int zCoord) - { - this.xCoord = xCoord; - this.yCoord = yCoord; - this.zCoord = zCoord; - } - - public static Int3 readFromNBT(NBTTagCompound tag) - { - return new Int3(tag.getInteger("xCoord"), tag.getInteger("yCoord"), tag.getInteger("zCoord")); - } - - public NBTTagCompound writeToNBT(NBTTagCompound tag) - { - tag.setInteger("xCoord", xCoord); - tag.setInteger("yCoord", yCoord); - tag.setInteger("zCoord", zCoord); - - return tag; - } - - @Override - public boolean equals(Object o) - { - return o instanceof Int3 ? ((Int3)o).xCoord == this.xCoord && ((Int3)o).yCoord == this.yCoord && ((Int3)o).zCoord == this.zCoord : false; - } -} diff --git a/src-backup/main/java/WayofTime/alchemicalWizardry/common/LifeBucketHandler.java b/src-backup/main/java/WayofTime/alchemicalWizardry/common/LifeBucketHandler.java deleted file mode 100644 index a7739d1b..00000000 --- a/src-backup/main/java/WayofTime/alchemicalWizardry/common/LifeBucketHandler.java +++ /dev/null @@ -1,42 +0,0 @@ -package WayofTime.alchemicalWizardry.common; - -import net.minecraft.block.Block; -import net.minecraft.item.ItemStack; -import net.minecraft.util.MovingObjectPosition; -import net.minecraft.world.World; -import net.minecraftforge.event.entity.player.FillBucketEvent; -import WayofTime.alchemicalWizardry.ModBlocks; -import WayofTime.alchemicalWizardry.ModItems; -import cpw.mods.fml.common.eventhandler.Event.Result; -import cpw.mods.fml.common.eventhandler.SubscribeEvent; - -public class LifeBucketHandler -{ - @SubscribeEvent - public void onBucketFill(FillBucketEvent event) - { - ItemStack result = fillCustomBucket(event.world, event.target); - - if (result == null) - { - return; - } - - event.result = result; - event.setResult(Result.ALLOW); - } - - public ItemStack fillCustomBucket(World world, MovingObjectPosition pos) - { - Block block = world.getBlock(pos.blockX, pos.blockY, pos.blockZ); - - if (block!=null && (block.equals(ModBlocks.blockLifeEssence)) && world.getBlockMetadata(pos.blockX, pos.blockY, pos.blockZ) == 0) - { - world.setBlockToAir(pos.blockX, pos.blockY, pos.blockZ); - return new ItemStack(ModItems.bucketLife); - } else - { - return null; - } - } -} \ No newline at end of file diff --git a/src-backup/main/java/WayofTime/alchemicalWizardry/common/LifeEssence.java b/src-backup/main/java/WayofTime/alchemicalWizardry/common/LifeEssence.java deleted file mode 100644 index 22ede879..00000000 --- a/src-backup/main/java/WayofTime/alchemicalWizardry/common/LifeEssence.java +++ /dev/null @@ -1,28 +0,0 @@ -package WayofTime.alchemicalWizardry.common; - -import net.minecraftforge.fluids.Fluid; - -public class LifeEssence extends Fluid -{ - public LifeEssence(String fluidName) - { - super(fluidName); - //setUnlocalizedName("lifeEssence"); - //setBlockID(id); - this.setDensity(2000); - this.setViscosity(2000); - //this.setFlowingIcon(flowingIcon) - } - - @Override - public int getColor() - { - return 0xEEEEEE; - } - - @Override - public String getLocalizedName() - { - return "Life Essence"; - } -} diff --git a/src-backup/main/java/WayofTime/alchemicalWizardry/common/ModLivingDropsEvent.java b/src-backup/main/java/WayofTime/alchemicalWizardry/common/ModLivingDropsEvent.java deleted file mode 100644 index 3659dbfe..00000000 --- a/src-backup/main/java/WayofTime/alchemicalWizardry/common/ModLivingDropsEvent.java +++ /dev/null @@ -1,36 +0,0 @@ -package WayofTime.alchemicalWizardry.common; - -import net.minecraft.entity.passive.EntityAnimal; -import net.minecraft.potion.Potion; -import net.minecraft.potion.PotionEffect; -import net.minecraftforge.event.entity.living.LivingDropsEvent; -import WayofTime.alchemicalWizardry.ModItems; -import cpw.mods.fml.common.eventhandler.SubscribeEvent; - -public class ModLivingDropsEvent -{ - public static double rand; - - @SubscribeEvent - public void onEntityDrop(LivingDropsEvent event) - { - if (event.source.getDamageType().equals("player")) - { - rand = Math.random(); - - if (!(event.entityLiving instanceof EntityAnimal)) - { - PotionEffect effect = event.entityLiving.getActivePotionEffect(Potion.weakness); - - if (effect != null) - { - if (effect.getAmplifier() >= 2) - if (rand < 0.50d) - { - event.entityLiving.dropItem(ModItems.weakBloodShard, 1); - } - } - } - } - } -} \ No newline at end of file diff --git a/src-backup/main/java/WayofTime/alchemicalWizardry/common/NewPacketHandler.java b/src-backup/main/java/WayofTime/alchemicalWizardry/common/NewPacketHandler.java deleted file mode 100644 index 1d526216..00000000 --- a/src-backup/main/java/WayofTime/alchemicalWizardry/common/NewPacketHandler.java +++ /dev/null @@ -1,964 +0,0 @@ -package WayofTime.alchemicalWizardry.common; - -import io.netty.buffer.ByteBuf; -import io.netty.channel.ChannelHandlerContext; -import io.netty.channel.SimpleChannelInboundHandler; - -import java.util.EnumMap; -import java.util.LinkedList; -import java.util.List; - -import net.minecraft.client.Minecraft; -import net.minecraft.entity.player.EntityPlayer; -import net.minecraft.entity.player.EntityPlayerMP; -import net.minecraft.network.Packet; -import net.minecraft.tileentity.TileEntity; -import net.minecraft.world.World; -import net.minecraftforge.common.util.ForgeDirection; -import WayofTime.alchemicalWizardry.AlchemicalWizardry; -import WayofTime.alchemicalWizardry.api.ColourAndCoords; -import WayofTime.alchemicalWizardry.common.tileEntity.TEAltar; -import WayofTime.alchemicalWizardry.common.tileEntity.TEMasterStone; -import WayofTime.alchemicalWizardry.common.tileEntity.TEOrientable; -import WayofTime.alchemicalWizardry.common.tileEntity.TEPedestal; -import WayofTime.alchemicalWizardry.common.tileEntity.TEPlinth; -import WayofTime.alchemicalWizardry.common.tileEntity.TEReagentConduit; -import WayofTime.alchemicalWizardry.common.tileEntity.TESocket; -import WayofTime.alchemicalWizardry.common.tileEntity.TETeleposer; -import WayofTime.alchemicalWizardry.common.tileEntity.TEWritingTable; -import cpw.mods.fml.common.FMLCommonHandler; -import cpw.mods.fml.common.network.FMLEmbeddedChannel; -import cpw.mods.fml.common.network.FMLIndexedMessageToMessageCodec; -import cpw.mods.fml.common.network.FMLOutboundHandler; -import cpw.mods.fml.common.network.NetworkRegistry; -import cpw.mods.fml.relauncher.Side; -import cpw.mods.fml.relauncher.SideOnly; - -/** -* Handles the packet wrangling for IronChest -* @author cpw -* -*/ -public enum NewPacketHandler -{ - INSTANCE; - - /** - * Our channel "pair" from {@link NetworkRegistry} - */ - private EnumMap channels; - - - /** - * Make our packet handler, and add an {@link IronChestCodec} always - */ - private NewPacketHandler() - { - // request a channel pair for IronChest from the network registry - // Add the IronChestCodec as a member of both channel pipelines - this.channels = NetworkRegistry.INSTANCE.newChannel("BloodMagic", new TEAltarCodec()); - if (FMLCommonHandler.instance().getSide() == Side.CLIENT) - { - addClientHandler(); - } - } - - @SideOnly(Side.CLIENT) - private void addClientHandler() - { - FMLEmbeddedChannel clientChannel = this.channels.get(Side.CLIENT); - - String tileAltarCodec = clientChannel.findChannelHandlerNameForType(TEAltarCodec.class); - clientChannel.pipeline().addAfter(tileAltarCodec, "TEAltarHandler", new TEAltarMessageHandler()); - clientChannel.pipeline().addAfter(tileAltarCodec, "TEOrientableHandler", new TEOrientableMessageHandler()); - clientChannel.pipeline().addAfter(tileAltarCodec, "TEPedestalHandler", new TEPedestalMessageHandler()); - clientChannel.pipeline().addAfter(tileAltarCodec, "TEPlinthHandler", new TEPlinthMessageHandler()); - clientChannel.pipeline().addAfter(tileAltarCodec, "TESocketHandler", new TESocketMessageHandler()); - clientChannel.pipeline().addAfter(tileAltarCodec, "TETeleposerHandler", new TETeleposerMessageHandler()); - clientChannel.pipeline().addAfter(tileAltarCodec, "TEWritingTableHandler", new TEWritingTableMessageHandler()); - clientChannel.pipeline().addAfter(tileAltarCodec, "ParticleHandler", new ParticleMessageHandler()); - clientChannel.pipeline().addAfter(tileAltarCodec, "VelocityHandler", new VelocityMessageHandler()); - clientChannel.pipeline().addAfter(tileAltarCodec, "TEMasterStoneHandler", new TEMasterStoneMessageHandler()); - clientChannel.pipeline().addAfter(tileAltarCodec, "TEReagentConduitHandler", new TEReagentConduitMessageHandler()); - } - - - /** - * This class simply handles the {@link IronChestMessage} when it's received - * at the client side It can contain client only code, because it's only run - * on the client. - * - * @author cpw - * - */ - private static class TEAltarMessageHandler extends SimpleChannelInboundHandler - { - @Override - protected void channelRead0(ChannelHandlerContext ctx, TEAltarMessage msg) throws Exception - { - World world = AlchemicalWizardry.proxy.getClientWorld(); - TileEntity te = world.getTileEntity(msg.x, msg.y, msg.z); - if (te instanceof TEAltar) - { - TEAltar altar = (TEAltar) te; - - altar.handlePacketData(msg.items, msg.fluids, msg.capacity); - } - } - } - - private static class TEOrientableMessageHandler extends SimpleChannelInboundHandler - { - @Override - protected void channelRead0(ChannelHandlerContext ctx, TEOrientableMessage msg) throws Exception - { - World world = AlchemicalWizardry.proxy.getClientWorld(); - TileEntity te = world.getTileEntity(msg.x, msg.y, msg.z); - if (te instanceof TEOrientable) - { - TEOrientable tile = (TEOrientable)te; - - ((TEOrientable) te).setInputDirection(ForgeDirection.getOrientation(msg.input)); - ((TEOrientable) te).setOutputDirection(ForgeDirection.getOrientation(msg.output)); - } - } - } - - private static class TEPedestalMessageHandler extends SimpleChannelInboundHandler - { - @Override - protected void channelRead0(ChannelHandlerContext ctx, TEPedestalMessage msg) throws Exception - { - World world = AlchemicalWizardry.proxy.getClientWorld(); - TileEntity te = world.getTileEntity(msg.x, msg.y, msg.z); - if (te instanceof TEPedestal) - { - TEPedestal pedestal = (TEPedestal) te; - - pedestal.handlePacketData(msg.items); - } - } - } - - private static class TEPlinthMessageHandler extends SimpleChannelInboundHandler - { - @Override - protected void channelRead0(ChannelHandlerContext ctx, TEPlinthMessage msg) throws Exception - { - World world = AlchemicalWizardry.proxy.getClientWorld(); - TileEntity te = world.getTileEntity(msg.x, msg.y, msg.z); - if (te instanceof TEPlinth) - { - TEPlinth Plinth = (TEPlinth) te; - - Plinth.handlePacketData(msg.items); - } - } - } - - private static class TESocketMessageHandler extends SimpleChannelInboundHandler - { - @Override - protected void channelRead0(ChannelHandlerContext ctx, TESocketMessage msg) throws Exception - { - World world = AlchemicalWizardry.proxy.getClientWorld(); - TileEntity te = world.getTileEntity(msg.x, msg.y, msg.z); - if (te instanceof TESocket) - { - TESocket Socket = (TESocket) te; - - Socket.handlePacketData(msg.items); - } - } - } - - private static class TETeleposerMessageHandler extends SimpleChannelInboundHandler - { - @Override - protected void channelRead0(ChannelHandlerContext ctx, TETeleposerMessage msg) throws Exception - { - World world = AlchemicalWizardry.proxy.getClientWorld(); - TileEntity te = world.getTileEntity(msg.x, msg.y, msg.z); - if (te instanceof TETeleposer) - { - TETeleposer Teleposer = (TETeleposer) te; - - Teleposer.handlePacketData(msg.items); - } - } - } - - private static class TEWritingTableMessageHandler extends SimpleChannelInboundHandler - { - @Override - protected void channelRead0(ChannelHandlerContext ctx, TEWritingTableMessage msg) throws Exception - { - World world = AlchemicalWizardry.proxy.getClientWorld(); - TileEntity te = world.getTileEntity(msg.x, msg.y, msg.z); - if (te instanceof TEWritingTable) - { - TEWritingTable WritingTable = (TEWritingTable) te; - - WritingTable.handlePacketData(msg.items); - } - } - } - - private static class ParticleMessageHandler extends SimpleChannelInboundHandler - { - @Override - protected void channelRead0(ChannelHandlerContext ctx, ParticleMessage msg) throws Exception - { - World world = AlchemicalWizardry.proxy.getClientWorld(); - - world.spawnParticle(msg.particle, msg.xCoord, msg.yCoord, msg.zCoord, msg.xVel, msg.yVel, msg.zVel); - } - } - - private static class VelocityMessageHandler extends SimpleChannelInboundHandler - { - @Override - protected void channelRead0(ChannelHandlerContext ctx, VelocityMessage msg) throws Exception - { - EntityPlayer player = Minecraft.getMinecraft().thePlayer; - - if(player!=null) - { - player.motionX = msg.xVel; - player.motionY = msg.yVel; - player.motionZ = msg.zVel; - } - } - } - - private static class TEMasterStoneMessageHandler extends SimpleChannelInboundHandler - { - @Override - protected void channelRead0(ChannelHandlerContext ctx, TEMasterStoneMessage msg) throws Exception - { - World world = AlchemicalWizardry.proxy.getClientWorld(); - TileEntity te = world.getTileEntity(msg.x, msg.y, msg.z); - if (te instanceof TEMasterStone) - { - TEMasterStone masterStone = (TEMasterStone) te; - - masterStone.setCurrentRitual(msg.ritual); - masterStone.isRunning = msg.isRunning; - } - } - } - - private static class TEReagentConduitMessageHandler extends SimpleChannelInboundHandler - { - @Override - protected void channelRead0(ChannelHandlerContext ctx, TEReagentConduitMessage msg) throws Exception - { - World world = AlchemicalWizardry.proxy.getClientWorld(); - TileEntity te = world.getTileEntity(msg.x, msg.y, msg.z); - if (te instanceof TEReagentConduit) - { - TEReagentConduit reagentConduit = (TEReagentConduit) te; - - reagentConduit.destinationList = msg.destinationList; - } - } - } - - public static class BMMessage - { - int index; - } - - public static class TEAltarMessage extends BMMessage - { - int x; - int y; - int z; - - int[] items; - int[] fluids; - int capacity; - } - - public static class TEOrientableMessage extends BMMessage - { - int x; - int y; - int z; - - int input; - int output; - } - - public static class TEPedestalMessage extends BMMessage - { - int x; - int y; - int z; - - int[] items; - } - - public static class TEPlinthMessage extends BMMessage - { - int x; - int y; - int z; - - int[] items; - } - - public static class TESocketMessage extends BMMessage - { - int x; - int y; - int z; - - int[] items; - } - - public static class TETeleposerMessage extends BMMessage - { - int x; - int y; - int z; - - int[] items; - } - - public static class TEWritingTableMessage extends BMMessage - { - int x; - int y; - int z; - - int[] items; - } - - public static class ParticleMessage extends BMMessage - { - String particle; - - double xCoord; - double yCoord; - double zCoord; - - double xVel; - double yVel; - double zVel; - } - - public static class VelocityMessage extends BMMessage - { - double xVel; - double yVel; - double zVel; - } - - public static class TEMasterStoneMessage extends BMMessage - { - int x; - int y; - int z; - - String ritual; - boolean isRunning; - } - - public static class TEReagentConduitMessage extends BMMessage - { - int x; - int y; - int z; - - List destinationList; - } - - private class TEAltarCodec extends FMLIndexedMessageToMessageCodec - { - public TEAltarCodec() - { - addDiscriminator(0, TEAltarMessage.class); - addDiscriminator(1, TEOrientableMessage.class); - addDiscriminator(2, TEPedestalMessage.class); - addDiscriminator(3, TEPlinthMessage.class); - addDiscriminator(4, TESocketMessage.class); - addDiscriminator(5, TETeleposerMessage.class); - addDiscriminator(6, TEWritingTableMessage.class); - addDiscriminator(7, ParticleMessage.class); - addDiscriminator(8, VelocityMessage.class); - addDiscriminator(9, TEMasterStoneMessage.class); - addDiscriminator(10, TEReagentConduitMessage.class); - } - - @Override - public void encodeInto(ChannelHandlerContext ctx, BMMessage msg, ByteBuf target) throws Exception - { - target.writeInt(msg.index); - - switch(msg.index) - { - case 0: - target.writeInt(((TEAltarMessage)msg).x); - target.writeInt(((TEAltarMessage)msg).y); - target.writeInt(((TEAltarMessage)msg).z); - - target.writeBoolean(((TEAltarMessage)msg).items != null); - if (((TEAltarMessage)msg).items != null) - { - int[] items = ((TEAltarMessage)msg).items; - for (int j = 0; j < items.length; j++) - { - int i = items[j]; - target.writeInt(i); - } - } - - target.writeBoolean(((TEAltarMessage)msg).fluids != null); - if(((TEAltarMessage)msg).fluids != null) - { - int[] fluids = ((TEAltarMessage)msg).fluids; - for (int j = 0; j < fluids.length; j++) - { - int i = fluids[j]; - target.writeInt(i); - } - } - - target.writeInt(((TEAltarMessage)msg).capacity); - - break; - - case 1: - target.writeInt(((TEOrientableMessage)msg).x); - target.writeInt(((TEOrientableMessage)msg).y); - target.writeInt(((TEOrientableMessage)msg).z); - - target.writeInt(((TEOrientableMessage)msg).input); - target.writeInt(((TEOrientableMessage)msg).output); - - break; - - case 2: - target.writeInt(((TEPedestalMessage)msg).x); - target.writeInt(((TEPedestalMessage)msg).y); - target.writeInt(((TEPedestalMessage)msg).z); - - target.writeBoolean(((TEPedestalMessage)msg).items != null); - if (((TEPedestalMessage)msg).items != null) - { - int[] items = ((TEPedestalMessage)msg).items; - for (int j = 0; j < items.length; j++) - { - int i = items[j]; - target.writeInt(i); - } - } - - break; - - case 3: - target.writeInt(((TEPlinthMessage)msg).x); - target.writeInt(((TEPlinthMessage)msg).y); - target.writeInt(((TEPlinthMessage)msg).z); - - target.writeBoolean(((TEPlinthMessage)msg).items != null); - if (((TEPlinthMessage)msg).items != null) - { - int[] items = ((TEPlinthMessage)msg).items; - for (int j = 0; j < items.length; j++) - { - int i = items[j]; - target.writeInt(i); - } - } - - break; - - case 4: - target.writeInt(((TESocketMessage)msg).x); - target.writeInt(((TESocketMessage)msg).y); - target.writeInt(((TESocketMessage)msg).z); - - target.writeBoolean(((TESocketMessage)msg).items != null); - if (((TESocketMessage)msg).items != null) - { - int[] items = ((TESocketMessage)msg).items; - for (int j = 0; j < items.length; j++) - { - int i = items[j]; - target.writeInt(i); - } - } - - break; - - case 5: - target.writeInt(((TETeleposerMessage)msg).x); - target.writeInt(((TETeleposerMessage)msg).y); - target.writeInt(((TETeleposerMessage)msg).z); - - target.writeBoolean(((TETeleposerMessage)msg).items != null); - if (((TETeleposerMessage)msg).items != null) - { - int[] items = ((TETeleposerMessage)msg).items; - for (int j = 0; j < items.length; j++) - { - int i = items[j]; - target.writeInt(i); - } - } - - break; - - case 6: - target.writeInt(((TEWritingTableMessage)msg).x); - target.writeInt(((TEWritingTableMessage)msg).y); - target.writeInt(((TEWritingTableMessage)msg).z); - - target.writeBoolean(((TEWritingTableMessage)msg).items != null); - if (((TEWritingTableMessage)msg).items != null) - { - int[] items = ((TEWritingTableMessage)msg).items; - for (int j = 0; j < items.length; j++) - { - int i = items[j]; - target.writeInt(i); - } - } - - break; - - case 7: - String str = ((ParticleMessage)msg).particle; - target.writeInt(str.length()); - for(int i=0; i list = ((TEReagentConduitMessage)msg).destinationList; - target.writeInt(list.size()); - - for(ColourAndCoords colourSet : list) - { - target.writeInt(colourSet.colourRed); - target.writeInt(colourSet.colourGreen); - target.writeInt(colourSet.colourBlue); - target.writeInt(colourSet.colourIntensity); - target.writeInt(colourSet.xCoord); - target.writeInt(colourSet.yCoord); - target.writeInt(colourSet.zCoord); - } - - break; - } - } - - - @Override - public void decodeInto(ChannelHandlerContext ctx, ByteBuf dat, BMMessage msg) - { - int index = dat.readInt(); - - switch(index) - { - case 0: - ((TEAltarMessage)msg).x = dat.readInt(); - ((TEAltarMessage)msg).y = dat.readInt(); - ((TEAltarMessage)msg).z = dat.readInt(); - boolean hasStacks = dat.readBoolean(); - - ((TEAltarMessage)msg).items = new int[TEAltar.sizeInv*3]; - if (hasStacks) - { - ((TEAltarMessage)msg).items = new int[TEAltar.sizeInv*3]; - for (int i = 0; i < ((TEAltarMessage)msg).items.length; i++) - { - ((TEAltarMessage)msg).items[i] = dat.readInt(); - } - } - - boolean hasFluids = dat.readBoolean(); - ((TEAltarMessage)msg).fluids = new int[6]; - if(hasFluids) - for (int i = 0; i < ((TEAltarMessage)msg).fluids.length; i++) - { - ((TEAltarMessage)msg).fluids[i] = dat.readInt(); - } - - ((TEAltarMessage)msg).capacity = dat.readInt(); - - break; - - case 1: - ((TEOrientableMessage)msg).x = dat.readInt(); - ((TEOrientableMessage)msg).y = dat.readInt(); - ((TEOrientableMessage)msg).z = dat.readInt(); - - ((TEOrientableMessage)msg).input = dat.readInt(); - ((TEOrientableMessage)msg).output = dat.readInt(); - - break; - - case 2: - ((TEPedestalMessage)msg).x = dat.readInt(); - ((TEPedestalMessage)msg).y = dat.readInt(); - ((TEPedestalMessage)msg).z = dat.readInt(); - - boolean hasStacks1 = dat.readBoolean(); - - ((TEPedestalMessage)msg).items = new int[TEPedestal.sizeInv*3]; - if (hasStacks1) - { - ((TEPedestalMessage)msg).items = new int[TEPedestal.sizeInv*3]; - for (int i = 0; i < ((TEPedestalMessage)msg).items.length; i++) - { - ((TEPedestalMessage)msg).items[i] = dat.readInt(); - } - } - - break; - - case 3: - ((TEPlinthMessage)msg).x = dat.readInt(); - ((TEPlinthMessage)msg).y = dat.readInt(); - ((TEPlinthMessage)msg).z = dat.readInt(); - - boolean hasStacks2 = dat.readBoolean(); - - ((TEPlinthMessage)msg).items = new int[TEPlinth.sizeInv*3]; - if (hasStacks2) - { - ((TEPlinthMessage)msg).items = new int[TEPlinth.sizeInv*3]; - for (int i = 0; i < ((TEPlinthMessage)msg).items.length; i++) - { - ((TEPlinthMessage)msg).items[i] = dat.readInt(); - } - } - - break; - - case 4: - ((TESocketMessage)msg).x = dat.readInt(); - ((TESocketMessage)msg).y = dat.readInt(); - ((TESocketMessage)msg).z = dat.readInt(); - - boolean hasStacks3 = dat.readBoolean(); - - ((TESocketMessage)msg).items = new int[TESocket.sizeInv*3]; - if (hasStacks3) - { - ((TESocketMessage)msg).items = new int[TESocket.sizeInv*3]; - for (int i = 0; i < ((TESocketMessage)msg).items.length; i++) - { - ((TESocketMessage)msg).items[i] = dat.readInt(); - } - } - - break; - - case 5: - ((TETeleposerMessage)msg).x = dat.readInt(); - ((TETeleposerMessage)msg).y = dat.readInt(); - ((TETeleposerMessage)msg).z = dat.readInt(); - - boolean hasStacks4 = dat.readBoolean(); - - ((TETeleposerMessage)msg).items = new int[TETeleposer.sizeInv*3]; - if (hasStacks4) - { - ((TETeleposerMessage)msg).items = new int[TETeleposer.sizeInv*3]; - for (int i = 0; i < ((TETeleposerMessage)msg).items.length; i++) - { - ((TETeleposerMessage)msg).items[i] = dat.readInt(); - } - } - - break; - - case 6: - ((TEWritingTableMessage)msg).x = dat.readInt(); - ((TEWritingTableMessage)msg).y = dat.readInt(); - ((TEWritingTableMessage)msg).z = dat.readInt(); - - boolean hasStacks5 = dat.readBoolean(); - - ((TEWritingTableMessage)msg).items = new int[TEWritingTable.sizeInv*3]; - if (hasStacks5) - { - ((TEWritingTableMessage)msg).items = new int[TEWritingTable.sizeInv*3]; - for (int i = 0; i < ((TEWritingTableMessage)msg).items.length; i++) - { - ((TEWritingTableMessage)msg).items[i] = dat.readInt(); - } - } - - break; - - case 7: - int size = dat.readInt(); - String str = ""; - - for (int i = 0; i < size; i++) - { - str = str + dat.readChar(); - } - - ((ParticleMessage)msg).particle = str; - - ((ParticleMessage)msg).xCoord = dat.readDouble(); - ((ParticleMessage)msg).yCoord = dat.readDouble(); - ((ParticleMessage)msg).zCoord = dat.readDouble(); - - ((ParticleMessage)msg).xVel = dat.readDouble(); - ((ParticleMessage)msg).yVel = dat.readDouble(); - ((ParticleMessage)msg).zVel = dat.readDouble(); - - break; - - case 8: - ((VelocityMessage)msg).xVel = dat.readDouble(); - ((VelocityMessage)msg).yVel = dat.readDouble(); - ((VelocityMessage)msg).zVel = dat.readDouble(); - - break; - - case 9: - ((TEMasterStoneMessage)msg).x = dat.readInt(); - ((TEMasterStoneMessage)msg).y = dat.readInt(); - ((TEMasterStoneMessage)msg).z = dat.readInt(); - - int ritualStrSize = dat.readInt(); - String ritual = ""; - - for (int i = 0; i < ritualStrSize; i++) - { - ritual = ritual + dat.readChar(); - } - - ((TEMasterStoneMessage)msg).ritual = ritual; - ((TEMasterStoneMessage)msg).isRunning = dat.readBoolean(); - - break; - - case 10: - ((TEReagentConduitMessage)msg).x = dat.readInt(); - ((TEReagentConduitMessage)msg).y = dat.readInt(); - ((TEReagentConduitMessage)msg).z = dat.readInt(); - - int listSize = dat.readInt(); - - List list = new LinkedList(); - - for(int i=0; i < listSize; i++) - { - list.add(new ColourAndCoords(dat.readInt(), dat.readInt(), dat.readInt(), dat.readInt(), dat.readInt(), dat.readInt(), dat.readInt())); - } - - ((TEReagentConduitMessage)msg).destinationList = list; - - break; - } - } - } - - //Packets to be obtained - public static Packet getPacket(TEAltar tileAltar) - { - TEAltarMessage msg = new TEAltarMessage(); - msg.index = 0; - msg.x = tileAltar.xCoord; - msg.y = tileAltar.yCoord; - msg.z = tileAltar.zCoord; - msg.items = tileAltar.buildIntDataList(); - msg.fluids = tileAltar.buildFluidList(); - msg.capacity = tileAltar.getCapacity(); - - return INSTANCE.channels.get(Side.SERVER).generatePacketFrom(msg); - } - - public static Packet getPacket(TEOrientable tileOrientable) - { - TEOrientableMessage msg = new TEOrientableMessage(); - msg.index = 1; - msg.x = tileOrientable.xCoord; - msg.y = tileOrientable.yCoord; - msg.z = tileOrientable.zCoord; - msg.input = tileOrientable.getIntForForgeDirection(tileOrientable.getInputDirection()); - msg.output = tileOrientable.getIntForForgeDirection(tileOrientable.getOutputDirection()); - - return INSTANCE.channels.get(Side.SERVER).generatePacketFrom(msg); - } - - public static Packet getPacket(TEPedestal tilePedestal) - { - TEPedestalMessage msg = new TEPedestalMessage(); - msg.index = 2; - msg.x = tilePedestal.xCoord; - msg.y = tilePedestal.yCoord; - msg.z = tilePedestal.zCoord; - msg.items = tilePedestal.buildIntDataList(); - - return INSTANCE.channels.get(Side.SERVER).generatePacketFrom(msg); - } - - public static Packet getPacket(TEPlinth tilePlinth) - { - TEPlinthMessage msg = new TEPlinthMessage(); - msg.index = 3; - msg.x = tilePlinth.xCoord; - msg.y = tilePlinth.yCoord; - msg.z = tilePlinth.zCoord; - msg.items = tilePlinth.buildIntDataList(); - - return INSTANCE.channels.get(Side.SERVER).generatePacketFrom(msg); - } - - public static Packet getPacket(TESocket tileSocket) - { - TESocketMessage msg = new TESocketMessage(); - msg.index = 4; - msg.x = tileSocket.xCoord; - msg.y = tileSocket.yCoord; - msg.z = tileSocket.zCoord; - msg.items = tileSocket.buildIntDataList(); - - return INSTANCE.channels.get(Side.SERVER).generatePacketFrom(msg); - } - - public static Packet getPacket(TETeleposer tileTeleposer) - { - TETeleposerMessage msg = new TETeleposerMessage(); - msg.index = 5; - msg.x = tileTeleposer.xCoord; - msg.y = tileTeleposer.yCoord; - msg.z = tileTeleposer.zCoord; - msg.items = tileTeleposer.buildIntDataList(); - - return INSTANCE.channels.get(Side.SERVER).generatePacketFrom(msg); - } - - public static Packet getPacket(TEWritingTable tileWritingTable) - { - TEWritingTableMessage msg = new TEWritingTableMessage(); - msg.index = 6; - msg.x = tileWritingTable.xCoord; - msg.y = tileWritingTable.yCoord; - msg.z = tileWritingTable.zCoord; - msg.items = tileWritingTable.buildIntDataList(); - - return INSTANCE.channels.get(Side.SERVER).generatePacketFrom(msg); - } - - public static Packet getParticlePacket(String str, double xCoord, double yCoord, double zCoord, double xVel, double yVel, double zVel) - { - ParticleMessage msg = new ParticleMessage(); - msg.index = 7; - msg.particle = str; - msg.xCoord = xCoord; - msg.yCoord = yCoord; - msg.zCoord = zCoord; - msg.xVel = xVel; - msg.yVel = yVel; - msg.zVel = zVel; - - return INSTANCE.channels.get(Side.SERVER).generatePacketFrom(msg); - } - - public static Packet getVelSettingPacket(double xVel, double yVel, double zVel) - { - VelocityMessage msg = new VelocityMessage(); - msg.index = 8; - msg.xVel = xVel; - msg.yVel = yVel; - msg.zVel = zVel; - - return INSTANCE.channels.get(Side.SERVER).generatePacketFrom(msg); - } - - public static Packet getPacket(TEMasterStone tile) - { - TEMasterStoneMessage msg = new TEMasterStoneMessage(); - msg.index = 9; - msg.x = tile.xCoord; - msg.y = tile.yCoord; - msg.z = tile.zCoord; - - msg.ritual = tile.getCurrentRitual(); - msg.isRunning = tile.isRunning; - - return INSTANCE.channels.get(Side.SERVER).generatePacketFrom(msg); - } - - public static Packet getPacket(TEReagentConduit tile) - { - TEReagentConduitMessage msg = new TEReagentConduitMessage(); - msg.index = 10; - msg.x = tile.xCoord; - msg.y = tile.yCoord; - msg.z = tile.zCoord; - - msg.destinationList = tile.destinationList; - - return INSTANCE.channels.get(Side.SERVER).generatePacketFrom(msg); - } - - public void sendTo(Packet message, EntityPlayerMP player) - { - this.channels.get(Side.SERVER).attr(FMLOutboundHandler.FML_MESSAGETARGET).set(FMLOutboundHandler.OutboundTarget.PLAYER); - this.channels.get(Side.SERVER).attr(FMLOutboundHandler.FML_MESSAGETARGETARGS).set(player); - this.channels.get(Side.SERVER).writeAndFlush(message); - } - - public void sendToAll(Packet message) - { - this.channels.get(Side.SERVER).attr(FMLOutboundHandler.FML_MESSAGETARGET).set(FMLOutboundHandler.OutboundTarget.ALL); - this.channels.get(Side.SERVER).writeAndFlush(message); - } - - public void sendToAllAround(Packet message, NetworkRegistry.TargetPoint point) - { - this.channels.get(Side.SERVER).attr(FMLOutboundHandler.FML_MESSAGETARGET).set(FMLOutboundHandler.OutboundTarget.ALLAROUNDPOINT); - this.channels.get(Side.SERVER).attr(FMLOutboundHandler.FML_MESSAGETARGETARGS).set(point); - this.channels.get(Side.SERVER).writeAndFlush(message); - } -} diff --git a/src-backup/main/java/WayofTime/alchemicalWizardry/common/PacketHandler.java b/src-backup/main/java/WayofTime/alchemicalWizardry/common/PacketHandler.java deleted file mode 100644 index 48642e37..00000000 --- a/src-backup/main/java/WayofTime/alchemicalWizardry/common/PacketHandler.java +++ /dev/null @@ -1,966 +0,0 @@ -package WayofTime.alchemicalWizardry.common; - -import ibxm.Player; - -import java.io.ByteArrayInputStream; -import java.io.ByteArrayOutputStream; -import java.io.DataInputStream; -import java.io.DataOutputStream; -import java.io.IOException; -import java.util.Random; - -import net.minecraft.entity.player.EntityPlayer; -import net.minecraft.server.MinecraftServer; -import net.minecraft.tileentity.TileEntity; -import net.minecraft.util.DamageSource; -import net.minecraft.world.World; -import net.minecraftforge.common.util.ForgeDirection; -import net.minecraftforge.fluids.FluidStack; -import WayofTime.alchemicalWizardry.AlchemicalWizardry; -import WayofTime.alchemicalWizardry.common.bloodAltarUpgrade.UpgradedAltars; -import WayofTime.alchemicalWizardry.common.tileEntity.TEAltar; -import WayofTime.alchemicalWizardry.common.tileEntity.TEOrientable; -import WayofTime.alchemicalWizardry.common.tileEntity.TEPedestal; -import WayofTime.alchemicalWizardry.common.tileEntity.TEPlinth; -import WayofTime.alchemicalWizardry.common.tileEntity.TESocket; -import WayofTime.alchemicalWizardry.common.tileEntity.TETeleposer; -import WayofTime.alchemicalWizardry.common.tileEntity.TEWritingTable; - -import com.google.common.io.ByteArrayDataInput; -import com.google.common.io.ByteStreams; -import com.jcraft.jogg.Packet; - -public class PacketHandler //implements IPacketHandler -{ -// @Override -// public void onPacketData(INetworkManager manager, Packet250CustomPayload packet, Player player) -// { -// if (packet.channel.equals("BloodAltar")) -// { -// ByteArrayDataInput dat = ByteStreams.newDataInput(packet.data); -// int x = dat.readInt(); -// int y = dat.readInt(); -// int z = dat.readInt(); -// boolean hasStacks = dat.readByte() != 0; -// int[] items = new int[0]; -// -// if (hasStacks) -// { -// items = new int[1 * 3]; -// -// for (int i = 0; i < items.length; i++) -// { -// items[i] = dat.readInt(); -// } -// } -// -// int fluidIDMain = dat.readInt(); -// int fluidAmountMain = dat.readInt(); -// int fluidIDOutput = dat.readInt(); -// int fluidAmountOutput = dat.readInt(); -// int fluidIDInput = dat.readInt(); -// int fluidAmountInput = dat.readInt(); -// int capacity = dat.readInt(); -// World world = AlchemicalWizardry.proxy.getClientWorld(); -// TileEntity tileEntity = world.getBlockTileEntity(x, y, z); -// -// if (tileEntity instanceof TEAltar) -// { -// TEAltar tileEntityAltar = (TEAltar) tileEntity; -// FluidStack flMain = new FluidStack(fluidIDMain, fluidAmountMain); -// FluidStack flOutput = new FluidStack(fluidIDOutput, fluidAmountOutput); -// FluidStack flInput = new FluidStack(fluidIDInput, fluidAmountInput); -// tileEntityAltar.handlePacketData(items, flMain, flOutput, flInput, capacity); -// } -// } else if (packet.channel.equals("FallReset")) -// { -// if (player instanceof EntityPlayer) -// { -// ((EntityPlayer) player).fallDistance = 0; -// } -// } else if (packet.channel.equals("particle")) -// { -// ByteArrayInputStream bin = new ByteArrayInputStream(packet.data); -// DataInputStream din = new DataInputStream(bin); -// Random rand = new Random(); -// -// try -// { -// double x = din.readDouble(); -// double y = din.readDouble(); -// double z = din.readDouble(); -// short particleType = din.readShort(); -// World world = ((EntityPlayer) player).worldObj; -// -// if (particleType == 1) -// { -// world.spawnParticle("mobSpell", x + 0.5D + rand.nextGaussian() / 8, y + 1.1D, z + 0.5D + rand.nextGaussian() / 8, 0.5117D, 0.0117D, 0.0117D); -// } -// -// if (particleType == 2) -// { -// world.spawnParticle("reddust", x + 0.5D + rand.nextGaussian() / 8, y + 1.1D, z + 0.5D + rand.nextGaussian() / 8, 0.82D, 0.941D, 0.91D); -// } -// -// if (particleType == 3) -// { -// world.spawnParticle("mobSpell", x + 0.5D + rand.nextGaussian() / 8, y + 1.1D, z + 0.5D + rand.nextGaussian() / 8, 1.0D, 0.371D, 0.371D); -// } -// -// if (particleType == 4) -// { -// float f = (float) 1.0F; -// float f1 = f * 0.6F + 0.4F; -// float f2 = f * f * 0.7F - 0.5F; -// float f3 = f * f * 0.6F - 0.7F; -// -// for (int l = 0; l < 8; ++l) -// { -// world.spawnParticle("reddust", x + Math.random() - Math.random(), y + Math.random() - Math.random(), z + Math.random() - Math.random(), f1, f2, f3); -// } -// } -// } catch (IOException e) -// { -// e.printStackTrace(); -// } -// } else if (packet.channel.equals("CustomParticle")) -// { -// ByteArrayInputStream bin = new ByteArrayInputStream(packet.data); -// DataInputStream din = new DataInputStream(bin); -// Random rand = new Random(); -// -// try -// { -// World world = ((EntityPlayer) player).worldObj; -// int size = din.readInt(); -// String str = ""; -// -// for (int i = 0; i < size; i++) -// { -// str = str + din.readChar(); -// } -// -// double x = din.readDouble(); -// double y = din.readDouble(); -// double z = din.readDouble(); -// double xVel = din.readDouble(); -// double yVel = din.readDouble(); -// double zVel = din.readDouble(); -// world.spawnParticle(str, x, y, z, xVel, yVel, zVel); -// } catch (IOException e) -// { -// e.printStackTrace(); -// } -// } else if (packet.channel.equals("SetLifeEssence")) //Sets the data for the character -// { -// ByteArrayInputStream bin = new ByteArrayInputStream(packet.data); -// DataInputStream din = new DataInputStream(bin); -// -// try -// { -// EntityPlayer user = (EntityPlayer) player; -// int length = din.readInt(); -// String ownerName = ""; -// -// for (int i = 0; i < length; i++) -// { -// ownerName = ownerName + din.readChar(); -// } -// -// int addedEssence = din.readInt(); -// int maxEssence = din.readInt(); -// World world = MinecraftServer.getServer().worldServers[0]; -// LifeEssenceNetwork data = (LifeEssenceNetwork) world.loadItemData(LifeEssenceNetwork.class, ownerName); -// -// if (data == null) -// { -// data = new LifeEssenceNetwork(ownerName); -// world.setItemData(ownerName, data); -// } -// -// if (addedEssence > 0) -// { -// if (data.currentEssence < maxEssence) -// { -// data.currentEssence = Math.min(maxEssence, data.currentEssence + addedEssence); -// data.markDirty(); -// } -// -// if (!user.capabilities.isCreativeMode) -// { -// for (int i = 0; i < ((addedEssence + 99) / 100); i++) -// { -// //player.setEntityHealth((player.getHealth()-1)); -// user.setHealth((user.getHealth() - 1)); -// -// if (user.getHealth() <= 0.5f) -// { -// //user.inventory.dropAllItems(); -// user.onDeath(DamageSource.generic); -// return; -// } -// } -// } -// } else -// { -// int removedEssence = -addedEssence; -// -// if ((data.currentEssence - removedEssence) >= 0) -// { -// data.currentEssence -= removedEssence; -// data.markDirty(); -// } else -// { -// if (removedEssence >= 100) -// { -// for (int i = 0; i < ((removedEssence + 99) / 100); i++) -// { -// //player.setEntityHealth((player.getHealth()-1)); -// user.setHealth((user.getHealth() - 1)); -// -// if (user.getHealth() <= 0.5f) -// { -// //user.inventory.dropAllItems(); -// user.onDeath(DamageSource.generic); -// return; -// } -// } -// } else -// { -// if (user.worldObj.rand.nextInt(100) <= removedEssence) -// { -// user.setHealth((user.getHealth() - 1)); -// -// if (user.getHealth() <= 0.5f) -// { -// //user.inventory.dropAllItems(); -// user.onDeath(DamageSource.generic); -// return; -// } -// } -// } -// } -// } -// -// //PacketDispatcher.sendPacketToPlayer(PacketHandler.getPacket(ownerName), (Player)user); -//// data.currentEssence = addedEssence; -//// data.markDirty(); -// } catch (IOException e) -// { -// e.printStackTrace(); -// } -// } else if (packet.channel.equals("InfiniteLPPath")) -// { -// ByteArrayInputStream bin = new ByteArrayInputStream(packet.data); -// DataInputStream din = new DataInputStream(bin); -// -// try -// { -// EntityPlayer user = (EntityPlayer) player; -// int length = din.readInt(); -// String ownerName = ""; -// -// for (int i = 0; i < length; i++) -// { -// ownerName = ownerName + din.readChar(); -// } -// -// boolean fill = din.readBoolean(); -// World world = MinecraftServer.getServer().worldServers[0]; -// LifeEssenceNetwork data = (LifeEssenceNetwork) world.loadItemData(LifeEssenceNetwork.class, ownerName); -// -// if (data == null) -// { -// data = new LifeEssenceNetwork(ownerName); -// world.setItemData(ownerName, data); -// } -// -// if (fill) -// { -// data.currentEssence += 1000000; -// data.markDirty(); -// } else -// { -// data.currentEssence = 0; -// data.markDirty(); -// } -// -// //PacketDispatcher.sendPacketToPlayer(PacketHandler.getPacket(ownerName), (Player)user); -//// data.currentEssence = addedEssence; -//// data.markDirty(); -// } catch (IOException e) -// { -// e.printStackTrace(); -// } -// } else if (packet.channel.equals("GetLifeEssence")) -// { -// ByteArrayInputStream bin = new ByteArrayInputStream(packet.data); -// DataInputStream din = new DataInputStream(bin); -// -// try -// { -// int length = din.readInt(); -// String ownerName = ""; -// -// for (int i = 0; i < length; i++) -// { -// ownerName = ownerName + din.readChar(); -// } -// -// World world = MinecraftServer.getServer().worldServers[0]; -// LifeEssenceNetwork data = (LifeEssenceNetwork) world.loadItemData(LifeEssenceNetwork.class, ownerName); -// -// if (data == null) -// { -// data = new LifeEssenceNetwork(ownerName); -// world.setItemData(ownerName, data); -// } -// -// if (player instanceof EntityPlayer) -// { -// EntityPlayer owner = (EntityPlayer) player; -// ChatMessageComponent chatmessagecomponent = new ChatMessageComponent(); -// //chatmessagecomponent.func_111072_b("Current Essence: " + data.currentEssence + "LP"); -// chatmessagecomponent.addText("Current Essence: " + data.currentEssence + "LP"); -// owner.sendChatToPlayer(chatmessagecomponent); -// } -// } catch (IOException e) -// { -// e.printStackTrace(); -// } -// } else if (packet.channel.equals("GetAltarEssence")) -// { -// ByteArrayInputStream bin = new ByteArrayInputStream(packet.data); -// DataInputStream din = new DataInputStream(bin); -// -// try -// { -// int x = din.readInt(); -// int y = din.readInt(); -// int z = din.readInt(); -// -// if (player instanceof EntityPlayer) -// { -// EntityPlayer owner = (EntityPlayer) player; -// World world = owner.worldObj; -// TEAltar tileEntity = (TEAltar) world.getBlockTileEntity(x, y, z); -// -// if (tileEntity != null) -// { -// int level = UpgradedAltars.isAltarValid(world, x, y, z); -// ChatMessageComponent chatmessagecomponent = new ChatMessageComponent(); -// chatmessagecomponent.addText("Altar's Current Essence: " + tileEntity.getFluidAmount() + "LP" + "\n" + "Altar's Current Tier: " + level + "\nCapacity: " + tileEntity.getCapacity() + "LP"); -// //chatmessagecomponent.addText(); -// owner.sendChatToPlayer(chatmessagecomponent); -// } -// } -// } catch (IOException e) -// { -// e.printStackTrace(); -// } -// } else if (packet.channel.equals("TESocket")) -// { -// ByteArrayDataInput dat = ByteStreams.newDataInput(packet.data); -// int x = dat.readInt(); -// int y = dat.readInt(); -// int z = dat.readInt(); -// boolean hasStacks = dat.readByte() != 0; -// int[] items = new int[0]; -// -// if (hasStacks) -// { -// items = new int[1 * 3]; -// -// for (int i = 0; i < items.length; i++) -// { -// items[i] = dat.readInt(); -// } -// } -// -// World world = AlchemicalWizardry.proxy.getClientWorld(); -// TileEntity tileEntity = world.getBlockTileEntity(x, y, z); -// -// if (tileEntity instanceof TESocket) -// { -// TESocket tileEntityAltar = (TESocket) tileEntity; -// tileEntityAltar.handlePacketData(items); -// } -// } else if (packet.channel.equals("TEWritingTable")) -// { -// ByteArrayDataInput dat = ByteStreams.newDataInput(packet.data); -// int x = dat.readInt(); -// int y = dat.readInt(); -// int z = dat.readInt(); -// boolean hasStacks = dat.readByte() != 0; -// int[] items = new int[0]; -// -// if (hasStacks) -// { -// items = new int[7 * 3]; -// -// for (int i = 0; i < items.length; i++) -// { -// items[i] = dat.readInt(); -// } -// } -// -// World world = AlchemicalWizardry.proxy.getClientWorld(); -// TileEntity tileEntity = world.getBlockTileEntity(x, y, z); -// -// if (tileEntity instanceof TEWritingTable) -// { -// TEWritingTable tileEntityAltar = (TEWritingTable) tileEntity; -// tileEntityAltar.handlePacketData(items); -// } -// } else if (packet.channel.equals("TEOrientor")) -// { -// ByteArrayDataInput dat = ByteStreams.newDataInput(packet.data); -// int x = dat.readInt(); -// int y = dat.readInt(); -// int z = dat.readInt(); -// World world = AlchemicalWizardry.proxy.getClientWorld(); -// TileEntity tileEntity = world.getBlockTileEntity(x, y, z); -// -// if (tileEntity instanceof TEOrientable) -// { -// TEOrientable tileEntityOrientable = (TEOrientable) tileEntity; -// tileEntityOrientable.setInputDirection(ForgeDirection.getOrientation(dat.readInt())); -// tileEntityOrientable.setOutputDirection(ForgeDirection.getOrientation(dat.readInt())); -// world.markBlockForRenderUpdate(x, y, z); -// } -// } else if (packet.channel.equals("TEPedestal")) -// { -// ByteArrayDataInput dat = ByteStreams.newDataInput(packet.data); -// int x = dat.readInt(); -// int y = dat.readInt(); -// int z = dat.readInt(); -// boolean hasStacks = dat.readByte() != 0; -// int[] items = new int[0]; -// -// if (hasStacks) -// { -// items = new int[1 * 3]; -// -// for (int i = 0; i < items.length; i++) -// { -// items[i] = dat.readInt(); -// } -// } -// -// World world = AlchemicalWizardry.proxy.getClientWorld(); -// TileEntity tileEntity = world.getBlockTileEntity(x, y, z); -// -// if (tileEntity instanceof TEPedestal) -// { -// TEPedestal tileEntityAltar = (TEPedestal) tileEntity; -// tileEntityAltar.handlePacketData(items); -// } -// } else if (packet.channel.equals("TEPlinth")) -// { -// ByteArrayDataInput dat = ByteStreams.newDataInput(packet.data); -// int x = dat.readInt(); -// int y = dat.readInt(); -// int z = dat.readInt(); -// boolean hasStacks = dat.readByte() != 0; -// int[] items = new int[0]; -// -// if (hasStacks) -// { -// items = new int[1 * 3]; -// -// for (int i = 0; i < items.length; i++) -// { -// items[i] = dat.readInt(); -// } -// } -// -// World world = AlchemicalWizardry.proxy.getClientWorld(); -// TileEntity tileEntity = world.getBlockTileEntity(x, y, z); -// -// if (tileEntity instanceof TEPlinth) -// { -// TEPlinth tileEntityAltar = (TEPlinth) tileEntity; -// tileEntityAltar.handlePacketData(items); -// } -// } else if (packet.channel.equals("TETeleposer")) -// { -// ByteArrayDataInput dat = ByteStreams.newDataInput(packet.data); -// int x = dat.readInt(); -// int y = dat.readInt(); -// int z = dat.readInt(); -// boolean hasStacks = dat.readByte() != 0; -// int[] items = new int[0]; -// -// if (hasStacks) -// { -// items = new int[1 * 3]; -// -// for (int i = 0; i < items.length; i++) -// { -// items[i] = dat.readInt(); -// } -// } -// -// World world = AlchemicalWizardry.proxy.getClientWorld(); -// TileEntity tileEntity = world.getBlockTileEntity(x, y, z); -// -// if (tileEntity instanceof TETeleposer) -// { -// TETeleposer tileEntityAltar = (TETeleposer) tileEntity; -// tileEntityAltar.handlePacketData(items); -// } -// } else if (packet.channel.equals("SetPlayerVel")) -// { -// ByteArrayDataInput dat = ByteStreams.newDataInput(packet.data); -// double xVel = dat.readDouble(); -// double yVel = dat.readDouble(); -// double zVel = dat.readDouble(); -// ((EntityPlayer) player).setVelocity(xVel, yVel, zVel); -// } else if (packet.channel.equals("SetPlayerPos")) -// { -// ByteArrayDataInput dat = ByteStreams.newDataInput(packet.data); -// double xVel = dat.readDouble(); -// double yVel = dat.readDouble(); -// double zVel = dat.readDouble(); -// ((EntityPlayer) player).setPosition(xVel, yVel, zVel); -// } -// } -// -// public static Packet getPacket(TEAltar tileEntity) -// { -// ByteArrayOutputStream bos = new ByteArrayOutputStream(140); -// DataOutputStream dos = new DataOutputStream(bos); -// int[] items = tileEntity.buildIntDataList(); -// boolean hasStacks = (items != null); -// -// try -// { -// dos.writeInt(tileEntity.xCoord); -// dos.writeInt(tileEntity.yCoord); -// dos.writeInt(tileEntity.zCoord); -// dos.writeByte(hasStacks ? 1 : 0); -// -// if (hasStacks) -// { -// for (int i = 0; i < 3; i++) -// { -// dos.writeInt(items[i]); -// } -// } -// -// FluidStack flMain = tileEntity.getFluid(); -// -// if (flMain == null) -// { -// dos.writeInt(AlchemicalWizardry.lifeEssenceFluid.getBlockID()); -// dos.writeInt(0); -// } else -// { -// dos.writeInt(flMain.fluidID); -// dos.writeInt(flMain.amount); -// } -// -// FluidStack flOut = tileEntity.getOutputFluid(); -// -// if (flOut == null) -// { -// dos.writeInt(AlchemicalWizardry.lifeEssenceFluid.getBlockID()); -// dos.writeInt(0); -// } else -// { -// dos.writeInt(flOut.fluidID); -// dos.writeInt(flOut.amount); -// } -// -// FluidStack flIn = tileEntity.getInputFluid(); -// -// if (flIn == null) -// { -// dos.writeInt(AlchemicalWizardry.lifeEssenceFluid.getBlockID()); -// dos.writeInt(0); -// } else -// { -// dos.writeInt(flIn.fluidID); -// dos.writeInt(flIn.amount); -// } -// -// dos.writeInt(tileEntity.capacity); -// } catch (IOException e) -// { -// e.printStackTrace(); -// } -// -// Packet250CustomPayload pkt = new Packet250CustomPayload(); -// pkt.channel = "BloodAltar"; -// pkt.data = bos.toByteArray(); -// pkt.length = bos.size(); -// pkt.isChunkDataPacket = true; -// return pkt; -// } -// -// public static Packet getPacket(TESocket tileEntity) -// { -// ByteArrayOutputStream bos = new ByteArrayOutputStream(140); -// DataOutputStream dos = new DataOutputStream(bos); -// int[] items = tileEntity.buildIntDataList(); -// boolean hasStacks = (items != null); -// -// try -// { -// dos.writeInt(tileEntity.xCoord); -// dos.writeInt(tileEntity.yCoord); -// dos.writeInt(tileEntity.zCoord); -// dos.writeByte(hasStacks ? 1 : 0); -// -// if (hasStacks) -// { -// for (int i = 0; i < 3; i++) -// { -// dos.writeInt(items[i]); -// } -// } -// } catch (IOException e) -// { -// e.printStackTrace(); -// } -// -// Packet250CustomPayload pkt = new Packet250CustomPayload(); -// pkt.channel = "TESocket"; -// pkt.data = bos.toByteArray(); -// pkt.length = bos.size(); -// pkt.isChunkDataPacket = true; -// return pkt; -// } -// -// public static Packet getPacket(String ownerName, int addedEssence, int maxEssence) -// //Packet to be sent to server to change essence -// { -// ByteArrayOutputStream bos = new ByteArrayOutputStream(140); -// DataOutputStream dos = new DataOutputStream(bos); -// -// try -// { -// dos.writeInt(ownerName.length()); -// dos.writeChars(ownerName); -// dos.writeInt(addedEssence); -// dos.writeInt(maxEssence); //Used for Blood Orbs, but does nothing for other items -// } catch (IOException e) -// { -// e.printStackTrace(); -// } -// -// Packet250CustomPayload pkt = new Packet250CustomPayload(); -// pkt.channel = "SetLifeEssence"; -// pkt.data = bos.toByteArray(); -// pkt.length = bos.size(); -// //pkt.isChunkDataPacket = true; -// return pkt; -// } -// -// public static Packet getPacket(String ownerName) //stores the current essence in the player's NBT -// { -// ByteArrayOutputStream bos = new ByteArrayOutputStream(140); -// DataOutputStream dos = new DataOutputStream(bos); -// -// try -// { -// dos.writeInt(ownerName.length()); -// dos.writeChars(ownerName); -// } catch (IOException e) -// { -// e.printStackTrace(); -// } -// -// Packet250CustomPayload pkt = new Packet250CustomPayload(); -// pkt.channel = "GetLifeEssence"; -// pkt.data = bos.toByteArray(); -// pkt.length = bos.size(); -// //pkt.isChunkDataPacket = true; -// return pkt; -// } -// -// public static Packet getAltarPacket(int x, int y, int z) -// { -// ByteArrayOutputStream bos = new ByteArrayOutputStream(140); -// DataOutputStream dos = new DataOutputStream(bos); -// -// try -// { -// dos.writeInt(x); -// dos.writeInt(y); -// dos.writeInt(z); -// } catch (IOException e) -// { -// e.printStackTrace(); -// } -// -// Packet250CustomPayload pkt = new Packet250CustomPayload(); -// pkt.channel = "GetAltarEssence"; -// pkt.data = bos.toByteArray(); -// pkt.length = bos.size(); -// //pkt.isChunkDataPacket = true; -// return pkt; -// } -// -// public static Packet getPacket(TEWritingTable tileEntity) -// { -// // TODO Auto-generated method stub -// ByteArrayOutputStream bos = new ByteArrayOutputStream(140); -// DataOutputStream dos = new DataOutputStream(bos); -// int[] items = tileEntity.buildIntDataList(); -// boolean hasStacks = (items != null); -// -// try -// { -// dos.writeInt(tileEntity.xCoord); -// dos.writeInt(tileEntity.yCoord); -// dos.writeInt(tileEntity.zCoord); -// dos.writeByte(hasStacks ? 1 : 0); -// -// if (hasStacks) -// { -// for (int i = 0; i < 3 * 7; i++) -// { -// dos.writeInt(items[i]); -// } -// } -// } catch (IOException e) -// { -// e.printStackTrace(); -// } -// -// Packet250CustomPayload pkt = new Packet250CustomPayload(); -// pkt.channel = "TEWritingTable"; -// pkt.data = bos.toByteArray(); -// pkt.length = bos.size(); -// pkt.isChunkDataPacket = true; -// return pkt; -// } -// -// public static Packet getPacket(TEPedestal tileEntity) -// { -// // TODO Auto-generated method stub -// ByteArrayOutputStream bos = new ByteArrayOutputStream(140); -// DataOutputStream dos = new DataOutputStream(bos); -// int[] items = tileEntity.buildIntDataList(); -// boolean hasStacks = (items != null); -// -// try -// { -// dos.writeInt(tileEntity.xCoord); -// dos.writeInt(tileEntity.yCoord); -// dos.writeInt(tileEntity.zCoord); -// dos.writeByte(hasStacks ? 1 : 0); -// -// if (hasStacks) -// { -// for (int i = 0; i < 3 * 1; i++) -// { -// dos.writeInt(items[i]); -// } -// } -// } catch (IOException e) -// { -// e.printStackTrace(); -// } -// -// Packet250CustomPayload pkt = new Packet250CustomPayload(); -// pkt.channel = "TEPedestal"; -// pkt.data = bos.toByteArray(); -// pkt.length = bos.size(); -// pkt.isChunkDataPacket = true; -// return pkt; -// } -// -// public static Packet getPacket(TEPlinth tileEntity) -// { -// // TODO Auto-generated method stub -// ByteArrayOutputStream bos = new ByteArrayOutputStream(140); -// DataOutputStream dos = new DataOutputStream(bos); -// int[] items = tileEntity.buildIntDataList(); -// boolean hasStacks = (items != null); -// -// try -// { -// dos.writeInt(tileEntity.xCoord); -// dos.writeInt(tileEntity.yCoord); -// dos.writeInt(tileEntity.zCoord); -// dos.writeByte(hasStacks ? 1 : 0); -// -// if (hasStacks) -// { -// for (int i = 0; i < 3 * 1; i++) -// { -// dos.writeInt(items[i]); -// } -// } -// } catch (IOException e) -// { -// e.printStackTrace(); -// } -// -// Packet250CustomPayload pkt = new Packet250CustomPayload(); -// pkt.channel = "TEPlinth"; -// pkt.data = bos.toByteArray(); -// pkt.length = bos.size(); -// pkt.isChunkDataPacket = true; -// return pkt; -// } -// -// public static Packet getPacket(TETeleposer tileEntity) -// { -// // TODO Auto-generated method stub -// ByteArrayOutputStream bos = new ByteArrayOutputStream(140); -// DataOutputStream dos = new DataOutputStream(bos); -// int[] items = tileEntity.buildIntDataList(); -// boolean hasStacks = (items != null); -// -// try -// { -// dos.writeInt(tileEntity.xCoord); -// dos.writeInt(tileEntity.yCoord); -// dos.writeInt(tileEntity.zCoord); -// dos.writeByte(hasStacks ? 1 : 0); -// -// if (hasStacks) -// { -// for (int i = 0; i < 3 * 1; i++) -// { -// dos.writeInt(items[i]); -// } -// } -// } catch (IOException e) -// { -// e.printStackTrace(); -// } -// -// Packet250CustomPayload pkt = new Packet250CustomPayload(); -// pkt.channel = "TETeleposer"; -// pkt.data = bos.toByteArray(); -// pkt.length = bos.size(); -// pkt.isChunkDataPacket = true; -// return pkt; -// } -// -// public static Packet getCustomParticlePacket(String str, double x, double y, double z, double xVel, double yVel, double zVel) -// { -// ByteArrayOutputStream bos = new ByteArrayOutputStream(140); -// DataOutputStream dos = new DataOutputStream(bos); -// -// try -// { -// dos.writeInt(str.length()); -// dos.writeChars(str); -// dos.writeDouble(x); -// dos.writeDouble(y); -// dos.writeDouble(z); -// dos.writeDouble(xVel); -// dos.writeDouble(yVel); -// dos.writeDouble(zVel); -// } catch (IOException e) -// { -// e.printStackTrace(); -// } -// -// Packet250CustomPayload pkt = new Packet250CustomPayload(); -// pkt.channel = "CustomParticle"; -// pkt.data = bos.toByteArray(); -// pkt.length = bos.size(); -// pkt.isChunkDataPacket = false; -// return pkt; -// } -// -// public static Packet getPlayerVelocitySettingPacket(double xVel, double yVel, double zVel) -// { -// ByteArrayOutputStream bos = new ByteArrayOutputStream(140); -// DataOutputStream dos = new DataOutputStream(bos); -// -// try -// { -// dos.writeDouble(xVel); -// dos.writeDouble(yVel); -// dos.writeDouble(zVel); -// } catch (IOException e) -// { -// e.printStackTrace(); -// } -// -// Packet250CustomPayload pkt = new Packet250CustomPayload(); -// pkt.channel = "SetPlayerVel"; -// pkt.data = bos.toByteArray(); -// pkt.length = bos.size(); -// pkt.isChunkDataPacket = false; -// return pkt; -// } -// -// public static Packet getPlayerPositionSettingPacket(double xVel, double yVel, double zVel) -// { -// ByteArrayOutputStream bos = new ByteArrayOutputStream(140); -// DataOutputStream dos = new DataOutputStream(bos); -// -// try -// { -// dos.writeDouble(xVel); -// dos.writeDouble(yVel); -// dos.writeDouble(zVel); -// } catch (IOException e) -// { -// e.printStackTrace(); -// } -// -// Packet250CustomPayload pkt = new Packet250CustomPayload(); -// pkt.channel = "SetPlayerPos"; -// pkt.data = bos.toByteArray(); -// pkt.length = bos.size(); -// pkt.isChunkDataPacket = false; -// return pkt; -// } -// -// public static Packet getCreativeCheatPacket(String ownerName, boolean isFill) -// { -// ByteArrayOutputStream bos = new ByteArrayOutputStream(140); -// DataOutputStream dos = new DataOutputStream(bos); -// -// try -// { -// dos.writeInt(ownerName.length()); -// dos.writeChars(ownerName); -// dos.writeBoolean(isFill); -// } catch (IOException e) -// { -// e.printStackTrace(); -// } -// -// Packet250CustomPayload pkt = new Packet250CustomPayload(); -// pkt.channel = "InfiniteLPPath"; -// pkt.data = bos.toByteArray(); -// pkt.length = bos.size(); -// pkt.isChunkDataPacket = false; -// return pkt; -// } -// -// public static Packet getBlockOrientationPacket(TEOrientable tileEntity) -// { -// ByteArrayOutputStream bos = new ByteArrayOutputStream(140); -// DataOutputStream dos = new DataOutputStream(bos); -// -// try -// { -// dos.writeInt(tileEntity.xCoord); -// dos.writeInt(tileEntity.yCoord); -// dos.writeInt(tileEntity.zCoord); -// dos.writeInt(tileEntity.getIntForForgeDirection(tileEntity.getInputDirection())); -// dos.writeInt(tileEntity.getIntForForgeDirection(tileEntity.getOutputDirection())); -// } catch (IOException e) -// { -// e.printStackTrace(); -// } -// -// Packet250CustomPayload pkt = new Packet250CustomPayload(); -// pkt.channel = "TEOrientor"; -// pkt.data = bos.toByteArray(); -// pkt.length = bos.size(); -// pkt.isChunkDataPacket = true; -// return pkt; -// } -} diff --git a/src-backup/main/java/WayofTime/alchemicalWizardry/common/PlinthComponent.java b/src-backup/main/java/WayofTime/alchemicalWizardry/common/PlinthComponent.java deleted file mode 100644 index 6232828a..00000000 --- a/src-backup/main/java/WayofTime/alchemicalWizardry/common/PlinthComponent.java +++ /dev/null @@ -1,37 +0,0 @@ -package WayofTime.alchemicalWizardry.common; - -public class PlinthComponent -{ - public int xOffset; - public int yOffset; - public int zOffset; - public int ring; - - public PlinthComponent(int xOffset, int yOffset, int zOffset, int ring) - { - this.xOffset = xOffset; - this.yOffset = yOffset; - this.zOffset = zOffset; - this.ring = ring; - } - - public int getXOffset() - { - return xOffset; - } - - public int getYOffset() - { - return yOffset; - } - - public int getZOffset() - { - return zOffset; - } - - public int getRing() - { - return ring; - } -} diff --git a/src-backup/main/java/WayofTime/alchemicalWizardry/common/alchemy/CombinedPotionComponent.java b/src-backup/main/java/WayofTime/alchemicalWizardry/common/alchemy/CombinedPotionComponent.java deleted file mode 100644 index 25dfa1b4..00000000 --- a/src-backup/main/java/WayofTime/alchemicalWizardry/common/alchemy/CombinedPotionComponent.java +++ /dev/null @@ -1,27 +0,0 @@ -package WayofTime.alchemicalWizardry.common.alchemy; - -import net.minecraft.potion.Potion; - -public class CombinedPotionComponent -{ - public Potion result; - public Potion pot1; - public Potion pot2; - - public CombinedPotionComponent(Potion result, Potion pot1, Potion pot2) - { - this.result = result; - this.pot1 = pot1; - this.pot2 = pot2; - } - - public boolean isRecipeValid(Potion test1, Potion test2) - { - return (test1 == pot1 && test2 == pot2) || (test1 == pot2 && test2 == pot1); - } - - public boolean isRecipeValid(int test1, int test2) - { - return (test1 == pot1.id && test2 == pot2.id) || (test1 == pot2.id && test2 == pot1.id); - } -} diff --git a/src-backup/main/java/WayofTime/alchemicalWizardry/common/alchemy/CombinedPotionRegistry.java b/src-backup/main/java/WayofTime/alchemicalWizardry/common/alchemy/CombinedPotionRegistry.java deleted file mode 100644 index 0a138dec..00000000 --- a/src-backup/main/java/WayofTime/alchemicalWizardry/common/alchemy/CombinedPotionRegistry.java +++ /dev/null @@ -1,182 +0,0 @@ -package WayofTime.alchemicalWizardry.common.alchemy; - -import java.util.ArrayList; -import java.util.List; - -import net.minecraft.item.ItemStack; -import net.minecraft.potion.Potion; -import net.minecraft.potion.PotionEffect; -import WayofTime.alchemicalWizardry.api.alchemy.AlchemyPotionHelper; -import WayofTime.alchemicalWizardry.common.items.potion.AlchemyFlask; - -public class CombinedPotionRegistry -{ - public static List potionList = new ArrayList(); - - public static void registerCombinedPotionRecipe(Potion result, Potion pot1, Potion pot2) - { - potionList.add(new CombinedPotionComponent(result, pot1, pot2)); - } - - public static boolean isRecipeValid(Potion pot1, Potion pot2) - { - for(CombinedPotionComponent recipe : potionList) - { - if(recipe.isRecipeValid(pot1, pot2)) - { - return true; - } - } - - return false; - } - - public static boolean isRecipeValid(int pot1, int pot2) - { - for(CombinedPotionComponent recipe : potionList) - { - if(recipe.isRecipeValid(pot1, pot2)) - { - return true; - } - } - - return false; - } - - public static Potion getPotion(Potion pot1, Potion pot2) - { - for(CombinedPotionComponent recipe : potionList) - { - if(recipe.isRecipeValid(pot1, pot2)) - { - return recipe.result; - } - } - - return null; - } - - public static Potion getPotion(int pot1, int pot2) - { - for(CombinedPotionComponent recipe : potionList) - { - if(recipe.isRecipeValid(pot1, pot2)) - { - return recipe.result; - } - } - - return null; - } - - public static ItemStack applyPotionEffect(ItemStack stack) - { - if(stack == null || !(stack.getItem() instanceof AlchemyFlask)) - { - return null; - } - - List list = AlchemyFlask.getEffects(stack); - if(list == null) - { - return stack; - } - - boolean isDone = false; - - for(AlchemyPotionHelper helper1 : list) - { - if(isDone) - { - continue; - } - - for(int i=0; i list = AlchemyFlask.getEffects(stack); - if(list == null) - { - return false; - } - - for(AlchemyPotionHelper helper1 : list) - { - for(AlchemyPotionHelper helper2 : list) - { - int pot1 = helper1.getPotionID(); - int pot2 = helper2.getPotionID(); - - if(isRecipeValid(pot1, pot2)) - { - return true; - } - } - } - - return false; - } - - public static PotionEffect getResultantPotion(AlchemyPotionHelper potE1, AlchemyPotionHelper potE2) - { - if(potE1 == null || potE2 == null) - { - return null; - } - - int pot1 = potE1.getPotionID(); - int pot2 = potE2.getPotionID(); - - if(isRecipeValid(pot1, pot2)) - { - int duration = (int)((potE1.getTickDuration()* Math.pow(8.0f / 3.0f, potE1.getdurationFactor()) + potE2.getdurationFactor() * Math.pow(8.0f / 3.0f, potE2.getdurationFactor()))/2.0); - int amplifier = (potE1.getConcentration() + potE2.getConcentration())/2; - - Potion pot = getPotion(pot1, pot2); - - return new PotionEffect(pot.id, duration, amplifier); - } - - return null; - } -} diff --git a/src-backup/main/java/WayofTime/alchemicalWizardry/common/alchemy/ICombinationalCatalyst.java b/src-backup/main/java/WayofTime/alchemicalWizardry/common/alchemy/ICombinationalCatalyst.java deleted file mode 100644 index 9acdc197..00000000 --- a/src-backup/main/java/WayofTime/alchemicalWizardry/common/alchemy/ICombinationalCatalyst.java +++ /dev/null @@ -1,6 +0,0 @@ -package WayofTime.alchemicalWizardry.common.alchemy; - -public interface ICombinationalCatalyst -{ - -} diff --git a/src-backup/main/java/WayofTime/alchemicalWizardry/common/block/ArmourForge.java b/src-backup/main/java/WayofTime/alchemicalWizardry/common/block/ArmourForge.java deleted file mode 100644 index d1bc6a1d..00000000 --- a/src-backup/main/java/WayofTime/alchemicalWizardry/common/block/ArmourForge.java +++ /dev/null @@ -1,336 +0,0 @@ -package WayofTime.alchemicalWizardry.common.block; - -import java.util.ArrayList; -import java.util.List; - -import net.minecraft.block.Block; -import net.minecraft.block.material.Material; -import net.minecraft.client.renderer.texture.IIconRegister; -import net.minecraft.entity.effect.EntityLightningBolt; -import net.minecraft.entity.item.EntityItem; -import net.minecraft.entity.player.EntityPlayer; -import net.minecraft.item.Item; -import net.minecraft.item.ItemStack; -import net.minecraft.nbt.NBTTagCompound; -import net.minecraft.tileentity.TileEntity; -import net.minecraft.world.World; -import WayofTime.alchemicalWizardry.AlchemicalWizardry; -import WayofTime.alchemicalWizardry.ModItems; -import WayofTime.alchemicalWizardry.api.items.interfaces.ArmourUpgrade; -import WayofTime.alchemicalWizardry.common.ArmourComponent; -import WayofTime.alchemicalWizardry.common.items.BoundArmour; -import WayofTime.alchemicalWizardry.common.spell.complex.effect.SpellHelper; -import WayofTime.alchemicalWizardry.common.tileEntity.TEAltar; -import WayofTime.alchemicalWizardry.common.tileEntity.TESocket; -import cpw.mods.fml.relauncher.Side; -import cpw.mods.fml.relauncher.SideOnly; - -public class ArmourForge extends Block -{ - public static List helmetList = new ArrayList(); - public static List plateList = new ArrayList(); - public static List leggingsList = new ArrayList(); - public static List bootsList = new ArrayList(); - - public ArmourForge() - { - super(Material.iron); - setHardness(2.0F); - setResistance(5.0F); - setCreativeTab(AlchemicalWizardry.tabBloodMagic); - this.setBlockName("armourForge"); - //setUnlocalizedName("armourForge"); - // TODO Auto-generated constructor stub - } - - @Override - @SideOnly(Side.CLIENT) - public void registerBlockIcons(IIconRegister iconRegister) - { - this.blockIcon = iconRegister.registerIcon("AlchemicalWizardry:SoulForge"); - } - - @Override - public boolean onBlockActivated(World world, int x, int y, int z, EntityPlayer player, int idk, float what, float these, float are) - { - if (world.isRemote) - { - return false; - } - - int armourType = getArmourType(world, x, y, z); - - if (armourType == -1) - { - return false; - } - - int direction = getDirectionForArmourType(world, x, y, z, armourType); - - if (!isParadigmValid(armourType, direction, world, x, y, z)) - { - return false; - } - - List list = null; - ItemStack armourPiece = null; - - switch (armourType) - { - case 0: - list = plateList; - armourPiece = new ItemStack(ModItems.boundPlate, 1, 0); - break; - - case 1: - list = leggingsList; - armourPiece = new ItemStack(ModItems.boundLeggings, 1, 0); - break; - - case 2: - list = helmetList; - armourPiece = new ItemStack(ModItems.boundHelmet, 1, 0); - break; - - case 3: - list = bootsList; - armourPiece = new ItemStack(ModItems.boundBoots, 1, 0); - break; - } - - if (list == null) - { - return false; - } - - if (armourPiece == null) - { - return false; - } - - if (armourPiece.stackTagCompound == null) - { - armourPiece.setTagCompound(new NBTTagCompound()); - } - - for (ArmourComponent ac : list) - { - int xOff = ac.getXOff(); - int zOff = ac.getZOff(); - TileEntity tileEntity; - - switch (direction) - { - case 1: - tileEntity = world.getTileEntity(x + xOff, y, z - zOff); - break; - - case 2: - tileEntity = world.getTileEntity(x + zOff, y, z + xOff); - break; - - case 3: - tileEntity = world.getTileEntity(x - xOff, y, z + zOff); - break; - - case 4: - tileEntity = world.getTileEntity(x - zOff, y, z - xOff); - break; - - case 5: - tileEntity = world.getTileEntity(x + xOff, y + zOff, z); - break; - - case 6: - tileEntity = world.getTileEntity(x, y + zOff, z + xOff); - break; - - default: - tileEntity = null; - } - - if (tileEntity instanceof TESocket) - { - ItemStack itemStack = ((TESocket) tileEntity).getStackInSlot(0); - int xCoord = tileEntity.xCoord; - int yCoord = tileEntity.yCoord; - int zCoord = tileEntity.zCoord; - ((TESocket) tileEntity).setInventorySlotContents(0, null); - world.setBlockToAir(tileEntity.xCoord, tileEntity.yCoord, tileEntity.zCoord); - - for (int i = 0; i < 8; i++) - { - //PacketDispatcher.sendPacketToAllAround(xCoord, yCoord, zCoord, 20, world.provider.dimensionId, TEAltar.getParticlePacket(xCoord, yCoord, zCoord, (short) 1)); - SpellHelper.sendIndexedParticleToAllAround(world, xCoord, yCoord, zCoord, 20, world.provider.dimensionId, 1, xCoord, yCoord, zCoord); - } - - if (itemStack != null) - { - Item item = itemStack.getItem(); - - if (item instanceof ArmourUpgrade) - { - ((BoundArmour) armourPiece.getItem()).hasAddedToInventory(armourPiece, itemStack.copy()); - ((TESocket) tileEntity).setInventorySlotContents(0, null); - } - } - } - } - - if (armourPiece != null) - { - int xOff = (world.rand.nextInt(11) - 5); - int zOff = (int) (Math.sqrt(25 - xOff * xOff) * (world.rand.nextInt(2) - 0.5) * 2); - world.addWeatherEffect(new EntityLightningBolt(world, x + xOff, y + 5, z + zOff)); - world.spawnEntityInWorld(new EntityItem(world, x, y + 1, z, armourPiece)); - } - - return true; - } - - //0 for plate, 1 for leggings, 2 for helmet, 3 for boots - public int getArmourType(World world, int x, int y, int z) - { - for (int i = 0; i <= 3; i++) - { - if (getDirectionForArmourType(world, x, y, z, i) != -1) - { - return i; - } - } - - return -1; - } - - public int getDirectionForArmourType(World world, int x, int y, int z, int armourType) - { - for (int i = 1; i <= 6; i++) - { - if (isParadigmValid(armourType, i, world, x, y, z)) - { - return i; - } - } - - return -1; - } - - public boolean isParadigmValid(int armourType, int direction, World world, int x, int y, int z) - { - List list = null; - - switch (armourType) - { - case 0: - list = plateList; - break; - - case 1: - list = leggingsList; - break; - - case 2: - list = helmetList; - break; - - case 3: - list = bootsList; - break; - } - - if (list == null) - { - return false; - } - - for (ArmourComponent ac : list) - { - int xOff = ac.getXOff(); - int zOff = ac.getZOff(); - - switch (direction) - { - case 1: - if (!(world.getTileEntity(x + xOff, y, z - zOff) instanceof TESocket)) - { - return false; - } - - break; - - case 2: - if (!(world.getTileEntity(x + zOff, y, z + xOff) instanceof TESocket)) - { - return false; - } - - break; - - case 3: - if (!(world.getTileEntity(x - xOff, y, z + zOff) instanceof TESocket)) - { - return false; - } - - break; - - case 4: - if (!(world.getTileEntity(x - zOff, y, z - xOff) instanceof TESocket)) - { - return false; - } - - break; - - case 5: - if (!(world.getTileEntity(x + xOff, y + zOff, z) instanceof TESocket)) - { - return false; - } - - break; - - case 6: - if (!(world.getTileEntity(x, y + zOff, z + xOff) instanceof TESocket)) - { - return false; - } - - break; - - default: - return false; - } - } - - return true; - } - - public static void initializeRecipes() - { - helmetList.add(new ArmourComponent(-1, 1)); - helmetList.add(new ArmourComponent(0, 1)); - helmetList.add(new ArmourComponent(1, 1)); - helmetList.add(new ArmourComponent(-1, 0)); - helmetList.add(new ArmourComponent(1, 0)); - bootsList.add(new ArmourComponent(-1, 1)); - bootsList.add(new ArmourComponent(1, 1)); - bootsList.add(new ArmourComponent(-1, 0)); - bootsList.add(new ArmourComponent(1, 0)); - plateList.add(new ArmourComponent(-1, 0)); - plateList.add(new ArmourComponent(1, 0)); - plateList.add(new ArmourComponent(-1, -1)); - plateList.add(new ArmourComponent(0, -1)); - plateList.add(new ArmourComponent(1, -1)); - plateList.add(new ArmourComponent(-1, -2)); - plateList.add(new ArmourComponent(0, -2)); - plateList.add(new ArmourComponent(1, -2)); - leggingsList.add(new ArmourComponent(-1, 1)); - leggingsList.add(new ArmourComponent(0, 1)); - leggingsList.add(new ArmourComponent(1, 1)); - leggingsList.add(new ArmourComponent(-1, 0)); - leggingsList.add(new ArmourComponent(1, 0)); - leggingsList.add(new ArmourComponent(-1, -1)); - leggingsList.add(new ArmourComponent(1, -1)); - } -} diff --git a/src-backup/main/java/WayofTime/alchemicalWizardry/common/block/BlockAlchemicCalcinator.java b/src-backup/main/java/WayofTime/alchemicalWizardry/common/block/BlockAlchemicCalcinator.java deleted file mode 100644 index 6ed95221..00000000 --- a/src-backup/main/java/WayofTime/alchemicalWizardry/common/block/BlockAlchemicCalcinator.java +++ /dev/null @@ -1,168 +0,0 @@ -package WayofTime.alchemicalWizardry.common.block; - -import java.util.Random; - -import net.minecraft.block.Block; -import net.minecraft.block.BlockContainer; -import net.minecraft.block.material.Material; -import net.minecraft.entity.item.EntityItem; -import net.minecraft.entity.player.EntityPlayer; -import net.minecraft.inventory.IInventory; -import net.minecraft.item.ItemStack; -import net.minecraft.nbt.NBTTagCompound; -import net.minecraft.tileentity.TileEntity; -import net.minecraft.world.World; -import WayofTime.alchemicalWizardry.AlchemicalWizardry; -import WayofTime.alchemicalWizardry.api.items.interfaces.IBloodOrb; -import WayofTime.alchemicalWizardry.api.items.interfaces.IReagentManipulator; -import WayofTime.alchemicalWizardry.common.tileEntity.TEAlchemicCalcinator; - -public class BlockAlchemicCalcinator extends BlockContainer -{ - public BlockAlchemicCalcinator() - { - super(Material.rock); - setHardness(2.0F); - setResistance(5.0F); - this.setCreativeTab(AlchemicalWizardry.tabBloodMagic); - this.setBlockName("alchemicCalcinator"); - } - - @Override - public TileEntity createNewTileEntity(World world, int meta) - { - return new TEAlchemicCalcinator(); - } - - @Override - public boolean renderAsNormalBlock() - { - return false; - } - - @Override - public int getRenderType() - { - return -1; - } - - @Override - public boolean isOpaqueCube() - { - return false; - } - - @Override - public boolean hasTileEntity() - { - return true; - } - - @Override - public boolean canProvidePower() - { - return true; - } - - @Override - public void breakBlock(World world, int x, int y, int z, Block par5, int par6) - { - dropItems(world, x, y, z); - super.breakBlock(world, x, y, z, par5, par6); - } - - private void dropItems(World world, int x, int y, int z) - { - Random rand = new Random(); - TileEntity tileEntity = world.getTileEntity(x, y, z); - - if (!(tileEntity instanceof IInventory)) - { - return; - } - - IInventory inventory = (IInventory) tileEntity; - - for (int i = 0; i < inventory.getSizeInventory(); i++) - { - ItemStack item = inventory.getStackInSlot(i); - - if (item != null && item.stackSize > 0) - { - float rx = rand.nextFloat() * 0.8F + 0.1F; - float ry = rand.nextFloat() * 0.8F + 0.1F; - float rz = rand.nextFloat() * 0.8F + 0.1F; - EntityItem entityItem = new EntityItem(world, - x + rx, y + ry, z + rz, - new ItemStack(item.getItem(), item.stackSize, item.getItemDamage())); - - if (item.hasTagCompound()) - { - entityItem.getEntityItem().setTagCompound((NBTTagCompound) item.getTagCompound().copy()); - } - - float factor = 0.05F; - entityItem.motionX = rand.nextGaussian() * factor; - entityItem.motionY = rand.nextGaussian() * factor + 0.2F; - entityItem.motionZ = rand.nextGaussian() * factor; - world.spawnEntityInWorld(entityItem); - item.stackSize = 0; - } - } - } - - @Override - public boolean onBlockActivated(World world, int x, int y, int z, EntityPlayer player, int idk, float what, float these, float are) - { - TEAlchemicCalcinator tileEntity = (TEAlchemicCalcinator) world.getTileEntity(x, y, z); - - if (tileEntity == null || player.isSneaking()) - { - return false; - } - - ItemStack playerItem = player.getCurrentEquippedItem(); - - if (playerItem != null) - { - if(playerItem.getItem() instanceof IReagentManipulator) - { - return false; - } - - if(playerItem.getItem() instanceof IBloodOrb) - { - if(tileEntity.getStackInSlot(0) == null) - { - ItemStack newItem = playerItem.copy(); - newItem.stackSize = 1; - --playerItem.stackSize; - tileEntity.setInventorySlotContents(0, newItem); - } - } - else if(tileEntity.getStackInSlot(1) == null) - { - ItemStack newItem = playerItem.copy(); - newItem.stackSize = 1; - --playerItem.stackSize; - tileEntity.setInventorySlotContents(1, newItem); - } - - } else if (playerItem == null) - { - if(tileEntity.getStackInSlot(1) != null) - { - player.inventory.addItemStackToInventory(tileEntity.getStackInSlot(1)); - tileEntity.setInventorySlotContents(1, null); - }else if(tileEntity.getStackInSlot(0) != null) - { - player.inventory.addItemStackToInventory(tileEntity.getStackInSlot(0)); - tileEntity.setInventorySlotContents(0, null); - } - } - - tileEntity.getWorldObj().markBlockForUpdate(x, y, z); - - return true; - } -} diff --git a/src-backup/main/java/WayofTime/alchemicalWizardry/common/block/BlockAltar.java b/src-backup/main/java/WayofTime/alchemicalWizardry/common/block/BlockAltar.java deleted file mode 100644 index 8b1b2f8c..00000000 --- a/src-backup/main/java/WayofTime/alchemicalWizardry/common/block/BlockAltar.java +++ /dev/null @@ -1,314 +0,0 @@ -package WayofTime.alchemicalWizardry.common.block; - -import java.util.Random; - -import javax.swing.Icon; - -import net.minecraft.block.Block; -import net.minecraft.block.BlockContainer; -import net.minecraft.block.material.Material; -import net.minecraft.client.renderer.texture.IIconRegister; -import net.minecraft.entity.item.EntityItem; -import net.minecraft.entity.player.EntityPlayer; -import net.minecraft.inventory.IInventory; -import net.minecraft.item.ItemStack; -import net.minecraft.nbt.NBTTagCompound; -import net.minecraft.tileentity.TileEntity; -import net.minecraft.util.IIcon; -import net.minecraft.world.IBlockAccess; -import net.minecraft.world.World; -import WayofTime.alchemicalWizardry.AlchemicalWizardry; -import WayofTime.alchemicalWizardry.ModItems; -import WayofTime.alchemicalWizardry.common.PacketHandler; -import WayofTime.alchemicalWizardry.common.items.EnergyBattery; -import WayofTime.alchemicalWizardry.common.items.sigil.SigilOfHolding; -import WayofTime.alchemicalWizardry.common.tileEntity.TEAltar; -import WayofTime.alchemicalWizardry.common.tileEntity.TEBellJar; -import cpw.mods.fml.relauncher.Side; -import cpw.mods.fml.relauncher.SideOnly; - -public class BlockAltar extends BlockContainer -{ - @SideOnly(Side.CLIENT) - private static IIcon topIcon; - @SideOnly(Side.CLIENT) - private static IIcon sideIcon1; - @SideOnly(Side.CLIENT) - private static IIcon sideIcon2; - @SideOnly(Side.CLIENT) - private static IIcon bottomIcon; - - public BlockAltar() - { - super(Material.rock); - setHardness(2.0F); - setResistance(5.0F); - setCreativeTab(AlchemicalWizardry.tabBloodMagic); - this.setBlockName("bloodAltar"); - //setUnlocalizedName("blockAltar"); - //func_111022_d("AlchemicalWizardry:blocks"); - } - - @Override - @SideOnly(Side.CLIENT) - public void registerBlockIcons(IIconRegister iconRegister) - { - this.topIcon = iconRegister.registerIcon("AlchemicalWizardry:BloodAltar_Top"); - this.sideIcon1 = iconRegister.registerIcon("AlchemicalWizardry:BloodAltar_SideType1"); - this.sideIcon2 = iconRegister.registerIcon("AlchemicalWizardry:BloodAltar_SideType2"); - this.bottomIcon = iconRegister.registerIcon("AlchemicalWizardry:BloodAltar_Bottom"); - } - - @Override - @SideOnly(Side.CLIENT) - public IIcon getIcon(int side, int meta) - { - switch (side) - { - case 0: - return bottomIcon; - - case 1: - return topIcon; - - //case 2: return sideIcon1; - //case 3: return sideIcon1; - //case 4: return sideIcon2; - //case 5: return sideIcon2; - default: - return sideIcon2; - } - } - - @Override - public boolean hasComparatorInputOverride() - { - return true; - } - - @Override - public int getComparatorInputOverride(World world, int x, int y, int z, int meta) - { - TileEntity tile = world.getTileEntity(x, y, z); - - if (tile instanceof TEAltar) - { - ItemStack stack = ((TEAltar) tile).getStackInSlot(0); - - if (stack != null && stack.getItem() instanceof EnergyBattery) - { - EnergyBattery bloodOrb = (EnergyBattery) stack.getItem(); - int maxEssence = bloodOrb.getMaxEssence(); - int currentEssence = bloodOrb.getCurrentEssence(stack); - int level = currentEssence * 15 / maxEssence; - return ((int) (Math.min(15, level))) % 16; - } - } - - return 0; - } - - @Override - public boolean onBlockActivated(World world, int x, int y, int z, EntityPlayer player, int idk, float what, float these, float are) - { - TEAltar tileEntity = (TEAltar) world.getTileEntity(x, y, z); - -// world.scheduleBlockUpdate(x, y, z, this.blockID, 0); - - if (tileEntity == null || player.isSneaking()) - { - return false; - } - - ItemStack playerItem = player.getCurrentEquippedItem(); - - if (playerItem != null) - { - if (playerItem.getItem().equals(ModItems.divinationSigil)) - { - if (player.worldObj.isRemote) - { - world.markBlockForUpdate(x, y, z); - }else - { - tileEntity.sendChatInfoToPlayer(player); - } - - return true; - } - else if(playerItem.getItem().equals(ModItems.itemSeerSigil)) - { - if (player.worldObj.isRemote) - { - world.markBlockForUpdate(x, y, z); - }else - { - tileEntity.sendMoreChatInfoToPlayer(player); - } - - return true; - } - else if (playerItem.getItem().equals(ModItems.sigilOfHolding)) - { - ItemStack item = ((SigilOfHolding) playerItem.getItem()).getCurrentItem(playerItem); - - if (item != null && item.getItem().equals(ModItems.divinationSigil)) - { - if (player.worldObj.isRemote) - { - world.markBlockForUpdate(x, y, z); - }else - { - tileEntity.sendChatInfoToPlayer(player); - } - - return true; - } - else if(item !=null && item.getItem().equals(ModItems.itemSeerSigil)) - { - if (player.worldObj.isRemote) - { - world.markBlockForUpdate(x, y, z); - }else - { - tileEntity.sendMoreChatInfoToPlayer(player); - } - - return true; - } - } - } - - if (tileEntity.getStackInSlot(0) == null && playerItem != null) - { - ItemStack newItem = playerItem.copy(); - newItem.stackSize = 1; -// if(newItem.getMaxDamage()==0) -// { -// newItem.setItemDamage(0); -// } - --playerItem.stackSize; - tileEntity.setInventorySlotContents(0, newItem); - tileEntity.startCycle(); - } else if (tileEntity.getStackInSlot(0) != null && playerItem == null) - { - /**stub method - * Add the item that is in the slot to the player's inventory, and - * then set the slot to null. - */ - player.inventory.addItemStackToInventory(tileEntity.getStackInSlot(0)); - tileEntity.setInventorySlotContents(0, null); - tileEntity.setActive(); - } - - world.markBlockForUpdate(x, y, z); - //player.openGui(AlchemicalWizardry.instance, 0, world, x, y, z); - //PacketDispatcher.sendPacketToServer(tileEntity.getDescriptionPacket()); - return true; - } - - @Override - public void breakBlock(World world, int x, int y, int z, Block par5, int par6) - { - dropItems(world, x, y, z); - super.breakBlock(world, x, y, z, par5, par6); - } - - private void dropItems(World world, int x, int y, int z) - { - Random rand = new Random(); - TileEntity tileEntity = world.getTileEntity(x, y, z); - - if (!(tileEntity instanceof IInventory)) - { - return; - } - - IInventory inventory = (IInventory) tileEntity; - - for (int i = 0; i < inventory.getSizeInventory(); i++) - { - ItemStack item = inventory.getStackInSlot(i); - - if (item != null && item.stackSize > 0) - { - float rx = rand.nextFloat() * 0.8F + 0.1F; - float ry = rand.nextFloat() * 0.8F + 0.1F; - float rz = rand.nextFloat() * 0.8F + 0.1F; - EntityItem entityItem = new EntityItem(world, - x + rx, y + ry, z + rz, - new ItemStack(item.getItem(), item.stackSize, item.getItemDamage())); - - if (item.hasTagCompound()) - { - entityItem.getEntityItem().setTagCompound((NBTTagCompound) item.getTagCompound().copy()); - } - - float factor = 0.05F; - entityItem.motionX = rand.nextGaussian() * factor; - entityItem.motionY = rand.nextGaussian() * factor + 0.2F; - entityItem.motionZ = rand.nextGaussian() * factor; - world.spawnEntityInWorld(entityItem); - item.stackSize = 0; - } - } - } - - @Override - public boolean renderAsNormalBlock() - { - return false; - } - - @Override - public int getRenderType() - { - return -1; - } - - @Override - public boolean isOpaqueCube() - { - return false; - } - - @Override - public boolean hasTileEntity() - { - return true; - } - - @Override - public void randomDisplayTick(World world, int x, int y, int z, Random rand) - { - TEAltar tileEntity = (TEAltar) world.getTileEntity(x, y, z); - - if (!tileEntity.isActive()) - { - return; - } - - if (rand.nextInt(3) != 0) - { - return; - } - } - -// @Override -// public int isProvidingStrongPower(IBlockAccess par1IBlockAccess, int par2, int par3, int par4, int par5) -// { -// return 1; -// } - -// @Override -// public boolean canProvidePower() -// { -// return true; -// } - - @Override - public TileEntity createNewTileEntity(World var1, int var2) - { - return new TEAltar(); - } -} diff --git a/src-backup/main/java/WayofTime/alchemicalWizardry/common/block/BlockBelljar.java b/src-backup/main/java/WayofTime/alchemicalWizardry/common/block/BlockBelljar.java deleted file mode 100644 index 767213e3..00000000 --- a/src-backup/main/java/WayofTime/alchemicalWizardry/common/block/BlockBelljar.java +++ /dev/null @@ -1,157 +0,0 @@ -package WayofTime.alchemicalWizardry.common.block; - -import java.util.ArrayList; - -import net.minecraft.block.BlockContainer; -import net.minecraft.block.material.Material; -import net.minecraft.entity.EntityLivingBase; -import net.minecraft.entity.player.EntityPlayer; -import net.minecraft.item.ItemStack; -import net.minecraft.nbt.NBTTagCompound; -import net.minecraft.tileentity.TileEntity; -import net.minecraft.world.IBlockAccess; -import net.minecraft.world.World; -import net.minecraftforge.common.util.ForgeDirection; -import WayofTime.alchemicalWizardry.AlchemicalWizardry; -import WayofTime.alchemicalWizardry.api.alchemy.energy.ReagentContainerInfo; -import WayofTime.alchemicalWizardry.common.tileEntity.TEBellJar; - -public class BlockBelljar extends BlockContainer -{ - public BlockBelljar() - { - super(Material.glass); - setHardness(2.0F); - setResistance(5.0F); - this.setCreativeTab(AlchemicalWizardry.tabBloodMagic); - this.setBlockName("crystalBelljar"); - } - - @Override - public void onBlockPlacedBy(World world, int x, int y, int z, EntityLivingBase entityLiving, ItemStack stack) - { - TileEntity tile = world.getTileEntity(x, y, z); - - if(tile instanceof TEBellJar) - { - NBTTagCompound tag = stack.getTagCompound(); - if(tag != null) - { - ((TEBellJar) tile).readTankNBTOnPlace(tag); - } - } - } - -// @Override -// public void breakBlock(World world, int x, int y, int z, Block par5, int par6) -// { -// if(world.isRemote) -// { -// return; -// } -// -// TileEntity tile = world.getTileEntity(x, y, z); -// -// if(tile == null) -// { -// System.out.println("Tile has been removed already!"); -// } -// -// if(tile instanceof TEBellJar) -// { -// if(((TEBellJar) tile).areTanksEmpty()) -// { -// super.breakBlock(world, x, y, z, par5, par6); -// return; -// } -// System.out.println("Writing..."); -// ItemStack droppedStack = new ItemStack(ModBlocks.blockCrystalBelljar); -// droppedStack.setTagCompound(new NBTTagCompound()); -// -// NBTTagCompound savedTag = droppedStack.getTagCompound(); -// ((TEBellJar) tile).writeTankNBT(savedTag); -// -// this.dropBlockAsItem(world, x, y, z, droppedStack); -// -// world.removeTileEntity(x, y, z); -// return; -// } -// -// super.breakBlock(world, x, y, z, par5, par6); -// } - - @Override - public TileEntity createNewTileEntity(World world, int meta) - { - return new TEBellJar(); - } - - @Override - public boolean renderAsNormalBlock() - { - return false; - } - - @Override - public int getRenderType() - { - return -1; - } - - @Override - public boolean isOpaqueCube() - { - return false; - } - - @Override - public boolean hasTileEntity() - { - return true; - } - - @Override - public boolean hasComparatorInputOverride() - { - return true; - } - - @Override - public int getComparatorInputOverride(World world, int x, int y, int z, int meta) - { - TileEntity tile = world.getTileEntity(x, y, z); - if(tile instanceof TEBellJar) - { - return ((TEBellJar) tile).getRSPowerOutput(); - } - return 15; - } - - @Override - public void onBlockHarvested(World world, int x, int y, int z, int meta, EntityPlayer player) - { - this.dropBlockAsItem(world, x, y, z, meta, 0); - - super.onBlockHarvested(world, x, y, z, meta, player); - } - - @Override - public ArrayList getDrops(World world, int x, int y, int z, int metadata, int fortune) - { - ArrayList list = new ArrayList(); - - TileEntity tile = world.getTileEntity(x, y, z); - - if(tile instanceof TEBellJar) - { - ItemStack drop = new ItemStack(this); - NBTTagCompound tag = new NBTTagCompound(); - ((TEBellJar)tile).writeTankNBT(tag); - drop.stackTagCompound = tag; - - list.add(drop); - } - - return list; - } -} diff --git a/src-backup/main/java/WayofTime/alchemicalWizardry/common/block/BlockBloodLightSource.java b/src-backup/main/java/WayofTime/alchemicalWizardry/common/block/BlockBloodLightSource.java deleted file mode 100644 index 2ffc83e6..00000000 --- a/src-backup/main/java/WayofTime/alchemicalWizardry/common/block/BlockBloodLightSource.java +++ /dev/null @@ -1,75 +0,0 @@ -package WayofTime.alchemicalWizardry.common.block; - -import java.util.List; -import java.util.Random; - -import net.minecraft.block.Block; -import net.minecraft.block.material.Material; -import net.minecraft.client.renderer.texture.IIconRegister; -import net.minecraft.entity.Entity; -import net.minecraft.util.AxisAlignedBB; -import net.minecraft.world.IBlockAccess; -import net.minecraft.world.World; -import cpw.mods.fml.relauncher.Side; -import cpw.mods.fml.relauncher.SideOnly; - -public class BlockBloodLightSource extends Block -{ - public BlockBloodLightSource() - { - super(Material.cloth); - //setCreativeTab(AlchemicalWizardry.tabBloodMagic); - this.setBlockName("blockBloodLightSource"); - } - - @Override - @SideOnly(Side.CLIENT) - public void registerBlockIcons(IIconRegister iconRegister) - { - this.blockIcon = iconRegister.registerIcon("AlchemicalWizardry:BlockBloodLight"); - } - - @Override - public int getLightValue(IBlockAccess world, int x, int y, int z) - { - return 15; - } - - @Override - public boolean isOpaqueCube() - { - return false; - } - - @Override - public boolean renderAsNormalBlock() - { - return false; - } - - @Override - public void randomDisplayTick(World world, int x, int y, int z, Random rand) - { - if (rand.nextInt(3) != 0) - { - float f = (float) 1.0F; - float f1 = f * 0.6F + 0.4F; - float f2 = f * f * 0.7F - 0.5F; - float f3 = f * f * 0.6F - 0.7F; - world.spawnParticle("reddust", x + 0.5D + rand.nextGaussian() / 8, y + 0.5D, z + 0.5D + rand.nextGaussian() / 8, f1, f2, f3); - } - } - - @Override - - public void addCollisionBoxesToList(World par1World, int par2, int par3, int par4, AxisAlignedBB par5AxisAlignedBB, List par6List, Entity par7Entity) - { - this.setBlockBounds(0.40F, 0.40F, 0.40F, 0.60F, 0.60F, 0.60F); - //super.addCollisionBoxesToList(par1World, par2, par3, par4, par5AxisAlignedBB, par6List, par7Entity); - } - - public int quantityDropped(Random par1Random) - { - return 0; - } -} diff --git a/src-backup/main/java/WayofTime/alchemicalWizardry/common/block/BlockConduit.java b/src-backup/main/java/WayofTime/alchemicalWizardry/common/block/BlockConduit.java deleted file mode 100644 index c92daea7..00000000 --- a/src-backup/main/java/WayofTime/alchemicalWizardry/common/block/BlockConduit.java +++ /dev/null @@ -1,101 +0,0 @@ -package WayofTime.alchemicalWizardry.common.block; - -import net.minecraft.block.Block; -import net.minecraft.client.renderer.texture.IIconRegister; -import net.minecraft.tileentity.TileEntity; -import net.minecraft.util.IIcon; -import net.minecraft.world.World; -import WayofTime.alchemicalWizardry.AlchemicalWizardry; -import WayofTime.alchemicalWizardry.common.tileEntity.TEConduit; -import cpw.mods.fml.relauncher.Side; -import cpw.mods.fml.relauncher.SideOnly; - -public class BlockConduit extends BlockOrientable -{ - @SideOnly(Side.CLIENT) - private static IIcon topIcon; - @SideOnly(Side.CLIENT) - private static IIcon sideIcon1; - @SideOnly(Side.CLIENT) - private static IIcon sideIcon2; - @SideOnly(Side.CLIENT) - private static IIcon bottomIcon; - - public BlockConduit() - { - super(); - setHardness(2.0F); - setResistance(5.0F); - setCreativeTab(AlchemicalWizardry.tabBloodMagic); - this.setBlockName("blockConduit"); - //func_111022_d("AlchemicalWizardry:blocks"); - } - - @Override - @SideOnly(Side.CLIENT) - public void registerBlockIcons(IIconRegister iconRegister) - { - this.topIcon = iconRegister.registerIcon("AlchemicalWizardry:BloodAltar_Top"); - this.sideIcon1 = iconRegister.registerIcon("AlchemicalWizardry:BloodAltar_SideType1"); - this.sideIcon2 = iconRegister.registerIcon("AlchemicalWizardry:BloodAltar_SideType2"); - this.bottomIcon = iconRegister.registerIcon("AlchemicalWizardry:BloodAltar_Bottom"); - } - - @Override - @SideOnly(Side.CLIENT) - public IIcon getIcon(int side, int meta) - { - switch (side) - { - case 0: - return bottomIcon; - - case 1: - return topIcon; - - //case 2: return sideIcon1; - //case 3: return sideIcon1; - //case 4: return sideIcon2; - //case 5: return sideIcon2; - default: - return sideIcon2; - } - } - - @Override - public void breakBlock(World world, int x, int y, int z, Block par5, int par6) - { - //dropItems(world, x, y, z); - super.breakBlock(world, x, y, z, par5, par6); - } - - @Override - public TileEntity createNewTileEntity(World world, int noClue) - { - return new TEConduit(); - } - - @Override - public boolean renderAsNormalBlock() - { - return false; - } - - @Override - public int getRenderType() - { - return -1; - } - - @Override - public boolean isOpaqueCube() - { - return false; - } - - @Override - public boolean hasTileEntity() - { - return true; - } -} diff --git a/src-backup/main/java/WayofTime/alchemicalWizardry/common/block/BlockDemonPortal.java b/src-backup/main/java/WayofTime/alchemicalWizardry/common/block/BlockDemonPortal.java deleted file mode 100644 index c9d74de3..00000000 --- a/src-backup/main/java/WayofTime/alchemicalWizardry/common/block/BlockDemonPortal.java +++ /dev/null @@ -1,43 +0,0 @@ -package WayofTime.alchemicalWizardry.common.block; - -import net.minecraft.block.BlockContainer; -import net.minecraft.block.material.Material; -import net.minecraft.entity.player.EntityPlayer; -import net.minecraft.tileentity.TileEntity; -import net.minecraft.world.World; -import WayofTime.alchemicalWizardry.AlchemicalWizardry; -import WayofTime.alchemicalWizardry.common.tileEntity.TEAltar; -import WayofTime.alchemicalWizardry.common.tileEntity.TEDemonPortal; - -public class BlockDemonPortal extends BlockContainer -{ - public BlockDemonPortal() - { - super(Material.rock); - setHardness(2.0F); - setResistance(5.0F); - setCreativeTab(AlchemicalWizardry.tabBloodMagic); - this.setBlockName("demonPortal"); - } - - @Override - public TileEntity createNewTileEntity(World var1, int var2) - { - return new TEDemonPortal(); - } - - @Override - public boolean onBlockActivated(World world, int x, int y, int z, EntityPlayer player, int side, float what, float these, float are) - { - if(world.isRemote) - { - return false; - } - - TEDemonPortal tileEntity = (TEDemonPortal) world.getTileEntity(x, y, z); - - tileEntity.rightClickBlock(player, side); - - return false; - } -} diff --git a/src-backup/main/java/WayofTime/alchemicalWizardry/common/block/BlockHomHeart.java b/src-backup/main/java/WayofTime/alchemicalWizardry/common/block/BlockHomHeart.java deleted file mode 100644 index 730b31f3..00000000 --- a/src-backup/main/java/WayofTime/alchemicalWizardry/common/block/BlockHomHeart.java +++ /dev/null @@ -1,101 +0,0 @@ -package WayofTime.alchemicalWizardry.common.block; - -import net.minecraft.block.BlockContainer; -import net.minecraft.block.material.Material; -import net.minecraft.client.renderer.texture.IIconRegister; -import net.minecraft.entity.player.EntityPlayer; -import net.minecraft.item.ItemStack; -import net.minecraft.nbt.NBTTagCompound; -import net.minecraft.tileentity.TileEntity; -import net.minecraft.util.IIcon; -import net.minecraft.world.World; -import WayofTime.alchemicalWizardry.AlchemicalWizardry; -import WayofTime.alchemicalWizardry.common.items.BlankSpell; -import WayofTime.alchemicalWizardry.common.tileEntity.TEHomHeart; -import cpw.mods.fml.relauncher.Side; -import cpw.mods.fml.relauncher.SideOnly; - -public class BlockHomHeart extends BlockContainer -{ - public IIcon bottomIcon; - public IIcon topIcon; - public IIcon sideIcon; - - public BlockHomHeart() - { - super(Material.rock); - setHardness(2.0F); - setResistance(5.0F); - setCreativeTab(AlchemicalWizardry.tabBloodMagic); - this.setBlockName("blockHomHeart"); - } - - @Override - @SideOnly(Side.CLIENT) - public void registerBlockIcons(IIconRegister iconRegister) - { - this.topIcon = iconRegister.registerIcon("AlchemicalWizardry:HomHeart_top"); - this.bottomIcon = iconRegister.registerIcon("AlchemicalWizardry:HomHeart_bottom"); - this.sideIcon = iconRegister.registerIcon("AlchemicalWizardry:HomHeart_side"); - } - - @Override - @SideOnly(Side.CLIENT) - public IIcon getIcon(int side, int meta) - { - switch (side) - { - case 0: - return bottomIcon; - - case 1: - return topIcon; - - //case 2: return sideIcon1; - //case 3: return sideIcon1; - //case 4: return sideIcon2; - //case 5: return sideIcon2; - default: - return sideIcon; - } - } - - @Override - public boolean onBlockActivated(World world, int x, int y, int z, EntityPlayer player, int idk, float what, float these, float are) - { - TEHomHeart tileEntity = (TEHomHeart) world.getTileEntity(x, y, z); - - if (tileEntity == null || player.isSneaking()) - { - return false; - } - - ItemStack playerItem = player.getCurrentEquippedItem(); - - if (playerItem != null) - { - if (playerItem.getItem() instanceof BlankSpell) - { - if (playerItem.stackTagCompound == null) - { - playerItem.setTagCompound(new NBTTagCompound()); - } - - NBTTagCompound itemTag = playerItem.stackTagCompound; - itemTag.setInteger("xCoord", x); - itemTag.setInteger("yCoord", y); - itemTag.setInteger("zCoord", z); - itemTag.setInteger("dimensionId", world.provider.dimensionId); - return true; - } - } - - return false; - } - - @Override - public TileEntity createNewTileEntity(World world, int metaMaybe) - { - return new TEHomHeart(); - } -} diff --git a/src-backup/main/java/WayofTime/alchemicalWizardry/common/block/BlockMasterStone.java b/src-backup/main/java/WayofTime/alchemicalWizardry/common/block/BlockMasterStone.java deleted file mode 100644 index 2744f58a..00000000 --- a/src-backup/main/java/WayofTime/alchemicalWizardry/common/block/BlockMasterStone.java +++ /dev/null @@ -1,84 +0,0 @@ -package WayofTime.alchemicalWizardry.common.block; - -import net.minecraft.block.BlockContainer; -import net.minecraft.block.material.Material; -import net.minecraft.client.renderer.texture.IIconRegister; -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.World; -import WayofTime.alchemicalWizardry.AlchemicalWizardry; -import WayofTime.alchemicalWizardry.common.items.ActivationCrystal; -import WayofTime.alchemicalWizardry.common.tileEntity.TEMasterStone; -import cpw.mods.fml.relauncher.Side; -import cpw.mods.fml.relauncher.SideOnly; - -public class BlockMasterStone extends BlockContainer -{ - public BlockMasterStone() - { - super(Material.iron); - setHardness(2.0F); - setResistance(5.0F); - setCreativeTab(AlchemicalWizardry.tabBloodMagic); - this.setBlockName("blockMasterStone"); - // TODO Auto-generated constructor stub - } - - @Override - @SideOnly(Side.CLIENT) - public void registerBlockIcons(IIconRegister iconRegister) - { - this.blockIcon = iconRegister.registerIcon("AlchemicalWizardry:MasterStone"); - } - - @Override - public void onBlockHarvested(World world, int x, int y, int z, int meta, EntityPlayer player) - { - TileEntity tile = world.getTileEntity(x, y, z); - if(tile instanceof TEMasterStone) - { - ((TEMasterStone) tile).useOnRitualBroken(); - } - - super.onBlockHarvested(world, x, y, z, meta, player); - } - - @Override - public boolean onBlockActivated(World world, int x, int y, int z, EntityPlayer player, int idk, float what, float these, float are) - { - TEMasterStone tileEntity = (TEMasterStone) world.getTileEntity(x, y, z); - - if (tileEntity == null || player.isSneaking()) - { - return false; - } - - ItemStack playerItem = player.getCurrentEquippedItem(); - - if (playerItem == null) - { - return false; - } - - Item item = playerItem.getItem(); - - if (!(item instanceof ActivationCrystal)) - { - return false; - } - - ActivationCrystal acItem = (ActivationCrystal) item; - tileEntity.setOwner(acItem.getOwnerName(playerItem)); - tileEntity.activateRitual(world, acItem.getCrystalLevel(playerItem), player); - world.markBlockForUpdate(x, y, z); - return true; - } - - @Override - public TileEntity createNewTileEntity(World world, int meta) - { - return new TEMasterStone(); - } -} diff --git a/src-backup/main/java/WayofTime/alchemicalWizardry/common/block/BlockOrientable.java b/src-backup/main/java/WayofTime/alchemicalWizardry/common/block/BlockOrientable.java deleted file mode 100644 index fbc115c8..00000000 --- a/src-backup/main/java/WayofTime/alchemicalWizardry/common/block/BlockOrientable.java +++ /dev/null @@ -1,190 +0,0 @@ -package WayofTime.alchemicalWizardry.common.block; - -import javax.swing.Icon; - -import net.minecraft.block.BlockContainer; -import net.minecraft.block.material.Material; -import net.minecraft.client.renderer.texture.IIconRegister; -import net.minecraft.entity.player.EntityPlayer; -import net.minecraft.tileentity.TileEntity; -import net.minecraft.util.IIcon; -import net.minecraft.world.IBlockAccess; -import net.minecraft.world.World; -import net.minecraftforge.common.util.ForgeDirection; -import WayofTime.alchemicalWizardry.AlchemicalWizardry; -import WayofTime.alchemicalWizardry.common.tileEntity.TEOrientable; -import cpw.mods.fml.relauncher.Side; -import cpw.mods.fml.relauncher.SideOnly; - -public class BlockOrientable extends BlockContainer -{ - public BlockOrientable() - { - super(Material.rock); - setHardness(2.0F); - setResistance(5.0F); - setCreativeTab(AlchemicalWizardry.tabBloodMagic); - //setUnlocalizedName("bloodSocket"); - //func_111022_d("AlchemicalWizardry:blocks"); - } - -// @Override -// public boolean onBlockActivated(World world, int x, int y, int z, EntityPlayer player, int idk, float what, float these, float are) -// { -// return false; -// } - - @Override - public TileEntity createNewTileEntity(World world, int dunno) - { - return new TEOrientable(); - } - - @Override - public boolean onBlockActivated(World world, int x, int y, int z, EntityPlayer player, int side, float what, float these, float are) - { - //Right-click orients the output face. Shift-right-click orients the input face. - if (world.isRemote) - { - return false; - } - - ForgeDirection sideClicked = ForgeDirection.getOrientation(side); - TileEntity tile = world.getTileEntity(x, y, z); - - if (tile instanceof TEOrientable) - { - TEOrientable newTile = (TEOrientable)tile; - if(player.isSneaking()) - { - int nextSide = TEOrientable.getIntForForgeDirection(newTile.getInputDirection())+1; - - if(nextSide>5) - { - nextSide = 0; - } - if(ForgeDirection.getOrientation(nextSide)==newTile.getOutputDirection()) - { - nextSide++; - if(nextSide>5) - { - nextSide = 0; - } - } - - newTile.setInputDirection(ForgeDirection.getOrientation(nextSide)); - }else - { - int nextSide = TEOrientable.getIntForForgeDirection(newTile.getOutputDirection())+1; - - if(nextSide>5) - { - nextSide = 0; - } - if(ForgeDirection.getOrientation(nextSide)==newTile.getInputDirection()) - { - nextSide++; - if(nextSide>5) - { - nextSide = 0; - } - } - - newTile.setOutputDirection(ForgeDirection.getOrientation(nextSide)); - } - } - - world.markBlockForUpdate(x, y, z); - return true; - } - - public int getTextureIndexForSideAndOrientation(int side, ForgeDirection input, ForgeDirection output) - { - if(ForgeDirection.getOrientation(side) == input) - { - return 0; - } - if(ForgeDirection.getOrientation(side) == output) - { - return 1; - } - if(ForgeDirection.getOrientation(side) == output.getOpposite()) - { - return 6; - } - - switch(side) - { - case 0: //BOTTOM - switch(output) - { - case NORTH: return 2; //UP - case SOUTH: return 3; //DOWN - case EAST: return 4; //LEFT - case WEST: return 5; //RIGHT - default: break; - } - break; - case 1: //TOP - switch(output) - { - case NORTH: return 2; //UP - case SOUTH: return 3; //DOWN - case EAST: return 5; - case WEST: return 4; - default: break; - } - break; - case 2: //NORTH - switch(output) - { - case DOWN: return 3; - case UP: return 2; - case EAST: return 4; - case WEST: return 5; - default: break; - } - break; - case 3: //SOUTH - switch(output) - { - case DOWN: return 3; - case UP: return 2; - case EAST: return 5; - case WEST: return 4; - default: break; - } - break; - case 4: //WEST - switch(output) - { - case DOWN: return 3; - case UP: return 2; - case NORTH: return 5; - case SOUTH: return 4; - default: break; - } - break; - case 5: //EAST - switch(output) - { - case DOWN: return 3; - case UP: return 2; - case NORTH: return 4; - case SOUTH: return 5; - default: break; - } - break; - } - - return 0; - } - - @Override - public int damageDropped(int metadata) - { - return metadata; - } - - -} diff --git a/src-backup/main/java/WayofTime/alchemicalWizardry/common/block/BlockPedestal.java b/src-backup/main/java/WayofTime/alchemicalWizardry/common/block/BlockPedestal.java deleted file mode 100644 index 85dc2d68..00000000 --- a/src-backup/main/java/WayofTime/alchemicalWizardry/common/block/BlockPedestal.java +++ /dev/null @@ -1,193 +0,0 @@ -package WayofTime.alchemicalWizardry.common.block; - -import java.util.Random; - -import net.minecraft.block.Block; -import net.minecraft.block.BlockContainer; -import net.minecraft.block.material.Material; -import net.minecraft.client.renderer.texture.IIconRegister; -import net.minecraft.entity.item.EntityItem; -import net.minecraft.entity.player.EntityPlayer; -import net.minecraft.inventory.IInventory; -import net.minecraft.item.ItemStack; -import net.minecraft.nbt.NBTTagCompound; -import net.minecraft.tileentity.TileEntity; -import net.minecraft.util.IIcon; -import net.minecraft.util.MovingObjectPosition; -import net.minecraft.util.Vec3; -import net.minecraft.world.World; -import WayofTime.alchemicalWizardry.AlchemicalWizardry; -import WayofTime.alchemicalWizardry.common.tileEntity.TEPedestal; -import cpw.mods.fml.relauncher.Side; -import cpw.mods.fml.relauncher.SideOnly; - -public class BlockPedestal extends BlockContainer -{ - @SideOnly(Side.CLIENT) - private static IIcon topIcon; - @SideOnly(Side.CLIENT) - private static IIcon sideIcon1; - @SideOnly(Side.CLIENT) - private static IIcon sideIcon2; - @SideOnly(Side.CLIENT) - private static IIcon bottomIcon; - - public BlockPedestal() - { - super(Material.rock); - setHardness(2.0F); - setResistance(5.0F); - setCreativeTab(AlchemicalWizardry.tabBloodMagic); - this.setBlockName("bloodPedestal"); - //func_111022_d("AlchemicalWizardry:blocks"); - } - - @Override - @SideOnly(Side.CLIENT) - public void registerBlockIcons(IIconRegister iconRegister) - { - this.topIcon = iconRegister.registerIcon("AlchemicalWizardry:ArcanePedestal"); - this.sideIcon1 = iconRegister.registerIcon("AlchemicalWizardry:BloodSocket"); - this.sideIcon2 = iconRegister.registerIcon("AlchemicalWizardry:BloodSocket"); - this.bottomIcon = iconRegister.registerIcon("AlchemicalWizardry:BloodSocket"); - } - - @Override - @SideOnly(Side.CLIENT) - public IIcon getIcon(int side, int meta) - { - switch (side) - { - case 0: - return bottomIcon; - - case 1: - return topIcon; - - //case 2: return sideIcon1; - //case 3: return sideIcon1; - //case 4: return sideIcon2; - //case 5: return sideIcon2; - default: - return sideIcon2; - } - } - - @Override - public boolean onBlockActivated(World world, int x, int y, int z, EntityPlayer player, int idk, float what, float these, float are) - { - TEPedestal tileEntity = (TEPedestal) world.getTileEntity(x, y, z); - - if (tileEntity == null || player.isSneaking()) - { - return false; - } - - ItemStack playerItem = player.getCurrentEquippedItem(); - - if (tileEntity.getStackInSlot(0) == null && playerItem != null) - { - ItemStack newItem = playerItem.copy(); - newItem.stackSize = 1; - --playerItem.stackSize; - tileEntity.setInventorySlotContents(0, newItem); - } else if (tileEntity.getStackInSlot(0) != null && playerItem == null) - { - /**stub method - * Add the item that is in the slot to the player's inventory, and - * then set the slot to null. - */ - player.inventory.addItemStackToInventory(tileEntity.getStackInSlot(0)); - tileEntity.setInventorySlotContents(0, null); - tileEntity.setActive(); - } - - world.markBlockForUpdate(x, y, z); - //player.openGui(AlchemicalWizardry.instance, 0, world, x, y, z); - //PacketDispatcher.sendPacketToServer(tileEntity.getDescriptionPacket()); - return true; - } - - @Override - public void breakBlock(World world, int x, int y, int z, Block par5, int par6) - { - dropItems(world, x, y, z); - super.breakBlock(world, x, y, z, par5, par6); - } - - private void dropItems(World world, int x, int y, int z) - { - Random rand = new Random(); - TileEntity tileEntity = world.getTileEntity(x, y, z); - - if (!(tileEntity instanceof IInventory)) - { - return; - } - - IInventory inventory = (IInventory) tileEntity; - - for (int i = 0; i < inventory.getSizeInventory(); i++) - { - ItemStack item = inventory.getStackInSlot(i); - - if (item != null && item.stackSize > 0) - { - float rx = rand.nextFloat() * 0.8F + 0.1F; - float ry = rand.nextFloat() * 0.8F + 0.1F; - float rz = rand.nextFloat() * 0.8F + 0.1F; - EntityItem entityItem = new EntityItem(world, x + rx, y + ry, z + rz, new ItemStack(item.getItem(), item.stackSize, item.getItemDamage())); - - if (item.hasTagCompound()) - { - entityItem.getEntityItem().setTagCompound((NBTTagCompound) item.getTagCompound().copy()); - } - - float factor = 0.05F; - entityItem.motionX = rand.nextGaussian() * factor; - entityItem.motionY = rand.nextGaussian() * factor + 0.2F; - entityItem.motionZ = rand.nextGaussian() * factor; - world.spawnEntityInWorld(entityItem); - item.stackSize = 0; - } - } - } - - @Override - public TileEntity createNewTileEntity(World world, int meta) - { - return new TEPedestal(); - } - - @Override - public boolean renderAsNormalBlock() - { - return false; - } - - @Override - public int getRenderType() - { - return -1; - } - - @Override - public boolean isOpaqueCube() - { - return false; - } - - @Override - public boolean hasTileEntity() - { - return true; - } - - @Override - public MovingObjectPosition collisionRayTrace(World par1World, int par2, int par3, int par4, Vec3 par5Vec3, Vec3 par6Vec3) - { - float f = 0.3125F; - this.setBlockBounds(0.5F - f, 0.0F, 0.5F - f, 0.5F + f, 0.6F, 0.5F + f); - return super.collisionRayTrace(par1World, par2, par3, par4, par5Vec3, par6Vec3); - } -} \ No newline at end of file diff --git a/src-backup/main/java/WayofTime/alchemicalWizardry/common/block/BlockPlinth.java b/src-backup/main/java/WayofTime/alchemicalWizardry/common/block/BlockPlinth.java deleted file mode 100644 index 619f61f1..00000000 --- a/src-backup/main/java/WayofTime/alchemicalWizardry/common/block/BlockPlinth.java +++ /dev/null @@ -1,193 +0,0 @@ -package WayofTime.alchemicalWizardry.common.block; - -import java.util.Random; - -import net.minecraft.block.Block; -import net.minecraft.block.BlockContainer; -import net.minecraft.block.material.Material; -import net.minecraft.client.renderer.texture.IIconRegister; -import net.minecraft.entity.item.EntityItem; -import net.minecraft.entity.player.EntityPlayer; -import net.minecraft.inventory.IInventory; -import net.minecraft.item.ItemStack; -import net.minecraft.nbt.NBTTagCompound; -import net.minecraft.tileentity.TileEntity; -import net.minecraft.util.IIcon; -import net.minecraft.util.MovingObjectPosition; -import net.minecraft.util.Vec3; -import net.minecraft.world.World; -import WayofTime.alchemicalWizardry.AlchemicalWizardry; -import WayofTime.alchemicalWizardry.common.tileEntity.TEPlinth; -import cpw.mods.fml.relauncher.Side; -import cpw.mods.fml.relauncher.SideOnly; - -public class BlockPlinth extends BlockContainer -{ - @SideOnly(Side.CLIENT) - private static IIcon topIcon; - @SideOnly(Side.CLIENT) - private static IIcon sideIcon1; - @SideOnly(Side.CLIENT) - private static IIcon sideIcon2; - @SideOnly(Side.CLIENT) - private static IIcon bottomIcon; - - public BlockPlinth() - { - super(Material.rock); - setHardness(2.0F); - setResistance(5.0F); - setCreativeTab(AlchemicalWizardry.tabBloodMagic); - this.setBlockName("bloodPlinth"); - //func_111022_d("AlchemicalWizardry:blocks"); - } - - @Override - @SideOnly(Side.CLIENT) - public void registerBlockIcons(IIconRegister iconRegister) - { - this.topIcon = iconRegister.registerIcon("AlchemicalWizardry:ArcanePlinth"); - this.sideIcon1 = iconRegister.registerIcon("AlchemicalWizardry:BloodSocket"); - this.sideIcon2 = iconRegister.registerIcon("AlchemicalWizardry:BloodSocket"); - this.bottomIcon = iconRegister.registerIcon("AlchemicalWizardry:BloodSocket"); - } - - @Override - @SideOnly(Side.CLIENT) - public IIcon getIcon(int side, int meta) - { - switch (side) - { - case 0: - return bottomIcon; - - case 1: - return topIcon; - - //case 2: return sideIcon1; - //case 3: return sideIcon1; - //case 4: return sideIcon2; - //case 5: return sideIcon2; - default: - return sideIcon2; - } - } - - @Override - public boolean onBlockActivated(World world, int x, int y, int z, EntityPlayer player, int idk, float what, float these, float are) - { - TEPlinth tileEntity = (TEPlinth) world.getTileEntity(x, y, z); - - if (tileEntity == null || player.isSneaking()) - { - return false; - } - - ItemStack playerItem = player.getCurrentEquippedItem(); - - if (tileEntity.getStackInSlot(0) == null && playerItem != null) - { - ItemStack newItem = playerItem.copy(); - newItem.stackSize = 1; - --playerItem.stackSize; - tileEntity.setInventorySlotContents(0, newItem); - } else if (tileEntity.getStackInSlot(0) != null && playerItem == null) - { - /**stub method - * Add the item that is in the slot to the player's inventory, and - * then set the slot to null. - */ - player.inventory.addItemStackToInventory(tileEntity.getStackInSlot(0)); - tileEntity.setInventorySlotContents(0, null); - tileEntity.setActive(); - } - - world.markBlockForUpdate(x, y, z); - //player.openGui(AlchemicalWizardry.instance, 0, world, x, y, z); - //PacketDispatcher.sendPacketToServer(tileEntity.getDescriptionPacket()); - return true; - } - - @Override - public void breakBlock(World world, int x, int y, int z, Block par5, int par6) - { - dropItems(world, x, y, z); - super.breakBlock(world, x, y, z, par5, par6); - } - - private void dropItems(World world, int x, int y, int z) - { - Random rand = new Random(); - TileEntity tileEntity = world.getTileEntity(x, y, z); - - if (!(tileEntity instanceof IInventory)) - { - return; - } - - IInventory inventory = (IInventory) tileEntity; - - for (int i = 0; i < inventory.getSizeInventory(); i++) - { - ItemStack item = inventory.getStackInSlot(i); - - if (item != null && item.stackSize > 0) - { - float rx = rand.nextFloat() * 0.8F + 0.1F; - float ry = rand.nextFloat() * 0.8F + 0.1F; - float rz = rand.nextFloat() * 0.8F + 0.1F; - EntityItem entityItem = new EntityItem(world, x + rx, y + ry, z + rz, new ItemStack(item.getItem(), item.stackSize, item.getItemDamage())); - - if (item.hasTagCompound()) - { - entityItem.getEntityItem().setTagCompound((NBTTagCompound) item.getTagCompound().copy()); - } - - float factor = 0.05F; - entityItem.motionX = rand.nextGaussian() * factor; - entityItem.motionY = rand.nextGaussian() * factor + 0.2F; - entityItem.motionZ = rand.nextGaussian() * factor; - world.spawnEntityInWorld(entityItem); - item.stackSize = 0; - } - } - } - - @Override - public TileEntity createNewTileEntity(World world, int meta) - { - return new TEPlinth(); - } - - @Override - public boolean renderAsNormalBlock() - { - return false; - } - - @Override - public int getRenderType() - { - return -1; - } - - @Override - public boolean isOpaqueCube() - { - return false; - } - - @Override - public boolean hasTileEntity() - { - return true; - } - - @Override - public MovingObjectPosition collisionRayTrace(World par1World, int par2, int par3, int par4, Vec3 par5Vec3, Vec3 par6Vec3) - { - float f = 0.0625F; - this.setBlockBounds(f, 0.0F, f, 1.0f - f, 0.875f, 1.0f - f); - return super.collisionRayTrace(par1World, par2, par3, par4, par5Vec3, par6Vec3); - } -} \ No newline at end of file diff --git a/src-backup/main/java/WayofTime/alchemicalWizardry/common/block/BlockReagentConduit.java b/src-backup/main/java/WayofTime/alchemicalWizardry/common/block/BlockReagentConduit.java deleted file mode 100644 index 83c5a91c..00000000 --- a/src-backup/main/java/WayofTime/alchemicalWizardry/common/block/BlockReagentConduit.java +++ /dev/null @@ -1,83 +0,0 @@ -package WayofTime.alchemicalWizardry.common.block; - -import net.minecraft.block.BlockContainer; -import net.minecraft.block.material.Material; -import net.minecraft.client.renderer.texture.IIconRegister; -import net.minecraft.entity.player.EntityPlayer; -import net.minecraft.tileentity.TileEntity; -import net.minecraft.world.World; -import WayofTime.alchemicalWizardry.AlchemicalWizardry; -import WayofTime.alchemicalWizardry.common.tileEntity.TEReagentConduit; -import cpw.mods.fml.relauncher.Side; -import cpw.mods.fml.relauncher.SideOnly; - -public class BlockReagentConduit extends BlockContainer -{ - public BlockReagentConduit() - { - super(Material.cloth); - setHardness(2.0F); - setResistance(5.0F); - this.setBlockName("blockReagentConduit"); - this.setCreativeTab(AlchemicalWizardry.tabBloodMagic); - } - - @Override - @SideOnly(Side.CLIENT) - public void registerBlockIcons(IIconRegister iconRegister) - { - this.blockIcon = iconRegister.registerIcon("AlchemicalWizardry:SimpleTransCircle"); - } - - @Override - public TileEntity createNewTileEntity(World world, int meta) - { - return new TEReagentConduit(); - } - - @Override - public boolean canProvidePower() - { - return true; - } - -// @Override -// @SideOnly(Side.CLIENT) -// public void getSubBlocks(Item par1, CreativeTabs par2CreativeTabs, List par3List) -// { -// if (this.equals(ModBlocks.blockSpellParadigm)) -// { -// par3List.add(new ItemStack(par1, 1, 0)); -// par3List.add(new ItemStack(par1, 1, 1)); -// par3List.add(new ItemStack(par1, 1, 2)); -// par3List.add(new ItemStack(par1, 1, 3)); -// } else -// { -// super.getSubBlocks(par1, par2CreativeTabs, par3List); -// } -// } - - @Override - public boolean onBlockActivated(World world, int x, int y, int z, EntityPlayer player, int side, float what, float these, float are) - { - return super.onBlockActivated(world, x, y, z, player, side, what, these, are); - } - - @Override - public boolean isOpaqueCube() - { - return false; - } - - @Override - public boolean renderAsNormalBlock() - { - return false; - } - - @Override - public int getRenderType() - { - return -1; - } -} diff --git a/src-backup/main/java/WayofTime/alchemicalWizardry/common/block/BlockSchematicSaver.java b/src-backup/main/java/WayofTime/alchemicalWizardry/common/block/BlockSchematicSaver.java deleted file mode 100644 index 9c85e4fa..00000000 --- a/src-backup/main/java/WayofTime/alchemicalWizardry/common/block/BlockSchematicSaver.java +++ /dev/null @@ -1,43 +0,0 @@ -package WayofTime.alchemicalWizardry.common.block; - -import net.minecraft.block.BlockContainer; -import net.minecraft.block.material.Material; -import net.minecraft.entity.player.EntityPlayer; -import net.minecraft.tileentity.TileEntity; -import net.minecraft.world.World; -import WayofTime.alchemicalWizardry.AlchemicalWizardry; -import WayofTime.alchemicalWizardry.common.tileEntity.TEDemonPortal; -import WayofTime.alchemicalWizardry.common.tileEntity.TESchematicSaver; - -public class BlockSchematicSaver extends BlockContainer -{ - public BlockSchematicSaver() - { - super(Material.rock); - setHardness(2.0F); - setResistance(5.0F); - setCreativeTab(AlchemicalWizardry.tabBloodMagic); - this.setBlockName("schematicSaver"); - } - - @Override - public TileEntity createNewTileEntity(World var1, int var2) - { - return new TESchematicSaver(); - } - - @Override - public boolean onBlockActivated(World world, int x, int y, int z, EntityPlayer player, int side, float what, float these, float are) - { - if(world.isRemote) - { - return false; - } - - TESchematicSaver tileEntity = (TESchematicSaver) world.getTileEntity(x, y, z); - - tileEntity.rightClickBlock(player, side); - - return false; - } -} diff --git a/src-backup/main/java/WayofTime/alchemicalWizardry/common/block/BlockSocket.java b/src-backup/main/java/WayofTime/alchemicalWizardry/common/block/BlockSocket.java deleted file mode 100644 index e4e53890..00000000 --- a/src-backup/main/java/WayofTime/alchemicalWizardry/common/block/BlockSocket.java +++ /dev/null @@ -1,163 +0,0 @@ -package WayofTime.alchemicalWizardry.common.block; - -import java.util.Random; - -import net.minecraft.block.Block; -import net.minecraft.block.BlockContainer; -import net.minecraft.block.material.Material; -import net.minecraft.client.renderer.texture.IIconRegister; -import net.minecraft.entity.item.EntityItem; -import net.minecraft.entity.player.EntityPlayer; -import net.minecraft.inventory.IInventory; -import net.minecraft.item.ItemStack; -import net.minecraft.nbt.NBTTagCompound; -import net.minecraft.tileentity.TileEntity; -import net.minecraft.util.IIcon; -import net.minecraft.world.World; -import WayofTime.alchemicalWizardry.AlchemicalWizardry; -import WayofTime.alchemicalWizardry.api.items.interfaces.ArmourUpgrade; -import WayofTime.alchemicalWizardry.common.tileEntity.TESocket; -import cpw.mods.fml.relauncher.Side; -import cpw.mods.fml.relauncher.SideOnly; - -public class BlockSocket extends BlockContainer -{ - @SideOnly(Side.CLIENT) - private static IIcon topIcon; - @SideOnly(Side.CLIENT) - private static IIcon sideIcon1; - @SideOnly(Side.CLIENT) - private static IIcon sideIcon2; - @SideOnly(Side.CLIENT) - private static IIcon bottomIcon; - - public BlockSocket() - { - super(Material.rock); - setHardness(2.0F); - setResistance(5.0F); - setCreativeTab(AlchemicalWizardry.tabBloodMagic); - this.setBlockName("bloodSocket"); - //func_111022_d("AlchemicalWizardry:blocks"); - } - - @Override - @SideOnly(Side.CLIENT) - public void registerBlockIcons(IIconRegister iconRegister) - { - this.topIcon = iconRegister.registerIcon("AlchemicalWizardry:BloodSocket"); - this.sideIcon1 = iconRegister.registerIcon("AlchemicalWizardry:BloodSocket"); - this.sideIcon2 = iconRegister.registerIcon("AlchemicalWizardry:BloodSocket"); - this.bottomIcon = iconRegister.registerIcon("AlchemicalWizardry:BloodSocket"); - } - - @Override - @SideOnly(Side.CLIENT) - public IIcon getIcon(int side, int meta) - { - switch (side) - { - case 0: - return bottomIcon; - - case 1: - return topIcon; - - //case 2: return sideIcon1; - //case 3: return sideIcon1; - //case 4: return sideIcon2; - //case 5: return sideIcon2; - default: - return sideIcon2; - } - } - - @Override - public boolean onBlockActivated(World world, int x, int y, int z, EntityPlayer player, int idk, float what, float these, float are) - { - TESocket tileEntity = (TESocket) world.getTileEntity(x, y, z); - - if (tileEntity == null || player.isSneaking()) - { - return false; - } - - ItemStack playerItem = player.getCurrentEquippedItem(); - - if (tileEntity.getStackInSlot(0) == null && playerItem != null) - { - if (playerItem.getItem() instanceof ArmourUpgrade) - { - ItemStack newItem = playerItem.copy(); - newItem.stackSize = 1; - --playerItem.stackSize; - tileEntity.setInventorySlotContents(0, newItem); - } - } else if (tileEntity.getStackInSlot(0) != null && playerItem == null) - { - /**stub method - * Add the item that is in the slot to the player's inventory, and - * then set the slot to null. - */ - player.inventory.addItemStackToInventory(tileEntity.getStackInSlot(0)); - tileEntity.setInventorySlotContents(0, null); - tileEntity.setActive(); - } - - world.markBlockForUpdate(x, y, z); - //player.openGui(AlchemicalWizardry.instance, 0, world, x, y, z); - //PacketDispatcher.sendPacketToServer(tileEntity.getDescriptionPacket()); - return true; - } - - @Override - public void breakBlock(World world, int x, int y, int z, Block par5, int par6) - { - dropItems(world, x, y, z); - super.breakBlock(world, x, y, z, par5, par6); - } - - private void dropItems(World world, int x, int y, int z) - { - Random rand = new Random(); - TileEntity tileEntity = world.getTileEntity(x, y, z); - - if (!(tileEntity instanceof IInventory)) - { - return; - } - - IInventory inventory = (IInventory) tileEntity; - - for (int i = 0; i < inventory.getSizeInventory(); i++) - { - ItemStack item = inventory.getStackInSlot(i); - - if (item != null && item.stackSize > 0) - { - float rx = rand.nextFloat() * 0.8F + 0.1F; - float ry = rand.nextFloat() * 0.8F + 0.1F; - float rz = rand.nextFloat() * 0.8F + 0.1F; - EntityItem entityItem = new EntityItem(world, x + rx, y + ry, z + rz, new ItemStack(item.getItem(), item.stackSize, item.getItemDamage())); - - if (item.hasTagCompound()) - { - entityItem.getEntityItem().setTagCompound((NBTTagCompound) item.getTagCompound().copy()); - } - - float factor = 0.05F; - entityItem.motionX = rand.nextGaussian() * factor; - entityItem.motionY = rand.nextGaussian() * factor + 0.2F; - entityItem.motionZ = rand.nextGaussian() * factor; - world.spawnEntityInWorld(entityItem); - item.stackSize = 0; - } - } - } - - @Override - public TileEntity createNewTileEntity(World world, int meta) - { - return new TESocket(); - } -} diff --git a/src-backup/main/java/WayofTime/alchemicalWizardry/common/block/BlockSpectralContainer.java b/src-backup/main/java/WayofTime/alchemicalWizardry/common/block/BlockSpectralContainer.java deleted file mode 100644 index 95a48ce3..00000000 --- a/src-backup/main/java/WayofTime/alchemicalWizardry/common/block/BlockSpectralContainer.java +++ /dev/null @@ -1,75 +0,0 @@ -package WayofTime.alchemicalWizardry.common.block; - -import java.util.List; -import java.util.Random; - -import net.minecraft.block.BlockContainer; -import net.minecraft.block.material.Material; -import net.minecraft.client.renderer.texture.IIconRegister; -import net.minecraft.entity.Entity; -import net.minecraft.tileentity.TileEntity; -import net.minecraft.util.AxisAlignedBB; -import net.minecraft.world.IBlockAccess; -import net.minecraft.world.World; -import WayofTime.alchemicalWizardry.common.tileEntity.TESpectralContainer; -import cpw.mods.fml.relauncher.Side; -import cpw.mods.fml.relauncher.SideOnly; - -public class BlockSpectralContainer extends BlockContainer -{ - public BlockSpectralContainer() - { - super(Material.cloth); - //setCreativeTab(AlchemicalWizardry.tabBloodMagic); - this.setBlockName("blockSpectralContainer"); - this.setBlockBounds(0,0,0,0,0,0); - } - - @Override - @SideOnly(Side.CLIENT) - public void registerBlockIcons(IIconRegister iconRegister) - { - this.blockIcon = iconRegister.registerIcon("AlchemicalWizardry:BlockBloodLight"); - } - - @Override - public boolean isOpaqueCube() - { - return false; - } - - @Override - public boolean renderAsNormalBlock() - { - return false; - } - - @Override - public void addCollisionBoxesToList(World par1World, int par2, int par3, int par4, AxisAlignedBB par5AxisAlignedBB, List par6List, Entity par7Entity) - { - - } - - public int quantityDropped(Random par1Random) - { - return 0; - } - - @Override - public boolean isReplaceable(IBlockAccess world, int x, int y, int z) - { - return true; - } - - @Override - public boolean isAir(IBlockAccess world, int x, int y, int z) - { - return true; - } - - @Override - public TileEntity createNewTileEntity(World var1, int var2) - { - return new TESpectralContainer(); - } -} diff --git a/src-backup/main/java/WayofTime/alchemicalWizardry/common/block/BlockSpellEffect.java b/src-backup/main/java/WayofTime/alchemicalWizardry/common/block/BlockSpellEffect.java deleted file mode 100644 index 14846d23..00000000 --- a/src-backup/main/java/WayofTime/alchemicalWizardry/common/block/BlockSpellEffect.java +++ /dev/null @@ -1,62 +0,0 @@ -package WayofTime.alchemicalWizardry.common.block; - -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.tileentity.TileEntity; -import net.minecraft.world.World; -import WayofTime.alchemicalWizardry.ModBlocks; -import WayofTime.alchemicalWizardry.common.tileEntity.TESpellEffectBlock; - - -public class BlockSpellEffect extends BlockOrientable -{ - public BlockSpellEffect() - { - super(); - this.setBlockName("blockSpellEffect"); - } - - @Override - public TileEntity createNewTileEntity(World world, int meta) - { - return new TESpellEffectBlock(); - } - - @Override - public boolean renderAsNormalBlock() - { - return false; - } - - @Override - public int getRenderType() - { - return -1; - } - - @Override - public boolean isOpaqueCube() - { - return false; - } - - @SideOnly(Side.CLIENT) - public void getSubBlocks(Item par1, CreativeTabs par2CreativeTabs, List par3List) - { - if (this.equals(ModBlocks.blockSpellEffect)) - { - for(int i=0; i<4; i++) - { - par3List.add(new ItemStack(par1, 1, i)); - } - } else - { - super.getSubBlocks(par1, par2CreativeTabs, par3List); - } - } -} diff --git a/src-backup/main/java/WayofTime/alchemicalWizardry/common/block/BlockSpellEnhancement.java b/src-backup/main/java/WayofTime/alchemicalWizardry/common/block/BlockSpellEnhancement.java deleted file mode 100644 index 14dc4af5..00000000 --- a/src-backup/main/java/WayofTime/alchemicalWizardry/common/block/BlockSpellEnhancement.java +++ /dev/null @@ -1,64 +0,0 @@ -package WayofTime.alchemicalWizardry.common.block; - -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.tileentity.TileEntity; -import net.minecraft.world.World; -import WayofTime.alchemicalWizardry.ModBlocks; -import WayofTime.alchemicalWizardry.common.tileEntity.TESpellEffectBlock; -import WayofTime.alchemicalWizardry.common.tileEntity.TESpellEnhancementBlock; -import WayofTime.alchemicalWizardry.common.tileEntity.TESpellModifierBlock; - - -public class BlockSpellEnhancement extends BlockOrientable -{ - public BlockSpellEnhancement() - { - super(); - this.setBlockName("blockSpellEnhancement"); - } - - @Override - public TileEntity createNewTileEntity(World world, int meta) - { - return new TESpellEnhancementBlock(); - } - - @Override - public boolean renderAsNormalBlock() - { - return false; - } - - @Override - public int getRenderType() - { - return -1; - } - - @Override - public boolean isOpaqueCube() - { - return false; - } - - @SideOnly(Side.CLIENT) - public void getSubBlocks(Item par1, CreativeTabs par2CreativeTabs, List par3List) - { - if (this.equals(ModBlocks.blockSpellEnhancement)) - { - for(int i=0; i<15; i++) - { - par3List.add(new ItemStack(par1, 1, i)); - } - } else - { - super.getSubBlocks(par1, par2CreativeTabs, par3List); - } - } -} diff --git a/src-backup/main/java/WayofTime/alchemicalWizardry/common/block/BlockSpellModifier.java b/src-backup/main/java/WayofTime/alchemicalWizardry/common/block/BlockSpellModifier.java deleted file mode 100644 index ae4e028f..00000000 --- a/src-backup/main/java/WayofTime/alchemicalWizardry/common/block/BlockSpellModifier.java +++ /dev/null @@ -1,63 +0,0 @@ -package WayofTime.alchemicalWizardry.common.block; - -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.tileentity.TileEntity; -import net.minecraft.world.World; -import WayofTime.alchemicalWizardry.ModBlocks; -import WayofTime.alchemicalWizardry.common.tileEntity.TESpellEffectBlock; -import WayofTime.alchemicalWizardry.common.tileEntity.TESpellModifierBlock; - - -public class BlockSpellModifier extends BlockOrientable -{ - public BlockSpellModifier() - { - super(); - this.setBlockName("blockSpellModifier"); - } - - @Override - public TileEntity createNewTileEntity(World world, int meta) - { - return new TESpellModifierBlock(); - } - - @SideOnly(Side.CLIENT) - public void getSubBlocks(Item par1, CreativeTabs par2CreativeTabs, List par3List) - { - if (this.equals(ModBlocks.blockSpellModifier)) - { - for(int i=0; i<4; i++) - { - par3List.add(new ItemStack(par1, 1, i)); - } - } else - { - super.getSubBlocks(par1, par2CreativeTabs, par3List); - } - } - - @Override - public boolean isOpaqueCube() - { - return false; - } - - @Override - public boolean renderAsNormalBlock() - { - return false; - } - - @Override - public int getRenderType() - { - return -1; - } -} diff --git a/src-backup/main/java/WayofTime/alchemicalWizardry/common/block/BlockSpellParadigm.java b/src-backup/main/java/WayofTime/alchemicalWizardry/common/block/BlockSpellParadigm.java deleted file mode 100644 index f1945778..00000000 --- a/src-backup/main/java/WayofTime/alchemicalWizardry/common/block/BlockSpellParadigm.java +++ /dev/null @@ -1,96 +0,0 @@ -package WayofTime.alchemicalWizardry.common.block; - -import java.util.List; - -import net.minecraft.client.renderer.texture.IIconRegister; -import net.minecraft.creativetab.CreativeTabs; -import net.minecraft.entity.player.EntityPlayer; -import net.minecraft.item.Item; -import net.minecraft.item.ItemStack; -import net.minecraft.nbt.NBTTagCompound; -import net.minecraft.tileentity.TileEntity; -import net.minecraft.util.IIcon; -import net.minecraft.world.World; -import WayofTime.alchemicalWizardry.ModBlocks; -import WayofTime.alchemicalWizardry.common.items.ItemComplexSpellCrystal; -import WayofTime.alchemicalWizardry.common.tileEntity.TESpellParadigmBlock; -import cpw.mods.fml.relauncher.Side; -import cpw.mods.fml.relauncher.SideOnly; - -public class BlockSpellParadigm extends BlockOrientable -{ - public static final float minPos = (3f/16f); - public static final float maxPos = (13f/16f); - - public BlockSpellParadigm() - { - super(); - this.setBlockName("blockSpellParadigm"); - } - - @Override - public TileEntity createNewTileEntity(World world, int meta) - { - return new TESpellParadigmBlock(); - } - - @SideOnly(Side.CLIENT) - - /** - * returns a list of items with the same ID, but different meta (eg: dye returns 16 items) - */ - public void getSubBlocks(Item par1, CreativeTabs par2CreativeTabs, List par3List) - { - if (this.equals(ModBlocks.blockSpellParadigm)) - { - par3List.add(new ItemStack(par1, 1, 0)); - par3List.add(new ItemStack(par1, 1, 1)); - par3List.add(new ItemStack(par1, 1, 2)); - par3List.add(new ItemStack(par1, 1, 3)); - } else - { - super.getSubBlocks(par1, par2CreativeTabs, par3List); - } - } - - @Override - public boolean onBlockActivated(World world, int x, int y, int z, EntityPlayer player, int side, float what, float these, float are) - { - ItemStack stack = player.getCurrentEquippedItem(); - - if(stack != null && stack.getItem() instanceof ItemComplexSpellCrystal) - { - if (stack.stackTagCompound == null) - { - stack.setTagCompound(new NBTTagCompound()); - } - - NBTTagCompound itemTag = stack.stackTagCompound; - itemTag.setInteger("xCoord", x); - itemTag.setInteger("yCoord", y); - itemTag.setInteger("zCoord", z); - itemTag.setInteger("dimensionId", world.provider.dimensionId); - return true; - } - - return super.onBlockActivated(world, x, y, z, player, side, what, these, are); - } - - @Override - public boolean isOpaqueCube() - { - return false; - } - - @Override - public boolean renderAsNormalBlock() - { - return false; - } - - @Override - public int getRenderType() - { - return -1; - } -} diff --git a/src-backup/main/java/WayofTime/alchemicalWizardry/common/block/BlockTeleposer.java b/src-backup/main/java/WayofTime/alchemicalWizardry/common/block/BlockTeleposer.java deleted file mode 100644 index 545535ee..00000000 --- a/src-backup/main/java/WayofTime/alchemicalWizardry/common/block/BlockTeleposer.java +++ /dev/null @@ -1,260 +0,0 @@ -package WayofTime.alchemicalWizardry.common.block; - -import java.util.Random; - -import net.minecraft.block.Block; -import net.minecraft.block.BlockContainer; -import net.minecraft.block.BlockMobSpawner; -import net.minecraft.block.material.Material; -import net.minecraft.client.renderer.texture.IIconRegister; -import net.minecraft.entity.item.EntityItem; -import net.minecraft.entity.player.EntityPlayer; -import net.minecraft.init.Blocks; -import net.minecraft.inventory.IInventory; -import net.minecraft.item.ItemStack; -import net.minecraft.nbt.NBTTagCompound; -import net.minecraft.tileentity.TileEntity; -import net.minecraft.util.IIcon; -import net.minecraft.world.World; -import WayofTime.alchemicalWizardry.AlchemicalWizardry; -import WayofTime.alchemicalWizardry.common.items.TelepositionFocus; -import WayofTime.alchemicalWizardry.common.tileEntity.TETeleposer; -import cpw.mods.fml.relauncher.Side; -import cpw.mods.fml.relauncher.SideOnly; - -public class BlockTeleposer extends BlockContainer -{ - @SideOnly(Side.CLIENT) - private static IIcon topIcon; - @SideOnly(Side.CLIENT) - private static IIcon sideIcon1; - @SideOnly(Side.CLIENT) - private static IIcon sideIcon2; - @SideOnly(Side.CLIENT) - private static IIcon bottomIcon; - - public BlockTeleposer() - { - super(Material.rock); - setHardness(2.0F); - setResistance(5.0F); - setCreativeTab(AlchemicalWizardry.tabBloodMagic); - this.setBlockName("bloodTeleposer"); - //func_111022_d("AlchemicalWizardry:blocks"); - } - - @Override - @SideOnly(Side.CLIENT) - public void registerBlockIcons(IIconRegister iconRegister) - { - this.topIcon = iconRegister.registerIcon("AlchemicalWizardry:Teleposer_Top"); - this.sideIcon1 = iconRegister.registerIcon("AlchemicalWizardry:Teleposer_Side"); - this.sideIcon2 = iconRegister.registerIcon("AlchemicalWizardry:Teleposer_Side"); - this.bottomIcon = iconRegister.registerIcon("AlchemicalWizardry:Teleposer_Side"); - } - - @Override - @SideOnly(Side.CLIENT) - public IIcon getIcon(int side, int meta) - { - switch (side) - { - case 0: - return bottomIcon; - - case 1: - return topIcon; - - //case 2: return sideIcon1; - //case 3: return sideIcon1; - //case 4: return sideIcon2; - //case 5: return sideIcon2; - default: - return sideIcon2; - } - } - - @Override - public boolean onBlockActivated(World world, int x, int y, int z, EntityPlayer player, int idk, float what, float these, float are) - { - TETeleposer tileEntity = (TETeleposer) world.getTileEntity(x, y, z); - ItemStack playerItem = player.getCurrentEquippedItem(); - - if (playerItem != null) - { - if (playerItem.getItem() instanceof TelepositionFocus) - { - if (playerItem.stackTagCompound == null) - { - playerItem.setTagCompound(new NBTTagCompound()); - } - - NBTTagCompound itemTag = playerItem.stackTagCompound; - itemTag.setInteger("xCoord", x); - itemTag.setInteger("yCoord", y); - itemTag.setInteger("zCoord", z); - itemTag.setInteger("dimensionId", world.provider.dimensionId); - return true; - } - } - - player.openGui(AlchemicalWizardry.instance, 1, world, x, y, z); -// this.swapBlocks(world, x, y+1, z, x, y+2, z); -// -// world.markBlockForUpdate(x, y, z); - //player.openGui(AlchemicalWizardry.instance, 0, world, x, y, z); - //PacketDispatcher.sendPacketToServer(tileEntity.getDescriptionPacket()); - return true; - } - - @Override - public void breakBlock(World world, int x, int y, int z, Block par5, int par6) - { - dropItems(world, x, y, z); - super.breakBlock(world, x, y, z, par5, par6); - } - - private void dropItems(World world, int x, int y, int z) - { - Random rand = new Random(); - TileEntity tileEntity = world.getTileEntity(x, y, z); - - if (!(tileEntity instanceof IInventory)) - { - return; - } - - IInventory inventory = (IInventory) tileEntity; - - for (int i = 0; i < inventory.getSizeInventory(); i++) - { - ItemStack item = inventory.getStackInSlot(i); - - if (item != null && item.stackSize > 0) - { - float rx = rand.nextFloat() * 0.8F + 0.1F; - float ry = rand.nextFloat() * 0.8F + 0.1F; - float rz = rand.nextFloat() * 0.8F + 0.1F; - EntityItem entityItem = new EntityItem(world, x + rx, y + ry, z + rz, new ItemStack(item.getItem(), item.stackSize, item.getItemDamage())); - - if (item.hasTagCompound()) - { - entityItem.getEntityItem().setTagCompound((NBTTagCompound) item.getTagCompound().copy()); - } - - float factor = 0.05F; - entityItem.motionX = rand.nextGaussian() * factor; - entityItem.motionY = rand.nextGaussian() * factor + 0.2F; - entityItem.motionZ = rand.nextGaussian() * factor; - world.spawnEntityInWorld(entityItem); - item.stackSize = 0; - } - } - } - - @Override - public TileEntity createNewTileEntity(World world, int meta) - { - return new TETeleposer(); - } - - public static boolean swapBlocks(World worldI, World worldF, int xi, int yi, int zi, int xf, int yf, int zf) - { - TileEntity tileEntityI = worldI.getTileEntity(xi, yi, zi); - TileEntity tileEntityF = worldF.getTileEntity(xf, yf, zf); - TileEntity tileI; - TileEntity tileF; - - NBTTagCompound nbttag1 = new NBTTagCompound(); - NBTTagCompound nbttag2 = new NBTTagCompound(); - - if (tileEntityI != null) - { - tileEntityI.writeToNBT(nbttag1); - } - - if (tileEntityF != null) - { - tileEntityF.writeToNBT(nbttag2); - } - - Block blockI = worldI.getBlock(xi, yi, zi); - Block blockF = worldF.getBlock(xf, yf, zf); - - - if (blockI.equals(Blocks.air) && blockF.equals(Blocks.air)) - { - return false; - } - - if (blockI instanceof BlockMobSpawner || blockF instanceof BlockMobSpawner) - { - return false; - } - - int metaI = worldI.getBlockMetadata(xi, yi, zi); - int metaF = worldF.getBlockMetadata(xf, yf, zf); - worldI.playSoundEffect(xi, yi, zi, "mob.endermen.portal", 1.0F, 1.0F); - worldF.playSoundEffect(xf, yf, zf, "mob.endermen.portal", 1.0F, 1.0F); - //CLEAR TILES - Block finalBlock = blockF; - - if (finalBlock != null) - { - TileEntity tileToSet = finalBlock.createTileEntity(worldF, metaF); - - worldF.setTileEntity(xf, yf, zf, tileToSet); - } - - Block initialBlock = blockI; - - if (initialBlock != null) - { - TileEntity tileToSet = initialBlock.createTileEntity(worldI, metaI); - - worldI.setTileEntity(xi, yi, zi, tileToSet); - } - - //TILES CLEARED -// worldF.destroyBlock(xf, yf, zf, false); -// worldI.destroyBlock(xi, yi, zi, false); -// worldI.setBlockToAir(xi, yi, zi); -// worldF.setBlockToAir(xf, yf, zf); - - worldF.setBlock(xf, yf, zf, initialBlock, metaI, 3); - - if (tileEntityI != null) - { - TileEntity newTileEntityI = TileEntity.createAndLoadEntity(nbttag1); - worldF.setTileEntity(xf, yf, zf, newTileEntityI); - newTileEntityI.xCoord = xf; - newTileEntityI.yCoord = yf; - newTileEntityI.zCoord = zf; - -// TileEntity tile = worldI.getTileEntity(xf, yf, zf); -// if(tile instanceof TileMultipart) -// { -// TileMultipart.createFromNBT(nbttag1); -// } - } - - worldI.setBlock(xi, yi, zi, finalBlock, metaF, 3); - - if (tileEntityF != null) - { - TileEntity newTileEntityF = TileEntity.createAndLoadEntity(nbttag2); - worldI.setTileEntity(xi, yi, zi, newTileEntityF); - newTileEntityF.xCoord = xi; - newTileEntityF.yCoord = yi; - newTileEntityF.zCoord = zi; - - TileEntity tile = worldI.getTileEntity(xi, yi, zi); -// if(tile instanceof TileMultipart) -// { -// TileMultipart.createFromNBT(nbttag2); -// } - } - - return true; - } -} diff --git a/src-backup/main/java/WayofTime/alchemicalWizardry/common/block/BlockWritingTable.java b/src-backup/main/java/WayofTime/alchemicalWizardry/common/block/BlockWritingTable.java deleted file mode 100644 index e7890015..00000000 --- a/src-backup/main/java/WayofTime/alchemicalWizardry/common/block/BlockWritingTable.java +++ /dev/null @@ -1,181 +0,0 @@ -package WayofTime.alchemicalWizardry.common.block; - -import java.util.List; -import java.util.Random; - -import net.minecraft.block.Block; -import net.minecraft.block.BlockContainer; -import net.minecraft.block.material.Material; -import net.minecraft.client.renderer.texture.IIconRegister; -import net.minecraft.entity.Entity; -import net.minecraft.entity.item.EntityItem; -import net.minecraft.entity.player.EntityPlayer; -import net.minecraft.inventory.IInventory; -import net.minecraft.item.ItemStack; -import net.minecraft.nbt.NBTTagCompound; -import net.minecraft.tileentity.TileEntity; -import net.minecraft.util.AxisAlignedBB; -import net.minecraft.util.IIcon; -import net.minecraft.world.World; -import WayofTime.alchemicalWizardry.AlchemicalWizardry; -import WayofTime.alchemicalWizardry.common.tileEntity.TEWritingTable; -import cpw.mods.fml.relauncher.Side; -import cpw.mods.fml.relauncher.SideOnly; - -public class BlockWritingTable extends BlockContainer -{ - @SideOnly(Side.CLIENT) - private static IIcon topIcon; - @SideOnly(Side.CLIENT) - private static IIcon sideIcon1; - @SideOnly(Side.CLIENT) - private static IIcon sideIcon2; - @SideOnly(Side.CLIENT) - private static IIcon bottomIcon; - - public BlockWritingTable() - { - super(Material.wood); - setHardness(2.0F); - setResistance(5.0F); - this.setBlockName("blockWritingTable"); - setCreativeTab(AlchemicalWizardry.tabBloodMagic); - } - - @Override - @SideOnly(Side.CLIENT) - public void registerBlockIcons(IIconRegister iconRegister) - { - this.topIcon = iconRegister.registerIcon("AlchemicalWizardry:AlchemicChemistrySet"); - this.sideIcon1 = iconRegister.registerIcon("AlchemicalWizardry:BloodAltar_SideType1"); - this.sideIcon2 = iconRegister.registerIcon("AlchemicalWizardry:BloodAltar_SideType2"); - this.bottomIcon = iconRegister.registerIcon("AlchemicalWizardry:BloodAltar_Bottom"); - } - - @Override - @SideOnly(Side.CLIENT) - public IIcon getIcon(int side, int meta) - { - switch (side) - { - case 0: - return bottomIcon; - - case 1: - return topIcon; - - //case 2: return sideIcon1; - //case 3: return sideIcon1; - //case 4: return sideIcon2; - //case 5: return sideIcon2; - default: - return sideIcon2; - } - } - - @Override - public boolean onBlockActivated(World world, int x, int y, int z, EntityPlayer player, int metadata, float what, float these, float are) - { - TileEntity tileEntity = world.getTileEntity(x, y, z); - - if (tileEntity == null || player.isSneaking()) - { - return false; - } - - //code to open gui explained later - player.openGui(AlchemicalWizardry.instance, 0, world, x, y, z); - return true; - } - - @Override - public void breakBlock(World world, int x, int y, int z, Block par5, int par6) - { - dropItems(world, x, y, z); - super.breakBlock(world, x, y, z, par5, par6); - } - - private void dropItems(World world, int x, int y, int z) - { - Random rand = new Random(); - TileEntity tileEntity = world.getTileEntity(x, y, z); - - if (!(tileEntity instanceof IInventory)) - { - return; - } - - IInventory inventory = (IInventory) tileEntity; - - for (int i = 0; i < inventory.getSizeInventory(); i++) - { - ItemStack item = inventory.getStackInSlot(i); - - if (item != null && item.stackSize > 0) - { - float rx = rand.nextFloat() * 0.8F + 0.1F; - float ry = rand.nextFloat() * 0.8F + 0.1F; - float rz = rand.nextFloat() * 0.8F + 0.1F; - EntityItem entityItem = new EntityItem(world, - x + rx, y + ry, z + rz, - new ItemStack(item.getItem(), item.stackSize, item.getItemDamage())); - - if (item.hasTagCompound()) - { - entityItem.getEntityItem().setTagCompound((NBTTagCompound) item.getTagCompound().copy()); - } - - float factor = 0.05F; - entityItem.motionX = rand.nextGaussian() * factor; - entityItem.motionY = rand.nextGaussian() * factor + 0.2F; - entityItem.motionZ = rand.nextGaussian() * factor; - world.spawnEntityInWorld(entityItem); - item.stackSize = 0; - } - } - } - - @Override - public TileEntity createNewTileEntity(World world, int meta) - { - return new TEWritingTable(); - } - - @Override - public boolean renderAsNormalBlock() - { - return false; - } - - @Override - public int getRenderType() - { - return -1; - } - - @Override - public boolean isOpaqueCube() - { - return false; - } - - @Override - public boolean hasTileEntity() - { - return true; - } - - @Override - public void addCollisionBoxesToList(World par1World, int par2, int par3, int par4, AxisAlignedBB par5AxisAlignedBB, List par6List, Entity par7Entity) - { - this.setBlockBounds(0.4375F, 0.0F, 0.4375F, 0.5625F, 0.9375F, 0.5625F); - super.addCollisionBoxesToList(par1World, par2, par3, par4, par5AxisAlignedBB, par6List, par7Entity); - this.setBlockBoundsForItemRender(); - super.addCollisionBoxesToList(par1World, par2, par3, par4, par5AxisAlignedBB, par6List, par7Entity); - } - - public void setBlockBoundsForItemRender() - { - this.setBlockBounds(0.0F, 0.0F, 0.0F, 1.0F, 0.125F, 1.0F); - } -} \ No newline at end of file diff --git a/src-backup/main/java/WayofTime/alchemicalWizardry/common/block/BloodRune.java b/src-backup/main/java/WayofTime/alchemicalWizardry/common/block/BloodRune.java deleted file mode 100644 index b5df0d22..00000000 --- a/src-backup/main/java/WayofTime/alchemicalWizardry/common/block/BloodRune.java +++ /dev/null @@ -1,121 +0,0 @@ -package WayofTime.alchemicalWizardry.common.block; - -import java.util.List; - -import javax.swing.Icon; - -import net.minecraft.block.Block; -import net.minecraft.block.material.Material; -import net.minecraft.client.renderer.texture.IIconRegister; -import net.minecraft.creativetab.CreativeTabs; -import net.minecraft.item.Item; -import net.minecraft.item.ItemStack; -import net.minecraft.util.IIcon; -import WayofTime.alchemicalWizardry.AlchemicalWizardry; -import WayofTime.alchemicalWizardry.ModBlocks; -import cpw.mods.fml.relauncher.Side; -import cpw.mods.fml.relauncher.SideOnly; - -public class BloodRune extends Block -{ - //private Icon bloodRuneIcon; - private IIcon altarCapacityRuneIcon; - private IIcon dislocationRuneIcon; - private IIcon orbCapacityRuneIcon; - private IIcon betterCapacityRuneIcon; - - public BloodRune() - { - super(Material.iron); - this.setBlockName("bloodRune"); - setCreativeTab(AlchemicalWizardry.tabBloodMagic); - setHardness(2.0F); - setResistance(5.0F); - } - - @Override - @SideOnly(Side.CLIENT) - public void registerBlockIcons(IIconRegister iconRegister) - { - this.blockIcon = iconRegister.registerIcon("AlchemicalWizardry:BlankRune"); - this.altarCapacityRuneIcon = iconRegister.registerIcon("AlchemicalWizardry:AltarCapacityRune"); - this.dislocationRuneIcon = iconRegister.registerIcon("AlchemicalWizardry:DislocationRune"); - this.orbCapacityRuneIcon = iconRegister.registerIcon("AlchemicalWizardry:OrbCapacityRune"); - this.betterCapacityRuneIcon = iconRegister.registerIcon("AlchemicalWizardry:BetterCapacityRune"); - } - - public int getRuneEffect(int metaData) - { - switch (metaData) - { - case 0: - return 0; - - case 1: //Altar Capacity rune - return 5; - - case 2: //Filling/emptying rune - return 6; - - case 3: //Orb Capacity rune - return 7; - - case 4: //Better Capacity rune - return 8; - } - - return 0; - } - - @SideOnly(Side.CLIENT) - - /** - * returns a list of items with the same ID, but different meta (eg: dye returns 16 items) - */ - public void getSubBlocks(Item par1, CreativeTabs par2CreativeTabs, List par3List) - { - if (this.equals(ModBlocks.bloodRune)) - { - par3List.add(new ItemStack(par1, 1, 0)); - par3List.add(new ItemStack(par1, 1, 1)); - par3List.add(new ItemStack(par1, 1, 2)); - par3List.add(new ItemStack(par1, 1, 3)); - par3List.add(new ItemStack(par1, 1, 4)); - } else - { - super.getSubBlocks(par1, par2CreativeTabs, par3List); - } - } - - @Override - @SideOnly(Side.CLIENT) - public IIcon getIcon(int side, int meta) - { - switch (meta) - { - case 0: - return blockIcon; - - case 1: - return altarCapacityRuneIcon; - - case 2: - return dislocationRuneIcon; - - case 3: - return this.orbCapacityRuneIcon; - - case 4: - return this.betterCapacityRuneIcon; - - default: - return blockIcon; - } - } - - @Override - public int damageDropped(int metadata) - { - return metadata; - } -} diff --git a/src-backup/main/java/WayofTime/alchemicalWizardry/common/block/BloodStoneBrick.java b/src-backup/main/java/WayofTime/alchemicalWizardry/common/block/BloodStoneBrick.java deleted file mode 100644 index 0e33c138..00000000 --- a/src-backup/main/java/WayofTime/alchemicalWizardry/common/block/BloodStoneBrick.java +++ /dev/null @@ -1,27 +0,0 @@ -package WayofTime.alchemicalWizardry.common.block; - -import net.minecraft.block.Block; -import net.minecraft.block.material.Material; -import net.minecraft.client.renderer.texture.IIconRegister; -import WayofTime.alchemicalWizardry.AlchemicalWizardry; -import cpw.mods.fml.relauncher.Side; -import cpw.mods.fml.relauncher.SideOnly; - -public class BloodStoneBrick extends Block -{ - public BloodStoneBrick() - { - super(Material.iron); - setHardness(2.0F); - setResistance(5.0F); - setCreativeTab(AlchemicalWizardry.tabBloodMagic); - this.setBlockName("bloodStoneBrick"); - } - - @Override - @SideOnly(Side.CLIENT) - public void registerBlockIcons(IIconRegister iconRegister) - { - this.blockIcon = iconRegister.registerIcon("AlchemicalWizardry:BloodStoneBrick"); - } -} diff --git a/src-backup/main/java/WayofTime/alchemicalWizardry/common/block/EfficiencyRune.java b/src-backup/main/java/WayofTime/alchemicalWizardry/common/block/EfficiencyRune.java deleted file mode 100644 index 337b3e90..00000000 --- a/src-backup/main/java/WayofTime/alchemicalWizardry/common/block/EfficiencyRune.java +++ /dev/null @@ -1,31 +0,0 @@ -package WayofTime.alchemicalWizardry.common.block; - -import net.minecraft.client.renderer.texture.IIconRegister; -import WayofTime.alchemicalWizardry.AlchemicalWizardry; -import cpw.mods.fml.relauncher.Side; -import cpw.mods.fml.relauncher.SideOnly; - -public class EfficiencyRune extends BloodRune -{ - public EfficiencyRune() - { - super(); - this.setBlockName("efficiencyRune"); - setCreativeTab(AlchemicalWizardry.tabBloodMagic); - setHardness(2.0F); - setResistance(5.0F); - } - - @Override - @SideOnly(Side.CLIENT) - public void registerBlockIcons(IIconRegister iconRegister) - { - this.blockIcon = iconRegister.registerIcon("AlchemicalWizardry:EfficiencyRune"); - } - - @Override - public int getRuneEffect(int metaData) - { - return 2; - } -} diff --git a/src-backup/main/java/WayofTime/alchemicalWizardry/common/block/EmptySocket.java b/src-backup/main/java/WayofTime/alchemicalWizardry/common/block/EmptySocket.java deleted file mode 100644 index ec78e760..00000000 --- a/src-backup/main/java/WayofTime/alchemicalWizardry/common/block/EmptySocket.java +++ /dev/null @@ -1,34 +0,0 @@ -package WayofTime.alchemicalWizardry.common.block; - -import net.minecraft.block.Block; -import net.minecraft.block.material.Material; -import net.minecraft.client.renderer.texture.IIconRegister; -import WayofTime.alchemicalWizardry.AlchemicalWizardry; -import cpw.mods.fml.relauncher.Side; -import cpw.mods.fml.relauncher.SideOnly; - -public class EmptySocket extends Block -{ - public EmptySocket() - { - super(Material.iron); - setHardness(2.0F); - setResistance(5.0F); - setCreativeTab(AlchemicalWizardry.tabBloodMagic); - this.setBlockName("emptySocket"); - // TODO Auto-generated constructor stub - } - - @Override - public boolean isOpaqueCube() - { - return false; - } - - @Override - @SideOnly(Side.CLIENT) - public void registerBlockIcons(IIconRegister iconRegister) - { - this.blockIcon = iconRegister.registerIcon("AlchemicalWizardry:EmptySocket"); - } -} diff --git a/src-backup/main/java/WayofTime/alchemicalWizardry/common/block/IOrientable.java b/src-backup/main/java/WayofTime/alchemicalWizardry/common/block/IOrientable.java deleted file mode 100644 index 93b170b0..00000000 --- a/src-backup/main/java/WayofTime/alchemicalWizardry/common/block/IOrientable.java +++ /dev/null @@ -1,14 +0,0 @@ -package WayofTime.alchemicalWizardry.common.block; - -import net.minecraftforge.common.util.ForgeDirection; - -public interface IOrientable -{ - public ForgeDirection getInputDirection(); - - public ForgeDirection getOutputDirection(); - - public void setInputDirection(ForgeDirection direction); - - public void setOutputDirection(ForgeDirection direction); -} diff --git a/src-backup/main/java/WayofTime/alchemicalWizardry/common/block/ImperfectRitualStone.java b/src-backup/main/java/WayofTime/alchemicalWizardry/common/block/ImperfectRitualStone.java deleted file mode 100644 index 224f4d55..00000000 --- a/src-backup/main/java/WayofTime/alchemicalWizardry/common/block/ImperfectRitualStone.java +++ /dev/null @@ -1,142 +0,0 @@ -package WayofTime.alchemicalWizardry.common.block; - -import net.minecraft.block.Block; -import net.minecraft.block.material.Material; -import net.minecraft.client.renderer.texture.IIconRegister; -import net.minecraft.entity.effect.EntityLightningBolt; -import net.minecraft.entity.monster.EntityZombie; -import net.minecraft.entity.player.EntityPlayer; -import net.minecraft.init.Blocks; -import net.minecraft.potion.Potion; -import net.minecraft.potion.PotionEffect; -import net.minecraft.world.World; -import WayofTime.alchemicalWizardry.AlchemicalWizardry; -import WayofTime.alchemicalWizardry.common.PacketHandler; -import WayofTime.alchemicalWizardry.common.items.EnergyItems; -import WayofTime.alchemicalWizardry.common.spell.complex.effect.SpellHelper; -import cpw.mods.fml.relauncher.Side; -import cpw.mods.fml.relauncher.SideOnly; - -public class ImperfectRitualStone extends Block -{ - public ImperfectRitualStone() - { - super(Material.iron); - setHardness(2.0F); - setResistance(5.0F); - setCreativeTab(AlchemicalWizardry.tabBloodMagic); - this.setBlockName("imperfectRitualStone"); - // TODO Auto-generated constructor stub - } - - @Override - @SideOnly(Side.CLIENT) - public void registerBlockIcons(IIconRegister iconRegister) - { - this.blockIcon = iconRegister.registerIcon("AlchemicalWizardry:ImperfectRitualStone"); - } - - @Override - public boolean onBlockActivated(World world, int x, int y, int z, EntityPlayer player, int side, float xOff, float yOff, float zOff) - { - //ItemStack ist = player.getItemInUse(); - //if (!world.isRemote) - { - Block block = world.getBlock(x, y + 1, z); - - if (block == Blocks.water) - { - if (!player.capabilities.isCreativeMode && !world.isRemote) - { - EnergyItems.drainPlayerNetwork(player, 5000); - } - - if (!world.isRemote) - { - world.addWeatherEffect(new EntityLightningBolt(world, x, y + 2, z)); -// if (!player.capabilities.isCreativeMode) -// { -// PacketDispatcher.sendPacketToServer(PacketHandler.getPacket(player.getEntityName(), -5000, 0)); -// } - } - - world.getWorldInfo().setRaining(true); - - if (world.isRemote) - { - world.setRainStrength(1.0F); - world.setThunderStrength(1.0f); - } - - world.getWorldInfo().setThunderTime(0); - world.getWorldInfo().setThundering(true); - return true; - } else if (block == Blocks.coal_block) - { - if (!player.capabilities.isCreativeMode && !world.isRemote) - { - EnergyItems.drainPlayerNetwork(player, 5000); - } - - //EntityFallenAngel zomb = new EntityFallenAngel(world); - EntityZombie zomb = new EntityZombie(world); - zomb.setPosition(x + 0.5, y + 2, z + 0.5); - // zomb.setCurrentItemOrArmor(4, new ItemStack(Item.helmetIron.itemID,1,0)); - // zomb.setCurrentItemOrArmor(3, new ItemStack(Item.plateIron.itemID,1,0)); - // zomb.setCurrentItemOrArmor(2, new ItemStack(Item.legsIron.itemID,1,0)); - // zomb.setCurrentItemOrArmor(1, new ItemStack(Item.bootsIron.itemID,1,0)); - //zomb.setCurrentItemOrArmor(0, new ItemStack(AlchemicalWizardry.energySword.itemID,1,0)); - zomb.addPotionEffect(new PotionEffect(Potion.fireResistance.id, 2000)); - zomb.addPotionEffect(new PotionEffect(Potion.damageBoost.id, 20000, 7)); - zomb.addPotionEffect(new PotionEffect(Potion.resistance.id, 20000, 3)); - - if (!world.isRemote) - { - world.spawnEntityInWorld(zomb); - world.addWeatherEffect(new EntityLightningBolt(world, x, y + 2, z)); -// if (!player.capabilities.isCreativeMode) -// { -// PacketDispatcher.sendPacketToServer(PacketHandler.getPacket(player.getEntityName(), -5000, 0)); -// } - } - - return true; - } else if (block== Blocks.lapis_block) - { - if (!player.capabilities.isCreativeMode && !world.isRemote) - { - EnergyItems.drainPlayerNetwork(player, 5000); - } - - if (!world.isRemote) - { - world.addWeatherEffect(new EntityLightningBolt(world, x, y + 2, z)); - world.setWorldTime((world.getWorldTime() / 24000) * 24000 + 13800); -// if (!player.capabilities.isCreativeMode) -// { -// PacketDispatcher.sendPacketToServer(PacketHandler.getPacket(player.getEntityName(), -5000, 0)); -// } - } - } else if (block == Blocks.bedrock) - { - if (!player.capabilities.isCreativeMode && !world.isRemote) - { - EnergyItems.drainPlayerNetwork(player, 5000); - } - - if (!world.isRemote) - { - world.addWeatherEffect(new EntityLightningBolt(world, x, y + 2, z)); - //world.setWorldTime((world.getWorldTime()/24000)*24000+13800); -// if (!player.capabilities.isCreativeMode) -// { -// PacketDispatcher.sendPacketToServer(PacketHandler.getPacket(player.getEntityName(), -5000, 0)); -// } - } - - player.addPotionEffect(new PotionEffect(Potion.resistance.id, 60 * 20, 1)); - } - } - return false; - } -} diff --git a/src-backup/main/java/WayofTime/alchemicalWizardry/common/block/LargeBloodStoneBrick.java b/src-backup/main/java/WayofTime/alchemicalWizardry/common/block/LargeBloodStoneBrick.java deleted file mode 100644 index 1969c452..00000000 --- a/src-backup/main/java/WayofTime/alchemicalWizardry/common/block/LargeBloodStoneBrick.java +++ /dev/null @@ -1,27 +0,0 @@ -package WayofTime.alchemicalWizardry.common.block; - -import net.minecraft.block.Block; -import net.minecraft.block.material.Material; -import net.minecraft.client.renderer.texture.IIconRegister; -import WayofTime.alchemicalWizardry.AlchemicalWizardry; -import cpw.mods.fml.relauncher.Side; -import cpw.mods.fml.relauncher.SideOnly; - -public class LargeBloodStoneBrick extends Block -{ - public LargeBloodStoneBrick() - { - super(Material.iron); - setHardness(2.0F); - setResistance(5.0F); - setCreativeTab(AlchemicalWizardry.tabBloodMagic); - this.setBlockName("largeBloodStoneBrick"); - } - - @Override - @SideOnly(Side.CLIENT) - public void registerBlockIcons(IIconRegister iconRegister) - { - this.blockIcon = iconRegister.registerIcon("AlchemicalWizardry:LargeBloodStoneBrick"); - } -} diff --git a/src-backup/main/java/WayofTime/alchemicalWizardry/common/block/LifeEssenceBlock.java b/src-backup/main/java/WayofTime/alchemicalWizardry/common/block/LifeEssenceBlock.java deleted file mode 100644 index 34676410..00000000 --- a/src-backup/main/java/WayofTime/alchemicalWizardry/common/block/LifeEssenceBlock.java +++ /dev/null @@ -1,62 +0,0 @@ -package WayofTime.alchemicalWizardry.common.block; - -import net.minecraft.block.material.Material; -import net.minecraft.client.renderer.texture.IIconRegister; -import net.minecraft.util.IIcon; -import net.minecraft.world.IBlockAccess; -import net.minecraft.world.World; -import net.minecraftforge.fluids.BlockFluidClassic; -import WayofTime.alchemicalWizardry.AlchemicalWizardry; -import cpw.mods.fml.relauncher.Side; -import cpw.mods.fml.relauncher.SideOnly; - -public class LifeEssenceBlock extends BlockFluidClassic -{ - public LifeEssenceBlock() - { - super(AlchemicalWizardry.lifeEssenceFluid, Material.water); - AlchemicalWizardry.lifeEssenceFluid.setBlock(this); - - //setCreativeTab(AlchemicalWizardry.tabBloodMagic); - this.setBlockName("lifeEssenceFluidBlock"); - } - - @Override - @SideOnly(Side.CLIENT) - public IIcon getIcon(int side, int meta) - { - return this.blockIcon; - } - - @Override - @SideOnly(Side.CLIENT) - public void registerBlockIcons(IIconRegister iconRegister) - { - this.blockIcon = iconRegister.registerIcon("AlchemicalWizardry:lifeEssenceStill"); - AlchemicalWizardry.lifeEssenceFluid.setFlowingIcon(blockIcon); - AlchemicalWizardry.lifeEssenceFluid.setStillIcon(blockIcon); - //this.getFluid().setIcons(blockIcon); - } - - @Override - public boolean canDisplace(IBlockAccess world, int x, int y, int z) - { - if (world.getBlock(x, y, z).getMaterial().isLiquid()) - { - return false; - } - - return super.canDisplace(world, x, y, z); - } - - @Override - public boolean displaceIfPossible(World world, int x, int y, int z) - { - if (world.getBlock(x, y, z).getMaterial().isLiquid()) - { - return false; - } - - return super.displaceIfPossible(world, x, y, z); - } -} diff --git a/src-backup/main/java/WayofTime/alchemicalWizardry/common/block/RitualStone.java b/src-backup/main/java/WayofTime/alchemicalWizardry/common/block/RitualStone.java deleted file mode 100644 index a847c360..00000000 --- a/src-backup/main/java/WayofTime/alchemicalWizardry/common/block/RitualStone.java +++ /dev/null @@ -1,121 +0,0 @@ -package WayofTime.alchemicalWizardry.common.block; - -import net.minecraft.block.Block; -import net.minecraft.block.material.Material; -import net.minecraft.client.renderer.texture.IIconRegister; -import net.minecraft.entity.player.EntityPlayer; -import net.minecraft.item.Item; -import net.minecraft.item.ItemStack; -import net.minecraft.util.IIcon; -import net.minecraft.world.World; -import WayofTime.alchemicalWizardry.AlchemicalWizardry; -import WayofTime.alchemicalWizardry.api.rituals.IRitualStone; -import WayofTime.alchemicalWizardry.common.items.ScribeTool; -import cpw.mods.fml.relauncher.Side; -import cpw.mods.fml.relauncher.SideOnly; - -public class RitualStone extends Block implements IRitualStone -{ - @SideOnly(Side.CLIENT) - private static IIcon blankIcon; - @SideOnly(Side.CLIENT) - private static IIcon waterStoneIcon; - @SideOnly(Side.CLIENT) - private static IIcon fireStoneIcon; - @SideOnly(Side.CLIENT) - private static IIcon earthStoneIcon; - @SideOnly(Side.CLIENT) - private static IIcon airStoneIcon; - @SideOnly(Side.CLIENT) - private static IIcon duskStoneIcon; - - public RitualStone() - { - super(Material.iron); - setHardness(2.0F); - setResistance(5.0F); - this.setBlockName("ritualStone"); - setCreativeTab(AlchemicalWizardry.tabBloodMagic); - } - - @Override - @SideOnly(Side.CLIENT) - public void registerBlockIcons(IIconRegister iconRegister) - { - this.blankIcon = iconRegister.registerIcon("AlchemicalWizardry:RitualStone"); - this.waterStoneIcon = iconRegister.registerIcon("AlchemicalWizardry:WaterRitualStone"); - this.fireStoneIcon = iconRegister.registerIcon("AlchemicalWizardry:FireRitualStone"); - this.earthStoneIcon = iconRegister.registerIcon("AlchemicalWizardry:EarthRitualStone"); - this.airStoneIcon = iconRegister.registerIcon("AlchemicalWizardry:AirRitualStone"); - this.duskStoneIcon = iconRegister.registerIcon("AlchemicalWizardry:DuskRitualStone"); - } - - @Override - public int damageDropped(int metadata) - { - return 0; - } - - @Override - public boolean onBlockActivated(World world, int x, int y, int z, EntityPlayer player, int idk, float what, float these, float are) - { - ItemStack playerItem = player.getCurrentEquippedItem(); - - if (playerItem == null) - { - return false; - } - - Item item = playerItem.getItem(); - - if (!(item instanceof ScribeTool)) - { - return false; - } - - if (playerItem.getMaxDamage() <= playerItem.getItemDamage() && !(playerItem.getMaxDamage() == 0)) - { - return false; - } - - ScribeTool scribeTool = (ScribeTool) item; - - if (!player.capabilities.isCreativeMode) - { - playerItem.setItemDamage(playerItem.getItemDamage() + 1); - } - - world.setBlockMetadataWithNotify(x, y, z, scribeTool.getType(), 3); - world.markBlockForUpdate(x, y, z); - return true; - } - - @Override - @SideOnly(Side.CLIENT) - public IIcon getIcon(int side, int metadata) - { - switch (metadata) - { - case 0: - return blankIcon; - - case 1: - return waterStoneIcon; - - case 2: - return fireStoneIcon; - - case 3: - return earthStoneIcon; - - case 4: - return airStoneIcon; - - case 5: - return duskStoneIcon; - - default: - return blankIcon; - } - } -} diff --git a/src-backup/main/java/WayofTime/alchemicalWizardry/common/block/RuneOfSacrifice.java b/src-backup/main/java/WayofTime/alchemicalWizardry/common/block/RuneOfSacrifice.java deleted file mode 100644 index d06ec80f..00000000 --- a/src-backup/main/java/WayofTime/alchemicalWizardry/common/block/RuneOfSacrifice.java +++ /dev/null @@ -1,31 +0,0 @@ -package WayofTime.alchemicalWizardry.common.block; - -import net.minecraft.client.renderer.texture.IIconRegister; -import WayofTime.alchemicalWizardry.AlchemicalWizardry; -import cpw.mods.fml.relauncher.Side; -import cpw.mods.fml.relauncher.SideOnly; - -public class RuneOfSacrifice extends BloodRune -{ - public RuneOfSacrifice() - { - super(); - this.setBlockName("runeOfSacrifice"); - setCreativeTab(AlchemicalWizardry.tabBloodMagic); - setHardness(2.0F); - setResistance(5.0F); - } - - @Override - @SideOnly(Side.CLIENT) - public void registerBlockIcons(IIconRegister iconRegister) - { - this.blockIcon = iconRegister.registerIcon("AlchemicalWizardry:RuneOfSacrifice"); - } - - @Override - public int getRuneEffect(int metaData) - { - return 3; - } -} diff --git a/src-backup/main/java/WayofTime/alchemicalWizardry/common/block/RuneOfSelfSacrifice.java b/src-backup/main/java/WayofTime/alchemicalWizardry/common/block/RuneOfSelfSacrifice.java deleted file mode 100644 index 4032044d..00000000 --- a/src-backup/main/java/WayofTime/alchemicalWizardry/common/block/RuneOfSelfSacrifice.java +++ /dev/null @@ -1,31 +0,0 @@ -package WayofTime.alchemicalWizardry.common.block; - -import net.minecraft.client.renderer.texture.IIconRegister; -import WayofTime.alchemicalWizardry.AlchemicalWizardry; -import cpw.mods.fml.relauncher.Side; -import cpw.mods.fml.relauncher.SideOnly; - -public class RuneOfSelfSacrifice extends BloodRune -{ - public RuneOfSelfSacrifice() - { - super(); - this.setBlockName("runeOfSelfSacrifice"); - setCreativeTab(AlchemicalWizardry.tabBloodMagic); - setHardness(2.0F); - setResistance(5.0F); - } - - @Override - @SideOnly(Side.CLIENT) - public void registerBlockIcons(IIconRegister iconRegister) - { - this.blockIcon = iconRegister.registerIcon("AlchemicalWizardry:RuneOfSelfSacrifice"); - } - - @Override - public int getRuneEffect(int metaData) - { - return 4; - } -} diff --git a/src-backup/main/java/WayofTime/alchemicalWizardry/common/block/SpectralBlock.java b/src-backup/main/java/WayofTime/alchemicalWizardry/common/block/SpectralBlock.java deleted file mode 100644 index d3ceb131..00000000 --- a/src-backup/main/java/WayofTime/alchemicalWizardry/common/block/SpectralBlock.java +++ /dev/null @@ -1,120 +0,0 @@ -package WayofTime.alchemicalWizardry.common.block; - -import java.util.Random; - -import net.minecraft.block.Block; -import net.minecraft.block.BlockContainer; -import net.minecraft.block.material.Material; -import net.minecraft.client.renderer.texture.IIconRegister; -import net.minecraft.entity.player.EntityPlayer; -import net.minecraft.init.Blocks; -import net.minecraft.item.ItemBlock; -import net.minecraft.item.ItemStack; -import net.minecraft.tileentity.TileEntity; -import net.minecraft.util.Facing; -import net.minecraft.world.IBlockAccess; -import net.minecraft.world.World; -import WayofTime.alchemicalWizardry.common.tileEntity.TESpectralBlock; -import cpw.mods.fml.relauncher.Side; -import cpw.mods.fml.relauncher.SideOnly; - -public class SpectralBlock extends BlockContainer -{ - public SpectralBlock() - { - super(Material.rock); - this.setBlockName("spectralBlock"); - } - -// @Override -// public int tickRate(World par1World) -// { -// return 10; -// } - - - @Override - @SideOnly(Side.CLIENT) - public void registerBlockIcons(IIconRegister iconRegister) - { - this.blockIcon = iconRegister.registerIcon("AlchemicalWizardry:SpectralBlock"); - } - - @Override - public boolean isOpaqueCube() - { - Block d; - return false; - } - - @Override - public int quantityDropped(Random par1Random) - { - return 0; - } - - @SideOnly(Side.CLIENT) - public boolean shouldSideBeRendered(IBlockAccess p_149646_1_, int p_149646_2_, int p_149646_3_, int p_149646_4_, int p_149646_5_) - { - Block block = p_149646_1_.getBlock(p_149646_2_, p_149646_3_, p_149646_4_); - - if (p_149646_1_.getBlockMetadata(p_149646_2_, p_149646_3_, p_149646_4_) != p_149646_1_.getBlockMetadata(p_149646_2_ - Facing.offsetsXForSide[p_149646_5_], p_149646_3_ - Facing.offsetsYForSide[p_149646_5_], p_149646_4_ - Facing.offsetsZForSide[p_149646_5_])) - { - return true; - } - - if (block == this) - { - return false; - } - - return block == this ? false : super.shouldSideBeRendered(p_149646_1_, p_149646_2_, p_149646_3_, p_149646_4_, p_149646_5_); - } - - @SideOnly(Side.CLIENT) - /** - * Returns which pass should this block be rendered on. 0 for solids and 1 for alpha - */ - public int getRenderBlockPass() - { - return 1; - } - - @Override - public boolean onBlockActivated(World world, int x, int y, int z, EntityPlayer player, int idk, float what, float these, float are) - { - //TEAltar tileEntity = (TEAltar)world.getBlockTileEntity(x, y, z); - if (player.isSneaking()) - { - return false; - } - - ItemStack playerItem = player.getCurrentEquippedItem(); - - if (playerItem != null) - { - if (playerItem.getItem() instanceof ItemBlock) - { - world.setBlock(x, y, z, ((ItemBlock)(playerItem.getItem())).field_150939_a, playerItem.getItemDamage(), 3); - - if (!player.capabilities.isCreativeMode) - { - playerItem.stackSize--; - } - - return true; - } else - { - return false; - } - } - - return true; - } - - @Override - public TileEntity createNewTileEntity(World p_149915_1_, int p_149915_2_) - { - return new TESpectralBlock(); - } -} diff --git a/src-backup/main/java/WayofTime/alchemicalWizardry/common/block/SpeedRune.java b/src-backup/main/java/WayofTime/alchemicalWizardry/common/block/SpeedRune.java deleted file mode 100644 index 0680b066..00000000 --- a/src-backup/main/java/WayofTime/alchemicalWizardry/common/block/SpeedRune.java +++ /dev/null @@ -1,31 +0,0 @@ -package WayofTime.alchemicalWizardry.common.block; - -import net.minecraft.client.renderer.texture.IIconRegister; -import WayofTime.alchemicalWizardry.AlchemicalWizardry; -import cpw.mods.fml.relauncher.Side; -import cpw.mods.fml.relauncher.SideOnly; - -public class SpeedRune extends BloodRune -{ - public SpeedRune() - { - super(); - this.setBlockName("speedRune"); - setCreativeTab(AlchemicalWizardry.tabBloodMagic); - setHardness(2.0F); - setResistance(5.0F); - } - - @Override - @SideOnly(Side.CLIENT) - public void registerBlockIcons(IIconRegister iconRegister) - { - this.blockIcon = iconRegister.registerIcon("AlchemicalWizardry:SpeedRune"); - } - - @Override - public int getRuneEffect(int metaData) - { - return 1; - } -} diff --git a/src-backup/main/java/WayofTime/alchemicalWizardry/common/bloodAltarUpgrade/AltarComponent.java b/src-backup/main/java/WayofTime/alchemicalWizardry/common/bloodAltarUpgrade/AltarComponent.java deleted file mode 100644 index 4aeb4e75..00000000 --- a/src-backup/main/java/WayofTime/alchemicalWizardry/common/bloodAltarUpgrade/AltarComponent.java +++ /dev/null @@ -1,60 +0,0 @@ -package WayofTime.alchemicalWizardry.common.bloodAltarUpgrade; - -import net.minecraft.block.Block; - -public class AltarComponent -{ - private int x; - private int y; - private int z; - private Block block; - private int metadata; - private boolean isBloodRune; - private boolean isUpgradeSlot; - - public AltarComponent(int x, int y, int z, Block block, int metadata, boolean isBloodRune, boolean isUpgradeSlot) - { - this.x = x; - this.y = y; - this.z = z; - this.block = block; - this.metadata = metadata; - this.isBloodRune = isBloodRune; - this.isUpgradeSlot = isUpgradeSlot; - } - - public int getX() - { - return x; - } - - public int getY() - { - return y; - } - - public int getZ() - { - return z; - } - - public Block getBlock() - { - return block; - } - - public int getMetadata() - { - return metadata; - } - - public boolean isBloodRune() - { - return isBloodRune; - } - - public boolean isUpgradeSlot() - { - return isUpgradeSlot; - } -} diff --git a/src-backup/main/java/WayofTime/alchemicalWizardry/common/bloodAltarUpgrade/AltarUpgradeComponent.java b/src-backup/main/java/WayofTime/alchemicalWizardry/common/bloodAltarUpgrade/AltarUpgradeComponent.java deleted file mode 100644 index f6e231c2..00000000 --- a/src-backup/main/java/WayofTime/alchemicalWizardry/common/bloodAltarUpgrade/AltarUpgradeComponent.java +++ /dev/null @@ -1,105 +0,0 @@ -package WayofTime.alchemicalWizardry.common.bloodAltarUpgrade; - -public class AltarUpgradeComponent -{ - private int speedUpgrades; - private int efficiencyUpgrades; - private int sacrificeUpgrades; - private int selfSacrificeUpgrades; - private int displacementUpgrades; - private int altarCapacitiveUpgrades; - private int orbCapacitiveUpgrades; - private int betterCapacitiveUpgrades; - - public AltarUpgradeComponent() - { - speedUpgrades = 0; - efficiencyUpgrades = 0; - sacrificeUpgrades = 0; - selfSacrificeUpgrades = 0; - displacementUpgrades = 0; - altarCapacitiveUpgrades = 0; - orbCapacitiveUpgrades = 0; - betterCapacitiveUpgrades = 0; - } - - public void addSpeedUpgrade() - { - speedUpgrades++; - } - - public void addEfficiencyUpgrade() - { - efficiencyUpgrades++; - } - - public void addSacrificeUpgrade() - { - sacrificeUpgrades++; - } - - public void addSelfSacrificeUpgrade() - { - selfSacrificeUpgrades++; - } - - public void addDisplacementUpgrade() - { - displacementUpgrades++; - } - - public void addaltarCapacitiveUpgrade() - { - altarCapacitiveUpgrades++; - } - - public void addorbCapacitiveUpgrade() - { - orbCapacitiveUpgrades++; - } - - public void addBetterCapacitiveUpgrade() - { - betterCapacitiveUpgrades++; - } - - public int getSpeedUpgrades() - { - return speedUpgrades; - } - - public int getEfficiencyUpgrades() - { - return efficiencyUpgrades; - } - - public int getSacrificeUpgrades() - { - return sacrificeUpgrades; - } - - public int getSelfSacrificeUpgrades() - { - return selfSacrificeUpgrades; - } - - public int getDisplacementUpgrades() - { - return displacementUpgrades; - } - - public int getAltarCapacitiveUpgrades() - { - return this.altarCapacitiveUpgrades; - } - - public int getOrbCapacitiveUpgrades() - { - return this.orbCapacitiveUpgrades; - } - - public int getBetterCapacitiveUpgrades() - { - return this.betterCapacitiveUpgrades; - } -} diff --git a/src-backup/main/java/WayofTime/alchemicalWizardry/common/bloodAltarUpgrade/UpgradedAltars.java b/src-backup/main/java/WayofTime/alchemicalWizardry/common/bloodAltarUpgrade/UpgradedAltars.java deleted file mode 100644 index 4c5ea30d..00000000 --- a/src-backup/main/java/WayofTime/alchemicalWizardry/common/bloodAltarUpgrade/UpgradedAltars.java +++ /dev/null @@ -1,300 +0,0 @@ -package WayofTime.alchemicalWizardry.common.bloodAltarUpgrade; - -import java.util.ArrayList; -import java.util.List; - -import net.minecraft.block.Block; -import net.minecraft.init.Blocks; -import net.minecraft.world.World; -import WayofTime.alchemicalWizardry.AlchemicalWizardry; -import WayofTime.alchemicalWizardry.ModBlocks; -import WayofTime.alchemicalWizardry.common.block.BloodRune; - -public class UpgradedAltars -{ - public static List secondTierAltar = new ArrayList(); - public static List thirdTierAltar = new ArrayList(); - public static List fourthTierAltar = new ArrayList(); - public static List fifthTierAltar = new ArrayList(); - public static int highestAltar = 5; - - public static int isAltarValid(World world, int x, int y, int z) - { - for (int i = highestAltar; i >= 2; i--) - { - if (checkAltarIsValid(world, x, y, z, i)) - { - return i; - } - } - - return 1; - } - - public static boolean checkAltarIsValid(World world, int x, int y, int z, int altarTier) - { - switch (altarTier) - { - case 1: - return true; - - case 2: - for (AltarComponent ac : secondTierAltar) - { - if (ac.isBloodRune()) - { - Block testBlock = world.getBlock(x + ac.getX(), y + ac.getY(), z + ac.getZ()); - - if (!(testBlock instanceof BloodRune)) - { - return false; - } - } else - { - Block block = world.getBlock(x + ac.getX(), y + ac.getY(), z + ac.getZ()); - int metadata = world.getBlockMetadata(x + ac.getX(), y + ac.getY(), z + ac.getZ()); - - if (((ac.getBlock() != block) || (ac.getMetadata() != metadata)) && !(ac.getBlock() == Blocks.stonebrick && !world.isAirBlock(x + ac.getX(), y + ac.getY(), z + ac.getZ()))) - { - return false; - } - } - } - - return true; - - case 3: - for (AltarComponent ac : thirdTierAltar) - { - if (ac.isBloodRune()) - { - Block testBlock = world.getBlock(x + ac.getX(), y + ac.getY(), z + ac.getZ()); - - if (!(testBlock instanceof BloodRune)) - { - return false; - } - } else - { - Block block = world.getBlock(x + ac.getX(), y + ac.getY(), z + ac.getZ()); - int metadata = world.getBlockMetadata(x + ac.getX(), y + ac.getY(), z + ac.getZ()); - - if (((ac.getBlock() != block) || (ac.getMetadata() != metadata)) && !(ac.getBlock() == Blocks.stonebrick && !world.isAirBlock(x + ac.getX(), y + ac.getY(), z + ac.getZ()))) - { - return false; - } - } - } - - return true; - - case 4: - for (AltarComponent ac : fourthTierAltar) - { - if (ac.isBloodRune()) - { - Block testBlock = world.getBlock(x + ac.getX(), y + ac.getY(), z + ac.getZ()); - - if (!(testBlock instanceof BloodRune)) - { - return false; - } - } else - { - Block block = world.getBlock(x + ac.getX(), y + ac.getY(), z + ac.getZ()); - int metadata = world.getBlockMetadata(x + ac.getX(), y + ac.getY(), z + ac.getZ()); - - if (((ac.getBlock() != block) || (ac.getMetadata() != metadata)) && !(ac.getBlock() == Blocks.stonebrick && !world.isAirBlock(x + ac.getX(), y + ac.getY(), z + ac.getZ()))) - { - return false; - } - } - } - - return true; - - case 5: - for (AltarComponent ac : fifthTierAltar) - { - if (ac.isBloodRune()) - { - Block testBlock = world.getBlock(x + ac.getX(), y + ac.getY(), z + ac.getZ()); - - if (!(testBlock instanceof BloodRune)) - { - return false; - } - } else - { - Block block = world.getBlock(x + ac.getX(), y + ac.getY(), z + ac.getZ()); - int metadata = world.getBlockMetadata(x + ac.getX(), y + ac.getY(), z + ac.getZ()); - - if (((ac.getBlock() != block) || (ac.getMetadata() != metadata)) && !(ac.getBlock() == Blocks.stonebrick && !world.isAirBlock(x + ac.getX(), y + ac.getY(), z + ac.getZ()))) - { - return false; - } - } - } - - return true; - - default: - return false; - } - } - - public static AltarUpgradeComponent getUpgrades(World world, int x, int y, int z, int altarTier) - { - AltarUpgradeComponent upgrades = new AltarUpgradeComponent(); - List list = UpgradedAltars.getAltarUpgradeListForTier(altarTier); - - for (AltarComponent ac : list) - { - if (ac.isUpgradeSlot()) - { - //Currently checks the getRuneEffect. - //TODO Change so that it uses the metadata instead, with the BlockID. - Block testBlock = world.getBlock(x + ac.getX(), y + ac.getY(), z + ac.getZ()); - - if (testBlock instanceof BloodRune) - { - if (!world.isRemote) - { - switch (((BloodRune) testBlock).getRuneEffect(world.getBlockMetadata(x + ac.getX(), y + ac.getY(), z + ac.getZ()))) - { - case 1: - upgrades.addSpeedUpgrade(); - break; - - case 2: - upgrades.addEfficiencyUpgrade(); - break; - - case 3: - upgrades.addSacrificeUpgrade(); - break; - - case 4: - upgrades.addSelfSacrificeUpgrade(); - break; - - case 5: - upgrades.addaltarCapacitiveUpgrade(); - break; - - case 6: - upgrades.addDisplacementUpgrade(); - break; - - case 7: - upgrades.addorbCapacitiveUpgrade(); - break; - - case 8: - upgrades.addBetterCapacitiveUpgrade(); - break; - } - } - } - } - } - - return upgrades; - } - - public static void loadAltars() - { - secondTierAltar.add(new AltarComponent(-1, -1, -1, ModBlocks.bloodRune, 0, true, false)); - secondTierAltar.add(new AltarComponent(0, -1, -1, ModBlocks.bloodRune, 0, true, true)); - secondTierAltar.add(new AltarComponent(1, -1, -1, ModBlocks.bloodRune, 0, true, false)); - secondTierAltar.add(new AltarComponent(-1, -1, 0, ModBlocks.bloodRune, 0, true, true)); - secondTierAltar.add(new AltarComponent(1, -1, 0, ModBlocks.bloodRune, 0, true, true)); - secondTierAltar.add(new AltarComponent(-1, -1, 1, ModBlocks.bloodRune, 0, true, false)); - secondTierAltar.add(new AltarComponent(0, -1, 1, ModBlocks.bloodRune, 0, true, true)); - secondTierAltar.add(new AltarComponent(1, -1, 1, ModBlocks.bloodRune, 0, true, false)); - thirdTierAltar.add(new AltarComponent(-1, -1, -1, ModBlocks.bloodRune, 0, true, true)); - thirdTierAltar.add(new AltarComponent(0, -1, -1, ModBlocks.bloodRune, 0, true, true)); - thirdTierAltar.add(new AltarComponent(1, -1, -1, ModBlocks.bloodRune, 0, true, true)); - thirdTierAltar.add(new AltarComponent(-1, -1, 0, ModBlocks.bloodRune, 0, true, true)); - thirdTierAltar.add(new AltarComponent(1, -1, 0, ModBlocks.bloodRune, 0, true, true)); - thirdTierAltar.add(new AltarComponent(-1, -1, 1, ModBlocks.bloodRune, 0, true, true)); - thirdTierAltar.add(new AltarComponent(0, -1, 1, ModBlocks.bloodRune, 0, true, true)); - thirdTierAltar.add(new AltarComponent(1, -1, 1, ModBlocks.bloodRune, 0, true, true)); - thirdTierAltar.add(new AltarComponent(-3, -1, -3, Blocks.stonebrick, 0, false, false)); - thirdTierAltar.add(new AltarComponent(-3, 0, -3, Blocks.stonebrick, 0, false, false)); - thirdTierAltar.add(new AltarComponent(3, -1, -3, Blocks.stonebrick, 0, false, false)); - thirdTierAltar.add(new AltarComponent(3, 0, -3, Blocks.stonebrick, 0, false, false)); - thirdTierAltar.add(new AltarComponent(-3, -1, 3, Blocks.stonebrick, 0, false, false)); - thirdTierAltar.add(new AltarComponent(-3, 0, 3, Blocks.stonebrick, 0, false, false)); - thirdTierAltar.add(new AltarComponent(3, -1, 3, Blocks.stonebrick, 0, false, false)); - thirdTierAltar.add(new AltarComponent(3, 0, 3, Blocks.stonebrick, 0, false, false)); - thirdTierAltar.add(new AltarComponent(-3, 1, -3, Blocks.glowstone, 0, false, false)); - thirdTierAltar.add(new AltarComponent(3, 1, -3, Blocks.glowstone, 0, false, false)); - thirdTierAltar.add(new AltarComponent(-3, 1, 3, Blocks.glowstone, 0, false, false)); - thirdTierAltar.add(new AltarComponent(3, 1, 3, Blocks.glowstone, 0, false, false)); - - for (int i = -2; i <= 2; i++) - { - thirdTierAltar.add(new AltarComponent(3, -2, i, ModBlocks.bloodRune, 0, true, true)); - thirdTierAltar.add(new AltarComponent(-3, -2, i, ModBlocks.bloodRune, 0, true, true)); - thirdTierAltar.add(new AltarComponent(i, -2, 3, ModBlocks.bloodRune, 0, true, true)); - thirdTierAltar.add(new AltarComponent(i, -2, -3, ModBlocks.bloodRune, 0, true, true)); - } - - fourthTierAltar.addAll(thirdTierAltar); - - for (int i = -3; i <= 3; i++) - { - fourthTierAltar.add(new AltarComponent(5, -3, i, ModBlocks.bloodRune, 0, true, true)); - fourthTierAltar.add(new AltarComponent(-5, -3, i, ModBlocks.bloodRune, 0, true, true)); - fourthTierAltar.add(new AltarComponent(i, -3, 5, ModBlocks.bloodRune, 0, true, true)); - fourthTierAltar.add(new AltarComponent(i, -3, -5, ModBlocks.bloodRune, 0, true, true)); - } - - for (int i = -2; i <= 1; i++) - { - fourthTierAltar.add(new AltarComponent(5, i, 5, Blocks.stonebrick, 0, false, false)); - fourthTierAltar.add(new AltarComponent(5, i, -5, Blocks.stonebrick, 0, false, false)); - fourthTierAltar.add(new AltarComponent(-5, i, -5, Blocks.stonebrick, 0, false, false)); - fourthTierAltar.add(new AltarComponent(-5, i, 5, Blocks.stonebrick, 0, false, false)); - } - - fourthTierAltar.add(new AltarComponent(5, 2, 5, ModBlocks.largeBloodStoneBrick, 0, false, false)); - fourthTierAltar.add(new AltarComponent(5, 2, -5, ModBlocks.largeBloodStoneBrick, 0, false, false)); - fourthTierAltar.add(new AltarComponent(-5, 2, -5, ModBlocks.largeBloodStoneBrick, 0, false, false)); - fourthTierAltar.add(new AltarComponent(-5, 2, 5, ModBlocks.largeBloodStoneBrick, 0, false, false)); - fifthTierAltar.addAll(fourthTierAltar); - fifthTierAltar.add(new AltarComponent(-8, -3, 8, Blocks.beacon, 0, false, false)); - fifthTierAltar.add(new AltarComponent(-8, -3, -8, Blocks.beacon, 0, false, false)); - fifthTierAltar.add(new AltarComponent(8, -3, 8, Blocks.beacon, 0, false, false)); - fifthTierAltar.add(new AltarComponent(8, -3, 8, Blocks.beacon, 0, false, false)); - - for (int i = -6; i <= 6; i++) - { - fifthTierAltar.add(new AltarComponent(8, -4, i, ModBlocks.bloodRune, 0, true, true)); - fifthTierAltar.add(new AltarComponent(-8, -4, i, ModBlocks.bloodRune, 0, true, true)); - fifthTierAltar.add(new AltarComponent(i, -4, 8, ModBlocks.bloodRune, 0, true, true)); - fifthTierAltar.add(new AltarComponent(i, -4, -8, ModBlocks.bloodRune, 0, true, true)); - } - } - - public static List getAltarUpgradeListForTier(int tier) - { - switch (tier) - { - case 2: - return secondTierAltar; - - case 3: - return thirdTierAltar; - - case 4: - return fourthTierAltar; - - case 5: - return fifthTierAltar; - } - - return null; - } -} diff --git a/src-backup/main/java/WayofTime/alchemicalWizardry/common/demonVillage/BlockSet.java b/src-backup/main/java/WayofTime/alchemicalWizardry/common/demonVillage/BlockSet.java deleted file mode 100644 index 25398812..00000000 --- a/src-backup/main/java/WayofTime/alchemicalWizardry/common/demonVillage/BlockSet.java +++ /dev/null @@ -1,195 +0,0 @@ -package WayofTime.alchemicalWizardry.common.demonVillage; - -import java.util.ArrayList; -import java.util.List; - -import net.minecraft.block.Block; -import net.minecraft.block.BlockStairs; -import net.minecraft.init.Blocks; -import net.minecraft.world.World; -import net.minecraftforge.common.util.ForgeDirection; -import WayofTime.alchemicalWizardry.common.Int3; -import cpw.mods.fml.common.registry.GameRegistry; -import cpw.mods.fml.common.registry.GameRegistry.UniqueIdentifier; - -public class BlockSet -{ - protected String blockid; - protected int[] metadata; - protected List positions; - - public BlockSet() - { - this(Blocks.stone); - } - - public BlockSet(String blockid) - { - this.blockid = blockid; - this.metadata = new int[4]; - positions = new ArrayList(); - } - - public BlockSet(Block block) - { - this(BlockSet.getPairedIdForBlock(block)); - } - - public BlockSet(Block block, int meta) - { - this(block); - for(int i=0; i getPositions() - { - return positions; - } - - public void addPositionToBlock(int xOffset, int yOffset, int zOffset) - { - positions.add(new Int3(xOffset, yOffset, zOffset)); - } - - public Block getBlock() - { - return this.getBlockForString(blockid); - } - - public static String getPairedIdForBlock(Block block) - { - UniqueIdentifier un = GameRegistry.findUniqueIdentifierFor(block); - String name = ""; - - if(un != null) - { - name = un.modId + ":" + un.name; - } - - return name; - } - - public static Block getBlockForString(String str) - { - String[] parts = str.split(":"); - String modId = parts[0]; - String name = parts[1]; - return GameRegistry.findBlock(modId, name); - } - - public int getMetaForDirection(ForgeDirection dir) - { - if(metadata.length < 4) - { - return 0; - } - - switch(dir) - { - case NORTH: - return metadata[0]; - case SOUTH: - return metadata[1]; - case WEST: - return metadata[2]; - case EAST: - return metadata[3]; - default: - return 0; - } - } - - public void buildAtIndex(World world, int xCoord, int yCoord, int zCoord, ForgeDirection dir, int index) - { - Block block = this.getBlock(); - if(index >= positions.size() || block == null) - { - return; - } - - Int3 position = positions.get(index); - int xOff = position.xCoord; - int yOff = position.yCoord; - int zOff = position.zCoord; - int meta = this.getMetaForDirection(dir); - - switch(dir) - { - case NORTH: - break; - case SOUTH: - xOff *= -1; - zOff *= -1; - break; - case WEST: - int temp = zOff; - zOff = xOff * -1; - xOff = temp; - break; - case EAST: - int temp2 = zOff * -1; - zOff = xOff; - xOff = temp2; - break; - default: - } - - world.setBlock(xCoord + xOff, yCoord + yOff, zCoord + zOff, block, meta, 3); - } - - public void buildAll(World world, int xCoord, int yCoord, int zCoord, ForgeDirection dir) - { - for(int i=0; i blockList; - - public BuildingSchematic() - { - this(""); - } - - public BuildingSchematic(String name) - { - this.name = name; - blockList = new ArrayList(); - this.doorX = 0; - this.doorZ = 0; - this.doorY = 0; - this.buildingTier = 0; - this.buildingType = DemonBuilding.BUILDING_HOUSE; - } - - public void addBlockWithMeta(Block block, int meta, int xOffset, int yOffset, int zOffset) - { - for(BlockSet set : blockList) - { - if(set.isContained(block, meta)) - { - set.addPositionToBlock(xOffset, yOffset, zOffset); - return; - } - } - - BlockSet set = new BlockSet(block, meta); - set.addPositionToBlock(xOffset, yOffset, zOffset); - blockList.add(set); - } - - public void buildAll(World world, int xCoord, int yCoord, int zCoord, ForgeDirection dir) - { - for(BlockSet set : blockList) - { - set.buildAll(world, xCoord, yCoord, zCoord, dir); - } - } - - public GridSpaceHolder createGSH() - { - GridSpaceHolder holder = new GridSpaceHolder(); - - for(BlockSet set : blockList) - { - for(Int3 coords : set.getPositions()) - { - int gridX = (int)((coords.xCoord+2*Math.signum(coords.xCoord))/5); - int gridZ = (int)((coords.zCoord+2*Math.signum(coords.zCoord))/5); - - holder.setGridSpace(gridX, gridZ, new GridSpace(GridSpace.HOUSE,0)); - } - } - - return holder; - } - - public Int3 getGridSpotOfDoor() - { - int gridX = (int)((doorX+2*Math.signum(doorX))/5); - int gridZ = (int)((doorZ+2*Math.signum(doorZ))/5); - - return new Int3(gridX, doorY, gridZ); - } - - public List getGriddedPositions(ForgeDirection dir) - { - List positionList = new ArrayList(); - - for(BlockSet blockSet : blockList) - { - for(Int3 pos : blockSet.getPositions()) - { - int xOff = pos.xCoord; - int zOff = pos.zCoord; - - switch(dir) - { - case SOUTH: - xOff *= -1; - zOff *= -1; - break; - case WEST: - int temp = zOff; - zOff = xOff * -1; - xOff = temp; - break; - case EAST: - int temp2 = zOff * -1; - zOff = xOff; - xOff = temp2; - break; - default: - } - - Int3 nextPos = new Int3(xOff, 0, zOff); - if(!positionList.contains(nextPos)) - { - positionList.add(nextPos); - } - } - } - - return positionList; - } - - public void destroyAllInField(World world, int xCoord, int yCoord, int zCoord, ForgeDirection dir) - { - GridSpaceHolder grid = this.createGSH(); //GridSpaceHolder is not aware of the buildings - need to use the schematic - - List positionList = getGriddedPositions(dir); - - for(int i=this.getMinY(); i<=this.getMaxY(); i++) - { - for(Int3 pos : positionList) - { - Block block = world.getBlock(xCoord + pos.xCoord, yCoord + i, zCoord + pos.zCoord); - if(block != ModBlocks.blockDemonPortal) - { - world.setBlockToAir(xCoord + pos.xCoord, yCoord + i, zCoord + pos.zCoord); - } - } - - //grid.destroyAllInGridSpaces(world, xCoord, yCoord + i, zCoord, dir); //Deprecated method - } - } - - public int getMinY() - { - int min = 0; - for(BlockSet set : blockList) - { - for(Int3 pos : set.getPositions()) - { - if(pos.yCoord < min) - { - min = pos.yCoord; - } - } - } - - return min; - } - - public int getMaxY() - { - int max = 0; - for(BlockSet set : blockList) - { - for(Int3 pos : set.getPositions()) - { - if(pos.yCoord > max) - { - max = pos.yCoord; - } - } - } - - return max; - } -} \ No newline at end of file diff --git a/src-backup/main/java/WayofTime/alchemicalWizardry/common/demonVillage/DemonBuilding.java b/src-backup/main/java/WayofTime/alchemicalWizardry/common/demonVillage/DemonBuilding.java deleted file mode 100644 index b0777a46..00000000 --- a/src-backup/main/java/WayofTime/alchemicalWizardry/common/demonVillage/DemonBuilding.java +++ /dev/null @@ -1,120 +0,0 @@ -package WayofTime.alchemicalWizardry.common.demonVillage; - -import net.minecraft.world.World; -import net.minecraftforge.common.util.ForgeDirection; -import WayofTime.alchemicalWizardry.common.Int3; - -public class DemonBuilding -{ - public static final int BUILDING_HOUSE = 0; - public static final int BUILDING_PORTAL = 1; - - public BuildingSchematic schematic; - public GridSpaceHolder area; - public int buildingTier; - public int buildingType; - public Int3 doorGridSpace; - - public DemonBuilding(BuildingSchematic schematic) - { - this.schematic = schematic; - this.buildingType = schematic.buildingType; - this.buildingTier = schematic.buildingTier; - this.area = this.createGSHForSchematic(schematic); - this.doorGridSpace = schematic.getGridSpotOfDoor(); - } - - public String getName() - { - return schematic.name; - } - - public boolean isValid(GridSpaceHolder master, int gridX, int gridZ, ForgeDirection dir) - { - return area.doesContainAll(master, gridX, gridZ, dir); - } - - public void buildAll(World world, int xCoord, int yCoord, int zCoord, ForgeDirection dir) - { - schematic.buildAll(world, xCoord, yCoord, zCoord, dir); - } - - public void setAllGridSpaces(int xInit, int zInit, int yLevel, ForgeDirection dir, int type, GridSpaceHolder master) - { - area.setAllGridSpaces(xInit, zInit, yLevel, dir, type, master); - } - - public GridSpaceHolder createGSHForSchematic(BuildingSchematic scheme) - { - switch(this.buildingType) - { - case DemonBuilding.BUILDING_HOUSE: - return scheme.createGSH(); - case DemonBuilding.BUILDING_PORTAL: - - } - return scheme.createGSH(); - } - - public Int3 getDoorSpace(ForgeDirection dir) - { - int x = 0; - int z = 0; - switch(dir) - { - case SOUTH: - x = -doorGridSpace.xCoord; - z = -doorGridSpace.zCoord; - break; - case WEST: - x = doorGridSpace.zCoord; - z = -doorGridSpace.xCoord; - break; - case EAST: - x = -doorGridSpace.zCoord; - z = doorGridSpace.xCoord; - break; - default: - x = doorGridSpace.xCoord; - z = doorGridSpace.zCoord; - break; - } - - return new Int3(x, doorGridSpace.yCoord, z); - } - - public Int3 getGridOffsetFromRoad(ForgeDirection sideOfRoad, int yLevel) - { - Int3 doorSpace = this.getDoorSpace(sideOfRoad); - int x = doorSpace.xCoord; - int z = doorSpace.zCoord; - - switch(sideOfRoad) - { - case SOUTH: - z++; - break; - case EAST: - x++; - break; - case WEST: - x--; - break; - default: - z--; - break; - } - - return new Int3(x, yLevel, z); - } - - public void destroyAllInField(World world, int xCoord, int yCoord, int zCoord, ForgeDirection dir) - { - schematic.destroyAllInField(world, xCoord, yCoord, zCoord, dir); - } - - public int getNumberOfGridSpaces() - { - return area.getNumberOfGridSpaces(); - } -} diff --git a/src-backup/main/java/WayofTime/alchemicalWizardry/common/demonVillage/DemonCrosspath.java b/src-backup/main/java/WayofTime/alchemicalWizardry/common/demonVillage/DemonCrosspath.java deleted file mode 100644 index 3b8a7a71..00000000 --- a/src-backup/main/java/WayofTime/alchemicalWizardry/common/demonVillage/DemonCrosspath.java +++ /dev/null @@ -1,22 +0,0 @@ -package WayofTime.alchemicalWizardry.common.demonVillage; - -import net.minecraft.world.World; - -public class DemonCrosspath -{ - private int xCoord; - private int yLevel; - private int zCoord; - - public DemonCrosspath(int xCoord, int yLevel, int zCoord) - { - this.xCoord = xCoord; - this.yLevel = yLevel; - this.zCoord = zCoord; - } - - public void createCrosspath(World world) - { - - } -} diff --git a/src-backup/main/java/WayofTime/alchemicalWizardry/common/demonVillage/DemonVillagePath.java b/src-backup/main/java/WayofTime/alchemicalWizardry/common/demonVillage/DemonVillagePath.java deleted file mode 100644 index 01645f35..00000000 --- a/src-backup/main/java/WayofTime/alchemicalWizardry/common/demonVillage/DemonVillagePath.java +++ /dev/null @@ -1,135 +0,0 @@ -package WayofTime.alchemicalWizardry.common.demonVillage; - -import net.minecraft.block.Block; -import net.minecraft.block.material.Material; -import net.minecraft.world.World; -import net.minecraftforge.common.util.ForgeDirection; -import WayofTime.alchemicalWizardry.ModBlocks; -import WayofTime.alchemicalWizardry.common.Int3; - -public class DemonVillagePath -{ - public int xi; - public int yi; - public int zi; - public ForgeDirection dir; - public int length; - - public DemonVillagePath(int xi, int yi, int zi, ForgeDirection dir, int length) - { - this.xi = xi; - this.yi = yi; - this.zi = zi; - this.dir = dir; - this.length = length; - } - - public Int3 constructFullPath(World world, int clearance, Block block, int meta) - { - int xPos = this.xi; - int yPos = this.yi; - int zPos = this.zi; - int rad = this.getRoadRadius(); - - for(int i=-rad; i<=rad; i++) - { - this.constructPartialPath(world, clearance, block, meta, xPos-rad*dir.offsetX+i*dir.offsetZ, yPos, zPos-rad*dir.offsetZ+i*dir.offsetX, dir, length+2*rad); - } - - return this.getFinalLocation(world, clearance); - } - - public void constructPartialPath(World world, int clearance, Block roadBlock, int meta, int xi, int yi, int zi, ForgeDirection dir, int length) - { - int xPos = xi; - int yPos = yi; - int zPos = zi; - - for(int i=0; i posXRadius|| x < -negXRadius || z > posZRadius || z < -negZRadius) - { - return new GridSpace(); - }else - { - return (area[x + negXRadius][z + negZRadius]); - } - } - - public void setGridSpace(int x, int z, GridSpace space) - { - if(x > posXRadius) - { - this.expandAreaInPosX(); - this.setGridSpace(x, z, space); - return; - }else if(x < -negXRadius) - { - this.expandAreaInNegX(); - this.setGridSpace(x, z, space); - return; - }else if(z > posZRadius) - { - this.expandAreaInPosZ(); - this.setGridSpace(x, z, space); - return; - }else if(z < -negZRadius) - { - this.expandAreaInNegZ(); - this.setGridSpace(x, z, space); - return; - }else - { - area[x + negXRadius][z + negZRadius] = space; - } - } - - public boolean doesContainAll(GridSpaceHolder master, int xInit, int zInit, ForgeDirection dir) - { - if(master != null) - { - System.out.println("negXRadius: " + negXRadius + " posXRadius: " + posXRadius + " negZRadius: " + negZRadius + " posZRadius: " + posZRadius); - for(int i=-negXRadius; i<=posXRadius; i++) - { - for(int j=-negZRadius; j<=posZRadius; j++) - { - GridSpace thisSpace = this.getGridSpace(i, j); - if(thisSpace.isEmpty()) - { - continue; - } - - System.out.println("x: " + i + " z: " + j); - - int xOff = 0; - int zOff = 0; - - switch(dir) - { - case SOUTH: - xOff = -i; - zOff = -j; - break; - case WEST: - xOff = j; - zOff = -i; - break; - case EAST: - xOff = -j; - zOff = i; - break; - default: - xOff = i; - zOff = j; - break; - } - if(!master.getGridSpace(xInit + xOff, zInit + zOff).isEmpty()) - { - return false; - } - } - } - return true; - } - return false; - } - - public void setAllGridSpaces(int xInit, int zInit, int yLevel, ForgeDirection dir, int type, GridSpaceHolder master) - { - System.out.println("Grid space selected: (" + xInit + "," + zInit + ")"); - if(master != null) - { - for(int i=-negXRadius; i<=posXRadius; i++) - { - for(int j=-negZRadius; j<=posZRadius; j++) - { - GridSpace thisSpace = this.getGridSpace(i, j); - if(thisSpace.isEmpty()) - { - continue; - } - - int xOff = 0; - int zOff = 0; - - switch(dir) - { - case SOUTH: - xOff = -i; - zOff = -j; - break; - case WEST: - xOff = j; - zOff = -i; - break; - case EAST: - xOff = -j; - zOff = i; - break; - default: - xOff = i; - zOff = j; - break; - } - - System.out.println("Grid space (" + (xInit + xOff) + "," + (zInit + zOff) + ")"); - - master.setGridSpace(xInit + xOff, zInit + zOff, new GridSpace(type, yLevel)); - } - } - } - } - - public void destroyAllInGridSpaces(World world, int xCoord, int yCoord, int zCoord, ForgeDirection dir) - { - for(int i=-negXRadius; i<=posXRadius; i++) - { - for(int j=-negZRadius; j<=posZRadius; j++) - { - GridSpace thisSpace = this.getGridSpace(i, j); - if(thisSpace.isEmpty()) - { - continue; - } - - int xOff = 0; - int zOff = 0; - - switch(dir) - { - case SOUTH: - xOff = -i; - zOff = -j; - break; - case WEST: - xOff = j; - zOff = -i; - break; - case EAST: - xOff = -j; - zOff = i; - break; - default: - xOff = i; - zOff = j; - break; - } - - for(int l = -2; l<=2; l++) - { - for(int m = -2; m<=2; m++) - { - Block block = world.getBlock(xCoord + xOff*5 + l, yCoord, zCoord + zOff*5 + m); - if(block == ModBlocks.blockDemonPortal) - { - continue; - } - world.setBlockToAir(xCoord + xOff*5 + l, yCoord, zCoord + zOff*5 + m); - } - } - } - } - } - - public int getNumberOfGridSpaces() - { - int num = 0; - for(int i=-this.negXRadius; i<=this.posXRadius; i++) - { - for(int j=-this.negZRadius; j<=this.posZRadius; j++) - { - if(!this.getGridSpace(i, j).isEmpty()) - { - num++; - } - } - } - - return num; - } -} diff --git a/src-backup/main/java/WayofTime/alchemicalWizardry/common/demonVillage/TileBlockSet.java b/src-backup/main/java/WayofTime/alchemicalWizardry/common/demonVillage/TileBlockSet.java deleted file mode 100644 index 2209f58c..00000000 --- a/src-backup/main/java/WayofTime/alchemicalWizardry/common/demonVillage/TileBlockSet.java +++ /dev/null @@ -1,8 +0,0 @@ -package WayofTime.alchemicalWizardry.common.demonVillage; - -import net.minecraft.nbt.NBTTagCompound; - -public class TileBlockSet extends BlockSet -{ - public NBTTagCompound tag; -} diff --git a/src-backup/main/java/WayofTime/alchemicalWizardry/common/entity/mob/EntityBileDemon.java b/src-backup/main/java/WayofTime/alchemicalWizardry/common/entity/mob/EntityBileDemon.java deleted file mode 100644 index 884b37f2..00000000 --- a/src-backup/main/java/WayofTime/alchemicalWizardry/common/entity/mob/EntityBileDemon.java +++ /dev/null @@ -1,488 +0,0 @@ -package WayofTime.alchemicalWizardry.common.entity.mob; - -import net.minecraft.entity.Entity; -import net.minecraft.entity.EntityAgeable; -import net.minecraft.entity.EntityLivingBase; -import net.minecraft.entity.SharedMonsterAttributes; -import net.minecraft.entity.ai.EntityAIAttackOnCollide; -import net.minecraft.entity.ai.EntityAIFollowOwner; -import net.minecraft.entity.ai.EntityAIHurtByTarget; -import net.minecraft.entity.ai.EntityAILookIdle; -import net.minecraft.entity.ai.EntityAIOwnerHurtByTarget; -import net.minecraft.entity.ai.EntityAIOwnerHurtTarget; -import net.minecraft.entity.ai.EntityAISwimming; -import net.minecraft.entity.ai.EntityAIWander; -import net.minecraft.entity.ai.EntityAIWatchClosest; -import net.minecraft.entity.monster.EntityCreeper; -import net.minecraft.entity.monster.EntityGhast; -import net.minecraft.entity.passive.EntityAnimal; -import net.minecraft.entity.passive.EntityHorse; -import net.minecraft.entity.passive.EntityWolf; -import net.minecraft.entity.player.EntityPlayer; -import net.minecraft.entity.projectile.EntityArrow; -import net.minecraft.init.Items; -import net.minecraft.item.Item; -import net.minecraft.item.ItemFood; -import net.minecraft.item.ItemStack; -import net.minecraft.nbt.NBTTagCompound; -import net.minecraft.pathfinding.PathEntity; -import net.minecraft.util.DamageSource; -import net.minecraft.world.World; -import WayofTime.alchemicalWizardry.AlchemicalWizardry; -import WayofTime.alchemicalWizardry.ModItems; -import WayofTime.alchemicalWizardry.common.spell.complex.effect.SpellHelper; - -public class EntityBileDemon extends EntityDemon -{ - private EntityAIAttackOnCollide aiAttackOnCollide = new EntityAIAttackOnCollide(this, EntityPlayer.class, 1.2D, false); - - private static float maxTamedHealth = 100.0F; - private static float maxUntamedHealth = 200.0F; - private int attackTimer; - - public EntityBileDemon(World par1World) - { - super(par1World, AlchemicalWizardry.entityBileDemonID); - this.setSize(1.3F, 2.0F); - this.getNavigator().setAvoidsWater(true); - this.tasks.addTask(1, new EntityAISwimming(this)); - //this.tasks.addTask(3, new EntityAILeapAtTarget(this, 0.4F)); - this.tasks.addTask(2, new EntityAIAttackOnCollide(this, 1.0D, true)); - this.tasks.addTask(3, this.aiSit); - this.tasks.addTask(5, new EntityAIFollowOwner(this, 1.0D, 10.0F, 2.0F)); - //this.tasks.addTask(6, new EntityAIMate(this, 1.0D)); - this.tasks.addTask(7, new EntityAIWander(this, 1.0D)); - //this.tasks.addTask(8, new EntityAIBeg(this, 8.0F)); - this.tasks.addTask(9, new EntityAIWatchClosest(this, EntityPlayer.class, 8.0F)); - this.tasks.addTask(9, new EntityAILookIdle(this)); - this.targetTasks.addTask(1, new EntityAIOwnerHurtByTarget(this)); - this.targetTasks.addTask(2, new EntityAIOwnerHurtTarget(this)); - this.targetTasks.addTask(3, new EntityAIHurtByTarget(this, true)); - //this.targetTasks.addTask(4, new EntityAITargetNonTamed(this, EntitySheep.class, 200, false)); - this.setTamed(false); - attackTimer = 0; - //this.isImmuneToFire = true; - } - - @Override - protected void applyEntityAttributes() - { - super.applyEntityAttributes(); - //This line affects the speed of the monster - this.getEntityAttribute(SharedMonsterAttributes.movementSpeed).setBaseValue(0.20000001192092896D); - - //My guess is that this will alter the max health - if (this.isTamed()) - { - this.getEntityAttribute(SharedMonsterAttributes.maxHealth).setBaseValue(this.maxTamedHealth); - } else - { - this.getEntityAttribute(SharedMonsterAttributes.maxHealth).setBaseValue(this.maxUntamedHealth); - } - - //this.func_110148_a(SharedMonsterAttributes.field_111267_a).func_111128_a(10.0D); - } - - /** - * Returns true if the newer Entity AI code should be run - */ - public boolean isAIEnabled() - { - return true; - } - - /** - * Sets the active target the Task system uses for tracking - */ - public void setAttackTarget(EntityLivingBase par1EntityLivingBase) - { - super.setAttackTarget(par1EntityLivingBase); - - if (par1EntityLivingBase == null) - { - this.setAngry(false); - } else if (!this.isTamed()) - { - this.setAngry(true); - } - } - - /** - * main AI tick function, replaces updateEntityActionState - */ - protected void updateAITick() - { - this.dataWatcher.updateObject(18, Float.valueOf(this.getHealth())); - } - - protected void entityInit() - { - super.entityInit(); - this.dataWatcher.addObject(18, new Float(this.getHealth())); - this.dataWatcher.addObject(19, new Byte((byte) 0)); - //this.dataWatcher.addObject(20, new Byte((byte) BlockColored.getBlockFromDye(1))); - } - - /** - * Plays step sound at given x, y, z for the entity - */ - protected void playStepSound(int par1, int par2, int par3, int par4) - { - this.playSound("mob.zombie.step", 0.15F, 1.0F); - } - - /** - * (abstract) Protected helper method to write subclass entity data to NBT. - */ - public void writeEntityToNBT(NBTTagCompound par1NBTTagCompound) - { - super.writeEntityToNBT(par1NBTTagCompound); - par1NBTTagCompound.setBoolean("Angry", this.isAngry()); - par1NBTTagCompound.setByte("attackTimer", (byte) attackTimer); - } - - /** - * (abstract) Protected helper method to read subclass entity data from NBT. - */ - public void readEntityFromNBT(NBTTagCompound par1NBTTagCompound) - { - super.readEntityFromNBT(par1NBTTagCompound); - this.setAngry(par1NBTTagCompound.getBoolean("Angry")); - - attackTimer = par1NBTTagCompound.getByte("attackTimer"); - } - - /** - * Returns the sound this mob makes while it's alive. - */ - protected String getLivingSound() - { - return "none"; - } - - /** - * Returns the sound this mob makes when it is hurt. - */ - protected String getHurtSound() - { - return "mob.irongolem.hit"; - } - - /** - * Returns the sound this mob makes on death. - */ - protected String getDeathSound() - { - return "mob.irongolem.death"; - } - - /** - * Returns the volume for the sounds this mob makes. - */ - protected float getSoundVolume() - { - return 1.0F; - } - - /** - * Returns the item ID for the item the mob drops on death. - */ - protected int getDropItemId() - { - return -1; - } - - /** - * Called frequently so the entity can update its state every tick as required. For example, zombies and skeletons - * use this to react to sunlight and start to burn. - */ - public void onLivingUpdate() - { - super.onLivingUpdate(); - - if (attackTimer > 0) - { - attackTimer--; - } - } - - public int getAttackTimer() - { - return attackTimer; - } - - /** - * Called to update the entity's position/logic. - */ - public void onUpdate() - { - super.onUpdate(); - } - - public float getEyeHeight() - { - return this.height * 0.8F; - } - - /** - * The speed it takes to move the entityliving's rotationPitch through the faceEntity method. This is only currently - * use in wolves. - */ - public int getVerticalFaceSpeed() - { - return this.isSitting() ? 20 : super.getVerticalFaceSpeed(); - } - - /** - * Called when the entity is attacked. - */ - public boolean attackEntityFrom(DamageSource par1DamageSource, float par2) - { - if (this.isEntityInvulnerable()) - { - return false; - } else - { - Entity entity = par1DamageSource.getEntity(); - this.aiSit.setSitting(false); - - if (entity != null && !(entity instanceof EntityPlayer) && !(entity instanceof EntityArrow)) - { - par2 = (par2 + 1.0F) / 2.0F; - } - - return super.attackEntityFrom(par1DamageSource, par2); - } - } - - public boolean attackEntityAsMob(Entity par1Entity) - { - this.attackTimer = 10; - this.worldObj.setEntityState(this, (byte) 4); - boolean flag = par1Entity.attackEntityFrom(DamageSource.causeMobDamage(this), (float) (7 + this.rand.nextInt(15))); - - if (flag) - { - par1Entity.motionY += 0.4000000059604645D; - } - - this.playSound("mob.irongolem.throw", 1.0F, 1.0F); - return flag; - } - - public void setTamed(boolean par1) - { - super.setTamed(par1); - - if (par1) - { - this.getEntityAttribute(SharedMonsterAttributes.maxHealth).setBaseValue(this.maxTamedHealth); - } else - { - this.getEntityAttribute(SharedMonsterAttributes.maxHealth).setBaseValue(this.maxUntamedHealth); - } - } - - /** - * Called when a player interacts with a mob. e.g. gets milk from a cow, gets into the saddle on a pig. - */ - @Override - public boolean interact(EntityPlayer par1EntityPlayer) - { - ItemStack itemstack = par1EntityPlayer.inventory.getCurrentItem(); - - if (this.isTamed()) - { - if (itemstack != null) - { - if (itemstack.getItem() instanceof ItemFood) - { - ItemFood itemfood = (ItemFood) itemstack.getItem(); - - if (itemfood.isWolfsFavoriteMeat() && this.dataWatcher.getWatchableObjectFloat(18) < this.maxTamedHealth) - { - if (!par1EntityPlayer.capabilities.isCreativeMode) - { - --itemstack.stackSize; - } - - this.heal((float) itemfood.func_150905_g(itemstack)); - - if (itemstack.stackSize <= 0) - { - par1EntityPlayer.inventory.setInventorySlotContents(par1EntityPlayer.inventory.currentItem, (ItemStack) null); - } - - return true; - } - } - } - - if (this.getOwner() instanceof EntityPlayer && SpellHelper.getUsername(par1EntityPlayer).equalsIgnoreCase(SpellHelper.getUsername((EntityPlayer)this.getOwner())) && !this.isBreedingItem(itemstack)) - { - if (!this.worldObj.isRemote) - { - this.aiSit.setSitting(!this.isSitting()); - this.isJumping = false; - this.setPathToEntity((PathEntity) null); - this.setTarget((Entity) null); - this.setAttackTarget((EntityLivingBase) null); - } - - this.sendSittingMessageToPlayer(par1EntityPlayer, !this.isSitting()); - } - } else if (itemstack != null && itemstack.getItem().equals(ModItems.weakBloodOrb) && !this.isAngry()) - { - if (!par1EntityPlayer.capabilities.isCreativeMode) - { - --itemstack.stackSize; - } - - if (itemstack.stackSize <= 0) - { - par1EntityPlayer.inventory.setInventorySlotContents(par1EntityPlayer.inventory.currentItem, (ItemStack) null); - } - - if (!this.worldObj.isRemote) - { - if (this.rand.nextInt(1) == 0) - { - this.setTamed(true); - this.setPathToEntity((PathEntity) null); - this.setAttackTarget((EntityLivingBase) null); - this.aiSit.setSitting(true); - this.setHealth(this.maxTamedHealth); - this.func_152115_b(par1EntityPlayer.getUniqueID().toString()); - this.playTameEffect(true); - this.worldObj.setEntityState(this, (byte) 7); - } else - { - this.playTameEffect(false); - this.worldObj.setEntityState(this, (byte) 6); - } - } - - return true; - } - - return super.interact(par1EntityPlayer); - } - - /** - * Checks if the parameter is an item which this animal can be fed to breed it (wheat, carrots or seeds depending on - * the animal type) - */ - public boolean isBreedingItem(ItemStack par1ItemStack) - { - return false; - //return par1ItemStack == null ? false : (!(Item.itemsList[par1ItemStack.itemID] instanceof ItemFood) ? false : ((ItemFood)Item.itemsList[par1ItemStack.itemID]).isWolfsFavoriteMeat()); - } - - /** - * Determines whether this wolf is angry or not. - */ - public boolean isAngry() - { - return (this.dataWatcher.getWatchableObjectByte(16) & 2) != 0; - } - - /** - * Sets whether this wolf is angry or not. - */ - public void setAngry(boolean par1) - { - byte b0 = this.dataWatcher.getWatchableObjectByte(16); - - if (par1) - { - this.dataWatcher.updateObject(16, Byte.valueOf((byte) (b0 | 2))); - } else - { - this.dataWatcher.updateObject(16, Byte.valueOf((byte) (b0 & -3))); - } - } - - /** - * Return this wolf's collar color. - */ - public int getCollarColor() - { - return this.dataWatcher.getWatchableObjectByte(20) & 15; - } - - /** - * Set this wolf's collar color. - */ - public void setCollarColor(int par1) - { - this.dataWatcher.updateObject(20, Byte.valueOf((byte) (par1 & 15))); - } - - /** - * This function is used when two same-species animals in 'love mode' breed to generate the new baby animal. - */ - public EntityWolf spawnBabyAnimal(EntityAgeable par1EntityAgeable) - { - return null; - } - - public void func_70918_i(boolean par1) - { - if (par1) - { - this.dataWatcher.updateObject(19, Byte.valueOf((byte) 1)); - } else - { - this.dataWatcher.updateObject(19, Byte.valueOf((byte) 0)); - } - } - - /** - * Returns true if the mob is currently able to mate with the specified mob. - */ - public boolean canMateWith(EntityAnimal par1EntityAnimal) - { - return false; - } - - public boolean func_70922_bv() - { - return this.dataWatcher.getWatchableObjectByte(19) == 1; - } - - /** - * Determines if an entity can be despawned, used on idle far away entities - */ - protected boolean canDespawn() - { - //return !this.isTamed() && this.ticksExisted > 2400; - return false; - } - - @Override - public boolean func_142018_a(EntityLivingBase par1EntityLivingBase, EntityLivingBase par2EntityLivingBase) - { - if (!(par1EntityLivingBase instanceof EntityCreeper) && !(par1EntityLivingBase instanceof EntityGhast)) - { - if (par1EntityLivingBase instanceof EntityBileDemon) - { - EntityBileDemon entitywolf = (EntityBileDemon) par1EntityLivingBase; - - if (entitywolf.isTamed() && entitywolf.getOwner() == par2EntityLivingBase) - { - return false; - } - } - - return par1EntityLivingBase instanceof EntityPlayer && par2EntityLivingBase instanceof EntityPlayer && !((EntityPlayer) par2EntityLivingBase).canAttackPlayer((EntityPlayer) par1EntityLivingBase) ? false : !(par1EntityLivingBase instanceof EntityHorse) || !((EntityHorse) par1EntityLivingBase).isTame(); - } else - { - return false; - } - } - - public EntityAgeable createChild(EntityAgeable par1EntityAgeable) - { - return this.spawnBabyAnimal(par1EntityAgeable); - } -} \ No newline at end of file diff --git a/src-backup/main/java/WayofTime/alchemicalWizardry/common/entity/mob/EntityBoulderFist.java b/src-backup/main/java/WayofTime/alchemicalWizardry/common/entity/mob/EntityBoulderFist.java deleted file mode 100644 index fa4106de..00000000 --- a/src-backup/main/java/WayofTime/alchemicalWizardry/common/entity/mob/EntityBoulderFist.java +++ /dev/null @@ -1,494 +0,0 @@ -package WayofTime.alchemicalWizardry.common.entity.mob; - -import WayofTime.alchemicalWizardry.AlchemicalWizardry; -import WayofTime.alchemicalWizardry.ModItems; -import WayofTime.alchemicalWizardry.common.EntityAITargetAggro; -import WayofTime.alchemicalWizardry.common.entity.projectile.HolyProjectile; -import WayofTime.alchemicalWizardry.common.spell.complex.effect.SpellHelper; -import net.minecraft.block.BlockColored; -import net.minecraft.entity.Entity; -import net.minecraft.entity.EntityAgeable; -import net.minecraft.entity.EntityLivingBase; -import net.minecraft.entity.SharedMonsterAttributes; -import net.minecraft.entity.ai.*; -import net.minecraft.entity.monster.EntityCreeper; -import net.minecraft.entity.monster.EntityGhast; -import net.minecraft.entity.passive.EntityAnimal; -import net.minecraft.entity.passive.EntityHorse; -import net.minecraft.entity.passive.EntityWolf; -import net.minecraft.entity.player.EntityPlayer; -import net.minecraft.entity.projectile.EntityArrow; -import net.minecraft.item.Item; -import net.minecraft.item.ItemFood; -import net.minecraft.item.ItemStack; -import net.minecraft.nbt.NBTTagCompound; -import net.minecraft.pathfinding.PathEntity; -import net.minecraft.util.DamageSource; -import net.minecraft.world.World; - -public class EntityBoulderFist extends EntityDemon -{ - //private EntityAIArrowAttack aiArrowAttack = new EntityAIArrowAttack(this, 1.0D, 40, 40, 15.0F); - private EntityAIAttackOnCollide aiAttackOnCollide = new EntityAIAttackOnCollide(this, EntityPlayer.class, 1.2D, false); - - private static float maxTamedHealth = 60.0F; - private static float maxUntamedHealth = 50.0F; - - public EntityBoulderFist(World par1World) - { - super(par1World, AlchemicalWizardry.entityBoulderFistID); - this.setSize(0.8F, 1.2F); - this.getNavigator().setAvoidsWater(true); - this.tasks.addTask(1, new EntityAISwimming(this)); - this.tasks.addTask(2, this.aiSit); - this.tasks.addTask(3, new EntityAILeapAtTarget(this, 0.4F)); - this.tasks.addTask(4, new EntityAIAttackOnCollide(this, 1.0D, true)); - this.tasks.addTask(5, new EntityAIFollowOwner(this, 1.0D, 10.0F, 2.0F)); - //this.tasks.addTask(6, new EntityAIMate(this, 1.0D)); - this.tasks.addTask(7, new EntityAIWander(this, 1.0D)); - //this.tasks.addTask(8, new EntityAIBeg(this, 8.0F)); - this.tasks.addTask(9, new EntityAIWatchClosest(this, EntityPlayer.class, 8.0F)); - this.tasks.addTask(9, new EntityAILookIdle(this)); - this.targetTasks.addTask(1, new EntityAIOwnerHurtByTarget(this)); - this.targetTasks.addTask(2, new EntityAIOwnerHurtTarget(this)); - this.targetTasks.addTask(3, new EntityAIHurtByTarget(this, true)); - this.targetTasks.addTask(4, new EntityAITargetAggro(this, EntityPlayer.class, 0, false)); - this.setAggro(false); - //this.targetTasks.addTask(4, new EntityAITargetNonTamed(this, EntitySheep.class, 200, false)); - this.setTamed(false); - - if (par1World != null && !par1World.isRemote) - { - this.setCombatTask(); - } - - //this.isImmuneToFire = true; - } - - @Override - protected void applyEntityAttributes() - { - super.applyEntityAttributes(); - //This line affects the speed of the monster - this.getEntityAttribute(SharedMonsterAttributes.movementSpeed).setBaseValue(0.30000001192092896D); - - //My guess is that this will alter the max health - if (this.isTamed()) - { - this.getEntityAttribute(SharedMonsterAttributes.maxHealth).setBaseValue(this.maxTamedHealth); - } else - { - this.getEntityAttribute(SharedMonsterAttributes.maxHealth).setBaseValue(this.maxUntamedHealth); - } - - //this.func_110148_a(SharedMonsterAttributes.field_111267_a).func_111128_a(10.0D); - } - - /** - * Returns true if the newer Entity AI code should be run - */ - public boolean isAIEnabled() - { - return true; - } - - /** - * Sets the active target the Task system uses for tracking - */ - public void setAttackTarget(EntityLivingBase par1EntityLivingBase) - { - super.setAttackTarget(par1EntityLivingBase); - - if (par1EntityLivingBase == null) - { - this.setAngry(false); - } else if (!this.isTamed()) - { - this.setAngry(true); - } - } - - /** - * main AI tick function, replaces updateEntityActionState - */ - protected void updateAITick() - { - this.dataWatcher.updateObject(18, Float.valueOf(this.getHealth())); - } - - protected void entityInit() - { - super.entityInit(); - this.dataWatcher.addObject(18, new Float(this.getHealth())); - this.dataWatcher.addObject(19, new Byte((byte) 0)); - //this.dataWatcher.addObject(20, new Byte((byte) BlockColored.getBlockFromDye(1))); - } - - /** - * Plays step sound at given x, y, z for the entity - */ - protected void playStepSound(int par1, int par2, int par3, int par4) - { - this.playSound("mob.zombie.step", 0.15F, 1.0F); - } - - /** - * (abstract) Protected helper method to write subclass entity data to NBT. - */ - public void writeEntityToNBT(NBTTagCompound par1NBTTagCompound) - { - super.writeEntityToNBT(par1NBTTagCompound); - par1NBTTagCompound.setByte("CollarColor", (byte) this.getCollarColor()); - } - - /** - * (abstract) Protected helper method to read subclass entity data from NBT. - */ - public void readEntityFromNBT(NBTTagCompound par1NBTTagCompound) - { - super.readEntityFromNBT(par1NBTTagCompound); - this.setAngry(par1NBTTagCompound.getBoolean("Angry")); - - this.setCombatTask(); - } - - /** - * Returns the sound this mob makes while it's alive. - */ - protected String getLivingSound() - { - //TODO change sounds - return this.isAngry() ? "mob.wolf.growl" : (this.rand.nextInt(3) == 0 ? (this.isTamed() && this.dataWatcher.getWatchableObjectFloat(18) < 10.0F ? "mob.wolf.whine" : "mob.wolf.panting") : "mob.wolf.bark"); - } - - /** - * Returns the sound this mob makes when it is hurt. - */ - protected String getHurtSound() - { - return "mob.wolf.hurt"; - } - - /** - * Returns the sound this mob makes on death. - */ - protected String getDeathSound() - { - return "mob.wolf.death"; - } - - /** - * Returns the volume for the sounds this mob makes. - */ - protected float getSoundVolume() - { - return 0.4F; - } - - /** - * Returns the item ID for the item the mob drops on death. - */ - protected int getDropItemId() - { - return -1; - } - - /** - * Called frequently so the entity can update its state every tick as required. For example, zombies and skeletons - * use this to react to sunlight and start to burn. - */ - public void onLivingUpdate() - { - super.onLivingUpdate(); - } - - /** - * Called to update the entity's position/logic. - */ - public void onUpdate() - { - super.onUpdate(); - } - - public float getEyeHeight() - { - return this.height * 0.8F; - } - - /** - * The speed it takes to move the entityliving's rotationPitch through the faceEntity method. This is only currently - * use in wolves. - */ - public int getVerticalFaceSpeed() - { - return this.isSitting() ? 20 : super.getVerticalFaceSpeed(); - } - - /** - * Called when the entity is attacked. - */ - public boolean attackEntityFrom(DamageSource par1DamageSource, float par2) - { - if (this.isEntityInvulnerable()) - { - return false; - } else - { - Entity entity = par1DamageSource.getEntity(); - this.aiSit.setSitting(false); - - if (entity != null && !(entity instanceof EntityPlayer) && !(entity instanceof EntityArrow)) - { - par2 = (par2 + 1.0F) / 2.0F; - } - - return super.attackEntityFrom(par1DamageSource, par2); - } - } - - public boolean attackEntityAsMob(Entity par1Entity) - { - int i = this.isTamed() ? 6 : 7; - return par1Entity.attackEntityFrom(DamageSource.causeMobDamage(this), (float) i); - } - - public void setTamed(boolean par1) - { - super.setTamed(par1); - - if (par1) - { - this.getEntityAttribute(SharedMonsterAttributes.maxHealth).setBaseValue(this.maxTamedHealth); - } else - { - this.getEntityAttribute(SharedMonsterAttributes.maxHealth).setBaseValue(this.maxUntamedHealth); - } - } - - /** - * Called when a player interacts with a mob. e.g. gets milk from a cow, gets into the saddle on a pig. - */ - @Override - public boolean interact(EntityPlayer par1EntityPlayer) - { - ItemStack itemstack = par1EntityPlayer.inventory.getCurrentItem(); - - if (this.isTamed()) - { - if (itemstack != null) - { - if (itemstack.getItem() instanceof ItemFood) - { - ItemFood itemfood = (ItemFood) itemstack.getItem(); - - if (itemfood.isWolfsFavoriteMeat() && this.dataWatcher.getWatchableObjectFloat(18) < this.maxTamedHealth) - { - if (!par1EntityPlayer.capabilities.isCreativeMode) - { - --itemstack.stackSize; - } - - this.heal((float) itemfood.func_150905_g(itemstack)); - - if (itemstack.stackSize <= 0) - { - par1EntityPlayer.inventory.setInventorySlotContents(par1EntityPlayer.inventory.currentItem, (ItemStack) null); - } - - return true; - } - } - } - - if (this.getOwner() instanceof EntityPlayer && SpellHelper.getUsername(par1EntityPlayer).equalsIgnoreCase(SpellHelper.getUsername((EntityPlayer)this.getOwner())) && !this.isBreedingItem(itemstack)) - { - if (!this.worldObj.isRemote) - { - this.aiSit.setSitting(!this.isSitting()); - this.isJumping = false; - this.setPathToEntity((PathEntity) null); - this.setTarget((Entity) null); - this.setAttackTarget((EntityLivingBase) null); - } - - this.sendSittingMessageToPlayer(par1EntityPlayer, !this.isSitting()); - } - } else if (itemstack != null && itemstack.getItem().equals(ModItems.weakBloodOrb) && !this.isAngry()) - { - if (!par1EntityPlayer.capabilities.isCreativeMode) - { - --itemstack.stackSize; - } - - if (itemstack.stackSize <= 0) - { - par1EntityPlayer.inventory.setInventorySlotContents(par1EntityPlayer.inventory.currentItem, (ItemStack) null); - } - - if (!this.worldObj.isRemote) - { - if (this.rand.nextInt(1) == 0) - { - this.setTamed(true); - this.setPathToEntity((PathEntity) null); - this.setAttackTarget((EntityLivingBase) null); - this.aiSit.setSitting(true); - this.setHealth(this.maxTamedHealth); - this.func_152115_b(par1EntityPlayer.getUniqueID().toString()); - this.playTameEffect(true); - this.worldObj.setEntityState(this, (byte) 7); - } else - { - this.playTameEffect(false); - this.worldObj.setEntityState(this, (byte) 6); - } - } - - return true; - } - - return super.interact(par1EntityPlayer); - } - - - /** - * Checks if the parameter is an item which this animal can be fed to breed it (wheat, carrots or seeds depending on - * the animal type) - */ - public boolean isBreedingItem(ItemStack par1ItemStack) - { - return false; - //return par1ItemStack == null ? false : (!(Item.itemsList[par1ItemStack.itemID] instanceof ItemFood) ? false : ((ItemFood)Item.itemsList[par1ItemStack.itemID]).isWolfsFavoriteMeat()); - } - - /** - * Determines whether this wolf is angry or not. - */ - public boolean isAngry() - { - return (this.dataWatcher.getWatchableObjectByte(16) & 2) != 0; - } - - /** - * Sets whether this wolf is angry or not. - */ - public void setAngry(boolean par1) - { - byte b0 = this.dataWatcher.getWatchableObjectByte(16); - - if (par1) - { - this.dataWatcher.updateObject(16, Byte.valueOf((byte) (b0 | 2))); - } else - { - this.dataWatcher.updateObject(16, Byte.valueOf((byte) (b0 & -3))); - } - } - - /** - * Return this wolf's collar color. - */ - public int getCollarColor() - { - return this.dataWatcher.getWatchableObjectByte(20) & 15; - } - - /** - * Set this wolf's collar color. - */ - public void setCollarColor(int par1) - { - this.dataWatcher.updateObject(20, Byte.valueOf((byte) (par1 & 15))); - } - - /** - * This function is used when two same-species animals in 'love mode' breed to generate the new baby animal. - */ - public EntityWolf spawnBabyAnimal(EntityAgeable par1EntityAgeable) - { - return null; - } - - public void func_70918_i(boolean par1) - { - if (par1) - { - this.dataWatcher.updateObject(19, Byte.valueOf((byte) 1)); - } else - { - this.dataWatcher.updateObject(19, Byte.valueOf((byte) 0)); - } - } - - /** - * Returns true if the mob is currently able to mate with the specified mob. - */ - public boolean canMateWith(EntityAnimal par1EntityAnimal) - { - return false; - } - - public boolean func_70922_bv() - { - return this.dataWatcher.getWatchableObjectByte(19) == 1; - } - - /** - * Determines if an entity can be despawned, used on idle far away entities - */ - protected boolean canDespawn() - { - //return !this.isTamed() && this.ticksExisted > 2400; - return false; - } - - @Override - public boolean func_142018_a(EntityLivingBase par1EntityLivingBase, EntityLivingBase par2EntityLivingBase) - { - if (!(par1EntityLivingBase instanceof EntityCreeper) && !(par1EntityLivingBase instanceof EntityGhast)) - { - if (par1EntityLivingBase instanceof EntityBoulderFist) - { - EntityBoulderFist entitywolf = (EntityBoulderFist) par1EntityLivingBase; - - if (entitywolf.isTamed() && entitywolf.getOwner() == par2EntityLivingBase) - { - return false; - } - } - - return par1EntityLivingBase instanceof EntityPlayer && par2EntityLivingBase instanceof EntityPlayer && !((EntityPlayer) par2EntityLivingBase).canAttackPlayer((EntityPlayer) par1EntityLivingBase) ? false : !(par1EntityLivingBase instanceof EntityHorse) || !((EntityHorse) par1EntityLivingBase).isTame(); - } else - { - return false; - } - } - - public EntityAgeable createChild(EntityAgeable par1EntityAgeable) - { - return this.spawnBabyAnimal(par1EntityAgeable); - } - - /** - * Attack the specified entity using a ranged attack. - */ - public void attackEntityWithRangedAttack(EntityLivingBase par1EntityLivingBase, float par2) - { - double xCoord; - double yCoord; - double zCoord; - HolyProjectile hol = new HolyProjectile(worldObj, this, par1EntityLivingBase, 1.8f, 0f, 5, 600); - this.worldObj.spawnEntityInWorld(hol); - } - - /** - * sets this entity's combat AI. - */ - public void setCombatTask() - { - this.tasks.removeTask(this.aiAttackOnCollide); - //this.tasks.removeTask(this.aiArrowAttack); - ItemStack itemstack = this.getHeldItem(); - this.tasks.addTask(4, this.aiAttackOnCollide); - } -} \ No newline at end of file diff --git a/src-backup/main/java/WayofTime/alchemicalWizardry/common/entity/mob/EntityDemon.java b/src-backup/main/java/WayofTime/alchemicalWizardry/common/entity/mob/EntityDemon.java deleted file mode 100644 index fd56ebce..00000000 --- a/src-backup/main/java/WayofTime/alchemicalWizardry/common/entity/mob/EntityDemon.java +++ /dev/null @@ -1,99 +0,0 @@ -package WayofTime.alchemicalWizardry.common.entity.mob; - -import net.minecraft.entity.EntityAgeable; -import net.minecraft.entity.passive.EntityTameable; -import net.minecraft.entity.player.EntityPlayer; -import net.minecraft.item.ItemStack; -import net.minecraft.util.ChatComponentText; -import net.minecraft.world.World; -import WayofTime.alchemicalWizardry.ModItems; -import WayofTime.alchemicalWizardry.common.IDemon; -import WayofTime.alchemicalWizardry.common.items.DemonPlacer; -import WayofTime.alchemicalWizardry.common.spell.complex.effect.SpellHelper; - -public class EntityDemon extends EntityTameable implements IDemon -{ - private boolean isAggro; - private int demonID; - - public EntityDemon(World par1World, int demonID) - { - super(par1World); - this.demonID = demonID; - } - - @Override - public void setSummonedConditions() - { - this.setAggro(true); - } - - @Override - public boolean isAggro() - { - return this.isAggro; - } - - @Override - public void setAggro(boolean aggro) - { - this.isAggro = aggro; - } - - @Override - public EntityAgeable createChild(EntityAgeable entityageable) - { - // TODO Auto-generated method stub - return null; - } - - protected void dropFewItems(boolean par1, int par2) - { - ItemStack drop = new ItemStack(ModItems.demonPlacer, 1, this.getDemonID()); - - if((this.getOwner() instanceof EntityPlayer)) - { - DemonPlacer.setOwnerName(drop, SpellHelper.getUsername((EntityPlayer)this.getOwner())); - } - - if (this.hasCustomNameTag()) - { - drop.setStackDisplayName(this.getCustomNameTag()); - } - - this.entityDropItem(drop, 0.0f); - } - - public void onLivingUpdate() - { - super.onLivingUpdate(); - - if (!this.isAggro() && worldObj.getWorldTime() % 100 == 0) - { - this.heal(1); - } - } - - public void sendSittingMessageToPlayer(EntityPlayer owner, boolean isSitting) - { - if (owner != null && owner.worldObj.isRemote) - { - ChatComponentText chatmessagecomponent; - - if (isSitting) - { - chatmessagecomponent = new ChatComponentText("I will stay here for now, Master."); - } else - { - chatmessagecomponent = new ChatComponentText("I shall follow and protect you!"); - } - - owner.addChatComponentMessage(chatmessagecomponent); - } - } - - public int getDemonID() - { - return this.demonID; - } -} diff --git a/src-backup/main/java/WayofTime/alchemicalWizardry/common/entity/mob/EntityEarthElemental.java b/src-backup/main/java/WayofTime/alchemicalWizardry/common/entity/mob/EntityEarthElemental.java deleted file mode 100644 index 5d7b5045..00000000 --- a/src-backup/main/java/WayofTime/alchemicalWizardry/common/entity/mob/EntityEarthElemental.java +++ /dev/null @@ -1,28 +0,0 @@ -package WayofTime.alchemicalWizardry.common.entity.mob; - -import WayofTime.alchemicalWizardry.AlchemicalWizardry; -import net.minecraft.entity.Entity; -import net.minecraft.entity.EntityLivingBase; -import net.minecraft.entity.monster.IMob; -import net.minecraft.potion.Potion; -import net.minecraft.potion.PotionEffect; -import net.minecraft.util.DamageSource; -import net.minecraft.world.World; - -public class EntityEarthElemental extends EntityElemental implements IMob -{ - public EntityEarthElemental(World world) - { - super(world, AlchemicalWizardry.entityEarthElementalID); - } - - public void inflictEffectOnEntity(Entity target) - { - if (target instanceof EntityLivingBase) - { - ((EntityLivingBase) target).attackEntityFrom(DamageSource.causeMobDamage(this), 10); - ((EntityLivingBase) target).addPotionEffect(new PotionEffect(Potion.moveSlowdown.id, 100, 4)); - ((EntityLivingBase) target).addPotionEffect(new PotionEffect(AlchemicalWizardry.customPotionInhibit.id, 150, 0)); - } - } -} \ No newline at end of file diff --git a/src-backup/main/java/WayofTime/alchemicalWizardry/common/entity/mob/EntityElemental.java b/src-backup/main/java/WayofTime/alchemicalWizardry/common/entity/mob/EntityElemental.java deleted file mode 100644 index f9492ece..00000000 --- a/src-backup/main/java/WayofTime/alchemicalWizardry/common/entity/mob/EntityElemental.java +++ /dev/null @@ -1,715 +0,0 @@ -package WayofTime.alchemicalWizardry.common.entity.mob; - -import WayofTime.alchemicalWizardry.AlchemicalWizardry; -import WayofTime.alchemicalWizardry.ModItems; -import cpw.mods.fml.relauncher.Side; -import cpw.mods.fml.relauncher.SideOnly; -import net.minecraft.block.Block; -import net.minecraft.block.BlockColored; -import net.minecraft.entity.Entity; -import net.minecraft.entity.EntityAgeable; -import net.minecraft.entity.EntityLivingBase; -import net.minecraft.entity.SharedMonsterAttributes; -import net.minecraft.entity.ai.EntityAIAttackOnCollide; -import net.minecraft.entity.monster.EntityCreeper; -import net.minecraft.entity.monster.EntityGhast; -import net.minecraft.entity.passive.EntityAnimal; -import net.minecraft.entity.passive.EntityHorse; -import net.minecraft.entity.passive.EntityWolf; -import net.minecraft.entity.player.EntityPlayer; -import net.minecraft.entity.projectile.EntityArrow; -import net.minecraft.item.ItemStack; -import net.minecraft.nbt.NBTTagCompound; -import net.minecraft.potion.PotionEffect; -import net.minecraft.util.AxisAlignedBB; -import net.minecraft.util.DamageSource; -import net.minecraft.util.MathHelper; -import net.minecraft.world.World; - -import java.util.List; - -public class EntityElemental extends EntityDemon -{ - //private EntityAIArrowAttack aiArrowAttack = new EntityAIArrowAttack(this, 1.0D, 40, 40, 15.0F); - private EntityAIAttackOnCollide aiAttackOnCollide = new EntityAIAttackOnCollide(this, EntityPlayer.class, 1.2D, false); - - private static float maxTamedHealth = 100.0F; - private static float maxUntamedHealth = 100.0F; - - public EntityElemental(World par1World, int demonID) - { - super(par1World, demonID); - this.setSize(0.5F, 1.0F); - this.setAggro(false); - //this.targetTasks.addTask(4, new EntityAITargetNonTamed(this, EntitySheep.class, 200, false)); - this.setTamed(false); - - if (par1World != null && !par1World.isRemote) - { - this.setCombatTask(); - } - - //this.isImmuneToFire = true; - } - - public int courseChangeCooldown; - public double waypointX; - public double waypointY; - public double waypointZ; - private Entity targetedEntity; - - /** - * Cooldown time between target loss and new target aquirement. - */ - private int aggroCooldown; - public int prevAttackCounter; - public int attackCounter; - - /** - * The explosion radius of spawned fireballs. - */ - //private int explosionStrength = 1; -// -// private int heightOffsetUpdateTime; -// private float heightOffset = 0.5F; -// private int field_70846_g; - protected void dropFewItems(boolean par1, int par2) - { - if (worldObj.rand.nextFloat() < (1 - Math.pow(0.6f, par2 + 1))) - { - this.entityDropItem(new ItemStack(ModItems.demonBloodShard, 1, 0), 0.0f); - } - } - - protected void fall(float par1) - { - } - - /** - * Takes in the distance the entity has fallen this tick and whether its on the ground to update the fall distance - * and deal fall damage if landing on the ground. Args: distanceFallenThisTick, onGround - */ - protected void updateFallState(double par1, boolean par3) - { - } - - /** - * Moves the entity based on the specified heading. Args: strafe, forward - */ - public void moveEntityWithHeading(float par1, float par2) - { - if (this.isInWater()) - { - this.moveFlying(par1, par2, 0.02F); - this.moveEntity(this.motionX, this.motionY, this.motionZ); - this.motionX *= 0.800000011920929D; - this.motionY *= 0.800000011920929D; - this.motionZ *= 0.800000011920929D; - } else if (this.handleLavaMovement()) - { - this.moveFlying(par1, par2, 0.02F); - this.moveEntity(this.motionX, this.motionY, this.motionZ); - this.motionX *= 0.5D; - this.motionY *= 0.5D; - this.motionZ *= 0.5D; - } else - { - float f2 = 0.91F; - - if (this.onGround) - { - f2 = 0.54600006F; - Block i = this.worldObj.getBlock(MathHelper.floor_double(this.posX), MathHelper.floor_double(this.boundingBox.minY) - 1, MathHelper.floor_double(this.posZ)); - - if (i != null) - { - f2 = i.slipperiness * 0.91F; - } - } - - float f3 = 0.16277136F / (f2 * f2 * f2); - this.moveFlying(par1, par2, this.onGround ? 0.1F * f3 : 0.02F); - f2 = 0.91F; - - if (this.onGround) - { - f2 = 0.54600006F; - Block j = this.worldObj.getBlock(MathHelper.floor_double(this.posX), MathHelper.floor_double(this.boundingBox.minY) - 1, MathHelper.floor_double(this.posZ)); - - if (j != null) - { - f2 = j.slipperiness * 0.91F; - } - } - - this.moveEntity(this.motionX, this.motionY, this.motionZ); - this.motionX *= (double) f2; - this.motionY *= (double) f2; - this.motionZ *= (double) f2; - } - - double d0 = this.posX - this.prevPosX; - double d1 = this.posZ - this.prevPosZ; - float f4 = MathHelper.sqrt_double(d0 * d0 + d1 * d1) * 4.0F; - - if (f4 > 1.0F) - { - f4 = 1.0F; - } - } - - /** - * returns true if this entity is by a ladder, false otherwise - */ - public boolean isOnLadder() - { - return false; - } - - @SideOnly(Side.CLIENT) - public boolean func_110182_bF() - { - return this.dataWatcher.getWatchableObjectByte(25) != 0; - } - - protected void updateEntityActionState() - { -// if (!this.worldObj.isRemote && this.worldObj.difficultySetting == 0) -// { -// this.setDead(); -// } - - //this.despawnEntity(); - if (this.getHealth() <= this.getMaxHealth() / 2.0f && worldObj.rand.nextInt(200) == 0) - { - this.addPotionEffect(new PotionEffect(AlchemicalWizardry.customPotionReciprocation.id, 100, 1)); - } - - this.prevAttackCounter = this.attackCounter; - double d0 = this.waypointX - this.posX; - double d1 = this.waypointY - this.posY; - double d2 = this.waypointZ - this.posZ; - double d3 = d0 * d0 + d1 * d1 + d2 * d2; - - if (d3 < 1.0D || d3 > 3600.0D) - { - this.waypointX = this.posX + (double) ((this.rand.nextFloat() * 2.0F - 1.0F) * 16.0F); - this.waypointY = this.posY + (double) ((this.rand.nextFloat() * 2.0F - 1.0F) * 16.0F); - this.waypointZ = this.posZ + (double) ((this.rand.nextFloat() * 2.0F - 1.0F) * 16.0F); - } - - if (this.courseChangeCooldown-- <= 0) - { - this.courseChangeCooldown += this.rand.nextInt(5) + 2; - d3 = (double) MathHelper.sqrt_double(d3); - - if (this.isCourseTraversable(this.waypointX, this.waypointY, this.waypointZ, d3)) - { - this.motionX += d0 / d3 * 0.1D; - this.motionY += d1 / d3 * 0.1D; - this.motionZ += d2 / d3 * 0.1D; - } else - { - this.waypointX = this.posX + (double) ((this.rand.nextFloat() * 2.0F - 1.0F) * 16.0F); - this.waypointY = this.posY + (double) ((this.rand.nextFloat() * 2.0F - 1.0F) * 16.0F); - this.waypointZ = this.posZ + (double) ((this.rand.nextFloat() * 2.0F - 1.0F) * 16.0F); - } - } - - if (this.targetedEntity != null && this.targetedEntity.isDead) - { - this.targetedEntity = null; - } - - if (this.targetedEntity == null || this.aggroCooldown-- <= 0) - { - this.targetedEntity = getClosestVulnerableMonsterToEntity(this, 100.0D); - - if (this.targetedEntity != null) - { - this.aggroCooldown = 20; - } - } - - double d4 = 64.0D; - - if (this.targetedEntity != null && this.targetedEntity.getDistanceSqToEntity(this) < d4 * d4) - { - double d5 = this.targetedEntity.posX - this.posX; - double d6 = this.targetedEntity.boundingBox.minY + (double) (this.targetedEntity.height / 2.0F) - (this.posY + (double) (this.height / 2.0F)); - double d7 = this.targetedEntity.posZ - this.posZ; - this.renderYawOffset = this.rotationYaw = -((float) Math.atan2(d5, d7)) * 180.0F / (float) Math.PI; - - if (this.courseChangeCooldown <= 0) - { - if (isCourseTraversable(this.targetedEntity.posX, this.targetedEntity.posY, this.targetedEntity.posZ, Math.sqrt(d5 * d5 + d6 * d6 + d7 * d7))) - { - this.waypointX = this.targetedEntity.posX; - this.waypointY = this.targetedEntity.posY; - this.waypointZ = this.targetedEntity.posZ; - this.motionX += d5 / d3 * 0.1D; - this.motionY += d6 / d3 * 0.1D; - this.motionZ += d7 / d3 * 0.1D; - } else - { - this.waypointX = this.posX + (double) ((this.rand.nextFloat() * 2.0F - 1.0F) * 16.0F); - this.waypointY = this.posY + (double) ((this.rand.nextFloat() * 2.0F - 1.0F) * 16.0F); - this.waypointZ = this.posZ + (double) ((this.rand.nextFloat() * 2.0F - 1.0F) * 16.0F); - this.motionX += d5 / d3 * 0.1D; - this.motionY += d6 / d3 * 0.1D; - this.motionZ += d7 / d3 * 0.1D; - } - } - - if (this.canEntityBeSeen(this.targetedEntity)) - { - if (Math.sqrt(d5 * d5 + d6 * d6 + d7 * d7) < 4) - { -// if (this.attackCounter == 10) -// { -// this.worldObj.playAuxSFXAtEntity((EntityPlayer)null, 1007, (int)this.posX, (int)this.posY, (int)this.posZ, 0); -// } - ++this.attackCounter; - - if (this.attackCounter >= 10) - { - this.worldObj.playAuxSFXAtEntity((EntityPlayer) null, 1008, (int) this.posX, (int) this.posY, (int) this.posZ, 0); - this.inflictEffectOnEntity(this.targetedEntity); - this.attackCounter = -40; - } - } - } else if (this.attackCounter > 0) - { - --this.attackCounter; - } - } else - { - this.renderYawOffset = this.rotationYaw = -((float) Math.atan2(this.motionX, this.motionZ)) * 180.0F / (float) Math.PI; - - if (this.attackCounter > 0) - { - --this.attackCounter; - } - } - - if (!this.worldObj.isRemote) - { - byte b0 = this.dataWatcher.getWatchableObjectByte(25); - byte b1 = (byte) (this.attackCounter > 10 ? 1 : 0); - - if (b0 != b1) - { - this.dataWatcher.updateObject(25, Byte.valueOf(b1)); - } - } - } - - /** - * True if the ghast has an unobstructed line of travel to the waypoint. - */ - private boolean isCourseTraversable(double par1, double par3, double par5, double par7) - { - double d4 = (this.waypointX - this.posX) / par7; - double d5 = (this.waypointY - this.posY) / par7; - double d6 = (this.waypointZ - this.posZ) / par7; - AxisAlignedBB axisalignedbb = this.boundingBox.copy(); - - for (int i = 1; (double) i < par7; ++i) - { - axisalignedbb.offset(d4, d5, d6); - - if (!this.worldObj.getCollidingBoundingBoxes(this, axisalignedbb).isEmpty()) - { - return false; - } - } - - return true; - } - - /** - * Will return how many at most can spawn in a chunk at once. - */ - public int getMaxSpawnedInChunk() - { - return 1; - } - - /** - * (abstract) Protected helper method to write subclass entity data to NBT. - */ - public void writeEntityToNBT(NBTTagCompound par1NBTTagCompound) - { - super.writeEntityToNBT(par1NBTTagCompound); - } - - /** - * (abstract) Protected helper method to read subclass entity data from NBT. - */ - public void readEntityFromNBT(NBTTagCompound par1NBTTagCompound) - { - super.readEntityFromNBT(par1NBTTagCompound); - this.setAngry(par1NBTTagCompound.getBoolean("Angry")); - - this.setCombatTask(); - } - - @Override - protected void applyEntityAttributes() - { - super.applyEntityAttributes(); - //This line affects the speed of the monster - this.getEntityAttribute(SharedMonsterAttributes.movementSpeed).setBaseValue(0.30000001192092896D); - - //My guess is that this will alter the max health - if (this.isTamed()) - { - this.getEntityAttribute(SharedMonsterAttributes.maxHealth).setBaseValue(this.maxTamedHealth); - } else - { - this.getEntityAttribute(SharedMonsterAttributes.maxHealth).setBaseValue(this.maxUntamedHealth); - } - - //this.func_110148_a(SharedMonsterAttributes.field_111267_a).func_111128_a(10.0D); - } - - /** - * Returns true if the newer Entity AI code should be run - */ - public boolean isAIEnabled() - { - return false; - } - - /** - * Sets the active target the Task system uses for tracking - */ - public void setAttackTarget(EntityLivingBase par1EntityLivingBase) - { - super.setAttackTarget(par1EntityLivingBase); - - if (par1EntityLivingBase == null) - { - this.setAngry(false); - } else if (!this.isTamed()) - { - this.setAngry(true); - } - } - - /** - * main AI tick function, replaces updateEntityActionState - */ - protected void updateAITick() - { - this.dataWatcher.updateObject(18, Float.valueOf(this.getHealth())); - } - - protected void entityInit() - { - super.entityInit(); - this.dataWatcher.addObject(18, new Float(this.getHealth())); - this.dataWatcher.addObject(19, new Byte((byte) 0)); - //this.dataWatcher.addObject(20, new Byte((byte) BlockColored.getBlockFromDye(1))); - this.dataWatcher.addObject(25, Byte.valueOf((byte) 0)); - } - - /** - * Plays step sound at given x, y, z for the entity - */ - protected void playStepSound(int par1, int par2, int par3, int par4) - { - this.playSound("mob.zombie.step", 0.15F, 1.0F); - } - - /** - * Returns the sound this mob makes while it's alive. - */ - protected String getLivingSound() - { - //TODO change sounds - return "none"; - } - - /** - * Returns the sound this mob makes when it is hurt. - */ - protected String getHurtSound() - { - return "none"; - } - - /** - * Returns the sound this mob makes on death. - */ - protected String getDeathSound() - { - return "none"; - } - - /** - * Returns the volume for the sounds this mob makes. - */ - protected float getSoundVolume() - { - return 0.4F; - } - - /** - * Returns the item ID for the item the mob drops on death. - */ - protected int getDropItemId() - { - return -1; - } - - /** - * Called frequently so the entity can update its state every tick as required. For example, zombies and skeletons - * use this to react to sunlight and start to burn. - */ - public void onLivingUpdate() - { - super.onLivingUpdate(); - } - - /** - * Called to update the entity's position/logic. - */ - public void onUpdate() - { - super.onUpdate(); - } - - public float getEyeHeight() - { - return this.height * 0.8F; - } - - /** - * The speed it takes to move the entityliving's rotationPitch through the faceEntity method. This is only currently - * use in wolves. - */ - public int getVerticalFaceSpeed() - { - return this.isSitting() ? 20 : super.getVerticalFaceSpeed(); - } - - /** - * Called when the entity is attacked. - */ - public boolean attackEntityFrom(DamageSource par1DamageSource, float par2) - { - if (this.isEntityInvulnerable()) - { - return false; - } else - { - Entity entity = par1DamageSource.getEntity(); - this.aiSit.setSitting(false); - - if (entity != null && !(entity instanceof EntityPlayer) && !(entity instanceof EntityArrow)) - { - par2 = (par2 + 1.0F) / 2.0F; - } - - return super.attackEntityFrom(par1DamageSource, par2); - } - } - - public boolean attackEntityAsMob(Entity par1Entity) - { - int i = this.isTamed() ? 6 : 7; - return par1Entity.attackEntityFrom(DamageSource.causeMobDamage(this), (float) i); - } - - public void setTamed(boolean par1) - { - super.setTamed(par1); - - if (par1) - { - this.getEntityAttribute(SharedMonsterAttributes.maxHealth).setBaseValue(this.maxTamedHealth); - } else - { - this.getEntityAttribute(SharedMonsterAttributes.maxHealth).setBaseValue(this.maxUntamedHealth); - } - } - - /** - * Called when a player interacts with a mob. e.g. gets milk from a cow, gets into the saddle on a pig. - */ - - /** - * Checks if the parameter is an item which this animal can be fed to breed it (wheat, carrots or seeds depending on - * the animal type) - */ - public boolean isBreedingItem(ItemStack par1ItemStack) - { - return false; - //return par1ItemStack == null ? false : (!(Item.itemsList[par1ItemStack.itemID] instanceof ItemFood) ? false : ((ItemFood)Item.itemsList[par1ItemStack.itemID]).isWolfsFavoriteMeat()); - } - - /** - * Determines whether this wolf is angry or not. - */ - public boolean isAngry() - { - return (this.dataWatcher.getWatchableObjectByte(16) & 2) != 0; - } - - /** - * Sets whether this wolf is angry or not. - */ - public void setAngry(boolean par1) - { - byte b0 = this.dataWatcher.getWatchableObjectByte(16); - - if (par1) - { - this.dataWatcher.updateObject(16, Byte.valueOf((byte) (b0 | 2))); - } else - { - this.dataWatcher.updateObject(16, Byte.valueOf((byte) (b0 & -3))); - } - } - - public void func_70918_i(boolean par1) - { - if (par1) - { - this.dataWatcher.updateObject(19, Byte.valueOf((byte) 1)); - } else - { - this.dataWatcher.updateObject(19, Byte.valueOf((byte) 0)); - } - } - - /** - * Returns true if the mob is currently able to mate with the specified mob. - */ - public boolean canMateWith(EntityAnimal par1EntityAnimal) - { - return false; - } - - public boolean func_70922_bv() - { - return this.dataWatcher.getWatchableObjectByte(19) == 1; - } - - /** - * Determines if an entity can be despawned, used on idle far away entities - */ - protected boolean canDespawn() - { - //return !this.isTamed() && this.ticksExisted > 2400; - return false; - } - - @Override - public boolean func_142018_a(EntityLivingBase par1EntityLivingBase, EntityLivingBase par2EntityLivingBase) - { - if (!(par1EntityLivingBase instanceof EntityCreeper) && !(par1EntityLivingBase instanceof EntityGhast)) - { - if (par1EntityLivingBase instanceof EntityBoulderFist) - { - EntityBoulderFist entitywolf = (EntityBoulderFist) par1EntityLivingBase; - - if (entitywolf.isTamed() && entitywolf.getOwner() == par2EntityLivingBase) - { - return false; - } - } - - return par1EntityLivingBase instanceof EntityPlayer && par2EntityLivingBase instanceof EntityPlayer && !((EntityPlayer) par2EntityLivingBase).canAttackPlayer((EntityPlayer) par1EntityLivingBase) ? false : !(par1EntityLivingBase instanceof EntityHorse) || !((EntityHorse) par1EntityLivingBase).isTame(); - //return par1EntityLivingBase instanceof EntityPlayer && par2EntityLivingBase instanceof EntityPlayer && !((EntityPlayer)par2EntityLivingBase).func_96122_a((EntityPlayer)par1EntityLivingBase) ? false : !(par1EntityLivingBase instanceof EntityHorse) || !((EntityHorse)par1EntityLivingBase).func_110248_bS(); - } else - { - return false; - } - } - - - /** - * sets this entity's combat AI. - */ - public void setCombatTask() - { - this.tasks.removeTask(this.aiAttackOnCollide); - //this.tasks.removeTask(this.aiArrowAttack); - ItemStack itemstack = this.getHeldItem(); - this.tasks.addTask(4, this.aiAttackOnCollide); - } - - public void inflictEffectOnEntity(Entity target) - { - if (target instanceof EntityLivingBase) - { - ((EntityLivingBase) target).addPotionEffect(new PotionEffect(AlchemicalWizardry.customPotionDrowning.id, 100, 0)); - } - } - - public static Entity getClosestVulnerableMonsterToEntity(Entity par1Entity, double par2) - { - double d4 = -1.0D; - double par1 = par1Entity.posX; - double par3 = par1Entity.posY; - double par5 = par1Entity.posZ; - - EntityLivingBase entityLiving = null; - World world = par1Entity.worldObj; - - double range = Math.sqrt(par2); - double verticalRange = Math.sqrt(par2); - List entities = world.getEntitiesWithinAABB(EntityLivingBase.class, AxisAlignedBB.getBoundingBox(par1 - 0.5f, par3 - 0.5f, par5 - 0.5f, par1 + 0.5f, par3 + 0.5f, par5 + 0.5f).expand(range, verticalRange, range)); - if (entities == null) - { - return null; - } - - for (int i = 0; i < entities.size(); ++i) - { - EntityLivingBase entityLiving1 = entities.get(i); - - if (!(entityLiving1 instanceof EntityPlayer && ((EntityPlayer) entityLiving1).capabilities.disableDamage) && entityLiving1.isEntityAlive()) - { - double d5 = entityLiving1.getDistanceSq(par1, par3, par5); - double d6 = par2; - - if (entityLiving1.isSneaking()) - { - d6 = par2 * 0.800000011920929D; - } - - if (entityLiving1.isInvisible()) - { - float f = entityLiving1 instanceof EntityPlayer ? ((EntityPlayer) entityLiving1).getArmorVisibility() : 1.0f; - - if (f < 0.1F) - { - f = 0.1F; - } - - d6 *= (double) (0.7F * f); - } - - if ((par2 < 0.0D || d5 < d6 * d6) && (d4 == -1.0D || d5 < d4)) - { - if (par1Entity != entityLiving1) - { - d4 = d5; - entityLiving = entityLiving1; - } - } - } - } - - return entityLiving; - } - - @Override - public int getTotalArmorValue() //TODO - { - return 10; - } -} \ No newline at end of file diff --git a/src-backup/main/java/WayofTime/alchemicalWizardry/common/entity/mob/EntityFallenAngel.java b/src-backup/main/java/WayofTime/alchemicalWizardry/common/entity/mob/EntityFallenAngel.java deleted file mode 100644 index 6bd801a9..00000000 --- a/src-backup/main/java/WayofTime/alchemicalWizardry/common/entity/mob/EntityFallenAngel.java +++ /dev/null @@ -1,502 +0,0 @@ -package WayofTime.alchemicalWizardry.common.entity.mob; - -import net.minecraft.block.BlockColored; -import net.minecraft.entity.Entity; -import net.minecraft.entity.EntityAgeable; -import net.minecraft.entity.EntityLivingBase; -import net.minecraft.entity.IRangedAttackMob; -import net.minecraft.entity.SharedMonsterAttributes; -import net.minecraft.entity.ai.EntityAIArrowAttack; -import net.minecraft.entity.ai.EntityAIAttackOnCollide; -import net.minecraft.entity.ai.EntityAIFollowOwner; -import net.minecraft.entity.ai.EntityAIHurtByTarget; -import net.minecraft.entity.ai.EntityAILookIdle; -import net.minecraft.entity.ai.EntityAIOwnerHurtByTarget; -import net.minecraft.entity.ai.EntityAIOwnerHurtTarget; -import net.minecraft.entity.ai.EntityAISwimming; -import net.minecraft.entity.ai.EntityAIWander; -import net.minecraft.entity.ai.EntityAIWatchClosest; -import net.minecraft.entity.monster.EntityCreeper; -import net.minecraft.entity.monster.EntityGhast; -import net.minecraft.entity.passive.EntityAnimal; -import net.minecraft.entity.passive.EntityHorse; -import net.minecraft.entity.passive.EntityWolf; -import net.minecraft.entity.player.EntityPlayer; -import net.minecraft.entity.projectile.EntityArrow; -import net.minecraft.item.ItemFood; -import net.minecraft.item.ItemStack; -import net.minecraft.nbt.NBTTagCompound; -import net.minecraft.pathfinding.PathEntity; -import net.minecraft.util.DamageSource; -import net.minecraft.world.World; -import WayofTime.alchemicalWizardry.AlchemicalWizardry; -import WayofTime.alchemicalWizardry.ModItems; -import WayofTime.alchemicalWizardry.common.EntityAITargetAggro; -import WayofTime.alchemicalWizardry.common.entity.projectile.HolyProjectile; -import WayofTime.alchemicalWizardry.common.spell.complex.effect.SpellHelper; - -public class EntityFallenAngel extends EntityDemon implements IRangedAttackMob -{ - private EntityAIArrowAttack aiArrowAttack = new EntityAIArrowAttack(this, 1.0D, 40, 40, 15.0F); - private EntityAIAttackOnCollide aiAttackOnCollide = new EntityAIAttackOnCollide(this, EntityPlayer.class, 1.2D, false); - - private static float maxTamedHealth = 50.0F; - private static float maxUntamedHealth = 50.0F; - - public EntityFallenAngel(World par1World) - { - super(par1World, AlchemicalWizardry.entityFallenAngelID); - this.setSize(0.7F, 1.8F); - this.getNavigator().setAvoidsWater(true); - this.tasks.addTask(1, new EntityAISwimming(this)); - this.tasks.addTask(2, this.aiSit); - //this.tasks.addTask(3, new EntityAILeapAtTarget(this, 0.4F)); - //this.tasks.addTask(4, new EntityAIAttackOnCollide(this, 1.0D, true)); - this.tasks.addTask(5, new EntityAIFollowOwner(this, 1.0D, 10.0F, 2.0F)); - //this.tasks.addTask(6, new EntityAIMate(this, 1.0D)); - this.tasks.addTask(7, new EntityAIWander(this, 1.0D)); - //this.tasks.addTask(8, new EntityAIBeg(this, 8.0F)); - this.tasks.addTask(9, new EntityAIWatchClosest(this, EntityPlayer.class, 8.0F)); - this.tasks.addTask(9, new EntityAILookIdle(this)); - this.targetTasks.addTask(1, new EntityAIOwnerHurtByTarget(this)); - this.targetTasks.addTask(2, new EntityAIOwnerHurtTarget(this)); - this.targetTasks.addTask(3, new EntityAIHurtByTarget(this, true)); - this.targetTasks.addTask(4, new EntityAITargetAggro(this, EntityPlayer.class, 0, false)); - this.setAggro(false); - //this.targetTasks.addTask(4, new EntityAITargetNonTamed(this, EntitySheep.class, 200, false)); - this.setTamed(false); - - if (par1World != null && !par1World.isRemote) - { - this.setCombatTask(); - } - - //this.isImmuneToFire = true; - } - - @Override - protected void applyEntityAttributes() - { - super.applyEntityAttributes(); - //This line affects the speed of the monster - this.getEntityAttribute(SharedMonsterAttributes.movementSpeed).setBaseValue(0.30000001192092896D); - - //My guess is that this will alter the max health - if (this.isTamed()) - { - this.getEntityAttribute(SharedMonsterAttributes.maxHealth).setBaseValue(this.maxTamedHealth); - } else - { - this.getEntityAttribute(SharedMonsterAttributes.maxHealth).setBaseValue(this.maxUntamedHealth); - } - - //this.func_110148_a(SharedMonsterAttributes.field_111267_a).func_111128_a(10.0D); - } - - /** - * Returns true if the newer Entity AI code should be run - */ - public boolean isAIEnabled() - { - return true; - } - - /** - * Sets the active target the Task system uses for tracking - */ - public void setAttackTarget(EntityLivingBase par1EntityLivingBase) - { - super.setAttackTarget(par1EntityLivingBase); - - if (par1EntityLivingBase == null) - { - this.setAngry(false); - } else if (!this.isTamed()) - { - this.setAngry(true); - } - } - - /** - * main AI tick function, replaces updateEntityActionState - */ - protected void updateAITick() - { - this.dataWatcher.updateObject(18, Float.valueOf(this.getHealth())); - } - - protected void entityInit() - { - super.entityInit(); - this.dataWatcher.addObject(18, new Float(this.getHealth())); - this.dataWatcher.addObject(19, new Byte((byte) 0)); - //this.dataWatcher.addObject(20, new Byte((byte) BlockColored.getBlockFromDye(1))); - } - - /** - * Plays step sound at given x, y, z for the entity - */ - protected void playStepSound(int par1, int par2, int par3, int par4) - { - this.playSound("mob.zombie.step", 0.15F, 1.0F); - } - - /** - * (abstract) Protected helper method to write subclass entity data to NBT. - */ - public void writeEntityToNBT(NBTTagCompound par1NBTTagCompound) - { - super.writeEntityToNBT(par1NBTTagCompound); - par1NBTTagCompound.setBoolean("Angry", this.isAngry()); - } - - /** - * (abstract) Protected helper method to read subclass entity data from NBT. - */ - public void readEntityFromNBT(NBTTagCompound par1NBTTagCompound) - { - super.readEntityFromNBT(par1NBTTagCompound); - this.setAngry(par1NBTTagCompound.getBoolean("Angry")); - - this.setCombatTask(); - } - - /** - * Returns the sound this mob makes while it's alive. - */ - protected String getLivingSound() - { - //TODO change sounds - return "none"; - } - - /** - * Returns the sound this mob makes when it is hurt. - */ - protected String getHurtSound() - { - return "none"; - } - - /** - * Returns the sound this mob makes on death. - */ - protected String getDeathSound() - { - return "mob.wolf.death"; - } - - /** - * Returns the volume for the sounds this mob makes. - */ - protected float getSoundVolume() - { - return 0.4F; - } - - /** - * Returns the item ID for the item the mob drops on death. - */ - protected int getDropItemId() - { - return -1; - } - - /** - * Called frequently so the entity can update its state every tick as required. For example, zombies and skeletons - * use this to react to sunlight and start to burn. - */ - public void onLivingUpdate() - { - super.onLivingUpdate(); - } - - /** - * Called to update the entity's position/logic. - */ - public void onUpdate() - { - super.onUpdate(); - } - - public float getEyeHeight() - { - return this.height * 0.8F; - } - - /** - * The speed it takes to move the entityliving's rotationPitch through the faceEntity method. This is only currently - * use in wolves. - */ - public int getVerticalFaceSpeed() - { - return this.isSitting() ? 20 : super.getVerticalFaceSpeed(); - } - - /** - * Called when the entity is attacked. - */ - public boolean attackEntityFrom(DamageSource par1DamageSource, float par2) - { - if (this.isEntityInvulnerable()) - { - return false; - } else - { - Entity entity = par1DamageSource.getEntity(); - this.aiSit.setSitting(false); - - if (entity != null && !(entity instanceof EntityPlayer) && !(entity instanceof EntityArrow)) - { - par2 = (par2 + 1.0F) / 2.0F; - } - - return super.attackEntityFrom(par1DamageSource, par2); - } - } - - public boolean attackEntityAsMob(Entity par1Entity) - { - int i = this.isTamed() ? 4 : 2; - return par1Entity.attackEntityFrom(DamageSource.causeMobDamage(this), (float) i); - } - - public void setTamed(boolean par1) - { - super.setTamed(par1); - - if (par1) - { - this.getEntityAttribute(SharedMonsterAttributes.maxHealth).setBaseValue(this.maxTamedHealth); - } else - { - this.getEntityAttribute(SharedMonsterAttributes.maxHealth).setBaseValue(this.maxUntamedHealth); - } - } - - /** - * Called when a player interacts with a mob. e.g. gets milk from a cow, gets into the saddle on a pig. - */ - @Override - public boolean interact(EntityPlayer par1EntityPlayer) - { - ItemStack itemstack = par1EntityPlayer.inventory.getCurrentItem(); - - if (this.isTamed()) - { - if (itemstack != null) - { - if (itemstack.getItem() instanceof ItemFood) - { - ItemFood itemfood = (ItemFood) itemstack.getItem(); - - if (itemfood.isWolfsFavoriteMeat() && this.dataWatcher.getWatchableObjectFloat(18) < this.maxTamedHealth) - { - if (!par1EntityPlayer.capabilities.isCreativeMode) - { - --itemstack.stackSize; - } - - this.heal((float) itemfood.func_150905_g(itemstack)); - - if (itemstack.stackSize <= 0) - { - par1EntityPlayer.inventory.setInventorySlotContents(par1EntityPlayer.inventory.currentItem, (ItemStack) null); - } - - return true; - } - } - } - - if (this.getOwner() instanceof EntityPlayer && SpellHelper.getUsername(par1EntityPlayer).equalsIgnoreCase(SpellHelper.getUsername((EntityPlayer)this.getOwner())) && !this.isBreedingItem(itemstack)) - { - if (!this.worldObj.isRemote) - { - this.aiSit.setSitting(!this.isSitting()); - this.isJumping = false; - this.setPathToEntity((PathEntity) null); - this.setTarget((Entity) null); - this.setAttackTarget((EntityLivingBase) null); - } - - this.sendSittingMessageToPlayer(par1EntityPlayer, !this.isSitting()); - } - } else if (itemstack != null && itemstack.getItem().equals(ModItems.weakBloodOrb) && !this.isAngry()) - { - if (!par1EntityPlayer.capabilities.isCreativeMode) - { - --itemstack.stackSize; - } - - if (itemstack.stackSize <= 0) - { - par1EntityPlayer.inventory.setInventorySlotContents(par1EntityPlayer.inventory.currentItem, (ItemStack) null); - } - - if (!this.worldObj.isRemote) - { - if (this.rand.nextInt(1) == 0) - { - this.setTamed(true); - this.setPathToEntity((PathEntity) null); - this.setAttackTarget((EntityLivingBase) null); - this.aiSit.setSitting(true); - this.setHealth(this.maxTamedHealth); - this.func_152115_b(par1EntityPlayer.getUniqueID().toString()); - this.playTameEffect(true); - this.worldObj.setEntityState(this, (byte) 7); - } else - { - this.playTameEffect(false); - this.worldObj.setEntityState(this, (byte) 6); - } - } - - return true; - } - - return super.interact(par1EntityPlayer); - } - - - /** - * Checks if the parameter is an item which this animal can be fed to breed it (wheat, carrots or seeds depending on - * the animal type) - */ - public boolean isBreedingItem(ItemStack par1ItemStack) - { - return false; - //return par1ItemStack == null ? false : (!(Item.itemsList[par1ItemStack.itemID] instanceof ItemFood) ? false : ((ItemFood)Item.itemsList[par1ItemStack.itemID]).isWolfsFavoriteMeat()); - } - - /** - * Determines whether this wolf is angry or not. - */ - public boolean isAngry() - { - return (this.dataWatcher.getWatchableObjectByte(16) & 2) != 0; - } - - /** - * Sets whether this wolf is angry or not. - */ - public void setAngry(boolean par1) - { - byte b0 = this.dataWatcher.getWatchableObjectByte(16); - - if (par1) - { - this.dataWatcher.updateObject(16, Byte.valueOf((byte) (b0 | 2))); - } else - { - this.dataWatcher.updateObject(16, Byte.valueOf((byte) (b0 & -3))); - } - } - - /** - * Return this wolf's collar color. - */ - public int getCollarColor() - { - return this.dataWatcher.getWatchableObjectByte(20) & 15; - } - - /** - * Set this wolf's collar color. - */ - public void setCollarColor(int par1) - { - this.dataWatcher.updateObject(20, Byte.valueOf((byte) (par1 & 15))); - } - - /** - * This function is used when two same-species animals in 'love mode' breed to generate the new baby animal. - */ - public EntityWolf spawnBabyAnimal(EntityAgeable par1EntityAgeable) - { - return null; - } - - public void func_70918_i(boolean par1) - { - if (par1) - { - this.dataWatcher.updateObject(19, Byte.valueOf((byte) 1)); - } else - { - this.dataWatcher.updateObject(19, Byte.valueOf((byte) 0)); - } - } - - /** - * Returns true if the mob is currently able to mate with the specified mob. - */ - public boolean canMateWith(EntityAnimal par1EntityAnimal) - { - return false; - } - - public boolean func_70922_bv() - { - return this.dataWatcher.getWatchableObjectByte(19) == 1; - } - - /** - * Determines if an entity can be despawned, used on idle far away entities - */ - protected boolean canDespawn() - { - //return !this.isTamed() && this.ticksExisted > 2400; - return false; - } - - public boolean func_142018_a(EntityLivingBase par1EntityLivingBase, EntityLivingBase par2EntityLivingBase) - { - if (!(par1EntityLivingBase instanceof EntityCreeper) && !(par1EntityLivingBase instanceof EntityGhast)) - { - if (par1EntityLivingBase instanceof EntityFallenAngel) - { - EntityFallenAngel entitywolf = (EntityFallenAngel) par1EntityLivingBase; - - if (entitywolf.isTamed() && entitywolf.getOwner() == par2EntityLivingBase) - { - return false; - } - } - - return par1EntityLivingBase instanceof EntityPlayer && par2EntityLivingBase instanceof EntityPlayer && !((EntityPlayer) par2EntityLivingBase).canAttackPlayer((EntityPlayer) par1EntityLivingBase) ? false : !(par1EntityLivingBase instanceof EntityHorse) || !((EntityHorse) par1EntityLivingBase).isTame(); - } else - { - return false; - } - } - - public EntityAgeable createChild(EntityAgeable par1EntityAgeable) - { - return this.spawnBabyAnimal(par1EntityAgeable); - } - - /** - * Attack the specified entity using a ranged attack. - */ - public void attackEntityWithRangedAttack(EntityLivingBase par1EntityLivingBase, float par2) - { - double xCoord; - double yCoord; - double zCoord; - HolyProjectile hol = new HolyProjectile(worldObj, this, par1EntityLivingBase, 1.8f, 0f, 5, 600); - this.worldObj.spawnEntityInWorld(hol); - } - - /** - * sets this entity's combat AI. - */ - public void setCombatTask() - { - this.tasks.removeTask(this.aiAttackOnCollide); - this.tasks.removeTask(this.aiArrowAttack); - ItemStack itemstack = this.getHeldItem(); - this.tasks.addTask(4, this.aiArrowAttack); - } -} diff --git a/src-backup/main/java/WayofTime/alchemicalWizardry/common/entity/mob/EntityFireElemental.java b/src-backup/main/java/WayofTime/alchemicalWizardry/common/entity/mob/EntityFireElemental.java deleted file mode 100644 index a599be7c..00000000 --- a/src-backup/main/java/WayofTime/alchemicalWizardry/common/entity/mob/EntityFireElemental.java +++ /dev/null @@ -1,26 +0,0 @@ -package WayofTime.alchemicalWizardry.common.entity.mob; - -import WayofTime.alchemicalWizardry.AlchemicalWizardry; -import net.minecraft.entity.Entity; -import net.minecraft.entity.EntityLivingBase; -import net.minecraft.entity.monster.IMob; -import net.minecraft.potion.PotionEffect; -import net.minecraft.world.World; - -public class EntityFireElemental extends EntityElemental implements IMob -{ - public EntityFireElemental(World world) - { - super(world, AlchemicalWizardry.entityFireElementalID); - this.isImmuneToFire = true; - } - - public void inflictEffectOnEntity(Entity target) - { - if (target instanceof EntityLivingBase) - { - ((EntityLivingBase) target).setFire(10); - ((EntityLivingBase) target).addPotionEffect(new PotionEffect(AlchemicalWizardry.customPotionInhibit.id, 150, 0)); - } - } -} \ No newline at end of file diff --git a/src-backup/main/java/WayofTime/alchemicalWizardry/common/entity/mob/EntityHolyElemental.java b/src-backup/main/java/WayofTime/alchemicalWizardry/common/entity/mob/EntityHolyElemental.java deleted file mode 100644 index c4c626a0..00000000 --- a/src-backup/main/java/WayofTime/alchemicalWizardry/common/entity/mob/EntityHolyElemental.java +++ /dev/null @@ -1,28 +0,0 @@ -package WayofTime.alchemicalWizardry.common.entity.mob; - -import WayofTime.alchemicalWizardry.AlchemicalWizardry; -import net.minecraft.entity.Entity; -import net.minecraft.entity.EntityLivingBase; -import net.minecraft.entity.monster.IMob; -import net.minecraft.potion.Potion; -import net.minecraft.potion.PotionEffect; -import net.minecraft.util.DamageSource; -import net.minecraft.world.World; - -public class EntityHolyElemental extends EntityElemental implements IMob -{ - public EntityHolyElemental(World world) - { - super(world, AlchemicalWizardry.entityHolyElementalID); - } - - public void inflictEffectOnEntity(Entity target) - { - if (target instanceof EntityLivingBase) - { - ((EntityLivingBase) target).attackEntityFrom(DamageSource.causeMobDamage(this), 15); - ((EntityLivingBase) target).addPotionEffect(new PotionEffect(AlchemicalWizardry.customPotionInhibit.id, 150, 0)); - ((EntityLivingBase) target).addPotionEffect(new PotionEffect(Potion.poison.id, 100, 1)); - } - } -} \ No newline at end of file diff --git a/src-backup/main/java/WayofTime/alchemicalWizardry/common/entity/mob/EntityIceDemon.java b/src-backup/main/java/WayofTime/alchemicalWizardry/common/entity/mob/EntityIceDemon.java deleted file mode 100644 index fafe24b7..00000000 --- a/src-backup/main/java/WayofTime/alchemicalWizardry/common/entity/mob/EntityIceDemon.java +++ /dev/null @@ -1,523 +0,0 @@ -package WayofTime.alchemicalWizardry.common.entity.mob; - -import net.minecraft.block.BlockColored; -import net.minecraft.entity.Entity; -import net.minecraft.entity.EntityAgeable; -import net.minecraft.entity.EntityLivingBase; -import net.minecraft.entity.IRangedAttackMob; -import net.minecraft.entity.SharedMonsterAttributes; -import net.minecraft.entity.ai.EntityAIArrowAttack; -import net.minecraft.entity.ai.EntityAIAttackOnCollide; -import net.minecraft.entity.ai.EntityAIFollowOwner; -import net.minecraft.entity.ai.EntityAIHurtByTarget; -import net.minecraft.entity.ai.EntityAILookIdle; -import net.minecraft.entity.ai.EntityAIOwnerHurtByTarget; -import net.minecraft.entity.ai.EntityAIOwnerHurtTarget; -import net.minecraft.entity.ai.EntityAISwimming; -import net.minecraft.entity.ai.EntityAIWander; -import net.minecraft.entity.ai.EntityAIWatchClosest; -import net.minecraft.entity.monster.EntityCreeper; -import net.minecraft.entity.monster.EntityGhast; -import net.minecraft.entity.passive.EntityAnimal; -import net.minecraft.entity.passive.EntityHorse; -import net.minecraft.entity.passive.EntityWolf; -import net.minecraft.entity.player.EntityPlayer; -import net.minecraft.entity.projectile.EntityArrow; -import net.minecraft.item.ItemFood; -import net.minecraft.item.ItemStack; -import net.minecraft.nbt.NBTTagCompound; -import net.minecraft.pathfinding.PathEntity; -import net.minecraft.util.DamageSource; -import net.minecraft.util.Vec3; -import net.minecraft.world.World; -import WayofTime.alchemicalWizardry.AlchemicalWizardry; -import WayofTime.alchemicalWizardry.ModItems; -import WayofTime.alchemicalWizardry.common.EntityAITargetAggro; -import WayofTime.alchemicalWizardry.common.entity.projectile.IceProjectile; -import WayofTime.alchemicalWizardry.common.spell.complex.effect.SpellHelper; - -public class EntityIceDemon extends EntityDemon implements IRangedAttackMob -{ - private EntityAIArrowAttack aiArrowAttack = new EntityAIArrowAttack(this, 1.0D, 30, 50, 15.0F); - private EntityAIAttackOnCollide aiAttackOnCollide = new EntityAIAttackOnCollide(this, EntityPlayer.class, 1.2D, false); - - private static float maxTamedHealth = 50.0F; - private static float maxUntamedHealth = 30.0F; - - public EntityIceDemon(World par1World) - { - super(par1World, AlchemicalWizardry.entityIceDemonID); - this.setSize(0.5F, 2.0F); - //this.getNavigator().setAvoidsWater(true); - this.tasks.addTask(1, new EntityAISwimming(this)); - this.tasks.addTask(2, this.aiSit); - //this.tasks.addTask(3, new EntityAILeapAtTarget(this, 0.4F)); - //this.tasks.addTask(4, new EntityAIAttackOnCollide(this, 1.0D, true)); - this.tasks.addTask(5, new EntityAIFollowOwner(this, 1.0D, 10.0F, 2.0F)); - //this.tasks.addTask(6, new EntityAIMate(this, 1.0D)); - this.tasks.addTask(7, new EntityAIWander(this, 1.0D)); - //this.tasks.addTask(8, new EntityAIBeg(this, 8.0F)); - this.tasks.addTask(9, new EntityAIWatchClosest(this, EntityPlayer.class, 8.0F)); - this.tasks.addTask(9, new EntityAILookIdle(this)); - this.targetTasks.addTask(1, new EntityAIOwnerHurtByTarget(this)); - this.targetTasks.addTask(2, new EntityAIOwnerHurtTarget(this)); - this.targetTasks.addTask(3, new EntityAIHurtByTarget(this, true)); - this.targetTasks.addTask(4, new EntityAITargetAggro(this, EntityPlayer.class, 0, false)); - this.setAggro(false); - //this.targetTasks.addTask(4, new EntityAITargetNonTamed(this, EntitySheep.class, 200, false)); - this.setTamed(false); - - if (par1World != null && !par1World.isRemote) - { - this.setCombatTask(); - } - - //this.isImmuneToFire = true; - } - - @Override - protected void applyEntityAttributes() - { - super.applyEntityAttributes(); - //This line affects the speed of the monster - this.getEntityAttribute(SharedMonsterAttributes.movementSpeed).setBaseValue(0.40000001192092896D); - - //My guess is that this will alter the max health - if (this.isTamed()) - { - this.getEntityAttribute(SharedMonsterAttributes.maxHealth).setBaseValue(this.maxTamedHealth); - } else - { - this.getEntityAttribute(SharedMonsterAttributes.maxHealth).setBaseValue(this.maxUntamedHealth); - } - - //this.func_110148_a(SharedMonsterAttributes.field_111267_a).func_111128_a(10.0D); - } - - /** - * Returns true if the newer Entity AI code should be run - */ - public boolean isAIEnabled() - { - return true; - } - - /** - * Sets the active target the Task system uses for tracking - */ - public void setAttackTarget(EntityLivingBase par1EntityLivingBase) - { - super.setAttackTarget(par1EntityLivingBase); - - if (par1EntityLivingBase == null) - { - this.setAngry(false); - } else if (!this.isTamed()) - { - this.setAngry(true); - } - } - - /** - * main AI tick function, replaces updateEntityActionState - */ - protected void updateAITick() - { - this.dataWatcher.updateObject(18, Float.valueOf(this.getHealth())); - } - - protected void entityInit() - { - super.entityInit(); - this.dataWatcher.addObject(18, new Float(this.getHealth())); - this.dataWatcher.addObject(19, new Byte((byte) 0)); - //this.dataWatcher.addObject(20, new Byte((byte) BlockColored.getBlockFromDye(1))); - } - - /** - * Plays step sound at given x, y, z for the entity - */ - protected void playStepSound(int par1, int par2, int par3, int par4) - { - this.playSound("mob.zombie.step", 0.15F, 1.0F); - } - - /** - * (abstract) Protected helper method to write subclass entity data to NBT. - */ - public void writeEntityToNBT(NBTTagCompound par1NBTTagCompound) - { - super.writeEntityToNBT(par1NBTTagCompound); - par1NBTTagCompound.setBoolean("Angry", this.isAngry()); - } - - /** - * (abstract) Protected helper method to read subclass entity data from NBT. - */ - public void readEntityFromNBT(NBTTagCompound par1NBTTagCompound) - { - super.readEntityFromNBT(par1NBTTagCompound); - this.setAngry(par1NBTTagCompound.getBoolean("Angry")); - - this.setCombatTask(); - } - - /** - * Returns the sound this mob makes while it's alive. - */ - protected String getLivingSound() - { - return "none"; - } - - /** - * Returns the sound this mob makes when it is hurt. - */ - protected String getHurtSound() - { - return "mob.irongolem.hit"; - } - - /** - * Returns the sound this mob makes on death. - */ - protected String getDeathSound() - { - return "mob.irongolem.death"; - } - - /** - * Returns the volume for the sounds this mob makes. - */ - protected float getSoundVolume() - { - return 0.4F; - } - - /** - * Returns the item ID for the item the mob drops on death. - */ - protected int getDropItemId() - { - return -1; - } - - /** - * Called frequently so the entity can update its state every tick as required. For example, zombies and skeletons - * use this to react to sunlight and start to burn. - */ - public void onLivingUpdate() - { - super.onLivingUpdate(); - int range = 2; - - Vec3 blockVector = SpellHelper.getEntityBlockVector(this); - - int xCoord = (int)(blockVector.xCoord); - int yCoord = (int)(blockVector.yCoord); - int zCoord = (int)(blockVector.zCoord); - - for (int i = -range; i <= range; i++) - { - for (int j = -range; j <= range; j++) - { - for (int k = -range; k <= range; k++) - { - if (worldObj.rand.nextFloat() < 0.25f) - { - SpellHelper.freezeWaterBlock(worldObj, xCoord + i, yCoord + j, zCoord + k); - } - } - } - } - } - - /** - * Called to update the entity's position/logic. - */ - public void onUpdate() - { - super.onUpdate(); - } - - public float getEyeHeight() - { - return this.height * 0.8F; - } - - /** - * The speed it takes to move the entityliving's rotationPitch through the faceEntity method. This is only currently - * use in wolves. - */ - public int getVerticalFaceSpeed() - { - return this.isSitting() ? 20 : super.getVerticalFaceSpeed(); - } - - /** - * Called when the entity is attacked. - */ - public boolean attackEntityFrom(DamageSource par1DamageSource, float par2) - { - if (this.isEntityInvulnerable()) - { - return false; - } else - { - Entity entity = par1DamageSource.getEntity(); - this.aiSit.setSitting(false); - - if (entity != null && !(entity instanceof EntityPlayer) && !(entity instanceof EntityArrow)) - { - par2 = (par2 + 1.0F) / 2.0F; - } - - return super.attackEntityFrom(par1DamageSource, par2); - } - } - - public boolean attackEntityAsMob(Entity par1Entity) - { - int i = this.isTamed() ? 4 : 2; - return par1Entity.attackEntityFrom(DamageSource.causeMobDamage(this), (float) i); - } - - public void setTamed(boolean par1) - { - super.setTamed(par1); - - if (par1) - { - this.getEntityAttribute(SharedMonsterAttributes.maxHealth).setBaseValue(this.maxTamedHealth); - } else - { - this.getEntityAttribute(SharedMonsterAttributes.maxHealth).setBaseValue(this.maxUntamedHealth); - } - } - - /** - * Called when a player interacts with a mob. e.g. gets milk from a cow, gets into the saddle on a pig. - */ - @Override - public boolean interact(EntityPlayer par1EntityPlayer) - { - ItemStack itemstack = par1EntityPlayer.inventory.getCurrentItem(); - - if (this.isTamed()) - { - if (itemstack != null) - { - if (itemstack.getItem() instanceof ItemFood) - { - ItemFood itemfood = (ItemFood) itemstack.getItem(); - - if (itemfood.isWolfsFavoriteMeat() && this.dataWatcher.getWatchableObjectFloat(18) < this.maxTamedHealth) - { - if (!par1EntityPlayer.capabilities.isCreativeMode) - { - --itemstack.stackSize; - } - - this.heal((float) itemfood.func_150905_g(itemstack)); - - if (itemstack.stackSize <= 0) - { - par1EntityPlayer.inventory.setInventorySlotContents(par1EntityPlayer.inventory.currentItem, (ItemStack) null); - } - - return true; - } - } - } - - if (this.getOwner() instanceof EntityPlayer && SpellHelper.getUsername(par1EntityPlayer).equalsIgnoreCase(SpellHelper.getUsername((EntityPlayer)this.getOwner())) && !this.isBreedingItem(itemstack)) - { - if (!this.worldObj.isRemote) - { - this.aiSit.setSitting(!this.isSitting()); - this.isJumping = false; - this.setPathToEntity((PathEntity) null); - this.setTarget((Entity) null); - this.setAttackTarget((EntityLivingBase) null); - } - - this.sendSittingMessageToPlayer(par1EntityPlayer, !this.isSitting()); - } - } else if (itemstack != null && itemstack.getItem().equals(ModItems.weakBloodOrb) && !this.isAngry()) - { - if (!par1EntityPlayer.capabilities.isCreativeMode) - { - --itemstack.stackSize; - } - - if (itemstack.stackSize <= 0) - { - par1EntityPlayer.inventory.setInventorySlotContents(par1EntityPlayer.inventory.currentItem, (ItemStack) null); - } - - if (!this.worldObj.isRemote) - { - if (this.rand.nextInt(1) == 0) - { - this.setTamed(true); - this.setPathToEntity((PathEntity) null); - this.setAttackTarget((EntityLivingBase) null); - this.aiSit.setSitting(true); - this.setHealth(this.maxTamedHealth); - this.func_152115_b(par1EntityPlayer.getUniqueID().toString()); - this.playTameEffect(true); - this.worldObj.setEntityState(this, (byte) 7); - } else - { - this.playTameEffect(false); - this.worldObj.setEntityState(this, (byte) 6); - } - } - - return true; - } - - return super.interact(par1EntityPlayer); - } - - - /** - * Checks if the parameter is an item which this animal can be fed to breed it (wheat, carrots or seeds depending on - * the animal type) - */ - public boolean isBreedingItem(ItemStack par1ItemStack) - { - return false; - //return par1ItemStack == null ? false : (!(Item.itemsList[par1ItemStack.itemID] instanceof ItemFood) ? false : ((ItemFood)Item.itemsList[par1ItemStack.itemID]).isWolfsFavoriteMeat()); - } - - /** - * Determines whether this wolf is angry or not. - */ - public boolean isAngry() - { - return (this.dataWatcher.getWatchableObjectByte(16) & 2) != 0; - } - - /** - * Sets whether this wolf is angry or not. - */ - public void setAngry(boolean par1) - { - byte b0 = this.dataWatcher.getWatchableObjectByte(16); - - if (par1) - { - this.dataWatcher.updateObject(16, Byte.valueOf((byte) (b0 | 2))); - } else - { - this.dataWatcher.updateObject(16, Byte.valueOf((byte) (b0 & -3))); - } - } - - /** - * Return this wolf's collar color. - */ - public int getCollarColor() - { - return this.dataWatcher.getWatchableObjectByte(20) & 15; - } - - /** - * Set this wolf's collar color. - */ - public void setCollarColor(int par1) - { - this.dataWatcher.updateObject(20, Byte.valueOf((byte) (par1 & 15))); - } - - /** - * This function is used when two same-species animals in 'love mode' breed to generate the new baby animal. - */ - public EntityWolf spawnBabyAnimal(EntityAgeable par1EntityAgeable) - { - return null; - } - - public void func_70918_i(boolean par1) - { - if (par1) - { - this.dataWatcher.updateObject(19, Byte.valueOf((byte) 1)); - } else - { - this.dataWatcher.updateObject(19, Byte.valueOf((byte) 0)); - } - } - - /** - * Returns true if the mob is currently able to mate with the specified mob. - */ - public boolean canMateWith(EntityAnimal par1EntityAnimal) - { - return false; - } - - public boolean func_70922_bv() - { - return this.dataWatcher.getWatchableObjectByte(19) == 1; - } - - /** - * Determines if an entity can be despawned, used on idle far away entities - */ - protected boolean canDespawn() - { - //return !this.isTamed() && this.ticksExisted > 2400; - return false; - } - - public boolean func_142018_a(EntityLivingBase par1EntityLivingBase, EntityLivingBase par2EntityLivingBase) - { - if (!(par1EntityLivingBase instanceof EntityCreeper) && !(par1EntityLivingBase instanceof EntityGhast)) - { - if (par1EntityLivingBase instanceof EntityIceDemon) - { - EntityIceDemon entitywolf = (EntityIceDemon) par1EntityLivingBase; - - if (entitywolf.isTamed() && entitywolf.getOwner() == par2EntityLivingBase) - { - return false; - } - } - - return par1EntityLivingBase instanceof EntityPlayer && par2EntityLivingBase instanceof EntityPlayer && !((EntityPlayer) par2EntityLivingBase).canAttackPlayer((EntityPlayer) par1EntityLivingBase) ? false : !(par1EntityLivingBase instanceof EntityHorse) || !((EntityHorse) par1EntityLivingBase).isTame(); - } else - { - return false; - } - } - - public EntityAgeable createChild(EntityAgeable par1EntityAgeable) - { - return this.spawnBabyAnimal(par1EntityAgeable); - } - - /** - * Attack the specified entity using a ranged attack. - */ - public void attackEntityWithRangedAttack(EntityLivingBase par1EntityLivingBase, float par2) - { - double xCoord; - double yCoord; - double zCoord; - IceProjectile hol = new IceProjectile(worldObj, this, par1EntityLivingBase, 1.8f, 0f, 3, 600); - this.worldObj.spawnEntityInWorld(hol); - } - - /** - * sets this entity's combat AI. - */ - public void setCombatTask() - { - this.tasks.removeTask(this.aiAttackOnCollide); - this.tasks.removeTask(this.aiArrowAttack); - ItemStack itemstack = this.getHeldItem(); - this.tasks.addTask(4, this.aiArrowAttack); - } -} \ No newline at end of file diff --git a/src-backup/main/java/WayofTime/alchemicalWizardry/common/entity/mob/EntityLowerGuardian.java b/src-backup/main/java/WayofTime/alchemicalWizardry/common/entity/mob/EntityLowerGuardian.java deleted file mode 100644 index 5d20a4e2..00000000 --- a/src-backup/main/java/WayofTime/alchemicalWizardry/common/entity/mob/EntityLowerGuardian.java +++ /dev/null @@ -1,486 +0,0 @@ -package WayofTime.alchemicalWizardry.common.entity.mob; - -import WayofTime.alchemicalWizardry.AlchemicalWizardry; -import WayofTime.alchemicalWizardry.ModItems; -import WayofTime.alchemicalWizardry.common.EntityAITargetAggro; -import WayofTime.alchemicalWizardry.common.spell.complex.effect.SpellHelper; -import net.minecraft.block.BlockColored; -import net.minecraft.entity.Entity; -import net.minecraft.entity.EntityAgeable; -import net.minecraft.entity.EntityLivingBase; -import net.minecraft.entity.SharedMonsterAttributes; -import net.minecraft.entity.ai.*; -import net.minecraft.entity.monster.EntityCreeper; -import net.minecraft.entity.monster.EntityGhast; -import net.minecraft.entity.passive.EntityAnimal; -import net.minecraft.entity.passive.EntityHorse; -import net.minecraft.entity.passive.EntityWolf; -import net.minecraft.entity.player.EntityPlayer; -import net.minecraft.entity.projectile.EntityArrow; -import net.minecraft.item.Item; -import net.minecraft.item.ItemFood; -import net.minecraft.item.ItemStack; -import net.minecraft.nbt.NBTTagCompound; -import net.minecraft.pathfinding.PathEntity; -import net.minecraft.util.DamageSource; -import net.minecraft.world.World; - -public class EntityLowerGuardian extends EntityDemon -{ - private EntityAIAttackOnCollide aiAttackOnCollide = new EntityAIAttackOnCollide(this, EntityPlayer.class, 1.2D, false); - - private static float maxTamedHealth = 50.0F; - private static float maxUntamedHealth = 30.0F; - private int attackTimer; - private boolean isAggro; - - public EntityLowerGuardian(World par1World) - { - super(par1World, AlchemicalWizardry.entityLowerGuardianID); - this.setSize(0.7F, 1.8F); - this.getNavigator().setAvoidsWater(true); - this.tasks.addTask(1, new EntityAISwimming(this)); - //this.tasks.addTask(3, new EntityAILeapAtTarget(this, 0.4F)); - this.tasks.addTask(2, new EntityAIAttackOnCollide(this, 1.0D, true)); - this.tasks.addTask(3, this.aiSit); - this.tasks.addTask(5, new EntityAIFollowOwner(this, 1.0D, 10.0F, 2.0F)); - //this.tasks.addTask(6, new EntityAIMate(this, 1.0D)); - this.tasks.addTask(7, new EntityAIWander(this, 1.0D)); - //this.tasks.addTask(8, new EntityAIBeg(this, 8.0F)); - this.tasks.addTask(9, new EntityAIWatchClosest(this, EntityPlayer.class, 8.0F)); - this.tasks.addTask(9, new EntityAILookIdle(this)); - this.targetTasks.addTask(1, new EntityAIOwnerHurtByTarget(this)); - this.targetTasks.addTask(2, new EntityAIOwnerHurtTarget(this)); - this.targetTasks.addTask(3, new EntityAIHurtByTarget(this, true)); - this.targetTasks.addTask(4, new EntityAITargetAggro(this, EntityPlayer.class, 0, false)); - this.setAggro(false); - this.setTamed(false); - attackTimer = 0; - //isAggro = false; - //this.isImmuneToFire = true; - } - - @Override - protected void applyEntityAttributes() - { - super.applyEntityAttributes(); - //This line affects the speed of the monster - this.getEntityAttribute(SharedMonsterAttributes.movementSpeed).setBaseValue(0.30000001192092896D); - - //My guess is that this will alter the max health - if (this.isTamed()) - { - this.getEntityAttribute(SharedMonsterAttributes.maxHealth).setBaseValue(this.maxTamedHealth); - } else - { - this.getEntityAttribute(SharedMonsterAttributes.maxHealth).setBaseValue(this.maxUntamedHealth); - } - - //this.func_110148_a(SharedMonsterAttributes.field_111267_a).func_111128_a(10.0D); - } - - /** - * Returns true if the newer Entity AI code should be run - */ - public boolean isAIEnabled() - { - return true; - } - - /** - * Sets the active target the Task system uses for tracking - */ - public void setAttackTarget(EntityLivingBase par1EntityLivingBase) - { - super.setAttackTarget(par1EntityLivingBase); - - if (par1EntityLivingBase == null) - { - this.setAngry(false); - } else if (!this.isTamed()) - { - this.setAngry(true); - } - } - - /** - * main AI tick function, replaces updateEntityActionState - */ - protected void updateAITick() - { - this.dataWatcher.updateObject(18, Float.valueOf(this.getHealth())); - } - - protected void entityInit() - { - super.entityInit(); - this.dataWatcher.addObject(18, new Float(this.getHealth())); - this.dataWatcher.addObject(19, new Byte((byte) 0)); - //this.dataWatcher.addObject(20, new Byte((byte) BlockColored.getBlockFromDye(1))); - } - - /** - * Plays step sound at given x, y, z for the entity - */ - protected void playStepSound(int par1, int par2, int par3, int par4) - { - this.playSound("mob.zombie.step", 0.15F, 1.0F); - } - - /** - * (abstract) Protected helper method to write subclass entity data to NBT. - */ - public void writeEntityToNBT(NBTTagCompound par1NBTTagCompound) - { - super.writeEntityToNBT(par1NBTTagCompound); - par1NBTTagCompound.setBoolean("Angry", this.isAngry()); - par1NBTTagCompound.setByte("attackTimer", (byte) attackTimer); - par1NBTTagCompound.setBoolean("isAggro", this.isAggro()); - } - - /** - * (abstract) Protected helper method to read subclass entity data from NBT. - */ - public void readEntityFromNBT(NBTTagCompound par1NBTTagCompound) - { - super.readEntityFromNBT(par1NBTTagCompound); - this.setAngry(par1NBTTagCompound.getBoolean("Angry")); - - attackTimer = par1NBTTagCompound.getByte("attackTimer"); - isAggro = par1NBTTagCompound.getBoolean("isAggro"); - } - - /** - * Returns the sound this mob makes while it's alive. - */ - protected String getLivingSound() - { - return "none"; - } - - /** - * Returns the sound this mob makes when it is hurt. - */ - protected String getHurtSound() - { - return "mob.irongolem.hit"; - } - - /** - * Returns the sound this mob makes on death. - */ - protected String getDeathSound() - { - return "mob.irongolem.death"; - } - - /** - * Returns the volume for the sounds this mob makes. - */ - protected float getSoundVolume() - { - return 1.0F; - } - - /** - * Returns the item ID for the item the mob drops on death. - */ - protected int getDropItemId() - { - return -1; - } - - /** - * Called frequently so the entity can update its state every tick as required. For example, zombies and skeletons - * use this to react to sunlight and start to burn. - */ - public void onLivingUpdate() - { - super.onLivingUpdate(); - - if (attackTimer > 0) - { - attackTimer--; - } - } - - public int getAttackTimer() - { - return attackTimer; - } - - /** - * Called to update the entity's position/logic. - */ - public void onUpdate() - { - super.onUpdate(); - } - - public float getEyeHeight() - { - return this.height * 0.8F; - } - - /** - * The speed it takes to move the entityliving's rotationPitch through the faceEntity method. This is only currently - * use in wolves. - */ - public int getVerticalFaceSpeed() - { - return this.isSitting() ? 20 : super.getVerticalFaceSpeed(); - } - - /** - * Called when the entity is attacked. - */ - public boolean attackEntityFrom(DamageSource par1DamageSource, float par2) - { - if (this.isEntityInvulnerable()) - { - return false; - } else - { - Entity entity = par1DamageSource.getEntity(); - this.aiSit.setSitting(false); - - if (entity != null && !(entity instanceof EntityPlayer) && !(entity instanceof EntityArrow)) - { - par2 = (par2 + 1.0F) / 2.0F; - } - - return super.attackEntityFrom(par1DamageSource, par2); - } - } - - public boolean attackEntityAsMob(Entity par1Entity) - { - this.attackTimer = 10; - this.worldObj.setEntityState(this, (byte) 4); - boolean flag = par1Entity.attackEntityFrom(DamageSource.causeMobDamage(this), (float) (7 + this.rand.nextInt(15))); - - if (flag) - { - par1Entity.motionY += 0.4000000059604645D; - } - - this.playSound("mob.irongolem.throw", 1.0F, 1.0F); - return flag; - } - - public void setTamed(boolean par1) - { - super.setTamed(par1); - - if (par1) - { - this.getEntityAttribute(SharedMonsterAttributes.maxHealth).setBaseValue(this.maxTamedHealth); - } else - { - this.getEntityAttribute(SharedMonsterAttributes.maxHealth).setBaseValue(this.maxUntamedHealth); - } - } - - /** - * Called when a player interacts with a mob. e.g. gets milk from a cow, gets into the saddle on a pig. - */ - @Override - public boolean interact(EntityPlayer par1EntityPlayer) - { - ItemStack itemstack = par1EntityPlayer.inventory.getCurrentItem(); - - if (this.isTamed()) - { - if (itemstack != null) - { - if (itemstack.getItem() instanceof ItemFood) - { - ItemFood itemfood = (ItemFood) itemstack.getItem(); - - if (itemfood.isWolfsFavoriteMeat() && this.dataWatcher.getWatchableObjectFloat(18) < this.maxTamedHealth) - { - if (!par1EntityPlayer.capabilities.isCreativeMode) - { - --itemstack.stackSize; - } - - this.heal((float) itemfood.func_150905_g(itemstack)); - - if (itemstack.stackSize <= 0) - { - par1EntityPlayer.inventory.setInventorySlotContents(par1EntityPlayer.inventory.currentItem, (ItemStack) null); - } - - return true; - } - } - } - - if (this.getOwner() instanceof EntityPlayer && SpellHelper.getUsername(par1EntityPlayer).equalsIgnoreCase(SpellHelper.getUsername((EntityPlayer)this.getOwner())) && !this.isBreedingItem(itemstack)) - { - if (!this.worldObj.isRemote) - { - this.aiSit.setSitting(!this.isSitting()); - this.isJumping = false; - this.setPathToEntity((PathEntity) null); - this.setTarget((Entity) null); - this.setAttackTarget((EntityLivingBase) null); - } - - this.sendSittingMessageToPlayer(par1EntityPlayer, !this.isSitting()); - } - } else if (itemstack != null && itemstack.getItem().equals(ModItems.weakBloodOrb) && !this.isAngry()) - { - if (!par1EntityPlayer.capabilities.isCreativeMode) - { - --itemstack.stackSize; - } - - if (itemstack.stackSize <= 0) - { - par1EntityPlayer.inventory.setInventorySlotContents(par1EntityPlayer.inventory.currentItem, (ItemStack) null); - } - - if (!this.worldObj.isRemote) - { - if (this.rand.nextInt(1) == 0) - { - this.setTamed(true); - this.setPathToEntity((PathEntity) null); - this.setAttackTarget((EntityLivingBase) null); - this.aiSit.setSitting(true); - this.setHealth(this.maxTamedHealth); - this.func_152115_b(par1EntityPlayer.getUniqueID().toString()); - this.playTameEffect(true); - this.worldObj.setEntityState(this, (byte) 7); - } else - { - this.playTameEffect(false); - this.worldObj.setEntityState(this, (byte) 6); - } - } - - return true; - } - - return super.interact(par1EntityPlayer); - } - - - /** - * Checks if the parameter is an item which this animal can be fed to breed it (wheat, carrots or seeds depending on - * the animal type) - */ - public boolean isBreedingItem(ItemStack par1ItemStack) - { - return false; - //return par1ItemStack == null ? false : (!(Item.itemsList[par1ItemStack.itemID] instanceof ItemFood) ? false : ((ItemFood)Item.itemsList[par1ItemStack.itemID]).isWolfsFavoriteMeat()); - } - - /** - * Determines whether this wolf is angry or not. - */ - public boolean isAngry() - { - return (this.dataWatcher.getWatchableObjectByte(16) & 2) != 0; - } - - /** - * Sets whether this wolf is angry or not. - */ - public void setAngry(boolean par1) - { - byte b0 = this.dataWatcher.getWatchableObjectByte(16); - - if (par1) - { - this.dataWatcher.updateObject(16, Byte.valueOf((byte) (b0 | 2))); - } else - { - this.dataWatcher.updateObject(16, Byte.valueOf((byte) (b0 & -3))); - } - } - - /** - * Return this wolf's collar color. - */ - public int getCollarColor() - { - return this.dataWatcher.getWatchableObjectByte(20) & 15; - } - - /** - * Set this wolf's collar color. - */ - public void setCollarColor(int par1) - { - this.dataWatcher.updateObject(20, Byte.valueOf((byte) (par1 & 15))); - } - - /** - * This function is used when two same-species animals in 'love mode' breed to generate the new baby animal. - */ - public EntityWolf spawnBabyAnimal(EntityAgeable par1EntityAgeable) - { - return null; - } - - public void func_70918_i(boolean par1) - { - if (par1) - { - this.dataWatcher.updateObject(19, Byte.valueOf((byte) 1)); - } else - { - this.dataWatcher.updateObject(19, Byte.valueOf((byte) 0)); - } - } - - /** - * Returns true if the mob is currently able to mate with the specified mob. - */ - public boolean canMateWith(EntityAnimal par1EntityAnimal) - { - return false; - } - - public boolean func_70922_bv() - { - return this.dataWatcher.getWatchableObjectByte(19) == 1; - } - - /** - * Determines if an entity can be despawned, used on idle far away entities - */ - protected boolean canDespawn() - { - //return !this.isTamed() && this.ticksExisted > 2400; - return false; - } - - public boolean func_142018_a(EntityLivingBase par1EntityLivingBase, EntityLivingBase par2EntityLivingBase) - { - if (!(par1EntityLivingBase instanceof EntityCreeper) && !(par1EntityLivingBase instanceof EntityGhast)) - { - if (par1EntityLivingBase instanceof EntityLowerGuardian) - { - EntityLowerGuardian entitywolf = (EntityLowerGuardian) par1EntityLivingBase; - - if (entitywolf.isTamed() && entitywolf.getOwner() == par2EntityLivingBase) - { - return false; - } - } - - return par1EntityLivingBase instanceof EntityPlayer && par2EntityLivingBase instanceof EntityPlayer && !((EntityPlayer) par2EntityLivingBase).canAttackPlayer((EntityPlayer) par1EntityLivingBase) ? false : !(par1EntityLivingBase instanceof EntityHorse) || !((EntityHorse) par1EntityLivingBase).isTame(); - } else - { - return false; - } - } - - public EntityAgeable createChild(EntityAgeable par1EntityAgeable) - { - return this.spawnBabyAnimal(par1EntityAgeable); - } -} diff --git a/src-backup/main/java/WayofTime/alchemicalWizardry/common/entity/mob/EntityShade.java b/src-backup/main/java/WayofTime/alchemicalWizardry/common/entity/mob/EntityShade.java deleted file mode 100644 index 068095a2..00000000 --- a/src-backup/main/java/WayofTime/alchemicalWizardry/common/entity/mob/EntityShade.java +++ /dev/null @@ -1,493 +0,0 @@ -package WayofTime.alchemicalWizardry.common.entity.mob; - -import WayofTime.alchemicalWizardry.AlchemicalWizardry; -import WayofTime.alchemicalWizardry.ModItems; -import WayofTime.alchemicalWizardry.common.EntityAITargetAggro; -import WayofTime.alchemicalWizardry.common.entity.projectile.HolyProjectile; -import WayofTime.alchemicalWizardry.common.spell.complex.effect.SpellHelper; -import net.minecraft.block.BlockColored; -import net.minecraft.entity.Entity; -import net.minecraft.entity.EntityAgeable; -import net.minecraft.entity.EntityLivingBase; -import net.minecraft.entity.SharedMonsterAttributes; -import net.minecraft.entity.ai.*; -import net.minecraft.entity.monster.EntityCreeper; -import net.minecraft.entity.monster.EntityGhast; -import net.minecraft.entity.passive.EntityAnimal; -import net.minecraft.entity.passive.EntityHorse; -import net.minecraft.entity.passive.EntityWolf; -import net.minecraft.entity.player.EntityPlayer; -import net.minecraft.entity.projectile.EntityArrow; -import net.minecraft.item.Item; -import net.minecraft.item.ItemFood; -import net.minecraft.item.ItemStack; -import net.minecraft.nbt.NBTTagCompound; -import net.minecraft.pathfinding.PathEntity; -import net.minecraft.util.DamageSource; -import net.minecraft.world.World; - -public class EntityShade extends EntityDemon -{ - //private EntityAIArrowAttack aiArrowAttack = new EntityAIArrowAttack(this, 1.0D, 40, 40, 15.0F); - private EntityAIAttackOnCollide aiAttackOnCollide = new EntityAIAttackOnCollide(this, EntityPlayer.class, 1.2D, false); - - private static float maxTamedHealth = 50.0F; - private static float maxUntamedHealth = 100.0F; - - public EntityShade(World par1World) - { - super(par1World, AlchemicalWizardry.entityShadeID); - this.setSize(0.8F, 2.0F); - this.getNavigator().setAvoidsWater(true); - this.tasks.addTask(1, new EntityAISwimming(this)); - this.tasks.addTask(2, this.aiSit); - //this.tasks.addTask(3, new EntityAILeapAtTarget(this, 0.4F)); - this.tasks.addTask(4, new EntityAIAttackOnCollide(this, 1.0D, true)); - this.tasks.addTask(5, new EntityAIFollowOwner(this, 1.0D, 10.0F, 2.0F)); - //this.tasks.addTask(6, new EntityAIMate(this, 1.0D)); - this.tasks.addTask(7, new EntityAIWander(this, 1.0D)); - //this.tasks.addTask(8, new EntityAIBeg(this, 8.0F)); - this.tasks.addTask(9, new EntityAIWatchClosest(this, EntityPlayer.class, 8.0F)); - this.tasks.addTask(9, new EntityAILookIdle(this)); - this.targetTasks.addTask(1, new EntityAIOwnerHurtByTarget(this)); - this.targetTasks.addTask(2, new EntityAIOwnerHurtTarget(this)); - this.targetTasks.addTask(3, new EntityAIHurtByTarget(this, true)); - this.targetTasks.addTask(4, new EntityAITargetAggro(this, EntityPlayer.class, 0, false)); - this.setAggro(false); - //this.targetTasks.addTask(4, new EntityAITargetNonTamed(this, EntitySheep.class, 200, false)); - this.setTamed(false); - - if (par1World != null && !par1World.isRemote) - { - this.setCombatTask(); - } - - //this.isImmuneToFire = true; - } - - @Override - protected void applyEntityAttributes() - { - super.applyEntityAttributes(); - //This line affects the speed of the monster - this.getEntityAttribute(SharedMonsterAttributes.movementSpeed).setBaseValue(0.30000001192092896D); - - //My guess is that this will alter the max health - if (this.isTamed()) - { - this.getEntityAttribute(SharedMonsterAttributes.maxHealth).setBaseValue(this.maxTamedHealth); - } else - { - this.getEntityAttribute(SharedMonsterAttributes.maxHealth).setBaseValue(this.maxUntamedHealth); - } - - //this.func_110148_a(SharedMonsterAttributes.field_111267_a).func_111128_a(10.0D); - } - - /** - * Returns true if the newer Entity AI code should be run - */ - public boolean isAIEnabled() - { - return true; - } - - /** - * Sets the active target the Task system uses for tracking - */ - public void setAttackTarget(EntityLivingBase par1EntityLivingBase) - { - super.setAttackTarget(par1EntityLivingBase); - - if (par1EntityLivingBase == null) - { - this.setAngry(false); - } else if (!this.isTamed()) - { - this.setAngry(true); - } - } - - /** - * main AI tick function, replaces updateEntityActionState - */ - protected void updateAITick() - { - this.dataWatcher.updateObject(18, Float.valueOf(this.getHealth())); - } - - protected void entityInit() - { - super.entityInit(); - this.dataWatcher.addObject(18, new Float(this.getHealth())); - this.dataWatcher.addObject(19, new Byte((byte) 0)); - //this.dataWatcher.addObject(20, new Byte((byte) BlockColored.getBlockFromDye(1))); - } - - /** - * Plays step sound at given x, y, z for the entity - */ - protected void playStepSound(int par1, int par2, int par3, int par4) - { - this.playSound("mob.zombie.step", 0.15F, 1.0F); - } - - /** - * (abstract) Protected helper method to write subclass entity data to NBT. - */ - public void writeEntityToNBT(NBTTagCompound par1NBTTagCompound) - { - super.writeEntityToNBT(par1NBTTagCompound); - par1NBTTagCompound.setBoolean("Angry", this.isAngry()); - } - - /** - * (abstract) Protected helper method to read subclass entity data from NBT. - */ - public void readEntityFromNBT(NBTTagCompound par1NBTTagCompound) - { - super.readEntityFromNBT(par1NBTTagCompound); - this.setAngry(par1NBTTagCompound.getBoolean("Angry")); - - this.setCombatTask(); - } - - /** - * Returns the sound this mob makes while it's alive. - */ - protected String getLivingSound() - { - //TODO change sounds - return "none"; - } - - /** - * Returns the sound this mob makes when it is hurt. - */ - protected String getHurtSound() - { - return "none"; - } - - /** - * Returns the sound this mob makes on death. - */ - protected String getDeathSound() - { - return "none"; - } - - /** - * Returns the volume for the sounds this mob makes. - */ - protected float getSoundVolume() - { - return 0.4F; - } - - /** - * Returns the item ID for the item the mob drops on death. - */ - protected int getDropItemId() - { - return -1; - } - - /** - * Called frequently so the entity can update its state every tick as required. For example, zombies and skeletons - * use this to react to sunlight and start to burn. - */ - public void onLivingUpdate() - { - super.onLivingUpdate(); - } - - /** - * Called to update the entity's position/logic. - */ - public void onUpdate() - { - super.onUpdate(); - } - - public float getEyeHeight() - { - return this.height * 0.8F; - } - - /** - * The speed it takes to move the entityliving's rotationPitch through the faceEntity method. This is only currently - * use in wolves. - */ - public int getVerticalFaceSpeed() - { - return this.isSitting() ? 20 : super.getVerticalFaceSpeed(); - } - - /** - * Called when the entity is attacked. - */ - public boolean attackEntityFrom(DamageSource par1DamageSource, float par2) - { - if (this.isEntityInvulnerable()) - { - return false; - } else - { - Entity entity = par1DamageSource.getEntity(); - this.aiSit.setSitting(false); - - if (entity != null && !(entity instanceof EntityPlayer) && !(entity instanceof EntityArrow)) - { - par2 = (par2 + 1.0F) / 2.0F; - } - - return super.attackEntityFrom(par1DamageSource, par2); - } - } - - public boolean attackEntityAsMob(Entity par1Entity) - { - int i = this.isTamed() ? 6 : 7; - return par1Entity.attackEntityFrom(DamageSource.causeMobDamage(this), (float) i); - } - - public void setTamed(boolean par1) - { - super.setTamed(par1); - - if (par1) - { - this.getEntityAttribute(SharedMonsterAttributes.maxHealth).setBaseValue(this.maxTamedHealth); - } else - { - this.getEntityAttribute(SharedMonsterAttributes.maxHealth).setBaseValue(this.maxUntamedHealth); - } - } - - /** - * Called when a player interacts with a mob. e.g. gets milk from a cow, gets into the saddle on a pig. - */ - @Override - public boolean interact(EntityPlayer par1EntityPlayer) - { - ItemStack itemstack = par1EntityPlayer.inventory.getCurrentItem(); - - if (this.isTamed()) - { - if (itemstack != null) - { - if (itemstack.getItem() instanceof ItemFood) - { - ItemFood itemfood = (ItemFood) itemstack.getItem(); - - if (itemfood.isWolfsFavoriteMeat() && this.dataWatcher.getWatchableObjectFloat(18) < this.maxTamedHealth) - { - if (!par1EntityPlayer.capabilities.isCreativeMode) - { - --itemstack.stackSize; - } - - this.heal((float) itemfood.func_150905_g(itemstack)); - - if (itemstack.stackSize <= 0) - { - par1EntityPlayer.inventory.setInventorySlotContents(par1EntityPlayer.inventory.currentItem, (ItemStack) null); - } - - return true; - } - } - } - - if (this.getOwner() instanceof EntityPlayer && SpellHelper.getUsername(par1EntityPlayer).equalsIgnoreCase(SpellHelper.getUsername((EntityPlayer)this.getOwner())) && !this.isBreedingItem(itemstack)) - { - if (!this.worldObj.isRemote) - { - this.aiSit.setSitting(!this.isSitting()); - this.isJumping = false; - this.setPathToEntity((PathEntity) null); - this.setTarget((Entity) null); - this.setAttackTarget((EntityLivingBase) null); - } - - this.sendSittingMessageToPlayer(par1EntityPlayer, !this.isSitting()); - } - } else if (itemstack != null && itemstack.getItem().equals(ModItems.weakBloodOrb) && !this.isAngry()) - { - if (!par1EntityPlayer.capabilities.isCreativeMode) - { - --itemstack.stackSize; - } - - if (itemstack.stackSize <= 0) - { - par1EntityPlayer.inventory.setInventorySlotContents(par1EntityPlayer.inventory.currentItem, (ItemStack) null); - } - - if (!this.worldObj.isRemote) - { - if (this.rand.nextInt(1) == 0) - { - this.setTamed(true); - this.setPathToEntity((PathEntity) null); - this.setAttackTarget((EntityLivingBase) null); - this.aiSit.setSitting(true); - this.setHealth(this.maxTamedHealth); - this.func_152115_b(par1EntityPlayer.getUniqueID().toString()); - this.playTameEffect(true); - this.worldObj.setEntityState(this, (byte) 7); - } else - { - this.playTameEffect(false); - this.worldObj.setEntityState(this, (byte) 6); - } - } - - return true; - } - - return super.interact(par1EntityPlayer); - } - - - /** - * Checks if the parameter is an item which this animal can be fed to breed it (wheat, carrots or seeds depending on - * the animal type) - */ - public boolean isBreedingItem(ItemStack par1ItemStack) - { - return false; - //return par1ItemStack == null ? false : (!(Item.itemsList[par1ItemStack.itemID] instanceof ItemFood) ? false : ((ItemFood)Item.itemsList[par1ItemStack.itemID]).isWolfsFavoriteMeat()); - } - - /** - * Determines whether this wolf is angry or not. - */ - public boolean isAngry() - { - return (this.dataWatcher.getWatchableObjectByte(16) & 2) != 0; - } - - /** - * Sets whether this wolf is angry or not. - */ - public void setAngry(boolean par1) - { - byte b0 = this.dataWatcher.getWatchableObjectByte(16); - - if (par1) - { - this.dataWatcher.updateObject(16, Byte.valueOf((byte) (b0 | 2))); - } else - { - this.dataWatcher.updateObject(16, Byte.valueOf((byte) (b0 & -3))); - } - } - - /** - * Return this wolf's collar color. - */ - public int getCollarColor() - { - return this.dataWatcher.getWatchableObjectByte(20) & 15; - } - - /** - * Set this wolf's collar color. - */ - public void setCollarColor(int par1) - { - this.dataWatcher.updateObject(20, Byte.valueOf((byte) (par1 & 15))); - } - - /** - * This function is used when two same-species animals in 'love mode' breed to generate the new baby animal. - */ - public EntityWolf spawnBabyAnimal(EntityAgeable par1EntityAgeable) - { - return null; - } - - public void func_70918_i(boolean par1) - { - if (par1) - { - this.dataWatcher.updateObject(19, Byte.valueOf((byte) 1)); - } else - { - this.dataWatcher.updateObject(19, Byte.valueOf((byte) 0)); - } - } - - /** - * Returns true if the mob is currently able to mate with the specified mob. - */ - public boolean canMateWith(EntityAnimal par1EntityAnimal) - { - return false; - } - - public boolean func_70922_bv() - { - return this.dataWatcher.getWatchableObjectByte(19) == 1; - } - - /** - * Determines if an entity can be despawned, used on idle far away entities - */ - protected boolean canDespawn() - { - //return !this.isTamed() && this.ticksExisted > 2400; - return false; - } - - public boolean func_142018_a(EntityLivingBase par1EntityLivingBase, EntityLivingBase par2EntityLivingBase) - { - if (!(par1EntityLivingBase instanceof EntityCreeper) && !(par1EntityLivingBase instanceof EntityGhast)) - { - if (par1EntityLivingBase instanceof EntityBoulderFist) - { - EntityBoulderFist entitywolf = (EntityBoulderFist) par1EntityLivingBase; - - if (entitywolf.isTamed() && entitywolf.getOwner() == par2EntityLivingBase) - { - return false; - } - } - - return par1EntityLivingBase instanceof EntityPlayer && par2EntityLivingBase instanceof EntityPlayer && !((EntityPlayer) par2EntityLivingBase).canAttackPlayer((EntityPlayer) par1EntityLivingBase) ? false : !(par1EntityLivingBase instanceof EntityHorse) || !((EntityHorse) par1EntityLivingBase).isTame(); - } else - { - return false; - } - } - - public EntityAgeable createChild(EntityAgeable par1EntityAgeable) - { - return this.spawnBabyAnimal(par1EntityAgeable); - } - - /** - * Attack the specified entity using a ranged attack. - */ - public void attackEntityWithRangedAttack(EntityLivingBase par1EntityLivingBase, float par2) - { - double xCoord; - double yCoord; - double zCoord; - HolyProjectile hol = new HolyProjectile(worldObj, this, par1EntityLivingBase, 1.8f, 0f, 5, 600); - this.worldObj.spawnEntityInWorld(hol); - } - - /** - * sets this entity's combat AI. - */ - public void setCombatTask() - { - this.tasks.removeTask(this.aiAttackOnCollide); - //this.tasks.removeTask(this.aiArrowAttack); - ItemStack itemstack = this.getHeldItem(); - this.tasks.addTask(4, this.aiAttackOnCollide); - } -} \ No newline at end of file diff --git a/src-backup/main/java/WayofTime/alchemicalWizardry/common/entity/mob/EntityShadeElemental.java b/src-backup/main/java/WayofTime/alchemicalWizardry/common/entity/mob/EntityShadeElemental.java deleted file mode 100644 index 004fcce4..00000000 --- a/src-backup/main/java/WayofTime/alchemicalWizardry/common/entity/mob/EntityShadeElemental.java +++ /dev/null @@ -1,27 +0,0 @@ -package WayofTime.alchemicalWizardry.common.entity.mob; - -import WayofTime.alchemicalWizardry.AlchemicalWizardry; -import net.minecraft.entity.Entity; -import net.minecraft.entity.EntityLivingBase; -import net.minecraft.entity.monster.IMob; -import net.minecraft.potion.Potion; -import net.minecraft.potion.PotionEffect; -import net.minecraft.world.World; - -public class EntityShadeElemental extends EntityElemental implements IMob -{ - public EntityShadeElemental(World world) - { - super(world, AlchemicalWizardry.entityShadeElementalID); - } - - public void inflictEffectOnEntity(Entity target) - { - if (target instanceof EntityLivingBase) - { - ((EntityLivingBase) target).addPotionEffect(new PotionEffect(Potion.blindness.id, 100, 1)); - ((EntityLivingBase) target).addPotionEffect(new PotionEffect(AlchemicalWizardry.customPotionInhibit.id, 150, 0)); - ((EntityLivingBase) target).addPotionEffect(new PotionEffect(Potion.nightVision.id, 100, 0)); - } - } -} \ No newline at end of file diff --git a/src-backup/main/java/WayofTime/alchemicalWizardry/common/entity/mob/EntitySmallEarthGolem.java b/src-backup/main/java/WayofTime/alchemicalWizardry/common/entity/mob/EntitySmallEarthGolem.java deleted file mode 100644 index 73e4e076..00000000 --- a/src-backup/main/java/WayofTime/alchemicalWizardry/common/entity/mob/EntitySmallEarthGolem.java +++ /dev/null @@ -1,500 +0,0 @@ -package WayofTime.alchemicalWizardry.common.entity.mob; - -import net.minecraft.entity.Entity; -import net.minecraft.entity.EntityAgeable; -import net.minecraft.entity.EntityLivingBase; -import net.minecraft.entity.IRangedAttackMob; -import net.minecraft.entity.SharedMonsterAttributes; -import net.minecraft.entity.ai.EntityAIArrowAttack; -import net.minecraft.entity.ai.EntityAIAttackOnCollide; -import net.minecraft.entity.ai.EntityAIFollowOwner; -import net.minecraft.entity.ai.EntityAIHurtByTarget; -import net.minecraft.entity.ai.EntityAILookIdle; -import net.minecraft.entity.ai.EntityAIOwnerHurtByTarget; -import net.minecraft.entity.ai.EntityAIOwnerHurtTarget; -import net.minecraft.entity.ai.EntityAISwimming; -import net.minecraft.entity.ai.EntityAIWander; -import net.minecraft.entity.ai.EntityAIWatchClosest; -import net.minecraft.entity.monster.EntityCreeper; -import net.minecraft.entity.monster.EntityGhast; -import net.minecraft.entity.passive.EntityAnimal; -import net.minecraft.entity.passive.EntityHorse; -import net.minecraft.entity.passive.EntityWolf; -import net.minecraft.entity.player.EntityPlayer; -import net.minecraft.entity.projectile.EntityArrow; -import net.minecraft.item.ItemFood; -import net.minecraft.item.ItemStack; -import net.minecraft.nbt.NBTTagCompound; -import net.minecraft.pathfinding.PathEntity; -import net.minecraft.util.DamageSource; -import net.minecraft.world.World; -import WayofTime.alchemicalWizardry.AlchemicalWizardry; -import WayofTime.alchemicalWizardry.ModItems; -import WayofTime.alchemicalWizardry.common.EntityAITargetAggro; -import WayofTime.alchemicalWizardry.common.entity.projectile.MudProjectile; -import WayofTime.alchemicalWizardry.common.spell.complex.effect.SpellHelper; - -public class EntitySmallEarthGolem extends EntityDemon implements IRangedAttackMob -{ - private EntityAIArrowAttack aiArrowAttack = new EntityAIArrowAttack(this, 1.0D, 25, 25, 15.0F); - private EntityAIAttackOnCollide aiAttackOnCollide = new EntityAIAttackOnCollide(this, EntityPlayer.class, 1.2D, false); - - private static float maxTamedHealth = 20.0F; - private static float maxUntamedHealth = 10.0F; - - public EntitySmallEarthGolem(World par1World) - { - super(par1World, AlchemicalWizardry.entitySmallEarthGolemID); - this.setSize(0.2F, 1.0F); - this.getNavigator().setAvoidsWater(true); - this.tasks.addTask(1, new EntityAISwimming(this)); - this.tasks.addTask(2, this.aiSit); - //this.tasks.addTask(3, new EntityAILeapAtTarget(this, 0.4F)); - //this.tasks.addTask(4, new EntityAIAttackOnCollide(this, 1.0D, true)); - this.tasks.addTask(5, new EntityAIFollowOwner(this, 1.0D, 10.0F, 2.0F)); - //this.tasks.addTask(6, new EntityAIMate(this, 1.0D)); - this.tasks.addTask(7, new EntityAIWander(this, 1.0D)); - //this.tasks.addTask(8, new EntityAIBeg(this, 8.0F)); - this.tasks.addTask(9, new EntityAIWatchClosest(this, EntityPlayer.class, 8.0F)); - this.tasks.addTask(9, new EntityAILookIdle(this)); - this.targetTasks.addTask(1, new EntityAIOwnerHurtByTarget(this)); - this.targetTasks.addTask(2, new EntityAIOwnerHurtTarget(this)); - this.targetTasks.addTask(3, new EntityAIHurtByTarget(this, true)); - this.targetTasks.addTask(4, new EntityAITargetAggro(this, EntityPlayer.class, 0, false)); - this.setAggro(false); - //this.targetTasks.addTask(4, new EntityAITargetNonTamed(this, EntitySheep.class, 200, false)); - this.setTamed(false); - - if (par1World != null && !par1World.isRemote) - { - this.setCombatTask(); - } - - //this.isImmuneToFire = true; - } - - @Override - protected void applyEntityAttributes() - { - super.applyEntityAttributes(); - //This line affects the speed of the monster - this.getEntityAttribute(SharedMonsterAttributes.movementSpeed).setBaseValue(0.40000001192092896D); - - //My guess is that this will alter the max health - if (this.isTamed()) - { - this.getEntityAttribute(SharedMonsterAttributes.maxHealth).setBaseValue(this.maxTamedHealth); - } else - { - this.getEntityAttribute(SharedMonsterAttributes.maxHealth).setBaseValue(this.maxUntamedHealth); - } - - //this.func_110148_a(SharedMonsterAttributes.field_111267_a).func_111128_a(10.0D); - } - - /** - * Returns true if the newer Entity AI code should be run - */ - public boolean isAIEnabled() - { - return true; - } - - /** - * Sets the active target the Task system uses for tracking - */ - public void setAttackTarget(EntityLivingBase par1EntityLivingBase) - { - super.setAttackTarget(par1EntityLivingBase); - - if (par1EntityLivingBase == null) - { - this.setAngry(false); - } else if (!this.isTamed()) - { - this.setAngry(true); - } - } - - /** - * main AI tick function, replaces updateEntityActionState - */ - protected void updateAITick() - { - this.dataWatcher.updateObject(18, Float.valueOf(this.getHealth())); - } - - protected void entityInit() - { - super.entityInit(); - this.dataWatcher.addObject(18, new Float(this.getHealth())); - this.dataWatcher.addObject(19, new Byte((byte) 0)); - //this.dataWatcher.addObject(20, new Byte((byte) BlockColored.getBlockFromDye(1))); - } - - /** - * Plays step sound at given x, y, z for the entity - */ - protected void playStepSound(int par1, int par2, int par3, int par4) - { - this.playSound("mob.zombie.step", 0.15F, 1.0F); - } - - /** - * (abstract) Protected helper method to write subclass entity data to NBT. - */ - public void writeEntityToNBT(NBTTagCompound par1NBTTagCompound) - { - super.writeEntityToNBT(par1NBTTagCompound); - par1NBTTagCompound.setBoolean("Angry", this.isAngry()); - } - - /** - * (abstract) Protected helper method to read subclass entity data from NBT. - */ - public void readEntityFromNBT(NBTTagCompound par1NBTTagCompound) - { - super.readEntityFromNBT(par1NBTTagCompound); - this.setAngry(par1NBTTagCompound.getBoolean("Angry")); - - this.setCombatTask(); - } - - /** - * Returns the sound this mob makes while it's alive. - */ - protected String getLivingSound() - { - return "none"; - } - - /** - * Returns the sound this mob makes when it is hurt. - */ - protected String getHurtSound() - { - return "mob.irongolem.hit"; - } - - /** - * Returns the sound this mob makes on death. - */ - protected String getDeathSound() - { - return "mob.irongolem.death"; - } - - /** - * Returns the volume for the sounds this mob makes. - */ - protected float getSoundVolume() - { - return 0.4F; - } - - /** - * Returns the item ID for the item the mob drops on death. - */ - protected int getDropItemId() - { - return -1; - } - - /** - * Called frequently so the entity can update its state every tick as required. For example, zombies and skeletons - * use this to react to sunlight and start to burn. - */ - public void onLivingUpdate() - { - super.onLivingUpdate(); - } - - /** - * Called to update the entity's position/logic. - */ - public void onUpdate() - { - super.onUpdate(); - } - - public float getEyeHeight() - { - return this.height * 0.8F; - } - - /** - * The speed it takes to move the entityliving's rotationPitch through the faceEntity method. This is only currently - * use in wolves. - */ - public int getVerticalFaceSpeed() - { - return this.isSitting() ? 20 : super.getVerticalFaceSpeed(); - } - - /** - * Called when the entity is attacked. - */ - public boolean attackEntityFrom(DamageSource par1DamageSource, float par2) - { - if (this.isEntityInvulnerable()) - { - return false; - } else - { - Entity entity = par1DamageSource.getEntity(); - this.aiSit.setSitting(false); - - if (entity != null && !(entity instanceof EntityPlayer) && !(entity instanceof EntityArrow)) - { - par2 = (par2 + 1.0F) / 2.0F; - } - - return super.attackEntityFrom(par1DamageSource, par2); - } - } - - public boolean attackEntityAsMob(Entity par1Entity) - { - int i = this.isTamed() ? 4 : 2; - return par1Entity.attackEntityFrom(DamageSource.causeMobDamage(this), (float) i); - } - - public void setTamed(boolean par1) - { - super.setTamed(par1); - - if (par1) - { - this.getEntityAttribute(SharedMonsterAttributes.maxHealth).setBaseValue(this.maxTamedHealth); - } else - { - this.getEntityAttribute(SharedMonsterAttributes.maxHealth).setBaseValue(this.maxUntamedHealth); - } - } - - /** - * Called when a player interacts with a mob. e.g. gets milk from a cow, gets into the saddle on a pig. - */ - @Override - public boolean interact(EntityPlayer par1EntityPlayer) - { - ItemStack itemstack = par1EntityPlayer.inventory.getCurrentItem(); - - if (this.isTamed()) - { - if (itemstack != null) - { - if (itemstack.getItem() instanceof ItemFood) - { - ItemFood itemfood = (ItemFood) itemstack.getItem(); - - if (itemfood.isWolfsFavoriteMeat() && this.dataWatcher.getWatchableObjectFloat(18) < this.maxTamedHealth) - { - if (!par1EntityPlayer.capabilities.isCreativeMode) - { - --itemstack.stackSize; - } - - this.heal((float) itemfood.func_150905_g(itemstack)); - - if (itemstack.stackSize <= 0) - { - par1EntityPlayer.inventory.setInventorySlotContents(par1EntityPlayer.inventory.currentItem, (ItemStack) null); - } - - return true; - } - } - } - - if (this.getOwner() instanceof EntityPlayer && SpellHelper.getUsername(par1EntityPlayer).equalsIgnoreCase(SpellHelper.getUsername((EntityPlayer)this.getOwner())) && !this.isBreedingItem(itemstack)) - { - if (!this.worldObj.isRemote) - { - this.aiSit.setSitting(!this.isSitting()); - this.isJumping = false; - this.setPathToEntity((PathEntity) null); - this.setTarget((Entity) null); - this.setAttackTarget((EntityLivingBase) null); - } - - this.sendSittingMessageToPlayer(par1EntityPlayer, !this.isSitting()); - } - } else if (itemstack != null && itemstack.getItem().equals(ModItems.weakBloodOrb) && !this.isAngry()) - { - if (!par1EntityPlayer.capabilities.isCreativeMode) - { - --itemstack.stackSize; - } - - if (itemstack.stackSize <= 0) - { - par1EntityPlayer.inventory.setInventorySlotContents(par1EntityPlayer.inventory.currentItem, (ItemStack) null); - } - - if (!this.worldObj.isRemote) - { - if (this.rand.nextInt(1) == 0) - { - this.setTamed(true); - this.setPathToEntity((PathEntity) null); - this.setAttackTarget((EntityLivingBase) null); - this.aiSit.setSitting(true); - this.setHealth(this.maxTamedHealth); - this.func_152115_b(par1EntityPlayer.getUniqueID().toString()); - this.playTameEffect(true); - this.worldObj.setEntityState(this, (byte) 7); - } else - { - this.playTameEffect(false); - this.worldObj.setEntityState(this, (byte) 6); - } - } - - return true; - } - - return super.interact(par1EntityPlayer); - } - - - /** - * Checks if the parameter is an item which this animal can be fed to breed it (wheat, carrots or seeds depending on - * the animal type) - */ - public boolean isBreedingItem(ItemStack par1ItemStack) - { - return false; - //return par1ItemStack == null ? false : (!(Item.itemsList[par1ItemStack.itemID] instanceof ItemFood) ? false : ((ItemFood)Item.itemsList[par1ItemStack.itemID]).isWolfsFavoriteMeat()); - } - - /** - * Determines whether this wolf is angry or not. - */ - public boolean isAngry() - { - return (this.dataWatcher.getWatchableObjectByte(16) & 2) != 0; - } - - /** - * Sets whether this wolf is angry or not. - */ - public void setAngry(boolean par1) - { - byte b0 = this.dataWatcher.getWatchableObjectByte(16); - - if (par1) - { - this.dataWatcher.updateObject(16, Byte.valueOf((byte) (b0 | 2))); - } else - { - this.dataWatcher.updateObject(16, Byte.valueOf((byte) (b0 & -3))); - } - } - - /** - * Return this wolf's collar color. - */ - public int getCollarColor() - { - return this.dataWatcher.getWatchableObjectByte(20) & 15; - } - - /** - * Set this wolf's collar color. - */ - public void setCollarColor(int par1) - { - this.dataWatcher.updateObject(20, Byte.valueOf((byte) (par1 & 15))); - } - - /** - * This function is used when two same-species animals in 'love mode' breed to generate the new baby animal. - */ - public EntityWolf spawnBabyAnimal(EntityAgeable par1EntityAgeable) - { - return null; - } - - public void func_70918_i(boolean par1) - { - if (par1) - { - this.dataWatcher.updateObject(19, Byte.valueOf((byte) 1)); - } else - { - this.dataWatcher.updateObject(19, Byte.valueOf((byte) 0)); - } - } - - /** - * Returns true if the mob is currently able to mate with the specified mob. - */ - public boolean canMateWith(EntityAnimal par1EntityAnimal) - { - return false; - } - - public boolean func_70922_bv() - { - return this.dataWatcher.getWatchableObjectByte(19) == 1; - } - - /** - * Determines if an entity can be despawned, used on idle far away entities - */ - protected boolean canDespawn() - { - //return !this.isTamed() && this.ticksExisted > 2400; - return false; - } - - public boolean func_142018_a(EntityLivingBase par1EntityLivingBase, EntityLivingBase par2EntityLivingBase) - { - if (!(par1EntityLivingBase instanceof EntityCreeper) && !(par1EntityLivingBase instanceof EntityGhast)) - { - if (par1EntityLivingBase instanceof EntitySmallEarthGolem) - { - EntitySmallEarthGolem entitywolf = (EntitySmallEarthGolem) par1EntityLivingBase; - - if (entitywolf.isTamed() && entitywolf.getOwner() == par2EntityLivingBase) - { - return false; - } - } - - return par1EntityLivingBase instanceof EntityPlayer && par2EntityLivingBase instanceof EntityPlayer && !((EntityPlayer) par2EntityLivingBase).canAttackPlayer((EntityPlayer) par1EntityLivingBase) ? false : !(par1EntityLivingBase instanceof EntityHorse) || !((EntityHorse) par1EntityLivingBase).isTame(); - } else - { - return false; - } - } - - public EntityAgeable createChild(EntityAgeable par1EntityAgeable) - { - return this.spawnBabyAnimal(par1EntityAgeable); - } - - /** - * Attack the specified entity using a ranged attack. - */ - public void attackEntityWithRangedAttack(EntityLivingBase par1EntityLivingBase, float par2) - { - double xCoord; - double yCoord; - double zCoord; - MudProjectile hol = new MudProjectile(worldObj, this, par1EntityLivingBase, 1.8f, 0f, 3, 600, false); - this.worldObj.spawnEntityInWorld(hol); - } - - /** - * sets this entity's combat AI. - */ - public void setCombatTask() - { - this.tasks.removeTask(this.aiAttackOnCollide); - this.tasks.removeTask(this.aiArrowAttack); - ItemStack itemstack = this.getHeldItem(); - this.tasks.addTask(4, this.aiArrowAttack); - } -} diff --git a/src-backup/main/java/WayofTime/alchemicalWizardry/common/entity/mob/EntityWaterElemental.java b/src-backup/main/java/WayofTime/alchemicalWizardry/common/entity/mob/EntityWaterElemental.java deleted file mode 100644 index ab141887..00000000 --- a/src-backup/main/java/WayofTime/alchemicalWizardry/common/entity/mob/EntityWaterElemental.java +++ /dev/null @@ -1,25 +0,0 @@ -package WayofTime.alchemicalWizardry.common.entity.mob; - -import WayofTime.alchemicalWizardry.AlchemicalWizardry; -import net.minecraft.entity.Entity; -import net.minecraft.entity.EntityLivingBase; -import net.minecraft.entity.monster.IMob; -import net.minecraft.potion.PotionEffect; -import net.minecraft.world.World; - -public class EntityWaterElemental extends EntityElemental implements IMob -{ - public EntityWaterElemental(World world) - { - super(world, AlchemicalWizardry.entityWaterElementalID); - } - - public void inflictEffectOnEntity(Entity target) - { - if (target instanceof EntityLivingBase) - { - ((EntityLivingBase) target).addPotionEffect(new PotionEffect(AlchemicalWizardry.customPotionDrowning.id, 100, 2)); - ((EntityLivingBase) target).addPotionEffect(new PotionEffect(AlchemicalWizardry.customPotionInhibit.id, 150, 0)); - } - } -} \ No newline at end of file diff --git a/src-backup/main/java/WayofTime/alchemicalWizardry/common/entity/mob/EntityWingedFireDemon.java b/src-backup/main/java/WayofTime/alchemicalWizardry/common/entity/mob/EntityWingedFireDemon.java deleted file mode 100644 index 804cdb65..00000000 --- a/src-backup/main/java/WayofTime/alchemicalWizardry/common/entity/mob/EntityWingedFireDemon.java +++ /dev/null @@ -1,503 +0,0 @@ -package WayofTime.alchemicalWizardry.common.entity.mob; - -import net.minecraft.block.BlockColored; -import net.minecraft.entity.Entity; -import net.minecraft.entity.EntityAgeable; -import net.minecraft.entity.EntityLivingBase; -import net.minecraft.entity.IRangedAttackMob; -import net.minecraft.entity.SharedMonsterAttributes; -import net.minecraft.entity.ai.EntityAIArrowAttack; -import net.minecraft.entity.ai.EntityAIAttackOnCollide; -import net.minecraft.entity.ai.EntityAIFollowOwner; -import net.minecraft.entity.ai.EntityAIHurtByTarget; -import net.minecraft.entity.ai.EntityAILookIdle; -import net.minecraft.entity.ai.EntityAIOwnerHurtByTarget; -import net.minecraft.entity.ai.EntityAIOwnerHurtTarget; -import net.minecraft.entity.ai.EntityAISwimming; -import net.minecraft.entity.ai.EntityAIWander; -import net.minecraft.entity.ai.EntityAIWatchClosest; -import net.minecraft.entity.monster.EntityCreeper; -import net.minecraft.entity.monster.EntityGhast; -import net.minecraft.entity.passive.EntityAnimal; -import net.minecraft.entity.passive.EntityHorse; -import net.minecraft.entity.passive.EntityWolf; -import net.minecraft.entity.player.EntityPlayer; -import net.minecraft.entity.projectile.EntityArrow; -import net.minecraft.item.Item; -import net.minecraft.item.ItemFood; -import net.minecraft.item.ItemStack; -import net.minecraft.nbt.NBTTagCompound; -import net.minecraft.pathfinding.PathEntity; -import net.minecraft.util.DamageSource; -import net.minecraft.world.World; -import WayofTime.alchemicalWizardry.AlchemicalWizardry; -import WayofTime.alchemicalWizardry.ModItems; -import WayofTime.alchemicalWizardry.common.EntityAITargetAggro; -import WayofTime.alchemicalWizardry.common.entity.projectile.FireProjectile; -import WayofTime.alchemicalWizardry.common.spell.complex.effect.SpellHelper; - -public class EntityWingedFireDemon extends EntityDemon implements IRangedAttackMob -{ - private EntityAIArrowAttack aiArrowAttack = new EntityAIArrowAttack(this, 1.0D, 40, 40, 15.0F); - private EntityAIAttackOnCollide aiAttackOnCollide = new EntityAIAttackOnCollide(this, EntityPlayer.class, 1.2D, false); - - private static float maxTamedHealth = 100.0F; - private static float maxUntamedHealth = 200.0F; - - public EntityWingedFireDemon(World par1World) - { - super(par1World, AlchemicalWizardry.entityWingedFireDemonID); - this.setSize(0.7F, 1.8F); - this.getNavigator().setAvoidsWater(true); - this.tasks.addTask(1, new EntityAISwimming(this)); - this.tasks.addTask(2, this.aiSit); - //this.tasks.addTask(3, new EntityAILeapAtTarget(this, 0.4F)); - //this.tasks.addTask(4, new EntityAIAttackOnCollide(this, 1.0D, true)); - this.tasks.addTask(5, new EntityAIFollowOwner(this, 1.0D, 10.0F, 2.0F)); - //this.tasks.addTask(6, new EntityAIMate(this, 1.0D)); - this.tasks.addTask(7, new EntityAIWander(this, 1.0D)); - //this.tasks.addTask(8, new EntityAIBeg(this, 8.0F)); - this.tasks.addTask(9, new EntityAIWatchClosest(this, EntityPlayer.class, 8.0F)); - this.tasks.addTask(9, new EntityAILookIdle(this)); - this.targetTasks.addTask(1, new EntityAIOwnerHurtByTarget(this)); - this.targetTasks.addTask(2, new EntityAIOwnerHurtTarget(this)); - this.targetTasks.addTask(3, new EntityAIHurtByTarget(this, true)); - this.targetTasks.addTask(4, new EntityAITargetAggro(this, EntityPlayer.class, 0, false)); - this.setAggro(false); - //this.targetTasks.addTask(4, new EntityAITargetNonTamed(this, EntitySheep.class, 200, false)); - this.setTamed(false); - - if (par1World != null && !par1World.isRemote) - { - this.setCombatTask(); - } - - this.isImmuneToFire = true; - } - - @Override - protected void applyEntityAttributes() - { - super.applyEntityAttributes(); - //This line affects the speed of the monster - this.getEntityAttribute(SharedMonsterAttributes.movementSpeed).setBaseValue(0.30000001192092896D); - - //My guess is that this will alter the max health - if (this.isTamed()) - { - this.getEntityAttribute(SharedMonsterAttributes.maxHealth).setBaseValue(this.maxTamedHealth); - } else - { - this.getEntityAttribute(SharedMonsterAttributes.maxHealth).setBaseValue(this.maxUntamedHealth); - } - - //this.func_110148_a(SharedMonsterAttributes.field_111267_a).func_111128_a(10.0D); - } - - /** - * Returns true if the newer Entity AI code should be run - */ - public boolean isAIEnabled() - { - return true; - } - - /** - * Sets the active target the Task system uses for tracking - */ - public void setAttackTarget(EntityLivingBase par1EntityLivingBase) - { - super.setAttackTarget(par1EntityLivingBase); - - if (par1EntityLivingBase == null) - { - this.setAngry(false); - } else if (!this.isTamed()) - { - this.setAngry(true); - } - } - - /** - * main AI tick function, replaces updateEntityActionState - */ - protected void updateAITick() - { - this.dataWatcher.updateObject(18, Float.valueOf(this.getHealth())); - } - - protected void entityInit() - { - super.entityInit(); - this.dataWatcher.addObject(18, new Float(this.getHealth())); - this.dataWatcher.addObject(19, new Byte((byte) 0)); - //this.dataWatcher.addObject(20, new Byte((byte) BlockColored.getBlockFromDye(1))); - } - - /** - * Plays step sound at given x, y, z for the entity - */ - protected void playStepSound(int par1, int par2, int par3, int par4) - { - this.playSound("mob.zombie.step", 0.15F, 1.0F); - } - - /** - * (abstract) Protected helper method to write subclass entity data to NBT. - */ - public void writeEntityToNBT(NBTTagCompound par1NBTTagCompound) - { - super.writeEntityToNBT(par1NBTTagCompound); - par1NBTTagCompound.setBoolean("Angry", this.isAngry()); - } - - /** - * (abstract) Protected helper method to read subclass entity data from NBT. - */ - public void readEntityFromNBT(NBTTagCompound par1NBTTagCompound) - { - super.readEntityFromNBT(par1NBTTagCompound); - this.setAngry(par1NBTTagCompound.getBoolean("Angry")); - - this.setCombatTask(); - } - - /** - * Returns the sound this mob makes while it's alive. - */ - protected String getLivingSound() - { - return "mob.blaze.breathe"; - } - - /** - * Returns the sound this mob makes when it is hurt. - */ - protected String getHurtSound() - { - return "mob.blaze.hit"; - } - - /** - * Returns the sound this mob makes on death. - */ - protected String getDeathSound() - { - return "mob.blaze.death"; - } - - /** - * Returns the volume for the sounds this mob makes. - */ - protected float getSoundVolume() - { - return 0.4F; - } - - /** - * Returns the item ID for the item the mob drops on death. - */ - protected int getDropItemId() - { - return -1; - } - - /** - * Called frequently so the entity can update its state every tick as required. For example, zombies and skeletons - * use this to react to sunlight and start to burn. - */ - public void onLivingUpdate() - { - super.onLivingUpdate(); - } - - /** - * Called to update the entity's position/logic. - */ - public void onUpdate() - { - super.onUpdate(); - } - - public float getEyeHeight() - { - return this.height * 0.8F; - } - - /** - * The speed it takes to move the entityliving's rotationPitch through the faceEntity method. This is only currently - * use in wolves. - */ - public int getVerticalFaceSpeed() - { - return this.isSitting() ? 20 : super.getVerticalFaceSpeed(); - } - - /** - * Called when the entity is attacked. - */ - public boolean attackEntityFrom(DamageSource par1DamageSource, float par2) - { - if (this.isEntityInvulnerable()) - { - return false; - } else - { - Entity entity = par1DamageSource.getEntity(); - this.aiSit.setSitting(false); - - if (entity != null && !(entity instanceof EntityPlayer) && !(entity instanceof EntityArrow)) - { - par2 = (par2 + 1.0F) / 2.0F; - } - - return super.attackEntityFrom(par1DamageSource, par2); - } - } - - public boolean attackEntityAsMob(Entity par1Entity) - { - int i = this.isTamed() ? 4 : 2; - return par1Entity.attackEntityFrom(DamageSource.causeMobDamage(this), (float) i); - } - - public void setTamed(boolean par1) - { - super.setTamed(par1); - - if (par1) - { - this.getEntityAttribute(SharedMonsterAttributes.maxHealth).setBaseValue(this.maxTamedHealth); - } else - { - this.getEntityAttribute(SharedMonsterAttributes.maxHealth).setBaseValue(this.maxUntamedHealth); - } - } - - /** - * Called when a player interacts with a mob. e.g. gets milk from a cow, gets into the saddle on a pig. - */ - @Override - public boolean interact(EntityPlayer par1EntityPlayer) - { - ItemStack itemstack = par1EntityPlayer.inventory.getCurrentItem(); - - if (this.isTamed()) - { - if (itemstack != null) - { - if (itemstack.getItem() instanceof ItemFood) - { - ItemFood itemfood = (ItemFood) itemstack.getItem(); - - if (itemfood.isWolfsFavoriteMeat() && this.dataWatcher.getWatchableObjectFloat(18) < this.maxTamedHealth) - { - if (!par1EntityPlayer.capabilities.isCreativeMode) - { - --itemstack.stackSize; - } - - this.heal((float) itemfood.func_150905_g(itemstack)); - - if (itemstack.stackSize <= 0) - { - par1EntityPlayer.inventory.setInventorySlotContents(par1EntityPlayer.inventory.currentItem, (ItemStack) null); - } - - return true; - } - } - } - - if (this.getOwner() instanceof EntityPlayer && SpellHelper.getUsername(par1EntityPlayer).equalsIgnoreCase(SpellHelper.getUsername((EntityPlayer)this.getOwner())) && !this.isBreedingItem(itemstack)) - { - if (!this.worldObj.isRemote) - { - this.aiSit.setSitting(!this.isSitting()); - this.isJumping = false; - this.setPathToEntity((PathEntity) null); - this.setTarget((Entity) null); - this.setAttackTarget((EntityLivingBase) null); - } - - this.sendSittingMessageToPlayer(par1EntityPlayer, !this.isSitting()); - } - } else if (itemstack != null && itemstack.getItem().equals(ModItems.weakBloodOrb) && !this.isAngry()) - { - if (!par1EntityPlayer.capabilities.isCreativeMode) - { - --itemstack.stackSize; - } - - if (itemstack.stackSize <= 0) - { - par1EntityPlayer.inventory.setInventorySlotContents(par1EntityPlayer.inventory.currentItem, (ItemStack) null); - } - - if (!this.worldObj.isRemote) - { - if (this.rand.nextInt(1) == 0) - { - this.setTamed(true); - this.setPathToEntity((PathEntity) null); - this.setAttackTarget((EntityLivingBase) null); - this.aiSit.setSitting(true); - this.setHealth(this.maxTamedHealth); - this.func_152115_b(par1EntityPlayer.getUniqueID().toString()); - this.playTameEffect(true); - this.worldObj.setEntityState(this, (byte) 7); - } else - { - this.playTameEffect(false); - this.worldObj.setEntityState(this, (byte) 6); - } - } - - return true; - } - - return super.interact(par1EntityPlayer); - } - - - /** - * Checks if the parameter is an item which this animal can be fed to breed it (wheat, carrots or seeds depending on - * the animal type) - */ - public boolean isBreedingItem(ItemStack par1ItemStack) - { - return false; - //return par1ItemStack == null ? false : (!(Item.itemsList[par1ItemStack.itemID] instanceof ItemFood) ? false : ((ItemFood)Item.itemsList[par1ItemStack.itemID]).isWolfsFavoriteMeat()); - } - - /** - * Determines whether this wolf is angry or not. - */ - public boolean isAngry() - { - return (this.dataWatcher.getWatchableObjectByte(16) & 2) != 0; - } - - /** - * Sets whether this wolf is angry or not. - */ - public void setAngry(boolean par1) - { - byte b0 = this.dataWatcher.getWatchableObjectByte(16); - - if (par1) - { - this.dataWatcher.updateObject(16, Byte.valueOf((byte) (b0 | 2))); - } else - { - this.dataWatcher.updateObject(16, Byte.valueOf((byte) (b0 & -3))); - } - } - - /** - * Return this wolf's collar color. - */ - public int getCollarColor() - { - return this.dataWatcher.getWatchableObjectByte(20) & 15; - } - - /** - * Set this wolf's collar color. - */ - public void setCollarColor(int par1) - { - this.dataWatcher.updateObject(20, Byte.valueOf((byte) (par1 & 15))); - } - - /** - * This function is used when two same-species animals in 'love mode' breed to generate the new baby animal. - */ - public EntityWolf spawnBabyAnimal(EntityAgeable par1EntityAgeable) - { - return null; - } - - public void func_70918_i(boolean par1) - { - if (par1) - { - this.dataWatcher.updateObject(19, Byte.valueOf((byte) 1)); - } else - { - this.dataWatcher.updateObject(19, Byte.valueOf((byte) 0)); - } - } - - /** - * Returns true if the mob is currently able to mate with the specified mob. - */ - public boolean canMateWith(EntityAnimal par1EntityAnimal) - { - return false; - } - - public boolean func_70922_bv() - { - return this.dataWatcher.getWatchableObjectByte(19) == 1; - } - - /** - * Determines if an entity can be despawned, used on idle far away entities - */ - protected boolean canDespawn() - { - //return !this.isTamed() && this.ticksExisted > 2400; - return false; - } - - public boolean func_142018_a(EntityLivingBase par1EntityLivingBase, EntityLivingBase par2EntityLivingBase) - { - if (!(par1EntityLivingBase instanceof EntityCreeper) && !(par1EntityLivingBase instanceof EntityGhast)) - { - if (par1EntityLivingBase instanceof EntityWingedFireDemon) - { - EntityWingedFireDemon entitywolf = (EntityWingedFireDemon) par1EntityLivingBase; - - if (entitywolf.isTamed() && entitywolf.getOwner() == par2EntityLivingBase) - { - return false; - } - } - - return par1EntityLivingBase instanceof EntityPlayer && par2EntityLivingBase instanceof EntityPlayer && !((EntityPlayer) par2EntityLivingBase).canAttackPlayer((EntityPlayer) par1EntityLivingBase) ? false : !(par1EntityLivingBase instanceof EntityHorse) || !((EntityHorse) par1EntityLivingBase).isTame(); - } else - { - return false; - } - } - - public EntityAgeable createChild(EntityAgeable par1EntityAgeable) - { - return this.spawnBabyAnimal(par1EntityAgeable); - } - - /** - * Attack the specified entity using a ranged attack. - */ - public void attackEntityWithRangedAttack(EntityLivingBase par1EntityLivingBase, float par2) - { - double xCoord; - double yCoord; - double zCoord; - this.worldObj.playAuxSFXAtEntity((EntityPlayer) null, 1009, (int) this.posX, (int) this.posY, (int) this.posZ, 0); - FireProjectile hol = new FireProjectile(worldObj, this, par1EntityLivingBase, 1.8f, 0f, 20, 600); - this.worldObj.spawnEntityInWorld(hol); - } - - /** - * sets this entity's combat AI. - */ - public void setCombatTask() - { - this.tasks.removeTask(this.aiAttackOnCollide); - this.tasks.removeTask(this.aiArrowAttack); - ItemStack itemstack = this.getHeldItem(); - this.tasks.addTask(4, this.aiArrowAttack); - } -} diff --git a/src-backup/main/java/WayofTime/alchemicalWizardry/common/entity/projectile/EnergyBlastProjectile.java b/src-backup/main/java/WayofTime/alchemicalWizardry/common/entity/projectile/EnergyBlastProjectile.java deleted file mode 100644 index 3b5d6e71..00000000 --- a/src-backup/main/java/WayofTime/alchemicalWizardry/common/entity/projectile/EnergyBlastProjectile.java +++ /dev/null @@ -1,526 +0,0 @@ -package WayofTime.alchemicalWizardry.common.entity.projectile; - -import java.util.Iterator; -import java.util.List; - -import net.minecraft.block.Block; -import net.minecraft.entity.Entity; -import net.minecraft.entity.EntityLivingBase; -import net.minecraft.entity.IProjectile; -import net.minecraft.entity.player.EntityPlayer; -import net.minecraft.nbt.NBTTagCompound; -import net.minecraft.potion.Potion; -import net.minecraft.potion.PotionEffect; -import net.minecraft.util.AxisAlignedBB; -import net.minecraft.util.DamageSource; -import net.minecraft.util.MathHelper; -import net.minecraft.util.MovingObjectPosition; -import net.minecraft.util.Vec3; -import net.minecraft.world.World; -import cpw.mods.fml.common.registry.IThrowableEntity; -import cpw.mods.fml.relauncher.Side; -import cpw.mods.fml.relauncher.SideOnly; - -//Shamelessly ripped off from x3n0ph0b3 -public class EnergyBlastProjectile extends Entity implements IProjectile, IThrowableEntity -{ - protected int xTile = -1; - protected int yTile = -1; - protected int zTile = -1; - protected int inTile = 0; - protected int inData = 0; - protected boolean inGround = false; - /** - * The owner of this arrow. - */ - public EntityLivingBase shootingEntity; - protected int ticksInAir = 0; - protected int maxTicksInAir = 600; - private int ricochetCounter = 0; - private boolean scheduledForDeath = false; - protected int projectileDamage; - - public EnergyBlastProjectile(World par1World) - { - super(par1World); - this.setSize(0.5F, 0.5F); - this.maxTicksInAir = 600; - } - - public EnergyBlastProjectile(World par1World, double par2, double par4, double par6) - { - super(par1World); - this.setSize(0.5F, 0.5F); - this.setPosition(par2, par4, par6); - yOffset = 0.0F; - this.maxTicksInAir = 600; - } - - public EnergyBlastProjectile(World par1World, EntityLivingBase par2EntityPlayer, int damage) - { - super(par1World); - shootingEntity = par2EntityPlayer; - float par3 = 0.8F; - this.setSize(0.5F, 0.5F); - this.setLocationAndAngles(par2EntityPlayer.posX, par2EntityPlayer.posY + par2EntityPlayer.getEyeHeight(), par2EntityPlayer.posZ, par2EntityPlayer.rotationYaw, par2EntityPlayer.rotationPitch); - posX -= MathHelper.cos(rotationYaw / 180.0F * (float) Math.PI) * 0.16F; - posY -= 0.2D; - posZ -= MathHelper.sin(rotationYaw / 180.0F * (float) Math.PI) * 0.16F; - this.setPosition(posX, posY, posZ); - yOffset = 0.0F; - motionX = -MathHelper.sin(rotationYaw / 180.0F * (float) Math.PI) * MathHelper.cos(rotationPitch / 180.0F * (float) Math.PI); - motionZ = MathHelper.cos(rotationYaw / 180.0F * (float) Math.PI) * MathHelper.cos(rotationPitch / 180.0F * (float) Math.PI); - motionY = -MathHelper.sin(rotationPitch / 180.0F * (float) Math.PI); - this.setThrowableHeading(motionX, motionY, motionZ, par3 * 1.5F, 1.0F); - this.projectileDamage = damage; - this.maxTicksInAir = 600; - } - - public EnergyBlastProjectile(World par1World, EntityLivingBase par2EntityPlayer, int damage, int maxTicksInAir, double posX, double posY, double posZ, float rotationYaw, float rotationPitch) - { - super(par1World); - shootingEntity = par2EntityPlayer; - float par3 = 0.8F; - this.setSize(0.5F, 0.5F); - this.setLocationAndAngles(posX, posY, posZ, rotationYaw, rotationPitch); - posX -= MathHelper.cos(rotationYaw / 180.0F * (float) Math.PI) * 0.16F; - posY -= 0.2D; - posZ -= MathHelper.sin(rotationYaw / 180.0F * (float) Math.PI) * 0.16F; - this.setPosition(posX, posY, posZ); - yOffset = 0.0F; - motionX = -MathHelper.sin(rotationYaw / 180.0F * (float) Math.PI) * MathHelper.cos(rotationPitch / 180.0F * (float) Math.PI); - motionZ = MathHelper.cos(rotationYaw / 180.0F * (float) Math.PI) * MathHelper.cos(rotationPitch / 180.0F * (float) Math.PI); - motionY = -MathHelper.sin(rotationPitch / 180.0F * (float) Math.PI); - this.setThrowableHeading(motionX, motionY, motionZ, par3 * 1.5F, 1.0F); - this.projectileDamage = damage; - this.maxTicksInAir = maxTicksInAir; - } - - public EnergyBlastProjectile(World par1World, EntityLivingBase par2EntityLivingBase, EntityLivingBase par3EntityLivingBase, float par4, float par5, int damage, int maxTicksInAir) - { - super(par1World); - this.renderDistanceWeight = 10.0D; - this.shootingEntity = par2EntityLivingBase; - this.posY = par2EntityLivingBase.posY + (double) par2EntityLivingBase.getEyeHeight() - 0.10000000149011612D; - double d0 = par3EntityLivingBase.posX - par2EntityLivingBase.posX; - double d1 = par3EntityLivingBase.boundingBox.minY + (double) (par3EntityLivingBase.height / 1.5F) - this.posY; - double d2 = par3EntityLivingBase.posZ - par2EntityLivingBase.posZ; - double d3 = (double) MathHelper.sqrt_double(d0 * d0 + d2 * d2); - - if (d3 >= 1.0E-7D) - { - float f2 = (float) (Math.atan2(d2, d0) * 180.0D / Math.PI) - 90.0F; - float f3 = (float) (-(Math.atan2(d1, d3) * 180.0D / Math.PI)); - double d4 = d0 / d3; - double d5 = d2 / d3; - this.setLocationAndAngles(par2EntityLivingBase.posX + d4, this.posY, par2EntityLivingBase.posZ + d5, f2, f3); - this.yOffset = 0.0F; - float f4 = (float) d3 * 0.2F; - this.setThrowableHeading(d0, d1, d2, par4, par5); - } - - this.projectileDamage = damage; - this.maxTicksInAir = maxTicksInAir; - } - - @Override - protected void entityInit() - { - dataWatcher.addObject(16, Byte.valueOf((byte) 0)); - } - - /** - * Similar to setArrowHeading, it's point the throwable entity to a x, y, z - * direction. - */ - @Override - public void setThrowableHeading(double var1, double var3, double var5, float var7, float var8) - { - float var9 = MathHelper.sqrt_double(var1 * var1 + var3 * var3 + var5 * var5); - var1 /= var9; - var3 /= var9; - var5 /= var9; - var1 += rand.nextGaussian() * 0.007499999832361937D * var8; - var3 += rand.nextGaussian() * 0.007499999832361937D * var8; - var5 += rand.nextGaussian() * 0.007499999832361937D * var8; - var1 *= var7; - var3 *= var7; - var5 *= var7; - motionX = var1; - motionY = var3; - motionZ = var5; - float var10 = MathHelper.sqrt_double(var1 * var1 + var5 * var5); - prevRotationYaw = rotationYaw = (float) (Math.atan2(var1, var5) * 180.0D / Math.PI); - prevRotationPitch = rotationPitch = (float) (Math.atan2(var3, var10) * 180.0D / Math.PI); - } - - @Override - @SideOnly(Side.CLIENT) - /** - * Sets the position and rotation. Only difference from the other one is no bounding on the rotation. Args: posX, - * posY, posZ, yaw, pitch - */ - public void setPositionAndRotation2(double par1, double par3, double par5, float par7, float par8, int par9) - { - this.setPosition(par1, par3, par5); - this.setRotation(par7, par8); - } - - @Override - @SideOnly(Side.CLIENT) - /** - * Sets the velocity to the args. Args: x, y, z - */ - public void setVelocity(double par1, double par3, double par5) - { - motionX = par1; - motionY = par3; - motionZ = par5; - - if (prevRotationPitch == 0.0F && prevRotationYaw == 0.0F) - { - float var7 = MathHelper.sqrt_double(par1 * par1 + par5 * par5); - prevRotationYaw = rotationYaw = (float) (Math.atan2(par1, par5) * 180.0D / Math.PI); - prevRotationPitch = rotationPitch = (float) (Math.atan2(par3, var7) * 180.0D / Math.PI); - prevRotationPitch = rotationPitch; - prevRotationYaw = rotationYaw; - this.setLocationAndAngles(posX, posY, posZ, rotationYaw, rotationPitch); - } - } - - /** - * Called to update the entity's position/logic. - */ - @Override - public void onUpdate() - { - super.onUpdate(); - - if (ticksInAir > maxTicksInAir) - { - this.setDead(); - } - - if (shootingEntity == null) - { - List players = worldObj.getEntitiesWithinAABB(EntityPlayer.class, AxisAlignedBB.getBoundingBox(posX - 1, posY - 1, posZ - 1, posX + 1, posY + 1, posZ + 1)); - Iterator i = players.iterator(); - double closestDistance = Double.MAX_VALUE; - EntityPlayer closestPlayer = null; - - while (i.hasNext()) - { - EntityPlayer e = (EntityPlayer) i.next(); - double distance = e.getDistanceToEntity(this); - - if (distance < closestDistance) - { - closestPlayer = e; - } - } - - if (closestPlayer != null) - { - shootingEntity = closestPlayer; - } - } - - if (prevRotationPitch == 0.0F && prevRotationYaw == 0.0F) - { - float var1 = MathHelper.sqrt_double(motionX * motionX + motionZ * motionZ); - prevRotationYaw = rotationYaw = (float) (Math.atan2(motionX, motionZ) * 180.0D / Math.PI); - prevRotationPitch = rotationPitch = (float) (Math.atan2(motionY, var1) * 180.0D / Math.PI); - } - - Block var16 = worldObj.getBlock(xTile, yTile, zTile); - - if (var16 != null) - { - var16.setBlockBoundsBasedOnState(worldObj, xTile, yTile, zTile); - AxisAlignedBB var2 = var16.getCollisionBoundingBoxFromPool(worldObj, xTile, yTile, zTile); - - if (var2 != null && var2.isVecInside(Vec3.createVectorHelper(posX, posY, posZ))) - { - inGround = true; - } - } - - if (inGround) - { - Block var18 = worldObj.getBlock(xTile, yTile, zTile); - int var19 = worldObj.getBlockMetadata(xTile, yTile, zTile); - - if (var18.equals(Block.getBlockById(inTile)) && var19 == inData) - { - // this.groundImpact(); - // this.setDead(); - } - } else - { - ++ticksInAir; - - if (ticksInAir > 1 && ticksInAir < 3) - { - //worldObj.spawnParticle("flame", posX + smallGauss(0.1D), posY + smallGauss(0.1D), posZ + smallGauss(0.1D), 0D, 0D, 0D); - for (int particles = 0; particles < 3; particles++) - { - this.doFiringParticles(); - } - } - - Vec3 var17 = Vec3.createVectorHelper(posX, posY, posZ); - Vec3 var3 = Vec3.createVectorHelper(posX + motionX, posY + motionY, posZ + motionZ); - MovingObjectPosition var4 = worldObj.func_147447_a(var17, var3, true, false, false); - var17 = Vec3.createVectorHelper(posX, posY, posZ); - var3 = Vec3.createVectorHelper(posX + motionX, posY + motionY, posZ + motionZ); - - if (var4 != null) - { - var3 = Vec3.createVectorHelper(var4.hitVec.xCoord, var4.hitVec.yCoord, var4.hitVec.zCoord); - } - - Entity var5 = null; - List var6 = worldObj.getEntitiesWithinAABBExcludingEntity(this, boundingBox.addCoord(motionX, motionY, motionZ).expand(1.0D, 1.0D, 1.0D)); - double var7 = 0.0D; - Iterator var9 = var6.iterator(); - float var11; - - while (var9.hasNext()) - { - Entity var10 = (Entity) var9.next(); - - if (var10.canBeCollidedWith() && (var10 != shootingEntity || ticksInAir >= 5)) - { - var11 = 0.3F; - AxisAlignedBB var12 = var10.boundingBox.expand(var11, var11, var11); - MovingObjectPosition var13 = var12.calculateIntercept(var17, var3); - - if (var13 != null) - { - double var14 = var17.distanceTo(var13.hitVec); - - if (var14 < var7 || var7 == 0.0D) - { - var5 = var10; - var7 = var14; - } - } - } - } - - if (var5 != null) - { - var4 = new MovingObjectPosition(var5); - } - - if (var4 != null) - { - this.onImpact(var4); - - if (scheduledForDeath) - { - this.setDead(); - } - } - - posX += motionX; - posY += motionY; - posZ += motionZ; - MathHelper.sqrt_double(motionX * motionX + motionZ * motionZ); - this.setPosition(posX, posY, posZ); - //this.doBlockCollisions(); - } - } - - public void doFiringParticles() - { - worldObj.spawnParticle("mobSpellAmbient", posX + smallGauss(0.1D), posY + smallGauss(0.1D), posZ + smallGauss(0.1D), 0.5D, 0.5D, 0.5D); - worldObj.spawnParticle("flame", posX, posY, posZ, gaussian(motionX), gaussian(motionY), gaussian(motionZ)); - } - - /** - * (abstract) Protected helper method to write subclass entity data to NBT. - */ - @Override - public void writeEntityToNBT(NBTTagCompound par1NBTTagCompound) - { - par1NBTTagCompound.setShort("xTile", (short) xTile); - par1NBTTagCompound.setShort("yTile", (short) yTile); - par1NBTTagCompound.setShort("zTile", (short) zTile); - par1NBTTagCompound.setByte("inTile", (byte) inTile); - par1NBTTagCompound.setByte("inData", (byte) inData); - par1NBTTagCompound.setByte("inGround", (byte) (inGround ? 1 : 0)); - par1NBTTagCompound.setInteger("ticksInAir", ticksInAir); - par1NBTTagCompound.setInteger("maxTicksInAir", maxTicksInAir); - par1NBTTagCompound.setInteger("projectileDamage", this.projectileDamage); - } - - /** - * (abstract) Protected helper method to read subclass entity data from NBT. - */ - @Override - public void readEntityFromNBT(NBTTagCompound par1NBTTagCompound) - { - xTile = par1NBTTagCompound.getShort("xTile"); - yTile = par1NBTTagCompound.getShort("yTile"); - zTile = par1NBTTagCompound.getShort("zTile"); - inTile = par1NBTTagCompound.getByte("inTile") & 255; - inData = par1NBTTagCompound.getByte("inData") & 255; - inGround = par1NBTTagCompound.getByte("inGround") == 1; - ticksInAir = par1NBTTagCompound.getInteger("ticksInAir"); - maxTicksInAir = par1NBTTagCompound.getInteger("maxTicksInAir"); - projectileDamage = par1NBTTagCompound.getInteger("projectileDamage"); - } - - /** - * returns if this entity triggers Block.onEntityWalking on the blocks they - * walk on. used for spiders and wolves to prevent them from trampling crops - */ - @Override - protected boolean canTriggerWalking() - { - return false; - } - - @Override - @SideOnly(Side.CLIENT) - public float getShadowSize() - { - return 0.0F; - } - - /** - * Sets the amount of knockback the arrow applies when it hits a mob. - */ - public void setKnockbackStrength(int par1) - { - } - - /** - * If returns false, the item will not inflict any damage against entities. - */ - @Override - public boolean canAttackWithItem() - { - return false; - } - - /** - * Whether the arrow has a stream of critical hit particles flying behind - * it. - */ - public void setIsCritical(boolean par1) - { - byte var2 = dataWatcher.getWatchableObjectByte(16); - - if (par1) - { - dataWatcher.updateObject(16, Byte.valueOf((byte) (var2 | 1))); - } else - { - dataWatcher.updateObject(16, Byte.valueOf((byte) (var2 & -2))); - } - } - - /** - * Whether the arrow has a stream of critical hit particles flying behind - * it. - */ - public boolean getIsCritical() - { - byte var1 = dataWatcher.getWatchableObjectByte(16); - return (var1 & 1) != 0; - } - - public void onImpact(MovingObjectPosition mop) - { - if (mop.typeOfHit == MovingObjectPosition.MovingObjectType.ENTITY && mop.entityHit != null) - { - if (mop.entityHit == shootingEntity) - { - return; - } - - this.onImpact(mop.entityHit); - } else if (mop.typeOfHit == MovingObjectPosition.MovingObjectType.BLOCK) - { - worldObj.createExplosion(shootingEntity, this.posX, this.posY, this.posZ, (float) (0.1), true); - this.setDead(); - } - } - - public void onImpact(Entity mop) - { - if (mop == shootingEntity && ticksInAir > 3) - { - shootingEntity.attackEntityFrom(DamageSource.causeMobDamage(shootingEntity), 1); - this.setDead(); - } else - { - //doDamage(8 + d6(), mop); - if (mop instanceof EntityLivingBase) - { - ((EntityLivingBase) mop).addPotionEffect(new PotionEffect(Potion.weakness.id, 60, 2)); - } - - doDamage(projectileDamage, mop); - worldObj.createExplosion(shootingEntity, this.posX, this.posY, this.posZ, (float) (0.1), true); - } - - spawnHitParticles("magicCrit", 8); - this.setDead(); - } - - private int d6() - { - return rand.nextInt(6) + 1; - } - - protected void spawnHitParticles(String string, int i) - { - for (int particles = 0; particles < i; particles++) - { - worldObj.spawnParticle(string, posX, posY - (string == "portal" ? 1 : 0), posZ, gaussian(motionX), gaussian(motionY), gaussian(motionZ)); - } - } - - protected void doDamage(int i, Entity mop) - { - mop.attackEntityFrom(this.getDamageSource(), i); - } - - public DamageSource getDamageSource() - { - return DamageSource.causeMobDamage(shootingEntity); - } - - public double smallGauss(double d) - { - return (worldObj.rand.nextFloat() - 0.5D) * d; - } - - public double gaussian(double d) - { - return d + d * ((rand.nextFloat() - 0.5D) / 4); - } - - private int getRicochetMax() - { - return 0; - } - - @Override - public Entity getThrower() - { - // TODO Auto-generated method stub - return this.shootingEntity; - } - - @Override - public void setThrower(Entity entity) - { - if(entity instanceof EntityLivingBase) - this.shootingEntity = (EntityLivingBase)entity; - - } -} diff --git a/src-backup/main/java/WayofTime/alchemicalWizardry/common/entity/projectile/EntityBeamParticle.java b/src-backup/main/java/WayofTime/alchemicalWizardry/common/entity/projectile/EntityBeamParticle.java deleted file mode 100644 index a0cf955c..00000000 --- a/src-backup/main/java/WayofTime/alchemicalWizardry/common/entity/projectile/EntityBeamParticle.java +++ /dev/null @@ -1,16 +0,0 @@ -package WayofTime.alchemicalWizardry.common.entity.projectile; - -import net.minecraft.client.particle.EntityFX; -import net.minecraft.world.World; - -public class EntityBeamParticle extends EntityFX -{ - - protected EntityBeamParticle(World p_i1218_1_, double p_i1218_2_, - double p_i1218_4_, double p_i1218_6_) - { - super(p_i1218_1_, p_i1218_2_, p_i1218_4_, p_i1218_6_); - // TODO Auto-generated constructor stub - } - -} diff --git a/src-backup/main/java/WayofTime/alchemicalWizardry/common/entity/projectile/EntityBloodLightProjectile.java b/src-backup/main/java/WayofTime/alchemicalWizardry/common/entity/projectile/EntityBloodLightProjectile.java deleted file mode 100644 index 4a1729a0..00000000 --- a/src-backup/main/java/WayofTime/alchemicalWizardry/common/entity/projectile/EntityBloodLightProjectile.java +++ /dev/null @@ -1,131 +0,0 @@ -package WayofTime.alchemicalWizardry.common.entity.projectile; - -import net.minecraft.entity.Entity; -import net.minecraft.entity.EntityLivingBase; -import net.minecraft.init.Blocks; -import net.minecraft.potion.Potion; -import net.minecraft.util.DamageSource; -import net.minecraft.util.MovingObjectPosition; -import net.minecraft.world.World; -import WayofTime.alchemicalWizardry.ModBlocks; - - -public class EntityBloodLightProjectile extends EnergyBlastProjectile -{ - public EntityBloodLightProjectile(World par1World) - { - super(par1World); - } - - public EntityBloodLightProjectile(World par1World, double par2, double par4, double par6) - { - super(par1World, par2, par4, par6); - } - - public EntityBloodLightProjectile(World par1World, EntityLivingBase par2EntityPlayer, int damage) - { - super(par1World, par2EntityPlayer, damage); - } - - public EntityBloodLightProjectile(World par1World, EntityLivingBase par2EntityPlayer, int damage, int maxTicksInAir, double posX, double posY, double posZ, float rotationYaw, float rotationPitch) - { - super(par1World, par2EntityPlayer, damage, maxTicksInAir, posX, posY, posZ, rotationYaw, rotationPitch); - } - - public EntityBloodLightProjectile(World par1World, EntityLivingBase par2EntityLivingBase, EntityLivingBase par3EntityLivingBase, float par4, float par5, int damage, int maxTicksInAir) - { - super(par1World, par2EntityLivingBase, par3EntityLivingBase, par4, par5, damage, maxTicksInAir); - } - - @Override - public DamageSource getDamageSource() - { - return DamageSource.causeMobDamage(shootingEntity); - } - - @Override - public void onImpact(MovingObjectPosition mop) - { - if (mop.typeOfHit == MovingObjectPosition.MovingObjectType.ENTITY && mop.entityHit != null) - { - if (mop.entityHit == shootingEntity) - { - return; - } - - this.onImpact(mop.entityHit); - } else if (mop.typeOfHit == MovingObjectPosition.MovingObjectType.BLOCK) - { - int sideHit = mop.sideHit; - int blockX = mop.blockX; - int blockY = mop.blockY; - int blockZ = mop.blockZ; - - if (sideHit == 0 && this.worldObj.isAirBlock(blockX, blockY - 1, blockZ)) - { - this.worldObj.setBlock(blockX, blockY - 1, blockZ, ModBlocks.blockBloodLight); - } - - if (sideHit == 1 && this.worldObj.isAirBlock(blockX, blockY + 1, blockZ)) - { - this.worldObj.setBlock(blockX, blockY + 1, blockZ, ModBlocks.blockBloodLight); - } - - if (sideHit == 2 && this.worldObj.isAirBlock(blockX, blockY, blockZ - 1)) - { - this.worldObj.setBlock(blockX, blockY, blockZ - 1, ModBlocks.blockBloodLight); - } - - if (sideHit == 3 && this.worldObj.isAirBlock(blockX, blockY, blockZ + 1)) - { - this.worldObj.setBlock(blockX, blockY, blockZ + 1, ModBlocks.blockBloodLight); - } - - if (sideHit == 4 && this.worldObj.isAirBlock(blockX - 1, blockY, blockZ)) - { - this.worldObj.setBlock(blockX - 1, blockY, blockZ, ModBlocks.blockBloodLight); - } - - if (sideHit == 5 && this.worldObj.isAirBlock(blockX + 1, blockY, blockZ)) - { - this.worldObj.setBlock(blockX + 1, blockY, blockZ, ModBlocks.blockBloodLight); - } - - //worldObj.createExplosion(this, this.posX, this.posY, this.posZ, (float)(0.1), true); - } - - this.setDead(); - } - - @Override - public void onImpact(Entity mop) - { - if (mop == shootingEntity && ticksInAir > 3) - { - shootingEntity.attackEntityFrom(DamageSource.causeMobDamage(shootingEntity), 1); - this.setDead(); - } else - { - //doDamage(8 + d6(), mop); - if (mop instanceof EntityLivingBase) - { - //((EntityLivingBase)mop).addPotionEffect(new PotionEffect(Potion.weakness.id, 60,2)); - - ((EntityLivingBase) mop).setRevengeTarget(shootingEntity); - - doDamage(1, mop); - - } - - //worldObj.createExplosion(this, this.posX, this.posY, this.posZ, (float)(0.1), true); - } - - if (worldObj.isAirBlock((int) this.posX, (int) this.posY, (int) this.posZ)) - { - worldObj.setBlock((int) this.posX, (int) this.posY, (int) this.posZ, Blocks.fire); - } - - spawnHitParticles("magicCrit", 8); - this.setDead(); - } -} diff --git a/src-backup/main/java/WayofTime/alchemicalWizardry/common/entity/projectile/EntityEnergyBazookaMainProjectile.java b/src-backup/main/java/WayofTime/alchemicalWizardry/common/entity/projectile/EntityEnergyBazookaMainProjectile.java deleted file mode 100644 index 9c55f452..00000000 --- a/src-backup/main/java/WayofTime/alchemicalWizardry/common/entity/projectile/EntityEnergyBazookaMainProjectile.java +++ /dev/null @@ -1,100 +0,0 @@ -package WayofTime.alchemicalWizardry.common.entity.projectile; - -import net.minecraft.entity.Entity; -import net.minecraft.entity.EntityLivingBase; -import net.minecraft.util.DamageSource; -import net.minecraft.util.MovingObjectPosition; -import net.minecraft.world.World; - -public class EntityEnergyBazookaMainProjectile extends EnergyBlastProjectile -{ - public EntityEnergyBazookaMainProjectile(World par1World) - { - super(par1World); - } - - public EntityEnergyBazookaMainProjectile(World par1World, double par2, double par4, double par6) - { - super(par1World, par2, par4, par6); - } - - public EntityEnergyBazookaMainProjectile(World par1World, EntityLivingBase par2EntityPlayer, int damage) - { - super(par1World, par2EntityPlayer, damage); - } - - public EntityEnergyBazookaMainProjectile(World par1World, EntityLivingBase par2EntityPlayer, int damage, int maxTicksInAir, double posX, double posY, double posZ, float rotationYaw, float rotationPitch) - { - super(par1World, par2EntityPlayer, damage, maxTicksInAir, posX, posY, posZ, rotationYaw, rotationPitch); - } - - public EntityEnergyBazookaMainProjectile(World par1World, EntityLivingBase par2EntityLivingBase, EntityLivingBase par3EntityLivingBase, float par4, float par5, int damage, int maxTicksInAir) - { - super(par1World, par2EntityLivingBase, par3EntityLivingBase, par4, par5, damage, maxTicksInAir); - } - - @Override - public DamageSource getDamageSource() - { - return DamageSource.causeMobDamage(shootingEntity); - } - - @Override - public void onImpact(MovingObjectPosition mop) - { - if (mop.typeOfHit == MovingObjectPosition.MovingObjectType.ENTITY && mop.entityHit != null) - { - if (mop.entityHit == shootingEntity) - { - return; - } - - this.onImpact(mop.entityHit); - } else if (mop.typeOfHit == MovingObjectPosition.MovingObjectType.BLOCK) - { - worldObj.createExplosion(this.shootingEntity, this.posX, this.posY, this.posZ, (float) (5.0f), false); - this.spawnSecondaryProjectiles(); - } - - this.setDead(); - } - - @Override - public void onImpact(Entity mop) - { - if (mop == shootingEntity && ticksInAir > 3) - { - shootingEntity.attackEntityFrom(DamageSource.causeMobDamage(shootingEntity), 1); - this.setDead(); - } else - { - //doDamage(8 + d6(), mop); - if (mop instanceof EntityLivingBase) - { - spawnSecondaryProjectiles(); - } - - worldObj.createExplosion(this.shootingEntity, this.posX, this.posY, this.posZ, (float) (5.0f), false); - } - - spawnHitParticles("magicCrit", 8); - this.setDead(); - } - - public void spawnSecondaryProjectiles() - { - for (int i = 0; i < 20; i++) - { - EntityEnergyBazookaSecondaryProjectile secProj = new EntityEnergyBazookaSecondaryProjectile(worldObj, this.posX, this.posY, this.posZ, 15); - secProj.shootingEntity = this.shootingEntity; - float xVel = rand.nextFloat() - rand.nextFloat(); - float yVel = rand.nextFloat() - rand.nextFloat(); - float zVel = rand.nextFloat() - rand.nextFloat(); - float wantedVel = 0.5f; - secProj.motionX = xVel * wantedVel; - secProj.motionY = yVel * wantedVel; - secProj.motionZ = zVel * wantedVel; - worldObj.spawnEntityInWorld(secProj); - } - } -} diff --git a/src-backup/main/java/WayofTime/alchemicalWizardry/common/entity/projectile/EntityEnergyBazookaSecondaryProjectile.java b/src-backup/main/java/WayofTime/alchemicalWizardry/common/entity/projectile/EntityEnergyBazookaSecondaryProjectile.java deleted file mode 100644 index cdbf72f4..00000000 --- a/src-backup/main/java/WayofTime/alchemicalWizardry/common/entity/projectile/EntityEnergyBazookaSecondaryProjectile.java +++ /dev/null @@ -1,508 +0,0 @@ -package WayofTime.alchemicalWizardry.common.entity.projectile; - -import cpw.mods.fml.relauncher.Side; -import cpw.mods.fml.relauncher.SideOnly; -import net.minecraft.block.Block; -import net.minecraft.entity.Entity; -import net.minecraft.entity.EntityLivingBase; -import net.minecraft.entity.IProjectile; -import net.minecraft.entity.player.EntityPlayer; -import net.minecraft.nbt.NBTTagCompound; -import net.minecraft.util.*; -import net.minecraft.world.World; - -import java.util.Iterator; -import java.util.List; - -public class EntityEnergyBazookaSecondaryProjectile extends EnergyBlastProjectile implements IProjectile -{ - private int xTile = -1; - private int yTile = -1; - private int zTile = -1; - private int inTile = 0; - private int inData = 0; - private boolean inGround = false; - /** - * The owner of this arrow. - */ - public EntityLivingBase shootingEntity; - private int ticksInAir = 0; - private int ricochetCounter = 0; - private boolean scheduledForDeath = false; - public int damage; - - public EntityEnergyBazookaSecondaryProjectile(World par1World) - { - super(par1World); - this.setSize(0.5F, 0.5F); - damage = 5; - } - - public EntityEnergyBazookaSecondaryProjectile(World par1World, double par2, double par4, double par6, int damage) - { - super(par1World); - this.setSize(0.5F, 0.5F); - this.setPosition(par2, par4, par6); - yOffset = 0.0F; - this.damage = damage; - } - - public EntityEnergyBazookaSecondaryProjectile(World par1World, EntityPlayer par2EntityPlayer, int damage) - { - super(par1World); - shootingEntity = par2EntityPlayer; - float par3 = 0.8F; - this.setSize(0.1F, 0.1F); - this.setLocationAndAngles(par2EntityPlayer.posX, par2EntityPlayer.posY + par2EntityPlayer.getEyeHeight(), par2EntityPlayer.posZ, par2EntityPlayer.rotationYaw, par2EntityPlayer.rotationPitch); - posX -= MathHelper.cos(rotationYaw / 180.0F * (float) Math.PI) * 0.16F; - posY -= 0.2D; - posZ -= MathHelper.sin(rotationYaw / 180.0F * (float) Math.PI) * 0.16F; - this.setPosition(posX, posY, posZ); - yOffset = 0.0F; - motionX = -MathHelper.sin(rotationYaw / 180.0F * (float) Math.PI) * MathHelper.cos(rotationPitch / 180.0F * (float) Math.PI); - motionZ = MathHelper.cos(rotationYaw / 180.0F * (float) Math.PI) * MathHelper.cos(rotationPitch / 180.0F * (float) Math.PI); - motionY = -MathHelper.sin(rotationPitch / 180.0F * (float) Math.PI); - this.setThrowableHeading(motionX, motionY, motionZ, par3 * 1.5F, 1.0F); - this.damage = damage; - } - - @Override - protected void entityInit() - { - dataWatcher.addObject(16, Byte.valueOf((byte) 0)); - } - - /** - * Similar to setArrowHeading, it's point the throwable entity to a x, y, z - * direction. - */ - @Override - public void setThrowableHeading(double var1, double var3, double var5, float var7, float var8) - { - float var9 = MathHelper.sqrt_double(var1 * var1 + var3 * var3 + var5 * var5); - var1 /= var9; - var3 /= var9; - var5 /= var9; - var1 += rand.nextGaussian() * 0.007499999832361937D * var8; - var3 += rand.nextGaussian() * 0.007499999832361937D * var8; - var5 += rand.nextGaussian() * 0.007499999832361937D * var8; - var1 *= var7; - var3 *= var7; - var5 *= var7; - motionX = var1; - motionY = var3; - motionZ = var5; - float var10 = MathHelper.sqrt_double(var1 * var1 + var5 * var5); - prevRotationYaw = rotationYaw = (float) (Math.atan2(var1, var5) * 180.0D / Math.PI); - prevRotationPitch = rotationPitch = (float) (Math.atan2(var3, var10) * 180.0D / Math.PI); - } - - @Override - @SideOnly(Side.CLIENT) - /** - * Sets the position and rotation. Only difference from the other one is no bounding on the rotation. Args: posX, - * posY, posZ, yaw, pitch - */ - public void setPositionAndRotation2(double par1, double par3, double par5, float par7, float par8, int par9) - { - this.setPosition(par1, par3, par5); - this.setRotation(par7, par8); - } - - @Override - @SideOnly(Side.CLIENT) - /** - * Sets the velocity to the args. Args: x, y, z - */ - public void setVelocity(double par1, double par3, double par5) - { - motionX = par1; - motionY = par3; - motionZ = par5; - - if (prevRotationPitch == 0.0F && prevRotationYaw == 0.0F) - { - float var7 = MathHelper.sqrt_double(par1 * par1 + par5 * par5); - prevRotationYaw = rotationYaw = (float) (Math.atan2(par1, par5) * 180.0D / Math.PI); - prevRotationPitch = rotationPitch = (float) (Math.atan2(par3, var7) * 180.0D / Math.PI); - prevRotationPitch = rotationPitch; - prevRotationYaw = rotationYaw; - this.setLocationAndAngles(posX, posY, posZ, rotationYaw, rotationPitch); - } - } - - /** - * Called to update the entity's position/logic. - */ - @Override - public void onUpdate() - { - super.onUpdate(); - - if (ticksInAir > maxTicksInAir) - { - this.setDead(); - } - - if (shootingEntity == null) - { - List players = worldObj.getEntitiesWithinAABB(EntityPlayer.class, AxisAlignedBB.getBoundingBox(posX - 1, posY - 1, posZ - 1, posX + 1, posY + 1, posZ + 1)); - Iterator i = players.iterator(); - double closestDistance = Double.MAX_VALUE; - EntityPlayer closestPlayer = null; - - while (i.hasNext()) - { - EntityPlayer e = (EntityPlayer) i.next(); - double distance = e.getDistanceToEntity(this); - - if (distance < closestDistance) - { - closestPlayer = e; - } - } - - if (closestPlayer != null) - { - shootingEntity = closestPlayer; - } - } - - if (prevRotationPitch == 0.0F && prevRotationYaw == 0.0F) - { - float var1 = MathHelper.sqrt_double(motionX * motionX + motionZ * motionZ); - prevRotationYaw = rotationYaw = (float) (Math.atan2(motionX, motionZ) * 180.0D / Math.PI); - prevRotationPitch = rotationPitch = (float) (Math.atan2(motionY, var1) * 180.0D / Math.PI); - } - - Block var16 = worldObj.getBlock(xTile, yTile, zTile); - - if (var16 != null) - { - var16.setBlockBoundsBasedOnState(worldObj, xTile, yTile, zTile); - AxisAlignedBB var2 = var16.getCollisionBoundingBoxFromPool(worldObj, xTile, yTile, zTile); - - if (var2 != null && var2.isVecInside(Vec3.createVectorHelper(posX, posY, posZ))) - { - inGround = true; - } - } - - if (inGround) - { - Block var18 = worldObj.getBlock(xTile, yTile, zTile); - int var19 = worldObj.getBlockMetadata(xTile, yTile, zTile); - - if (var18.equals(Block.getBlockById(inTile)) && var19 == inData) - { - // this.groundImpact(); - // this.setDead(); - } - } else - { - ++ticksInAir; - - if (ticksInAir > 1 && ticksInAir < 3) - { - //worldObj.spawnParticle("flame", posX + smallGauss(0.1D), posY + smallGauss(0.1D), posZ + smallGauss(0.1D), 0D, 0D, 0D); - for (int particles = 0; particles < 3; particles++) - { - this.doFiringParticles(); - } - } - - Vec3 var17 = Vec3.createVectorHelper(posX, posY, posZ); - Vec3 var3 = Vec3.createVectorHelper(posX + motionX, posY + motionY, posZ + motionZ); - MovingObjectPosition var4 = worldObj.func_147447_a(var17, var3, true, false, false); - var17 = Vec3.createVectorHelper(posX, posY, posZ); - var3 = Vec3.createVectorHelper(posX + motionX, posY + motionY, posZ + motionZ); - - if (var4 != null) - { - var3 = Vec3.createVectorHelper(var4.hitVec.xCoord, var4.hitVec.yCoord, var4.hitVec.zCoord); - } - - Entity var5 = null; - List var6 = worldObj.getEntitiesWithinAABBExcludingEntity(this, boundingBox.addCoord(motionX, motionY, motionZ).expand(1.0D, 1.0D, 1.0D)); - double var7 = 0.0D; - Iterator var9 = var6.iterator(); - float var11; - - while (var9.hasNext()) - { - Entity var10 = (Entity) var9.next(); - - if (var10.canBeCollidedWith() && (var10 != shootingEntity || ticksInAir >= 5)) - { - var11 = 0.3F; - AxisAlignedBB var12 = var10.boundingBox.expand(var11, var11, var11); - MovingObjectPosition var13 = var12.calculateIntercept(var17, var3); - - if (var13 != null) - { - double var14 = var17.distanceTo(var13.hitVec); - - if (var14 < var7 || var7 == 0.0D) - { - var5 = var10; - var7 = var14; - } - } - } - } - - if (var5 != null) - { - var4 = new MovingObjectPosition(var5); - } - - if (var4 != null) - { - this.onImpact(var4); - - if (scheduledForDeath) - { - this.setDead(); - } - } - - posX += motionX; - posY += motionY; - posZ += motionZ; - MathHelper.sqrt_double(motionX * motionX + motionZ * motionZ); - this.setPosition(posX, posY, posZ); - //this.doBlockCollisions(); - } - } - - public void doFiringParticles() - { - worldObj.spawnParticle("mobSpellAmbient", posX + smallGauss(0.1D), posY + smallGauss(0.1D), posZ + smallGauss(0.1D), 0.5D, 0.5D, 0.5D); - worldObj.spawnParticle("flame", posX, posY, posZ, gaussian(motionX), gaussian(motionY), gaussian(motionZ)); - } - - /** - * (abstract) Protected helper method to write subclass entity data to NBT. - */ - @Override - public void writeEntityToNBT(NBTTagCompound par1NBTTagCompound) - { - par1NBTTagCompound.setShort("xTile", (short) xTile); - par1NBTTagCompound.setShort("yTile", (short) yTile); - par1NBTTagCompound.setShort("zTile", (short) zTile); - par1NBTTagCompound.setByte("inTile", (byte) inTile); - par1NBTTagCompound.setByte("inData", (byte) inData); - par1NBTTagCompound.setByte("inGround", (byte) (inGround ? 1 : 0)); - } - - /** - * (abstract) Protected helper method to read subclass entity data from NBT. - */ - @Override - public void readEntityFromNBT(NBTTagCompound par1NBTTagCompound) - { - xTile = par1NBTTagCompound.getShort("xTile"); - yTile = par1NBTTagCompound.getShort("yTile"); - zTile = par1NBTTagCompound.getShort("zTile"); - inTile = par1NBTTagCompound.getByte("inTile") & 255; - inData = par1NBTTagCompound.getByte("inData") & 255; - inGround = par1NBTTagCompound.getByte("inGround") == 1; - } - - /** - * returns if this entity triggers Block.onEntityWalking on the blocks they - * walk on. used for spiders and wolves to prevent them from trampling crops - */ - @Override - protected boolean canTriggerWalking() - { - return false; - } - - @Override - @SideOnly(Side.CLIENT) - public float getShadowSize() - { - return 0.0F; - } - - /** - * Sets the amount of knockback the arrow applies when it hits a mob. - */ - public void setKnockbackStrength(int par1) - { - } - - /** - * If returns false, the item will not inflict any damage against entities. - */ - @Override - public boolean canAttackWithItem() - { - return false; - } - - /** - * Whether the arrow has a stream of critical hit particles flying behind - * it. - */ - public void setIsCritical(boolean par1) - { - byte var2 = dataWatcher.getWatchableObjectByte(16); - - if (par1) - { - dataWatcher.updateObject(16, Byte.valueOf((byte) (var2 | 1))); - } else - { - dataWatcher.updateObject(16, Byte.valueOf((byte) (var2 & -2))); - } - } - - /** - * Whether the arrow has a stream of critical hit particles flying behind - * it. - */ - public boolean getIsCritical() - { - byte var1 = dataWatcher.getWatchableObjectByte(16); - return (var1 & 1) != 0; - } - - public void onImpact(MovingObjectPosition mop) - { - if (mop.typeOfHit == MovingObjectPosition.MovingObjectType.ENTITY && mop.entityHit != null) - { - if (mop.entityHit == shootingEntity) - { - return; - } - - this.onImpact(mop.entityHit); - } else if (mop.typeOfHit == MovingObjectPosition.MovingObjectType.BLOCK) - { - this.groundImpact(mop.sideHit); - worldObj.createExplosion(shootingEntity, posX, posY, posZ, 2, false); - } - } - - public void onImpact(Entity mop) - { - if (mop == shootingEntity && ticksInAir > 3) - { - shootingEntity.attackEntityFrom(DamageSource.causeMobDamage(shootingEntity), 1); - this.setDead(); - } else - { - doDamage(this.damage + d6(), mop); - worldObj.createExplosion(shootingEntity, posX, posY, posZ, 2, false); - } - - spawnHitParticles("magicCrit", 8); - this.setDead(); - } - - private int d6() - { - return rand.nextInt(6) + 1; - } - - public void spawnHitParticles(String string, int i) - { - for (int particles = 0; particles < i; particles++) - { - worldObj.spawnParticle(string, posX, posY - (string == "portal" ? 1 : 0), posZ, gaussian(motionX), gaussian(motionY), gaussian(motionZ)); - } - } - - public void doDamage(int i, Entity mop) - { - mop.attackEntityFrom(this.getDamageSource(), i); - } - - public DamageSource getDamageSource() - { - return DamageSource.causeMobDamage(shootingEntity); - } - - public void groundImpact(int sideHit) - { - this.ricochet(sideHit); - } - - public double smallGauss(double d) - { - return (worldObj.rand.nextFloat() - 0.5D) * d; - } - - public double gaussian(double d) - { - return d + d * ((rand.nextFloat() - 0.5D) / 4); - } - - private void ricochet(int sideHit) - { - switch (sideHit) - { - case 0: - case 1: - // topHit, bottomHit, reflect Y - motionY = motionY * -1; - break; - - case 2: - case 3: - // westHit, eastHit, reflect Z - motionZ = motionZ * -1; - break; - - case 4: - case 5: - // southHit, northHit, reflect X - motionX = motionX * -1; - break; - } - - ricochetCounter++; - - if (ricochetCounter > this.getRicochetMax()) - { - scheduledForDeath = true; - - for (int particles = 0; particles < 4; particles++) - { - switch (sideHit) - { - case 0: - worldObj.spawnParticle("smoke", posX, posY, posZ, gaussian(0.1D), -gaussian(0.1D), gaussian(0.1D)); - break; - - case 1: - worldObj.spawnParticle("smoke", posX, posY, posZ, gaussian(0.1D), gaussian(0.1D), gaussian(0.1D)); - break; - - case 2: - worldObj.spawnParticle("smoke", posX, posY, posZ, gaussian(0.1D), gaussian(0.1D), -gaussian(0.1D)); - break; - - case 3: - worldObj.spawnParticle("smoke", posX, posY, posZ, gaussian(0.1D), gaussian(0.1D), gaussian(0.1D)); - break; - - case 4: - worldObj.spawnParticle("smoke", posX, posY, posZ, -gaussian(0.1D), gaussian(0.1D), gaussian(0.1D)); - break; - - case 5: - worldObj.spawnParticle("smoke", posX, posY, posZ, gaussian(0.1D), gaussian(0.1D), gaussian(0.1D)); - break; - } - } - } - } - - private int getRicochetMax() - { - return 3; - } -} diff --git a/src-backup/main/java/WayofTime/alchemicalWizardry/common/entity/projectile/EntityMeteor.java b/src-backup/main/java/WayofTime/alchemicalWizardry/common/entity/projectile/EntityMeteor.java deleted file mode 100644 index a1f6bc9b..00000000 --- a/src-backup/main/java/WayofTime/alchemicalWizardry/common/entity/projectile/EntityMeteor.java +++ /dev/null @@ -1,90 +0,0 @@ -package WayofTime.alchemicalWizardry.common.entity.projectile; - -import net.minecraft.entity.Entity; -import net.minecraft.nbt.NBTTagCompound; -import net.minecraft.util.DamageSource; -import net.minecraft.util.MovingObjectPosition; -import net.minecraft.world.World; -import WayofTime.alchemicalWizardry.common.summoning.meteor.MeteorRegistry; - -public class EntityMeteor extends EnergyBlastProjectile -{ - private int meteorID; - - public boolean hasTerrae; - public boolean hasOrbisTerrae; - public boolean hasCrystallos; - public boolean hasIncendium; - public boolean hasTennebrae; - - public EntityMeteor(World par1World) - { - super(par1World); - this.meteorID = 0; - } - - public EntityMeteor(World par1World, double par2, double par4, double par6, int meteorID) - { - super(par1World, par2, par4, par6); - this.meteorID = meteorID; - } - - @Override - public void writeEntityToNBT(NBTTagCompound par1NBTTagCompound) - { - super.writeEntityToNBT(par1NBTTagCompound); - - par1NBTTagCompound.setInteger("meteorID", meteorID); - par1NBTTagCompound.setBoolean("hasTerrae", hasTerrae); - par1NBTTagCompound.setBoolean("hasOrbisTerrae", hasOrbisTerrae); - par1NBTTagCompound.setBoolean("hasCrystallos", hasCrystallos); - par1NBTTagCompound.setBoolean("hasIncendium", hasIncendium); - par1NBTTagCompound.setBoolean("hasTennebrae", hasTennebrae); - } - - @Override - public void readEntityFromNBT(NBTTagCompound par1NBTTagCompound) - { - super.readEntityFromNBT(par1NBTTagCompound); - - meteorID = par1NBTTagCompound.getInteger("meteorID"); - hasTerrae = par1NBTTagCompound.getBoolean("hasTerrae"); - hasOrbisTerrae = par1NBTTagCompound.getBoolean("hasOrbisTerrae"); - hasIncendium = par1NBTTagCompound.getBoolean("hasIncendium"); - hasCrystallos = par1NBTTagCompound.getBoolean("hasCrystallos"); - hasTennebrae = par1NBTTagCompound.getBoolean("hasTennebrae"); - } - - @Override - public DamageSource getDamageSource() - { - return DamageSource.fallingBlock; - } - - @Override - public void onImpact(MovingObjectPosition mop) - { - if (worldObj.isRemote) - { - return; - } - - if (mop.typeOfHit == MovingObjectPosition.MovingObjectType.ENTITY && mop.entityHit != null) - { - this.onImpact(mop.entityHit); - } else if (mop.typeOfHit == MovingObjectPosition.MovingObjectType.BLOCK) - { - MeteorRegistry.createMeteorImpact(worldObj, mop.blockX, mop.blockY, mop.blockZ, this.meteorID, new boolean[]{hasTerrae, hasOrbisTerrae, hasCrystallos, hasIncendium, hasTennebrae}); - } - - this.setDead(); - } - - @Override - public void onImpact(Entity mop) - { - MeteorRegistry.createMeteorImpact(worldObj, (int) this.posX, (int) this.posY, (int) this.posZ, meteorID, new boolean[]{hasTerrae, hasOrbisTerrae, hasCrystallos, hasIncendium, hasTennebrae}); - - this.setDead(); - } -} diff --git a/src-backup/main/java/WayofTime/alchemicalWizardry/common/entity/projectile/EntityParticleBeam.java b/src-backup/main/java/WayofTime/alchemicalWizardry/common/entity/projectile/EntityParticleBeam.java deleted file mode 100644 index 564e7dea..00000000 --- a/src-backup/main/java/WayofTime/alchemicalWizardry/common/entity/projectile/EntityParticleBeam.java +++ /dev/null @@ -1,350 +0,0 @@ -package WayofTime.alchemicalWizardry.common.entity.projectile; - -import net.minecraft.client.particle.EntityCloudFX; -import net.minecraft.client.particle.EntityFX; -import net.minecraft.entity.Entity; -import net.minecraft.entity.EntityLivingBase; -import net.minecraft.entity.IProjectile; -import net.minecraft.nbt.NBTTagCompound; -import net.minecraft.util.DamageSource; -import net.minecraft.util.MathHelper; -import net.minecraft.world.World; -import cpw.mods.fml.client.FMLClientHandler; -import cpw.mods.fml.common.registry.IThrowableEntity; -import cpw.mods.fml.relauncher.Side; -import cpw.mods.fml.relauncher.SideOnly; - -//Shamelessly ripped off from x3n0ph0b3 -public class EntityParticleBeam extends Entity implements IProjectile, IThrowableEntity -{ - protected int xTile = -1; - protected int yTile = -1; - protected int zTile = -1; - protected int inTile = 0; - protected int inData = 0; - protected float colourRed = 0f; - protected float colourGreen = 0f; - protected float colourBlue = 0f; - protected int xDest = 0; - protected int yDest = 0; - protected int zDest = 0; - protected boolean inGround = false; - /** - * The owner of this arrow. - */ - public EntityLivingBase shootingEntity; - protected int ticksInAir = 0; - protected int maxTicksInAir = 600; - private int ricochetCounter = 0; - private boolean scheduledForDeath = false; - protected int projectileDamage; - - public EntityParticleBeam(World par1World) - { - super(par1World); - this.setSize(0.5F, 0.5F); - this.maxTicksInAir = 600; - } - - public EntityParticleBeam(World par1World, double par2, double par4, double par6) - { - super(par1World); - this.setSize(0.5F, 0.5F); - this.setPosition(par2, par4, par6); - yOffset = 0.0F; - this.maxTicksInAir = 600; - } - - public EntityParticleBeam(World par1World, EntityLivingBase par2EntityPlayer, int damage) - { - super(par1World); - shootingEntity = par2EntityPlayer; - float par3 = 0.8F; - this.setSize(0.5F, 0.5F); - this.setLocationAndAngles(par2EntityPlayer.posX, par2EntityPlayer.posY + par2EntityPlayer.getEyeHeight(), par2EntityPlayer.posZ, par2EntityPlayer.rotationYaw, par2EntityPlayer.rotationPitch); - posX -= MathHelper.cos(rotationYaw / 180.0F * (float) Math.PI) * 0.16F; - posY -= 0.2D; - posZ -= MathHelper.sin(rotationYaw / 180.0F * (float) Math.PI) * 0.16F; - this.setPosition(posX, posY, posZ); - yOffset = 0.0F; - motionX = -MathHelper.sin(rotationYaw / 180.0F * (float) Math.PI) * MathHelper.cos(rotationPitch / 180.0F * (float) Math.PI); - motionZ = MathHelper.cos(rotationYaw / 180.0F * (float) Math.PI) * MathHelper.cos(rotationPitch / 180.0F * (float) Math.PI); - motionY = -MathHelper.sin(rotationPitch / 180.0F * (float) Math.PI); - this.setThrowableHeading(motionX, motionY, motionZ, par3 * 1.5F, 1.0F); - this.projectileDamage = damage; - this.maxTicksInAir = 600; - } - - public EntityParticleBeam(World par1World, EntityLivingBase par2EntityPlayer, int damage, int maxTicksInAir, double posX, double posY, double posZ, float rotationYaw, float rotationPitch) - { - super(par1World); - shootingEntity = par2EntityPlayer; - float par3 = 0.8F; - this.setSize(0.5F, 0.5F); - this.setLocationAndAngles(posX, posY, posZ, rotationYaw, rotationPitch); - posX -= MathHelper.cos(rotationYaw / 180.0F * (float) Math.PI) * 0.16F; - posY -= 0.2D; - posZ -= MathHelper.sin(rotationYaw / 180.0F * (float) Math.PI) * 0.16F; - this.setPosition(posX, posY, posZ); - yOffset = 0.0F; - motionX = -MathHelper.sin(rotationYaw / 180.0F * (float) Math.PI) * MathHelper.cos(rotationPitch / 180.0F * (float) Math.PI); - motionZ = MathHelper.cos(rotationYaw / 180.0F * (float) Math.PI) * MathHelper.cos(rotationPitch / 180.0F * (float) Math.PI); - motionY = -MathHelper.sin(rotationPitch / 180.0F * (float) Math.PI); - this.setThrowableHeading(motionX, motionY, motionZ, par3 * 1.5F, 1.0F); - this.projectileDamage = damage; - this.maxTicksInAir = maxTicksInAir; - } - - public EntityParticleBeam(World par1World, EntityLivingBase par2EntityLivingBase, EntityLivingBase par3EntityLivingBase, float par4, float par5, int damage, int maxTicksInAir) - { - super(par1World); - this.renderDistanceWeight = 10.0D; - this.shootingEntity = par2EntityLivingBase; - this.posY = par2EntityLivingBase.posY + (double) par2EntityLivingBase.getEyeHeight() - 0.10000000149011612D; - double d0 = par3EntityLivingBase.posX - par2EntityLivingBase.posX; - double d1 = par3EntityLivingBase.boundingBox.minY + (double) (par3EntityLivingBase.height / 1.5F) - this.posY; - double d2 = par3EntityLivingBase.posZ - par2EntityLivingBase.posZ; - double d3 = (double) MathHelper.sqrt_double(d0 * d0 + d2 * d2); - - if (d3 >= 1.0E-7D) - { - float f2 = (float) (Math.atan2(d2, d0) * 180.0D / Math.PI) - 90.0F; - float f3 = (float) (-(Math.atan2(d1, d3) * 180.0D / Math.PI)); - double d4 = d0 / d3; - double d5 = d2 / d3; - this.setLocationAndAngles(par2EntityLivingBase.posX + d4, this.posY, par2EntityLivingBase.posZ + d5, f2, f3); - this.yOffset = 0.0F; - float f4 = (float) d3 * 0.2F; - this.setThrowableHeading(d0, d1, d2, par4, par5); - } - - this.projectileDamage = damage; - this.maxTicksInAir = maxTicksInAir; - } - - @Override - protected void entityInit() - { - dataWatcher.addObject(16, Byte.valueOf((byte) 0)); - } - - /** - * Similar to setArrowHeading, it's point the throwable entity to a x, y, z - * direction. - */ - @Override - public void setThrowableHeading(double var1, double var3, double var5, float var7, float var8) - { - float var9 = MathHelper.sqrt_double(var1 * var1 + var3 * var3 + var5 * var5); - var1 /= var9; - var3 /= var9; - var5 /= var9; - var1 += rand.nextGaussian() * 0.007499999832361937D * var8; - var3 += rand.nextGaussian() * 0.007499999832361937D * var8; - var5 += rand.nextGaussian() * 0.007499999832361937D * var8; - var1 *= var7; - var3 *= var7; - var5 *= var7; - motionX = var1; - motionY = var3; - motionZ = var5; - float var10 = MathHelper.sqrt_double(var1 * var1 + var5 * var5); - prevRotationYaw = rotationYaw = (float) (Math.atan2(var1, var5) * 180.0D / Math.PI); - prevRotationPitch = rotationPitch = (float) (Math.atan2(var3, var10) * 180.0D / Math.PI); - } - - @Override - @SideOnly(Side.CLIENT) - /** - * Sets the position and rotation. Only difference from the other one is no bounding on the rotation. Args: posX, - * posY, posZ, yaw, pitch - */ - public void setPositionAndRotation2(double par1, double par3, double par5, float par7, float par8, int par9) - { - this.setPosition(par1, par3, par5); - this.setRotation(par7, par8); - } - - @Override - @SideOnly(Side.CLIENT) - /** - * Sets the velocity to the args. Args: x, y, z - */ - public void setVelocity(double par1, double par3, double par5) - { - motionX = par1; - motionY = par3; - motionZ = par5; - - if (prevRotationPitch == 0.0F && prevRotationYaw == 0.0F) - { - float var7 = MathHelper.sqrt_double(par1 * par1 + par5 * par5); - prevRotationYaw = rotationYaw = (float) (Math.atan2(par1, par5) * 180.0D / Math.PI); - prevRotationPitch = rotationPitch = (float) (Math.atan2(par3, var7) * 180.0D / Math.PI); - prevRotationPitch = rotationPitch; - prevRotationYaw = rotationYaw; - this.setLocationAndAngles(posX, posY, posZ, rotationYaw, rotationPitch); - } - } - - /** - * Called to update the entity's position/logic. - */ - @Override - public void onUpdate() - { - super.onUpdate(); - - if (ticksInAir > maxTicksInAir) - { - this.setDead(); - } - - posX += motionX; - posY += motionY; - posZ += motionZ; - MathHelper.sqrt_double(motionX * motionX + motionZ * motionZ); - this.setPosition(posX, posY, posZ); - - this.doFiringParticles(); - - if(Math.pow(posX - xDest, 2) + Math.pow(posY - yDest, 2) + Math.pow(posZ - zDest, 2) <= 1) - { - this.scheduledForDeath = true; - } - - if(this.scheduledForDeath) - { - this.setDead(); - } - } - - public void doFiringParticles() - { - if(!worldObj.isRemote) - { - return; - } - //worldObj.spawnParticle("mobSpellAmbient", posX + smallGauss(0.1D), posY + smallGauss(0.1D), posZ + smallGauss(0.1D), 0.5D, 0.5D, 0.5D); - EntityFX particle = new EntityCloudFX(worldObj, posX, posY, posZ, 0, 0, 0); - particle.setRBGColorF(colourRed + 0.15f * (worldObj.rand.nextFloat() - worldObj.rand.nextFloat()), colourGreen + 0.15f * (worldObj.rand.nextFloat() - worldObj.rand.nextFloat()), colourBlue + 0.15f * (worldObj.rand.nextFloat() - worldObj.rand.nextFloat())); - FMLClientHandler.instance().getClient().effectRenderer.addEffect(particle); - //worldObj.spawnParticle("happyVillager", posX, posY, posZ, 0, 0, 0); - } - - /** - * (abstract) Protected helper method to write subclass entity data to NBT. - */ - @Override - public void writeEntityToNBT(NBTTagCompound par1NBTTagCompound) - { - par1NBTTagCompound.setShort("xTile", (short) xTile); - par1NBTTagCompound.setShort("yTile", (short) yTile); - par1NBTTagCompound.setShort("zTile", (short) zTile); - par1NBTTagCompound.setByte("inTile", (byte) inTile); - par1NBTTagCompound.setByte("inData", (byte) inData); - par1NBTTagCompound.setByte("inGround", (byte) (inGround ? 1 : 0)); - par1NBTTagCompound.setInteger("ticksInAir", ticksInAir); - par1NBTTagCompound.setInteger("maxTicksInAir", maxTicksInAir); - par1NBTTagCompound.setInteger("projectileDamage", this.projectileDamage); - par1NBTTagCompound.setFloat("colourRed", colourRed); - par1NBTTagCompound.setFloat("colourGreen", colourGreen); - par1NBTTagCompound.setFloat("colourBlue", colourBlue); - par1NBTTagCompound.setInteger("xDest", xDest); - par1NBTTagCompound.setInteger("yDest", yDest); - par1NBTTagCompound.setInteger("zDest", zDest); - } - - /** - * (abstract) Protected helper method to read subclass entity data from NBT. - */ - @Override - public void readEntityFromNBT(NBTTagCompound par1NBTTagCompound) - { - xTile = par1NBTTagCompound.getShort("xTile"); - yTile = par1NBTTagCompound.getShort("yTile"); - zTile = par1NBTTagCompound.getShort("zTile"); - inTile = par1NBTTagCompound.getByte("inTile") & 255; - inData = par1NBTTagCompound.getByte("inData") & 255; - inGround = par1NBTTagCompound.getByte("inGround") == 1; - ticksInAir = par1NBTTagCompound.getInteger("ticksInAir"); - maxTicksInAir = par1NBTTagCompound.getInteger("maxTicksInAir"); - projectileDamage = par1NBTTagCompound.getInteger("projectileDamage"); - colourRed = par1NBTTagCompound.getFloat("colourRed"); - colourGreen = par1NBTTagCompound.getFloat("colourGreen"); - colourBlue = par1NBTTagCompound.getFloat("colourBlue"); - xDest = par1NBTTagCompound.getInteger("xDest"); - yDest = par1NBTTagCompound.getInteger("yDest"); - zDest = par1NBTTagCompound.getInteger("zDest"); - } - - @Override - protected boolean canTriggerWalking() - { - return false; - } - - @Override - @SideOnly(Side.CLIENT) - public float getShadowSize() - { - return 0.0F; - } - - protected void spawnHitParticles(String string, int i) - { - for (int particles = 0; particles < i; particles++) - { - worldObj.spawnParticle(string, posX, posY - (string == "portal" ? 1 : 0), posZ, gaussian(motionX), gaussian(motionY), gaussian(motionZ)); - } - } - - public DamageSource getDamageSource() - { - return DamageSource.causeMobDamage(shootingEntity); - } - - public double smallGauss(double d) - { - return (worldObj.rand.nextFloat() - 0.5D) * d; - } - - public double gaussian(double d) - { - return d + d * ((rand.nextFloat() - 0.5D) / 4); - } - - private int getRicochetMax() - { - return 0; - } - - @Override - public Entity getThrower() - { - // TODO Auto-generated method stub - return this.shootingEntity; - } - - @Override - public void setThrower(Entity entity) - { - if(entity instanceof EntityLivingBase) - this.shootingEntity = (EntityLivingBase)entity; - - } - - public void setColour(float red, float green, float blue) - { - this.colourRed = red; - this.colourGreen = green; - this.colourBlue = blue; - } - - public void setDestination(int xDest, int yDest, int zDest) - { - this.xDest = xDest; - this.yDest = yDest; - this.zDest = zDest; - } -} diff --git a/src-backup/main/java/WayofTime/alchemicalWizardry/common/entity/projectile/ExplosionProjectile.java b/src-backup/main/java/WayofTime/alchemicalWizardry/common/entity/projectile/ExplosionProjectile.java deleted file mode 100644 index 569aaf0b..00000000 --- a/src-backup/main/java/WayofTime/alchemicalWizardry/common/entity/projectile/ExplosionProjectile.java +++ /dev/null @@ -1,134 +0,0 @@ -package WayofTime.alchemicalWizardry.common.entity.projectile; - -import net.minecraft.entity.Entity; -import net.minecraft.entity.EntityLivingBase; -import net.minecraft.nbt.NBTTagCompound; -import net.minecraft.util.DamageSource; -import net.minecraft.util.MovingObjectPosition; -import net.minecraft.world.World; - -public class ExplosionProjectile extends EnergyBlastProjectile -{ - protected boolean causesEnvDamage; - - public ExplosionProjectile(World par1World) - { - super(par1World); - } - - public ExplosionProjectile(World par1World, double par2, double par4, double par6) - { - super(par1World, par2, par4, par6); - } - - public ExplosionProjectile(World par1World, EntityLivingBase par2EntityPlayer, int damage, boolean flag) - { - super(par1World, par2EntityPlayer, damage); - causesEnvDamage = flag; - } - - public ExplosionProjectile(World par1World, EntityLivingBase par2EntityPlayer, int damage, int maxTicksInAir, double posX, double posY, double posZ, float rotationYaw, float rotationPitch, boolean flag) - { - super(par1World, par2EntityPlayer, damage, maxTicksInAir, posX, posY, posZ, rotationYaw, rotationPitch); - causesEnvDamage = flag; - } - - @Override - public DamageSource getDamageSource() - { - return DamageSource.causeMobDamage(shootingEntity); - } - - @Override - public void onImpact(MovingObjectPosition mop) - { - if (mop.typeOfHit == MovingObjectPosition.MovingObjectType.ENTITY && mop.entityHit != null) - { - if (mop.entityHit == shootingEntity) - { - return; - } - - worldObj.createExplosion(this, this.posX, this.posY, this.posZ, (float) (2), causesEnvDamage); - //this.onImpact(mop.entityHit); - } else if (mop.typeOfHit == MovingObjectPosition.MovingObjectType.BLOCK) - { -// for(int i=-1;i<=1;i++) -// { -// for(int j=-1;j<=1;j++) -// { -// for(int k=-1;k<=1;k++) -// { -// if(worldObj.isAirBlock((int)this.posX+i, (int)this.posY+j, (int)this.posZ+k)) -// { -// worldObj.setBlock( (int)this.posX+i, (int)this.posY+j, (int)this.posZ+k,Block.fire.blockID); -// } -// } -// } -// } - worldObj.createExplosion(this, this.posX, this.posY, this.posZ, (float) (2), causesEnvDamage); - } - - this.setDead(); - } - - @Override - public void onImpact(Entity mop) - { - if (mop == shootingEntity && ticksInAir > 3) - { - shootingEntity.attackEntityFrom(DamageSource.causeMobDamage(shootingEntity), 1); - this.setDead(); - } else - { - //doDamage(8 + d6(), mop); - if (mop instanceof EntityLivingBase) - { - //((EntityLivingBase)mop).addPotionEffect(new PotionEffect(Potion.weakness.id, 60,2)); - //((EntityLivingBase)mop).setFire(50); - //((EntityLivingBase)mop).setRevengeTarget(shootingEntity); - if (((EntityLivingBase) mop).isImmuneToFire()) - { - doDamage((int) (projectileDamage), mop); - } else - { - doDamage(projectileDamage, mop); - } - } - - //worldObj.createExplosion(this, this.posX, this.posY, this.posZ, (float)(0.1), true); - } - - if (worldObj.isAirBlock((int) this.posX, (int) this.posY, (int) this.posZ)) - { - //worldObj.setBlock((int)this.posX, (int)this.posY, (int)this.posZ,Block.fire.blockID); - } - - spawnHitParticles("magicCrit", 8); - this.setDead(); - } - - @Override - public void doFiringParticles() - { - worldObj.spawnParticle("mobSpellAmbient", posX + smallGauss(0.1D), posY + smallGauss(0.1D), posZ + smallGauss(0.1D), 0.5D, 0.5D, 0.5D); - worldObj.spawnParticle("explode", posX, posY, posZ, gaussian(motionX), gaussian(motionY), gaussian(motionZ)); - } - - @Override - public void writeEntityToNBT(NBTTagCompound par1NBTTagCompound) - { - super.writeEntityToNBT(par1NBTTagCompound); - par1NBTTagCompound.setBoolean("causesEnvDamage", causesEnvDamage); - } - - /** - * (abstract) Protected helper method to read subclass entity data from NBT. - */ - @Override - public void readEntityFromNBT(NBTTagCompound par1NBTTagCompound) - { - super.readEntityFromNBT(par1NBTTagCompound); - causesEnvDamage = par1NBTTagCompound.getBoolean("causesEnvDamage"); - } -} diff --git a/src-backup/main/java/WayofTime/alchemicalWizardry/common/entity/projectile/FireProjectile.java b/src-backup/main/java/WayofTime/alchemicalWizardry/common/entity/projectile/FireProjectile.java deleted file mode 100644 index 7ab8f052..00000000 --- a/src-backup/main/java/WayofTime/alchemicalWizardry/common/entity/projectile/FireProjectile.java +++ /dev/null @@ -1,115 +0,0 @@ -package WayofTime.alchemicalWizardry.common.entity.projectile; - -import net.minecraft.block.Block; -import net.minecraft.entity.Entity; -import net.minecraft.entity.EntityLivingBase; -import net.minecraft.init.Blocks; -import net.minecraft.potion.Potion; -import net.minecraft.util.DamageSource; -import net.minecraft.util.MovingObjectPosition; -import net.minecraft.world.World; - -public class FireProjectile extends EnergyBlastProjectile -{ - public FireProjectile(World par1World) - { - super(par1World); - } - - public FireProjectile(World par1World, double par2, double par4, double par6) - { - super(par1World, par2, par4, par6); - } - - public FireProjectile(World par1World, EntityLivingBase par2EntityPlayer, int damage) - { - super(par1World, par2EntityPlayer, damage); - } - - public FireProjectile(World par1World, EntityLivingBase par2EntityPlayer, int damage, int maxTicksInAir, double posX, double posY, double posZ, float rotationYaw, float rotationPitch) - { - super(par1World, par2EntityPlayer, damage, maxTicksInAir, posX, posY, posZ, rotationYaw, rotationPitch); - } - - public FireProjectile(World par1World, EntityLivingBase par2EntityLivingBase, EntityLivingBase par3EntityLivingBase, float par4, float par5, int damage, int maxTicksInAir) - { - super(par1World, par2EntityLivingBase, par3EntityLivingBase, par4, par5, damage, maxTicksInAir); - } - - @Override - public DamageSource getDamageSource() - { - return DamageSource.causeMobDamage(shootingEntity); - } - - @Override - public void onImpact(MovingObjectPosition mop) - { - if (mop.typeOfHit == MovingObjectPosition.MovingObjectType.ENTITY && mop.entityHit != null) - { - if (mop.entityHit == shootingEntity) - { - return; - } - - this.onImpact(mop.entityHit); - } else if (mop.typeOfHit == MovingObjectPosition.MovingObjectType.BLOCK) - { - for (int i = -1; i <= 1; i++) - { - for (int j = -1; j <= 1; j++) - { - for (int k = -1; k <= 1; k++) - { - if (worldObj.isAirBlock((int) this.posX + i, (int) this.posY + j, (int) this.posZ + k)) - { - worldObj.setBlock((int) this.posX + i, (int) this.posY + j, (int) this.posZ + k, Blocks.fire); - } - } - } - } - - //worldObj.createExplosion(this, this.posX, this.posY, this.posZ, (float)(0.1), true); - } - - this.setDead(); - } - - @Override - public void onImpact(Entity mop) - { - if (mop == shootingEntity && ticksInAir > 3) - { - shootingEntity.attackEntityFrom(DamageSource.causeMobDamage(shootingEntity), 1); - this.setDead(); - } else - { - //doDamage(8 + d6(), mop); - if (mop instanceof EntityLivingBase) - { - //((EntityLivingBase)mop).addPotionEffect(new PotionEffect(Potion.weakness.id, 60,2)); - ((EntityLivingBase) mop).setFire(50); - ((EntityLivingBase) mop).setRevengeTarget(shootingEntity); - - if (((EntityLivingBase) mop).isPotionActive(Potion.fireResistance) || ((EntityLivingBase) mop).isImmuneToFire()) - { - ((EntityLivingBase) mop).attackEntityFrom(DamageSource.causeMobDamage(shootingEntity), 1); - } else - { - doDamage(projectileDamage, mop); - ((EntityLivingBase) mop).hurtResistantTime = 0; - } - } - - //worldObj.createExplosion(this, this.posX, this.posY, this.posZ, (float)(0.1), true); - } - - if (worldObj.isAirBlock((int) this.posX, (int) this.posY, (int) this.posZ)) - { - worldObj.setBlock((int) this.posX, (int) this.posY, (int) this.posZ, Blocks.fire); - } - - spawnHitParticles("magicCrit", 8); - this.setDead(); - } -} diff --git a/src-backup/main/java/WayofTime/alchemicalWizardry/common/entity/projectile/HolyProjectile.java b/src-backup/main/java/WayofTime/alchemicalWizardry/common/entity/projectile/HolyProjectile.java deleted file mode 100644 index 062ccbf7..00000000 --- a/src-backup/main/java/WayofTime/alchemicalWizardry/common/entity/projectile/HolyProjectile.java +++ /dev/null @@ -1,117 +0,0 @@ -package WayofTime.alchemicalWizardry.common.entity.projectile; - -import net.minecraft.entity.Entity; -import net.minecraft.entity.EntityLivingBase; -import net.minecraft.util.DamageSource; -import net.minecraft.util.MovingObjectPosition; -import net.minecraft.world.World; -import WayofTime.alchemicalWizardry.common.PacketHandler; -import WayofTime.alchemicalWizardry.common.spell.complex.effect.SpellHelper; - -public class HolyProjectile extends EnergyBlastProjectile -{ - public HolyProjectile(World par1World) - { - super(par1World); - } - - public HolyProjectile(World par1World, double par2, double par4, double par6) - { - super(par1World, par2, par4, par6); - } - - public HolyProjectile(World par1World, EntityLivingBase par2EntityPlayer, int damage) - { - super(par1World, par2EntityPlayer, damage); - } - - public HolyProjectile(World par1World, EntityLivingBase par2EntityPlayer, int damage, int maxTicksInAir, double posX, double posY, double posZ, float rotationYaw, float rotationPitch) - { - super(par1World, par2EntityPlayer, damage, maxTicksInAir, posX, posY, posZ, rotationYaw, rotationPitch); - } - - public HolyProjectile(World par1World, EntityLivingBase par2EntityLivingBase, EntityLivingBase par3EntityLivingBase, float par4, float par5, int damage, int maxTicksInAir) - { - super(par1World, par2EntityLivingBase, par3EntityLivingBase, par4, par5, damage, maxTicksInAir); - } - - @Override - public DamageSource getDamageSource() - { - return DamageSource.causeMobDamage(shootingEntity); - } - - @Override - public void onImpact(MovingObjectPosition mop) - { - if (mop.typeOfHit == MovingObjectPosition.MovingObjectType.ENTITY && mop.entityHit != null) - { - if (mop.entityHit == shootingEntity) - { - return; - } - - this.onImpact(mop.entityHit); - } else if (mop.typeOfHit == MovingObjectPosition.MovingObjectType.BLOCK) - { -// for(int i=-1;i<=1;i++) -// { -// for(int j=-1;j<=1;j++) -// { -// for(int k=-1;k<=1;k++) -// { -// if(worldObj.isAirBlock((int)this.posX+i, (int)this.posY+j, (int)this.posZ+k)) -// { -// worldObj.setBlock( (int)this.posX+i, (int)this.posY+j, (int)this.posZ+k,Block.fire.blockID); -// } -// } -// } -// } - } - - this.setDead(); - } - - @Override - public void onImpact(Entity mop) - { - if (mop == shootingEntity && ticksInAir > 3) - { - shootingEntity.attackEntityFrom(DamageSource.causeMobDamage(shootingEntity), 1); - this.setDead(); - } else - { - //doDamage(8 + d6(), mop); - if (mop instanceof EntityLivingBase) - { - //((EntityLivingBase)mop).addPotionEffect(new PotionEffect(Potion.weakness.id, 60,2)); - //((EntityLivingBase)mop).setFire(50); - //((EntityLivingBase)mop).setRevengeTarget(shootingEntity); - if (((EntityLivingBase) mop).isEntityUndead()) - { - doDamage((int) (projectileDamage * 2), mop); - } else - { - doDamage(projectileDamage, mop); - } - } - - //worldObj.createExplosion(this, this.posX, this.posY, this.posZ, (float)(0.1), true); - } - - if (worldObj.isAirBlock((int) this.posX, (int) this.posY, (int) this.posZ)) - { - //worldObj.setBlock((int)this.posX, (int)this.posY, (int)this.posZ,Block.fire.blockID); - } - - spawnHitParticles("magicCrit", 8); - this.setDead(); - } - - @Override - public void doFiringParticles() - { - SpellHelper.sendParticleToAllAround(worldObj, posX, posY, posZ, 30, worldObj.provider.dimensionId, "mobSpellAmbient", posX + smallGauss(0.1D), posY + smallGauss(0.1D), posZ + smallGauss(0.1D), 0.5D, 0.5D, 0.5D); - SpellHelper.sendParticleToAllAround(worldObj, posX, posY, posZ, 30, worldObj.provider.dimensionId, "mobSpell", posX, posY, posZ, 1.0F, 1.0F, 1.0F); - } -} diff --git a/src-backup/main/java/WayofTime/alchemicalWizardry/common/entity/projectile/IceProjectile.java b/src-backup/main/java/WayofTime/alchemicalWizardry/common/entity/projectile/IceProjectile.java deleted file mode 100644 index 06867d81..00000000 --- a/src-backup/main/java/WayofTime/alchemicalWizardry/common/entity/projectile/IceProjectile.java +++ /dev/null @@ -1,123 +0,0 @@ -package WayofTime.alchemicalWizardry.common.entity.projectile; - -import net.minecraft.entity.Entity; -import net.minecraft.entity.EntityLivingBase; -import net.minecraft.potion.Potion; -import net.minecraft.potion.PotionEffect; -import net.minecraft.util.DamageSource; -import net.minecraft.util.MovingObjectPosition; -import net.minecraft.world.World; -import WayofTime.alchemicalWizardry.common.PacketHandler; -import WayofTime.alchemicalWizardry.common.entity.mob.EntityIceDemon; -import WayofTime.alchemicalWizardry.common.spell.complex.effect.SpellHelper; - -public class IceProjectile extends EnergyBlastProjectile -{ - public IceProjectile(World par1World) - { - super(par1World); - } - - public IceProjectile(World par1World, double par2, double par4, double par6) - { - super(par1World, par2, par4, par6); - } - - public IceProjectile(World par1World, EntityLivingBase par2EntityPlayer, int damage) - { - super(par1World, par2EntityPlayer, damage); - } - - public IceProjectile(World par1World, EntityLivingBase par2EntityPlayer, int damage, int maxTicksInAir, double posX, double posY, double posZ, float rotationYaw, float rotationPitch) - { - super(par1World, par2EntityPlayer, damage, maxTicksInAir, posX, posY, posZ, rotationYaw, rotationPitch); - } - - public IceProjectile(World worldObj, EntityIceDemon entityIceDemon, EntityLivingBase par1EntityLivingBase, float f, float g, int i, int j) - { - super(worldObj, entityIceDemon, par1EntityLivingBase, f, g, i, j); - } - - @Override - public DamageSource getDamageSource() - { - return DamageSource.causeMobDamage(shootingEntity); - } - - @Override - public void onImpact(MovingObjectPosition mop) - { - if (mop.typeOfHit == MovingObjectPosition.MovingObjectType.ENTITY && mop.entityHit != null) - { - if (mop.entityHit == shootingEntity) - { - return; - } - - this.onImpact(mop.entityHit); - } else if (mop.typeOfHit == MovingObjectPosition.MovingObjectType.BLOCK) - { -// for(int i=-1;i<=1;i++) -// { -// for(int j=-1;j<=1;j++) -// { -// for(int k=-1;k<=1;k++) -// { -// if(worldObj.isAirBlock((int)this.posX+i, (int)this.posY+j, (int)this.posZ+k)) -// { -// worldObj.setBlock( (int)this.posX+i, (int)this.posY+j, (int)this.posZ+k,Block.fire.blockID); -// } -// } -// } -// } - //worldObj.createExplosion(this, this.posX, this.posY, this.posZ, (float)(0.1), true); - } - - this.setDead(); - } - - @Override - public void onImpact(Entity mop) - { - if (mop == shootingEntity && ticksInAir > 3) - { - shootingEntity.attackEntityFrom(DamageSource.causeMobDamage(shootingEntity), 1); - this.setDead(); - } else - { - //doDamage(8 + d6(), mop); - if (mop instanceof EntityLivingBase) - { - //((EntityLivingBase)mop).addPotionEffect(new PotionEffect(Potion.weakness.id, 60,2)); - //((EntityLivingBase)mop).setFire(50); - //((EntityLivingBase)mop).setRevengeTarget(shootingEntity); - if (((EntityLivingBase) mop).isImmuneToFire()) - { - doDamage((int) (projectileDamage * 2), mop); - ((EntityLivingBase) mop).addPotionEffect(new PotionEffect(Potion.moveSlowdown.id, 200, 2)); - } else - { - doDamage(projectileDamage, mop); - ((EntityLivingBase) mop).addPotionEffect(new PotionEffect(Potion.moveSlowdown.id, 100, 1)); - } - } - - //worldObj.createExplosion(this, this.posX, this.posY, this.posZ, (float)(0.1), true); - } - - if (worldObj.isAirBlock((int) this.posX, (int) this.posY, (int) this.posZ)) - { - //worldObj.setBlock((int)this.posX, (int)this.posY, (int)this.posZ,Block.fire.blockID); - } - - spawnHitParticles("magicCrit", 8); - this.setDead(); - } - - @Override - public void doFiringParticles() - { - SpellHelper.sendParticleToAllAround(worldObj, posX, posY, posZ, 30, worldObj.provider.dimensionId, "mobSpellAmbient", posX + smallGauss(0.1D), posY + smallGauss(0.1D), posZ + smallGauss(0.1D), 0.5D, 0.5D, 0.5D); - SpellHelper.sendParticleToAllAround(worldObj, posX, posY, posZ, 30, worldObj.provider.dimensionId, "explode", posX, posY, posZ, gaussian(motionX), gaussian(motionY), gaussian(motionZ)); - } -} diff --git a/src-backup/main/java/WayofTime/alchemicalWizardry/common/entity/projectile/LightningBoltProjectile.java b/src-backup/main/java/WayofTime/alchemicalWizardry/common/entity/projectile/LightningBoltProjectile.java deleted file mode 100644 index 106cf420..00000000 --- a/src-backup/main/java/WayofTime/alchemicalWizardry/common/entity/projectile/LightningBoltProjectile.java +++ /dev/null @@ -1,126 +0,0 @@ -package WayofTime.alchemicalWizardry.common.entity.projectile; - -import net.minecraft.entity.Entity; -import net.minecraft.entity.EntityLivingBase; -import net.minecraft.entity.effect.EntityLightningBolt; -import net.minecraft.nbt.NBTTagCompound; -import net.minecraft.util.DamageSource; -import net.minecraft.util.MovingObjectPosition; -import net.minecraft.world.World; -import WayofTime.alchemicalWizardry.common.spell.complex.effect.SpellHelper; - -public class LightningBoltProjectile extends EnergyBlastProjectile -{ - private boolean causeLightning; - - public LightningBoltProjectile(World par1World) - { - super(par1World); - } - - public LightningBoltProjectile(World par1World, double par2, double par4, double par6) - { - super(par1World, par2, par4, par6); - } - - public LightningBoltProjectile(World par1World, EntityLivingBase par2EntityPlayer, int damage, boolean flag) - { - super(par1World, par2EntityPlayer, damage); - causeLightning = flag; - } - - public LightningBoltProjectile(World par1World, EntityLivingBase par2EntityPlayer, int damage, int maxTicksInAir, double posX, double posY, double posZ, float rotationYaw, float rotationPitch, boolean flag) - { - super(par1World, par2EntityPlayer, damage, maxTicksInAir, posX, posY, posZ, rotationYaw, rotationPitch); - causeLightning = flag; - } - - @Override - public DamageSource getDamageSource() - { - return DamageSource.causeMobDamage(shootingEntity); - } - - @Override - public void onImpact(MovingObjectPosition mop) - { - if (mop.typeOfHit == MovingObjectPosition.MovingObjectType.ENTITY && mop.entityHit != null) - { - if (mop.entityHit == shootingEntity) - { - return; - } - - this.onImpact(mop.entityHit); - } else if (mop.typeOfHit == MovingObjectPosition.MovingObjectType.BLOCK) - { - if (causeLightning) - { - this.worldObj.addWeatherEffect(new EntityLightningBolt(this.worldObj, this.posX, this.posY, this.posZ)); - } - } - - this.setDead(); - } - - @Override - public void onImpact(Entity mop) - { - if (mop == shootingEntity && ticksInAir > 3) - { - //shootingEntity.attackEntityFrom(DamageSource.causePlayerDamage(shootingEntity), 1); - this.setDead(); - } else - { - //doDamage(8 + d6(), mop); - if (mop instanceof EntityLivingBase) - { - //((EntityLivingBase)mop).addPotionEffect(new PotionEffect(Potion.weakness.id, 60,2)); - //((EntityLivingBase)mop).setFire(50); - //((EntityLivingBase)mop).setRevengeTarget(shootingEntity); -// if(((EntityLivingBase)mop).isEntityUndead()) -// { -// doDamage((int)(projectileDamage*2),mop); -// }else -// { -// doDamage(projectileDamage, mop); -// } - if (causeLightning) - { - this.worldObj.addWeatherEffect(new EntityLightningBolt(this.worldObj, ((EntityLivingBase) mop).posX, ((EntityLivingBase) mop).posY, ((EntityLivingBase) mop).posZ)); - } else - { - doDamage(projectileDamage, mop); - } - - //((EntityLivingBase)mop).setVelocity(this.motionX*2, ((EntityLivingBase)mop).motionY+1.5, this.motionZ*2); - } - - //worldObj.createExplosion(this, this.posX, this.posY, this.posZ, (float)(0.1), true); - } - - spawnHitParticles("magicCrit", 8); - this.setDead(); - } - - @Override - public void doFiringParticles() - { - SpellHelper.sendParticleToAllAround(worldObj, posX, posY, posZ, 30, worldObj.provider.dimensionId, "mobSpellAmbient", posX + smallGauss(0.1D), posY + smallGauss(0.1D), posZ + smallGauss(0.1D), 0.5D, 0.5D, 0.5D); - SpellHelper.sendParticleToAllAround(worldObj, posX, posY, posZ, 30, worldObj.provider.dimensionId, "mobSpell", posX, posY, posZ, 1.0F, 1.0F, 1.0F); - } - - @Override - public void writeEntityToNBT(NBTTagCompound par1NBTTagCompound) - { - super.writeEntityToNBT(par1NBTTagCompound); - par1NBTTagCompound.setBoolean("causeLightning", causeLightning); - } - - @Override - public void readEntityFromNBT(NBTTagCompound par1NBTTagCompound) - { - super.readEntityFromNBT(par1NBTTagCompound); - causeLightning = par1NBTTagCompound.getBoolean("causeLightning"); - } -} \ No newline at end of file diff --git a/src-backup/main/java/WayofTime/alchemicalWizardry/common/entity/projectile/MudProjectile.java b/src-backup/main/java/WayofTime/alchemicalWizardry/common/entity/projectile/MudProjectile.java deleted file mode 100644 index 2c944959..00000000 --- a/src-backup/main/java/WayofTime/alchemicalWizardry/common/entity/projectile/MudProjectile.java +++ /dev/null @@ -1,131 +0,0 @@ -package WayofTime.alchemicalWizardry.common.entity.projectile; - -import net.minecraft.entity.Entity; -import net.minecraft.entity.EntityLivingBase; -import net.minecraft.nbt.NBTTagCompound; -import net.minecraft.potion.Potion; -import net.minecraft.potion.PotionEffect; -import net.minecraft.util.DamageSource; -import net.minecraft.util.MovingObjectPosition; -import net.minecraft.world.World; -import WayofTime.alchemicalWizardry.common.PacketHandler; -import WayofTime.alchemicalWizardry.common.spell.complex.effect.SpellHelper; - -public class MudProjectile extends EnergyBlastProjectile -{ - private boolean doesBlindness; //True for when it applies blindness, false for slowness - - public MudProjectile(World par1World) - { - super(par1World); - } - - public MudProjectile(World par1World, double par2, double par4, double par6) - { - super(par1World, par2, par4, par6); - } - - public MudProjectile(World par1World, EntityLivingBase par2EntityPlayer, int damage, boolean flag) - { - super(par1World, par2EntityPlayer, damage); - doesBlindness = flag; - } - - public MudProjectile(World par1World, EntityLivingBase par2EntityPlayer, int damage, int maxTicksInAir, double posX, double posY, double posZ, float rotationYaw, float rotationPitch, boolean flag) - { - super(par1World, par2EntityPlayer, damage, maxTicksInAir, posX, posY, posZ, rotationYaw, rotationPitch); - doesBlindness = flag; - } - - public MudProjectile(World par1World, EntityLivingBase par2EntityLivingBase, EntityLivingBase par3EntityLivingBase, float par4, float par5, int damage, int maxTicksInAir, boolean flag) - { - super(par1World, par2EntityLivingBase, par3EntityLivingBase, par4, par5, damage, maxTicksInAir); - doesBlindness = flag; - } - - @Override - public DamageSource getDamageSource() - { - return DamageSource.causeMobDamage(shootingEntity); - } - - @Override - public void onImpact(MovingObjectPosition mop) - { - if (mop.typeOfHit == MovingObjectPosition.MovingObjectType.ENTITY && mop.entityHit != null) - { - if (mop.entityHit == shootingEntity) - { - return; - } - - this.onImpact(mop.entityHit); - } else if (mop.typeOfHit == MovingObjectPosition.MovingObjectType.BLOCK) - { - } - - this.setDead(); - } - - @Override - public void onImpact(Entity mop) - { - if (mop == shootingEntity && ticksInAir > 3) - { - //shootingEntity.attackEntityFrom(DamageSource.causePlayerDamage(shootingEntity), 1); - this.setDead(); - } else - { - //doDamage(8 + d6(), mop); - if (mop instanceof EntityLivingBase) - { - //((EntityLivingBase)mop).addPotionEffect(new PotionEffect(Potion.weakness.id, 60,2)); - //((EntityLivingBase)mop).setFire(50); - //((EntityLivingBase)mop).setRevengeTarget(shootingEntity); -// if(((EntityLivingBase)mop).isEntityUndead()) -// { -// doDamage((int)(projectileDamage*2),mop); -// }else -// { -// doDamage(projectileDamage, mop); -// } - if (doesBlindness) - { - ((EntityLivingBase) mop).addPotionEffect(new PotionEffect(Potion.blindness.id, 100, 0)); - } else - { - ((EntityLivingBase) mop).addPotionEffect(new PotionEffect(Potion.moveSlowdown.id, 100, 2)); - } - - doDamage(projectileDamage, mop); - //((EntityLivingBase)mop).setVelocity(this.motionX*2, ((EntityLivingBase)mop).motionY+1.5, this.motionZ*2); - } - - //worldObj.createExplosion(this, this.posX, this.posY, this.posZ, (float)(0.1), true); - } - - spawnHitParticles("magicCrit", 8); - this.setDead(); - } - - @Override - public void doFiringParticles() - { - SpellHelper.sendParticleToAllAround(worldObj, posX, posY, posZ, 30, worldObj.provider.dimensionId, "mobSpellAmbient", posX + smallGauss(0.1D), posY + smallGauss(0.1D), posZ + smallGauss(0.1D), 0.5D, 0.5D, 0.5D); - SpellHelper.sendParticleToAllAround(worldObj, posX, posY, posZ, 30, worldObj.provider.dimensionId, "mobSpell", posX, posY, posZ, 0.5F, 0.297F, 0.0664F); - } - - @Override - public void writeEntityToNBT(NBTTagCompound par1NBTTagCompound) - { - super.writeEntityToNBT(par1NBTTagCompound); - par1NBTTagCompound.setBoolean("doesBlindness", doesBlindness); - } - - @Override - public void readEntityFromNBT(NBTTagCompound par1NBTTagCompound) - { - super.readEntityFromNBT(par1NBTTagCompound); - doesBlindness = par1NBTTagCompound.getBoolean("doesBlindness"); - } -} diff --git a/src-backup/main/java/WayofTime/alchemicalWizardry/common/entity/projectile/TeleportProjectile.java b/src-backup/main/java/WayofTime/alchemicalWizardry/common/entity/projectile/TeleportProjectile.java deleted file mode 100644 index c448fadf..00000000 --- a/src-backup/main/java/WayofTime/alchemicalWizardry/common/entity/projectile/TeleportProjectile.java +++ /dev/null @@ -1,205 +0,0 @@ -package WayofTime.alchemicalWizardry.common.entity.projectile; - -import net.minecraft.entity.Entity; -import net.minecraft.entity.EntityLivingBase; -import net.minecraft.entity.player.EntityPlayerMP; -import net.minecraft.nbt.NBTTagCompound; -import net.minecraft.util.DamageSource; -import net.minecraft.util.MovingObjectPosition; -import net.minecraft.world.World; -import net.minecraftforge.common.MinecraftForge; -import net.minecraftforge.event.entity.living.EnderTeleportEvent; -import WayofTime.alchemicalWizardry.common.spell.complex.effect.SpellHelper; -import WayofTime.alchemicalWizardry.common.spell.simple.SpellTeleport; - -public class TeleportProjectile extends EnergyBlastProjectile -{ - private boolean isEntityTeleport; //True if the entity firing teleports on hit - - public TeleportProjectile(World par1World) - { - super(par1World); - this.motionX *= 3; - this.motionY *= 3; - this.motionZ *= 3; - } - - public TeleportProjectile(World par1World, double par2, double par4, double par6) - { - super(par1World, par2, par4, par6); - this.motionX *= 3; - this.motionY *= 3; - this.motionZ *= 3; - } - - public TeleportProjectile(World par1World, EntityLivingBase par2EntityPlayer, int damage, boolean flag) - { - super(par1World, par2EntityPlayer, damage); - isEntityTeleport = flag; - this.motionX *= 3; - this.motionY *= 3; - this.motionZ *= 3; - } - - public TeleportProjectile(World par1World, EntityLivingBase par2EntityPlayer, int damage, int maxTicksInAir, double posX, double posY, double posZ, float rotationYaw, float rotationPitch, boolean flag) - { - super(par1World, par2EntityPlayer, damage, maxTicksInAir, posX, posY, posZ, rotationYaw, rotationPitch); - isEntityTeleport = flag; - this.motionX *= 3; - this.motionY *= 3; - this.motionZ *= 3; - } - - @Override - public DamageSource getDamageSource() - { - return DamageSource.causeMobDamage(shootingEntity); - } - - @Override - public void onImpact(MovingObjectPosition mop) - { - if (mop.typeOfHit == MovingObjectPosition.MovingObjectType.ENTITY && mop.entityHit != null) - { - if (mop.entityHit == shootingEntity) - { - return; - } - - this.onImpact(mop.entityHit); - } else if (mop.typeOfHit == MovingObjectPosition.MovingObjectType.BLOCK) - { - if (isEntityTeleport) - { - if (shootingEntity != null && shootingEntity instanceof EntityPlayerMP) - { - EntityPlayerMP entityplayermp = (EntityPlayerMP) shootingEntity; - - if(entityplayermp.worldObj == this.worldObj) - //if (!entityplayermp.playerNetServerHandler.connectionClosed && entityplayermp.worldObj == this.worldObj) - { - EnderTeleportEvent event = new EnderTeleportEvent(entityplayermp, this.posX, this.posY, this.posZ, 5.0F); - - if (!MinecraftForge.EVENT_BUS.post(event)) - { - if (shootingEntity.isRiding()) - { - shootingEntity.mountEntity((Entity) null); - } - - shootingEntity.setPositionAndUpdate(event.targetX, event.targetY, event.targetZ); -// this.getThrower().fallDistance = 0.0F; -// this.getThrower().attackEntityFrom(DamageSource.fall, event.attackDamage); - } - } - } - } - } - - this.setDead(); - } - - @Override - public void onImpact(Entity mop) - { - if (mop == shootingEntity && ticksInAir > 3) - { - //shootingEntity.attackEntityFrom(DamageSource.causePlayerDamage(shootingEntity), 1); - this.setDead(); - } else - { - //doDamage(8 + d6(), mop); - if (mop instanceof EntityLivingBase) - { - //((EntityLivingBase)mop).addPotionEffect(new PotionEffect(Potion.weakness.id, 60,2)); - //((EntityLivingBase)mop).setFire(50); - //((EntityLivingBase)mop).setRevengeTarget(shootingEntity); -// if(((EntityLivingBase)mop).isEntityUndead()) -// { -// doDamage((int)(projectileDamage*2),mop); -// }else -// { -// doDamage(projectileDamage, mop); -// } - if (isEntityTeleport) - { - if (shootingEntity != null && shootingEntity instanceof EntityPlayerMP) - { - EntityPlayerMP entityplayermp = (EntityPlayerMP) shootingEntity; - - if(entityplayermp.worldObj == this.worldObj) - //if (!entityplayermp.playerNetServerHandler.connectionClosed && entityplayermp.worldObj == this.worldObj) - { - EnderTeleportEvent event = new EnderTeleportEvent(entityplayermp, this.posX, this.posY, this.posZ, 5.0F); - - if (!MinecraftForge.EVENT_BUS.post(event)) - { - if (shootingEntity.isRiding()) - { - shootingEntity.mountEntity((Entity) null); - } - - shootingEntity.setPositionAndUpdate(event.targetX, event.targetY, event.targetZ); -// this.getThrower().fallDistance = 0.0F; -// this.getThrower().attackEntityFrom(DamageSource.fall, event.attackDamage); - } - } - } - } else - { -// int x = (int)this.posX + mop.worldObj.rand.nextInt(100) - mop.worldObj.rand.nextInt(100); -// int y = (int)this.posY + mop.worldObj.rand.nextInt(10) - mop.worldObj.rand.nextInt(10); -// int z = (int)this.posZ + mop.worldObj.rand.nextInt(100) - mop.worldObj.rand.nextInt(100); -// -// boolean bool = false; -// int i = 0; -// -// while(!bool&&i<100) -// { -// if(worldObj.isAirBlock(x, y, z)||worldObj.isAirBlock(x, y+1, z)) -// { -// ((EntityLivingBase) mop).setPositionAndUpdate(x, y, z); -// bool=true; -// }else -// { -// x = (int)this.posX + mop.worldObj.rand.nextInt(100) - mop.worldObj.rand.nextInt(100); -// y = (int)this.posY + mop.worldObj.rand.nextInt(10) - mop.worldObj.rand.nextInt(10); -// z = (int)this.posZ + mop.worldObj.rand.nextInt(100) - mop.worldObj.rand.nextInt(100); -// i++; -// } -// } - SpellTeleport.teleportRandomly((EntityLivingBase) mop, 64); - } - - //doDamage(projectileDamage, mop); - //((EntityLivingBase)mop).setVelocity(this.motionX*2, ((EntityLivingBase)mop).motionY+1.5, this.motionZ*2); - } - - //worldObj.createExplosion(this, this.posX, this.posY, this.posZ, (float)(0.1), true); - } - - spawnHitParticles("magicCrit", 8); - this.setDead(); - } - - @Override - public void doFiringParticles() - { - SpellHelper.sendParticleToAllAround(worldObj, posX, posY, posZ, 30, worldObj.provider.dimensionId, "mobSpellAmbient", posX + smallGauss(0.1D), posY + smallGauss(0.1D), posZ + smallGauss(0.1D), 0.5D, 0.5D, 0.5D); - SpellHelper.sendParticleToAllAround(worldObj, posX, posY, posZ, 30, worldObj.provider.dimensionId, "portal", posX, posY, posZ, -motionX, -motionY, -motionZ); - } - - @Override - public void writeEntityToNBT(NBTTagCompound par1NBTTagCompound) - { - super.writeEntityToNBT(par1NBTTagCompound); - par1NBTTagCompound.setBoolean("isEntityTeleport", isEntityTeleport); - } - - @Override - public void readEntityFromNBT(NBTTagCompound par1NBTTagCompound) - { - super.readEntityFromNBT(par1NBTTagCompound); - isEntityTeleport = par1NBTTagCompound.getBoolean("isEntityTeleport"); - } -} diff --git a/src-backup/main/java/WayofTime/alchemicalWizardry/common/entity/projectile/WaterProjectile.java b/src-backup/main/java/WayofTime/alchemicalWizardry/common/entity/projectile/WaterProjectile.java deleted file mode 100644 index 8fa7704c..00000000 --- a/src-backup/main/java/WayofTime/alchemicalWizardry/common/entity/projectile/WaterProjectile.java +++ /dev/null @@ -1,107 +0,0 @@ -package WayofTime.alchemicalWizardry.common.entity.projectile; - -import net.minecraft.entity.Entity; -import net.minecraft.entity.EntityLivingBase; -import net.minecraft.potion.PotionEffect; -import net.minecraft.util.DamageSource; -import net.minecraft.util.MovingObjectPosition; -import net.minecraft.world.World; -import WayofTime.alchemicalWizardry.AlchemicalWizardry; -import WayofTime.alchemicalWizardry.common.PacketHandler; -import WayofTime.alchemicalWizardry.common.spell.complex.effect.SpellHelper; - -public class WaterProjectile extends EnergyBlastProjectile -{ - public WaterProjectile(World par1World) - { - super(par1World); - } - - public WaterProjectile(World par1World, double par2, double par4, double par6) - { - super(par1World, par2, par4, par6); - } - - public WaterProjectile(World par1World, EntityLivingBase par2EntityPlayer, int damage) - { - super(par1World, par2EntityPlayer, damage); - } - - public WaterProjectile(World par1World, EntityLivingBase par2EntityPlayer, int damage, int maxTicksInAir, double posX, double posY, double posZ, float rotationYaw, float rotationPitch) - { - super(par1World, par2EntityPlayer, damage, maxTicksInAir, posX, posY, posZ, rotationYaw, rotationPitch); - } - - @Override - public DamageSource getDamageSource() - { - return DamageSource.causeMobDamage(shootingEntity); - } - - @Override - public void onImpact(MovingObjectPosition mop) - { - if (mop.typeOfHit == MovingObjectPosition.MovingObjectType.ENTITY && mop.entityHit != null) - { - if (mop.entityHit == shootingEntity) - { - return; - } - - this.onImpact(mop.entityHit); - } else if (mop.typeOfHit == MovingObjectPosition.MovingObjectType.BLOCK) - { - } - - this.setDead(); - } - - @Override - public void onImpact(Entity mop) - { - if (mop == shootingEntity && ticksInAir > 3) - { - //shootingEntity.attackEntityFrom(DamageSource.causePlayerDamage(shootingEntity), 1); - this.setDead(); - } else - { - //doDamage(8 + d6(), mop); - if (mop instanceof EntityLivingBase) - { - //((EntityLivingBase)mop).addPotionEffect(new PotionEffect(Potion.weakness.id, 60,2)); - //((EntityLivingBase)mop).setFire(50); - //((EntityLivingBase)mop).setRevengeTarget(shootingEntity); -// if(((EntityLivingBase)mop).isEntityUndead()) -// { -// doDamage((int)(projectileDamage*2),mop); -// }else -// { -// doDamage(projectileDamage, mop); -// } - if (((EntityLivingBase) mop).isImmuneToFire()) - { - doDamage(projectileDamage * 2, mop); - ((EntityLivingBase) mop).addPotionEffect(new PotionEffect(AlchemicalWizardry.customPotionDrowning.id, 80, 1)); - } else - { - doDamage(projectileDamage, mop); - ((EntityLivingBase) mop).addPotionEffect(new PotionEffect(AlchemicalWizardry.customPotionDrowning.id, 80, 0)); - } - - //((EntityLivingBase)mop).setVelocity(this.motionX*2, ((EntityLivingBase)mop).motionY+1.5, this.motionZ*2); - } - - //worldObj.createExplosion(this, this.posX, this.posY, this.posZ, (float)(0.1), true); - } - - spawnHitParticles("magicCrit", 8); - this.setDead(); - } - - @Override - public void doFiringParticles() - { - SpellHelper.sendParticleToAllAround(worldObj, posX, posY, posZ, 30, worldObj.provider.dimensionId, "portal", posX, posY, posZ, -motionX, -motionY, -motionZ); - SpellHelper.sendParticleToAllAround(worldObj, posX, posY, posZ, 30, worldObj.provider.dimensionId, "mobSpellAmbient", posX + smallGauss(0.1D), posY + smallGauss(0.1D), posZ + smallGauss(0.1D), 0.5D, 0.5D, 0.5D); - } -} diff --git a/src-backup/main/java/WayofTime/alchemicalWizardry/common/entity/projectile/WindGustProjectile.java b/src-backup/main/java/WayofTime/alchemicalWizardry/common/entity/projectile/WindGustProjectile.java deleted file mode 100644 index 46fa01d7..00000000 --- a/src-backup/main/java/WayofTime/alchemicalWizardry/common/entity/projectile/WindGustProjectile.java +++ /dev/null @@ -1,110 +0,0 @@ -package WayofTime.alchemicalWizardry.common.entity.projectile; - -import net.minecraft.entity.Entity; -import net.minecraft.entity.EntityLivingBase; -import net.minecraft.util.DamageSource; -import net.minecraft.util.MovingObjectPosition; -import net.minecraft.world.World; -import WayofTime.alchemicalWizardry.common.spell.complex.effect.SpellHelper; - -public class WindGustProjectile extends EnergyBlastProjectile -{ - public WindGustProjectile(World par1World) - { - super(par1World); - } - - public WindGustProjectile(World par1World, double par2, double par4, double par6) - { - super(par1World, par2, par4, par6); - } - - public WindGustProjectile(World par1World, EntityLivingBase par2EntityPlayer, int damage) - { - super(par1World, par2EntityPlayer, damage); - } - - public WindGustProjectile(World par1World, EntityLivingBase par2EntityPlayer, int damage, int maxTicksInAir, double posX, double posY, double posZ, float rotationYaw, float rotationPitch) - { - super(par1World, par2EntityPlayer, damage, maxTicksInAir, posX, posY, posZ, rotationYaw, rotationPitch); - } - - @Override - public DamageSource getDamageSource() - { - return DamageSource.causeMobDamage(shootingEntity); - } - - @Override - public void onImpact(MovingObjectPosition mop) - { - if (mop.typeOfHit == MovingObjectPosition.MovingObjectType.ENTITY && mop.entityHit != null) - { - if (mop.entityHit == shootingEntity) - { - return; - } - - this.onImpact(mop.entityHit); - } else if (mop.typeOfHit == MovingObjectPosition.MovingObjectType.BLOCK) - { -// for(int i=-1;i<=1;i++) -// { -// for(int j=-1;j<=1;j++) -// { -// for(int k=-1;k<=1;k++) -// { -// if(worldObj.isAirBlock((int)this.posX+i, (int)this.posY+j, (int)this.posZ+k)) -// { -// worldObj.setBlock( (int)this.posX+i, (int)this.posY+j, (int)this.posZ+k,Block.fire.blockID); -// } -// } -// } -// } - } - - this.setDead(); - } - - @Override - public void onImpact(Entity mop) - { - if (mop == shootingEntity && ticksInAir > 3) - { - //shootingEntity.attackEntityFrom(DamageSource.causePlayerDamage(shootingEntity), 1); - this.setDead(); - } else - { - //doDamage(8 + d6(), mop); - if (mop instanceof EntityLivingBase) - { - //((EntityLivingBase)mop).addPotionEffect(new PotionEffect(Potion.weakness.id, 60,2)); - //((EntityLivingBase)mop).setFire(50); - //((EntityLivingBase)mop).setRevengeTarget(shootingEntity); -// if(((EntityLivingBase)mop).isEntityUndead()) -// { -// doDamage((int)(projectileDamage*2),mop); -// }else -// { -// doDamage(projectileDamage, mop); -// } - ((EntityLivingBase) mop).motionX = this.motionX * 2; - ((EntityLivingBase) mop).motionY = 1.5; - ((EntityLivingBase) mop).motionZ = this.motionZ * 2; - //((EntityLivingBase)mop).setVelocity(this.motionX*2, ((EntityLivingBase)mop).motionY+1.5, this.motionZ*2); - } - - //worldObj.createExplosion(this, this.posX, this.posY, this.posZ, (float)(0.1), true); - } - - spawnHitParticles("magicCrit", 8); - this.setDead(); - } - - @Override - public void doFiringParticles() - { - SpellHelper.sendParticleToAllAround(worldObj, posX, posY, posZ, 30, worldObj.provider.dimensionId, "mobSpellAmbient", posX + smallGauss(0.1D), posY + smallGauss(0.1D), posZ + smallGauss(0.1D), 0.5D, 0.5D, 0.5D); - SpellHelper.sendParticleToAllAround(worldObj, posX, posY, posZ, 30, worldObj.provider.dimensionId, "mobSpell", posX, posY, posZ, 1.0F, 1.0F, 1.0F); - } -} \ No newline at end of file diff --git a/src-backup/main/java/WayofTime/alchemicalWizardry/common/harvest/BloodMagicHarvestHandler.java b/src-backup/main/java/WayofTime/alchemicalWizardry/common/harvest/BloodMagicHarvestHandler.java deleted file mode 100644 index fdf6e3c8..00000000 --- a/src-backup/main/java/WayofTime/alchemicalWizardry/common/harvest/BloodMagicHarvestHandler.java +++ /dev/null @@ -1,129 +0,0 @@ -package WayofTime.alchemicalWizardry.common.harvest; - -import java.util.List; - -import net.minecraft.block.Block; -import net.minecraft.entity.item.EntityItem; -import net.minecraft.init.Blocks; -import net.minecraft.init.Items; -import net.minecraft.item.Item; -import net.minecraft.item.ItemStack; -import net.minecraft.world.World; -import net.minecraftforge.common.IPlantable; -import WayofTime.alchemicalWizardry.api.harvest.IHarvestHandler; - -public class BloodMagicHarvestHandler implements IHarvestHandler -{ - public boolean canHandleBlock(Block block) - { - return block == Blocks.wheat || block == Blocks.carrots || block == Blocks.potatoes || block == Blocks.nether_wart; - } - - public int getHarvestMeta(Block block) - { - if(block == Blocks.wheat) - { - return 7; - } - if(block == Blocks.carrots) - { - return 7; - } - if(block == Blocks.potatoes) - { - return 7; - } - if(block == Blocks.nether_wart) - { - return 3; - } - return 7; - } - - @Override - public boolean harvestAndPlant(World world, int xCoord, int yCoord, int zCoord, Block block, int meta) - { - if(!this.canHandleBlock(block) || meta != this.getHarvestMeta(block)) - { - return false; - } - - IPlantable seed = this.getSeedItem(block); - - if(seed == null) - { - return false; - } - - int fortune = 0; - - List list = block.getDrops(world, xCoord, yCoord, zCoord, meta, fortune); - boolean foundAndRemovedSeed = false; - - for(ItemStack stack : list) - { - if(stack == null) - { - continue; - } - - Item item = stack.getItem(); - if(item == seed) - { - int itemSize = stack.stackSize; - if(itemSize > 1) - { - stack.stackSize--; - foundAndRemovedSeed = true; - break; - }else if(itemSize == 1) - { - list.remove(stack); - foundAndRemovedSeed = true; - break; - } - } - } - - if(foundAndRemovedSeed) - { - int plantMeta = seed.getPlantMetadata(world, xCoord, yCoord, zCoord); - Block plantBlock = seed.getPlant(world, xCoord, yCoord, zCoord); - - world.func_147480_a(xCoord, yCoord, zCoord, false); - - world.setBlock(xCoord, yCoord, zCoord, plantBlock, plantMeta, 3); - - for(ItemStack stack : list) - { - EntityItem itemEnt = new EntityItem(world, xCoord, yCoord, zCoord, stack); - - world.spawnEntityInWorld(itemEnt); - } - } - - return false; - } - - public IPlantable getSeedItem(Block block) - { - if(block == Blocks.wheat) - { - return (IPlantable) Items.wheat_seeds; - } - if(block == Blocks.carrots) - { - return (IPlantable) Items.carrot; - } - if(block == Blocks.potatoes) - { - return (IPlantable) Items.potato; - } - if(block == Blocks.nether_wart) - { - return (IPlantable) Items.nether_wart; - } - - return null; - } -} \ No newline at end of file diff --git a/src-backup/main/java/WayofTime/alchemicalWizardry/common/harvest/CactusReedHarvestHandler.java b/src-backup/main/java/WayofTime/alchemicalWizardry/common/harvest/CactusReedHarvestHandler.java deleted file mode 100644 index e80e3e4f..00000000 --- a/src-backup/main/java/WayofTime/alchemicalWizardry/common/harvest/CactusReedHarvestHandler.java +++ /dev/null @@ -1,39 +0,0 @@ -package WayofTime.alchemicalWizardry.common.harvest; - -import java.util.List; - -import net.minecraft.block.Block; -import net.minecraft.entity.item.EntityItem; -import net.minecraft.init.Blocks; -import net.minecraft.init.Items; -import net.minecraft.item.Item; -import net.minecraft.item.ItemStack; -import net.minecraft.world.World; -import net.minecraftforge.common.IPlantable; -import WayofTime.alchemicalWizardry.api.harvest.IHarvestHandler; - -public class CactusReedHarvestHandler implements IHarvestHandler -{ - public boolean canHandleBlock(Block block) - { - return block == Blocks.reeds || block == Blocks.cactus; - } - - @Override - public boolean harvestAndPlant(World world, int xCoord, int yCoord, int zCoord, Block block, int meta) - { - if(!this.canHandleBlock(block)) - { - return false; - } - - if(world.getBlock(xCoord, yCoord-1, zCoord) != block || world.getBlock(xCoord, yCoord-2, zCoord) != block) - { - return false; - } - - world.func_147480_a(xCoord, yCoord, zCoord, true); - - return true; - } -} \ No newline at end of file diff --git a/src-backup/main/java/WayofTime/alchemicalWizardry/common/harvest/GenericPamSeedlessFruitHarvestHandler.java b/src-backup/main/java/WayofTime/alchemicalWizardry/common/harvest/GenericPamSeedlessFruitHarvestHandler.java deleted file mode 100644 index 42fa189c..00000000 --- a/src-backup/main/java/WayofTime/alchemicalWizardry/common/harvest/GenericPamSeedlessFruitHarvestHandler.java +++ /dev/null @@ -1,74 +0,0 @@ -package WayofTime.alchemicalWizardry.common.harvest; - -import java.util.List; - -import cpw.mods.fml.common.registry.GameRegistry; -import net.minecraft.block.Block; -import net.minecraft.entity.item.EntityItem; -import net.minecraft.init.Blocks; -import net.minecraft.init.Items; -import net.minecraft.item.Item; -import net.minecraft.item.ItemStack; -import net.minecraft.world.World; -import net.minecraftforge.common.IPlantable; -import WayofTime.alchemicalWizardry.api.harvest.IHarvestHandler; - -public class GenericPamSeedlessFruitHarvestHandler implements IHarvestHandler -{ - public Block harvestBlock; - public int harvestMeta; - public int resetMeta; - - public GenericPamSeedlessFruitHarvestHandler(String block, int harvestMeta, int resetMeta) - { - this.harvestBlock = getBlockForString(block); - this.harvestMeta = harvestMeta; - this.resetMeta = resetMeta; - } - - public boolean isHarvesterValid() - { - return harvestBlock != null; - } - - public static Block getBlockForString(String str) - { - String[] parts = str.split(":"); - String modId = parts[0]; - String name = parts[1]; - return GameRegistry.findBlock(modId, name); - } - - public static Item getItemForString(String str) - { - String[] parts = str.split(":"); - String modId = parts[0]; - String name = parts[1]; - return GameRegistry.findItem(modId, name); - } - - public boolean canHandleBlock(Block block) - { - return block == harvestBlock; - } - - public int getHarvestMeta(Block block) - { - return harvestMeta; - } - - @Override - public boolean harvestAndPlant(World world, int xCoord, int yCoord, int zCoord, Block block, int meta) - { - if(!this.canHandleBlock(block) || meta != this.getHarvestMeta(block)) - { - return false; - } - - world.func_147480_a(xCoord, yCoord, zCoord, true); - - world.setBlock(xCoord, yCoord, zCoord, harvestBlock, resetMeta, 3); - - return true; - } -} diff --git a/src-backup/main/java/WayofTime/alchemicalWizardry/common/harvest/GenericSeededHarvestHandler.java b/src-backup/main/java/WayofTime/alchemicalWizardry/common/harvest/GenericSeededHarvestHandler.java deleted file mode 100644 index daea729c..00000000 --- a/src-backup/main/java/WayofTime/alchemicalWizardry/common/harvest/GenericSeededHarvestHandler.java +++ /dev/null @@ -1,139 +0,0 @@ -package WayofTime.alchemicalWizardry.common.harvest; - -import java.util.List; - -import cpw.mods.fml.common.registry.GameRegistry; -import net.minecraft.block.Block; -import net.minecraft.entity.item.EntityItem; -import net.minecraft.init.Blocks; -import net.minecraft.init.Items; -import net.minecraft.item.Item; -import net.minecraft.item.ItemStack; -import net.minecraft.world.World; -import net.minecraftforge.common.IPlantable; -import WayofTime.alchemicalWizardry.api.harvest.IHarvestHandler; - -public class GenericSeededHarvestHandler implements IHarvestHandler -{ - public Block harvestBlock; - public int harvestMeta; - public IPlantable harvestSeed; - - public GenericSeededHarvestHandler(String block, int meta, String seed) - { - harvestBlock = getBlockForString(block); - harvestMeta = meta; - Item testSeed = getItemForString(seed); - if(testSeed instanceof IPlantable) - { - harvestSeed = (IPlantable)testSeed; - }else - { - harvestSeed = null; - } - } - - public boolean isHarvesterValid() - { - return harvestBlock != null && harvestSeed != null; - } - - public static Block getBlockForString(String str) - { - String[] parts = str.split(":"); - String modId = parts[0]; - String name = parts[1]; - return GameRegistry.findBlock(modId, name); - } - - public static Item getItemForString(String str) - { - String[] parts = str.split(":"); - String modId = parts[0]; - String name = parts[1]; - return GameRegistry.findItem(modId, name); - } - - public boolean canHandleBlock(Block block) - { - return block == harvestBlock; - } - - public int getHarvestMeta(Block block) - { - return harvestMeta; - } - - @Override - public boolean harvestAndPlant(World world, int xCoord, int yCoord, int zCoord, Block block, int meta) - { - if(!this.canHandleBlock(block) || meta != this.getHarvestMeta(block)) - { - return false; - } - - IPlantable seed = this.getSeedItem(block); - - if(seed == null) - { - world.func_147480_a(xCoord, yCoord, zCoord, true); - - return true; - }else - { - int fortune = 0; - - List list = block.getDrops(world, xCoord, yCoord, zCoord, meta, fortune); - boolean foundAndRemovedSeed = false; - - for(ItemStack stack : list) - { - if(stack == null) - { - continue; - } - - Item item = stack.getItem(); - if(item == seed) - { - int itemSize = stack.stackSize; - if(itemSize > 1) - { - stack.stackSize--; - foundAndRemovedSeed = true; - break; - }else if(itemSize == 1) - { - list.remove(stack); - foundAndRemovedSeed = true; - break; - } - } - } - - if(foundAndRemovedSeed) - { - int plantMeta = seed.getPlantMetadata(world, xCoord, yCoord, zCoord); - Block plantBlock = seed.getPlant(world, xCoord, yCoord, zCoord); - - world.func_147480_a(xCoord, yCoord, zCoord, false); - - world.setBlock(xCoord, yCoord, zCoord, plantBlock, plantMeta, 3); - - for(ItemStack stack : list) - { - EntityItem itemEnt = new EntityItem(world, xCoord, yCoord, zCoord, stack); - - world.spawnEntityInWorld(itemEnt); - } - } - - return false; - } - } - - public IPlantable getSeedItem(Block block) - { - return harvestSeed; - } -} diff --git a/src-backup/main/java/WayofTime/alchemicalWizardry/common/harvest/GourdHarvestHandler.java b/src-backup/main/java/WayofTime/alchemicalWizardry/common/harvest/GourdHarvestHandler.java deleted file mode 100644 index 4ea2b7dc..00000000 --- a/src-backup/main/java/WayofTime/alchemicalWizardry/common/harvest/GourdHarvestHandler.java +++ /dev/null @@ -1,34 +0,0 @@ -package WayofTime.alchemicalWizardry.common.harvest; - -import java.util.List; - -import net.minecraft.block.Block; -import net.minecraft.entity.item.EntityItem; -import net.minecraft.init.Blocks; -import net.minecraft.init.Items; -import net.minecraft.item.Item; -import net.minecraft.item.ItemStack; -import net.minecraft.world.World; -import net.minecraftforge.common.IPlantable; -import WayofTime.alchemicalWizardry.api.harvest.IHarvestHandler; - -public class GourdHarvestHandler implements IHarvestHandler -{ - public boolean canHandleBlock(Block block) - { - return block == Blocks.melon_block || block == Blocks.pumpkin; - } - - @Override - public boolean harvestAndPlant(World world, int xCoord, int yCoord, int zCoord, Block block, int meta) - { - if(!this.canHandleBlock(block)) - { - return false; - } - - world.func_147480_a(xCoord, yCoord, zCoord, true); - - return true; - } -} \ No newline at end of file diff --git a/src-backup/main/java/WayofTime/alchemicalWizardry/common/harvest/PamHarvestCompatRegistry.java b/src-backup/main/java/WayofTime/alchemicalWizardry/common/harvest/PamHarvestCompatRegistry.java deleted file mode 100644 index feff8da5..00000000 --- a/src-backup/main/java/WayofTime/alchemicalWizardry/common/harvest/PamHarvestCompatRegistry.java +++ /dev/null @@ -1,125 +0,0 @@ -package WayofTime.alchemicalWizardry.common.harvest; - -import WayofTime.alchemicalWizardry.api.harvest.HarvestRegistry; - -public class PamHarvestCompatRegistry -{ - public static void registerPamHandlers() - { - registerSeededHandler("blackberry", 7); - registerSeededHandler("blueberry", 7); - registerSeededHandler("candleberry", 7); - registerSeededHandler("raspberry", 7); - registerSeededHandler("strawberry", 7); - registerSeededHandler("cactusfruit", 7); - registerSeededHandler("asparagus", 7); - registerSeededHandler("barley", 7); - registerSeededHandler("oats", 7); - registerSeededHandler("rye", 7); - registerSeededHandler("corn", 7); - registerSeededHandler("bambooshoot", 7); - registerSeededHandler("cantaloupe", 7); - registerSeededHandler("cucumber", 7); - registerSeededHandler("windersquash", 7); - registerSeededHandler("zucchini", 7); - registerSeededHandler("beat", 7); - registerSeededHandler("onion", 7); - registerSeededHandler("parsnip", 7); - registerSeededHandler("peanut", 7); - registerSeededHandler("radish", 7); - registerSeededHandler("rutabaga", 7); - registerSeededHandler("sweetpotato", 7); - registerSeededHandler("turnip", 7); - registerSeededHandler("rhubarb", 7); - registerSeededHandler("celery", 7); - registerSeededHandler("garlic", 7); - registerSeededHandler("ginger", 7); - registerSeededHandler("spiceleaf", 7); - registerSeededHandler("tealeaf", 7); - registerSeededHandler("coffeebean", 7); - registerSeededHandler("mustardseeds", 7); - registerSeededHandler("brocolli", 7); - registerSeededHandler("cauliflower", 7); - registerSeededHandler("leek", 7); - registerSeededHandler("lettuce", 7); - registerSeededHandler("scallion", 7); - registerSeededHandler("artichoke", 7); - registerSeededHandler("brusselsprout", 7); - registerSeededHandler("cabbage", 7); - registerSeededHandler("whitemushroom", 7); - registerSeededHandler("bean", 7); - registerSeededHandler("soybean", 7); - registerSeededHandler("bellpepper", 7); - registerSeededHandler("chili", 7); - registerSeededHandler("eggplant", 7); - registerSeededHandler("pamokra", 7); - registerSeededHandler("peas", 7); - registerSeededHandler("tomato", 7); - registerSeededHandler("cotton", 7); - registerSeededHandler("pineapple", 7); - registerSeededHandler("grape", 7); - registerSeededHandler("kiwi", 7); - registerSeededHandler("cranberry", 7); - registerSeededHandler("rice", 7); - registerSeededHandler("seaweed", 7); - - registerFruitHandler("apple", 7, 0); - registerFruitHandler("Almond", 7, 0); - registerFruitHandler("Apricot", 7, 0); - registerFruitHandler("Avocado", 7, 0); - registerFruitHandler("Banana", 7, 0); - registerFruitHandler("Cashew", 7, 0); - registerFruitHandler("Cherry", 7, 0); - registerFruitHandler("Chestnut", 7, 0); - registerFruitHandler("Cinnamon", 7, 0); - registerFruitHandler("Coconut", 7, 0); - registerFruitHandler("Date", 7, 0); - registerFruitHandler("Dragonfruit", 7, 0); - registerFruitHandler("Durian", 7, 0); - registerFruitHandler("Fig", 7, 0); - registerFruitHandler("Grapefruit", 7, 0); - registerFruitHandler("Lemon", 7, 0); - registerFruitHandler("Lime", 7, 0); - registerFruitHandler("Maple", 7, 0); - registerFruitHandler("Mango", 7, 0); - registerFruitHandler("Nutmeg", 7, 0); - registerFruitHandler("Olive", 7, 0); - registerFruitHandler("Orange", 7, 0); - registerFruitHandler("Papaya", 7, 0); - registerFruitHandler("Paperbark", 7, 0); - registerFruitHandler("Peach", 7, 0); - registerFruitHandler("Pear", 7, 0); - registerFruitHandler("Pecan", 7, 0); - registerFruitHandler("Peppercorn", 7, 0); - registerFruitHandler("Persimmon", 7, 0); - registerFruitHandler("Pistachio", 7, 0); - registerFruitHandler("Plum", 7, 0); - registerFruitHandler("Pomegranate", 7, 0); - registerFruitHandler("Starfruit", 7, 0); - registerFruitHandler("Vanillabean", 7, 0); - registerFruitHandler("Walnut", 7, 0); - } - - public static void registerSeededHandler(String name, int meta) - { - String block = "harvestcraft:pam" + name + "Crop"; - String seed = "harvestcraft:" + name + "Item"; - - GenericSeededHarvestHandler handler = new GenericSeededHarvestHandler(block, meta, seed); - if(handler.isHarvesterValid()) - { - HarvestRegistry.registerHarvestHandler(handler); - } - } - - public static void registerFruitHandler(String name, int harvestMeta, int resetMeta) - { - String block = "harvestcraft:pam" + name; - - GenericPamSeedlessFruitHarvestHandler handler = new GenericPamSeedlessFruitHarvestHandler(block, harvestMeta, resetMeta); - if(handler.isHarvesterValid()) - { - HarvestRegistry.registerHarvestHandler(handler); - } - } -} diff --git a/src-backup/main/java/WayofTime/alchemicalWizardry/common/items/AWBaseItems.java b/src-backup/main/java/WayofTime/alchemicalWizardry/common/items/AWBaseItems.java deleted file mode 100644 index dd3e4a69..00000000 --- a/src-backup/main/java/WayofTime/alchemicalWizardry/common/items/AWBaseItems.java +++ /dev/null @@ -1,44 +0,0 @@ -package WayofTime.alchemicalWizardry.common.items; - -import java.util.List; - -import net.minecraft.client.renderer.texture.IIconRegister; -import net.minecraft.entity.player.EntityPlayer; -import net.minecraft.item.Item; -import net.minecraft.item.ItemStack; -import WayofTime.alchemicalWizardry.AlchemicalWizardry; -import WayofTime.alchemicalWizardry.ModItems; - -public class AWBaseItems extends Item -{ - public AWBaseItems() - { - super(); - setMaxStackSize(64); - setCreativeTab(AlchemicalWizardry.tabBloodMagic); - } - - public void registerIcons(IIconRegister iconRegister) - { - if (this.equals(ModItems.blankSlate)) - { - this.itemIcon = iconRegister.registerIcon("AlchemicalWizardry:BlankSlate"); - } else if (this.equals(ModItems.reinforcedSlate)) - { - this.itemIcon = iconRegister.registerIcon("AlchemicalWizardry:ReinforcedSlate"); - } else if (this.equals(ModItems.imbuedSlate)) - { - this.itemIcon = iconRegister.registerIcon("AlchemicalWizardry:InfusedSlate"); - } else if (this.equals(ModItems.demonicSlate)) - { - this.itemIcon = iconRegister.registerIcon("AlchemicalWizardry:DemonSlate"); - } - } - - @Override - public void addInformation(ItemStack par1ItemStack, EntityPlayer par2EntityPlayer, List par3List, boolean par4) - { - par3List.add("Infused stone inside of"); - par3List.add("a blood altar"); - } -} diff --git a/src-backup/main/java/WayofTime/alchemicalWizardry/common/items/ActivationCrystal.java b/src-backup/main/java/WayofTime/alchemicalWizardry/common/items/ActivationCrystal.java deleted file mode 100644 index 6c6c6fc2..00000000 --- a/src-backup/main/java/WayofTime/alchemicalWizardry/common/items/ActivationCrystal.java +++ /dev/null @@ -1,135 +0,0 @@ -package WayofTime.alchemicalWizardry.common.items; - -import java.util.List; - -import javax.swing.Icon; - -import net.minecraft.client.renderer.texture.IIconRegister; -import net.minecraft.creativetab.CreativeTabs; -import net.minecraft.entity.player.EntityPlayer; -import net.minecraft.item.Item; -import net.minecraft.item.ItemStack; -import net.minecraft.util.EnumChatFormatting; -import net.minecraft.util.IIcon; -import net.minecraft.util.MathHelper; -import net.minecraft.world.World; - -import org.lwjgl.input.Keyboard; - -import WayofTime.alchemicalWizardry.AlchemicalWizardry; -import WayofTime.alchemicalWizardry.api.alchemy.AlchemyRecipeRegistry; -import cpw.mods.fml.relauncher.Side; -import cpw.mods.fml.relauncher.SideOnly; - -public class ActivationCrystal extends EnergyItems -{ - private static final String[] ACTIVATION_CRYSTAL_NAMES = new String[]{"Weak", "Awakened"}; - - @SideOnly(Side.CLIENT) - private IIcon[] icons; - - public ActivationCrystal() - { - super(); - this.maxStackSize = 1; - setEnergyUsed(100); - this.setCreativeTab(AlchemicalWizardry.tabBloodMagic); - this.hasSubtypes = true; - } - - @Override - @SideOnly(Side.CLIENT) - public void registerIcons(IIconRegister iconRegister) - { - icons = new IIcon[ACTIVATION_CRYSTAL_NAMES.length]; - - for (int i = 0; i < ACTIVATION_CRYSTAL_NAMES.length; ++i) - { - icons[i] = iconRegister.registerIcon("AlchemicalWizardry:" + "activationCrystal" + ACTIVATION_CRYSTAL_NAMES[i]); - } - } - - @Override - public void addInformation(ItemStack par1ItemStack, EntityPlayer par2EntityPlayer, List par3List, boolean par4) - { - switch (par1ItemStack.getItemDamage()) - { - case 0: - { - par3List.add("Activates low-level rituals"); - break; - } - - case 1: - { - par3List.add("Activates more powerful rituals"); - - if (Keyboard.isKeyDown(Keyboard.KEY_RSHIFT) || Keyboard.isKeyDown(Keyboard.KEY_LSHIFT)) - { - ItemStack[] recipe = AlchemyRecipeRegistry.getRecipeForItemStack(par1ItemStack); - - if (recipe != null) - { - par3List.add(EnumChatFormatting.BLUE + "Recipe:"); - - for (ItemStack item : recipe) - { - if (item != null) - { - par3List.add("" + item.getDisplayName()); - } - } - } - } else - { - par3List.add("-Press " + EnumChatFormatting.BLUE + "shift" + EnumChatFormatting.GRAY + " for Recipe-"); - } - - break; - } - } - - if (!(par1ItemStack.stackTagCompound == null)) - { - par3List.add("Current owner: " + par1ItemStack.stackTagCompound.getString("ownerName")); - } - } - - @Override - public ItemStack onItemRightClick(ItemStack par1ItemStack, World par2World, EntityPlayer par3EntityPlayer) - { - EnergyItems.checkAndSetItemOwner(par1ItemStack, par3EntityPlayer); - return par1ItemStack; - } - - public int getCrystalLevel(ItemStack itemStack) - { - return itemStack.getItemDamage() + 1; - } - - @Override - public String getUnlocalizedName(ItemStack itemStack) - { - //This is what will do all the localisation things on the alchemy components so you dont have to set it :D - int meta = MathHelper.clamp_int(itemStack.getItemDamage(), 0, ACTIVATION_CRYSTAL_NAMES.length - 1); - return ("" + "item.activationCrystal" + ACTIVATION_CRYSTAL_NAMES[meta]); - } - - @Override - @SideOnly(Side.CLIENT) - public IIcon getIconFromDamage(int meta) - { - int j = MathHelper.clamp_int(meta, 0, ACTIVATION_CRYSTAL_NAMES.length - 1); - return icons[j]; - } - - @Override - @SideOnly(Side.CLIENT) - public void getSubItems(Item id, CreativeTabs creativeTab, List list) - { - for (int meta = 0; meta < ACTIVATION_CRYSTAL_NAMES.length; ++meta) - { - list.add(new ItemStack(id, 1, meta)); - } - } -} diff --git a/src-backup/main/java/WayofTime/alchemicalWizardry/common/items/AirScribeTool.java b/src-backup/main/java/WayofTime/alchemicalWizardry/common/items/AirScribeTool.java deleted file mode 100644 index 9f20b743..00000000 --- a/src-backup/main/java/WayofTime/alchemicalWizardry/common/items/AirScribeTool.java +++ /dev/null @@ -1,20 +0,0 @@ -package WayofTime.alchemicalWizardry.common.items; - -import net.minecraft.client.renderer.texture.IIconRegister; -import cpw.mods.fml.relauncher.Side; -import cpw.mods.fml.relauncher.SideOnly; - -public class AirScribeTool extends ScribeTool -{ - public AirScribeTool() - { - super(4); - } - - @Override - @SideOnly(Side.CLIENT) - public void registerIcons(IIconRegister iconRegister) - { - this.itemIcon = iconRegister.registerIcon("AlchemicalWizardry:AirScribeTool"); - } -} \ No newline at end of file diff --git a/src-backup/main/java/WayofTime/alchemicalWizardry/common/items/ApprenticeBloodOrb.java b/src-backup/main/java/WayofTime/alchemicalWizardry/common/items/ApprenticeBloodOrb.java deleted file mode 100644 index 3bc4a2eb..00000000 --- a/src-backup/main/java/WayofTime/alchemicalWizardry/common/items/ApprenticeBloodOrb.java +++ /dev/null @@ -1,21 +0,0 @@ -package WayofTime.alchemicalWizardry.common.items; - -import net.minecraft.client.renderer.texture.IIconRegister; -import cpw.mods.fml.relauncher.Side; -import cpw.mods.fml.relauncher.SideOnly; - -public class ApprenticeBloodOrb extends EnergyBattery -{ - public ApprenticeBloodOrb(int damage) - { - super(damage); - orbLevel = 2; - } - - @Override - @SideOnly(Side.CLIENT) - public void registerIcons(IIconRegister iconRegister) - { - this.itemIcon = iconRegister.registerIcon("AlchemicalWizardry:ApprenticeBloodOrb"); - } -} diff --git a/src-backup/main/java/WayofTime/alchemicalWizardry/common/items/ArchmageBloodOrb.java b/src-backup/main/java/WayofTime/alchemicalWizardry/common/items/ArchmageBloodOrb.java deleted file mode 100644 index 6bd83098..00000000 --- a/src-backup/main/java/WayofTime/alchemicalWizardry/common/items/ArchmageBloodOrb.java +++ /dev/null @@ -1,21 +0,0 @@ -package WayofTime.alchemicalWizardry.common.items; - -import net.minecraft.client.renderer.texture.IIconRegister; -import cpw.mods.fml.relauncher.Side; -import cpw.mods.fml.relauncher.SideOnly; - -public class ArchmageBloodOrb extends EnergyBattery -{ - public ArchmageBloodOrb(int damage) - { - super(damage); - orbLevel = 5; - } - - @Override - @SideOnly(Side.CLIENT) - public void registerIcons(IIconRegister iconRegister) - { - this.itemIcon = iconRegister.registerIcon("AlchemicalWizardry:ArchmageBloodOrb"); - } -} diff --git a/src-backup/main/java/WayofTime/alchemicalWizardry/common/items/ArmourInhibitor.java b/src-backup/main/java/WayofTime/alchemicalWizardry/common/items/ArmourInhibitor.java deleted file mode 100644 index 1b42a0de..00000000 --- a/src-backup/main/java/WayofTime/alchemicalWizardry/common/items/ArmourInhibitor.java +++ /dev/null @@ -1,215 +0,0 @@ -package WayofTime.alchemicalWizardry.common.items; - -import java.util.List; - -import javax.swing.Icon; - -import net.minecraft.client.renderer.texture.IIconRegister; -import net.minecraft.entity.Entity; -import net.minecraft.entity.player.EntityPlayer; -import net.minecraft.item.ItemStack; -import net.minecraft.nbt.NBTTagCompound; -import net.minecraft.potion.PotionEffect; -import net.minecraft.util.IIcon; -import net.minecraft.world.World; -import WayofTime.alchemicalWizardry.AlchemicalWizardry; -import cpw.mods.fml.relauncher.Side; -import cpw.mods.fml.relauncher.SideOnly; - -public class ArmourInhibitor extends EnergyItems -{ - private static IIcon activeIcon; - private static IIcon passiveIcon; - private int tickDelay = 200; - - public ArmourInhibitor() - { - super(); - this.maxStackSize = 1; - //setMaxDamage(1000); - setEnergyUsed(0); - setCreativeTab(AlchemicalWizardry.tabBloodMagic); - } - - @Override - public void addInformation(ItemStack par1ItemStack, EntityPlayer par2EntityPlayer, List par3List, boolean par4) - { - par3List.add("Used to suppress a soul's"); - par3List.add("unnatural abilities."); - - if (!(par1ItemStack.stackTagCompound == null)) - { - if (par1ItemStack.stackTagCompound.getBoolean("isActive")) - { - par3List.add("Activated"); - } else - { - par3List.add("Deactivated"); - } - - par3List.add("Current owner: " + par1ItemStack.stackTagCompound.getString("ownerName")); - } - } - - @Override - @SideOnly(Side.CLIENT) - public void registerIcons(IIconRegister iconRegister) - { - this.itemIcon = iconRegister.registerIcon("AlchemicalWizardry:ArmourInhibitor_deactivated"); - this.activeIcon = iconRegister.registerIcon("AlchemicalWizardry:ArmourInhibitor_activated"); - this.passiveIcon = iconRegister.registerIcon("AlchemicalWizardry:ArmourInhibitor_deactivated"); - } - - @Override - public IIcon getIcon(ItemStack stack, int renderPass, EntityPlayer player, ItemStack usingItem, int useRemaining) - { - if (stack.stackTagCompound == null) - { - stack.setTagCompound(new NBTTagCompound()); - } - - NBTTagCompound tag = stack.stackTagCompound; - - if (tag.getBoolean("isActive")) - { - return this.activeIcon; - } else - { - return this.passiveIcon; - } - } - - @Override - @SideOnly(Side.CLIENT) - public IIcon getIconFromDamage(int par1) - { - if (par1 == 1) - { - return this.activeIcon; - } else - { - return this.passiveIcon; - } - } - -// @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(applyBonemeal(par1ItemStack,par3World,par4,par5,par6,par2EntityPlayer)) -// { -// if (par3World.isRemote) -// { -// par3World.playAuxSFX(2005, par4, par5, par6, 0); -// EnergyItems.syphonBatteries(par1ItemStack, par2EntityPlayer, getEnergyUsed()); -// return true; -// } -// return true; -// } -// return false; -// } - - @Override - public ItemStack onItemRightClick(ItemStack par1ItemStack, World par2World, EntityPlayer par3EntityPlayer) - { - EnergyItems.checkAndSetItemOwner(par1ItemStack, par3EntityPlayer); - - if (par3EntityPlayer.isSneaking()) - { - return par1ItemStack; - } - - if (par1ItemStack.stackTagCompound == null) - { - par1ItemStack.setTagCompound(new NBTTagCompound()); - } - - NBTTagCompound tag = par1ItemStack.stackTagCompound; - tag.setBoolean("isActive", !(tag.getBoolean("isActive"))); - - if (tag.getBoolean("isActive")) - { - par1ItemStack.setItemDamage(1); - tag.setInteger("worldTimeDelay", (int) (par2World.getWorldTime() - 1) % tickDelay); - - if (!par3EntityPlayer.capabilities.isCreativeMode) - { - //EnergyItems.syphonBatteries(par1ItemStack, par3EntityPlayer, getEnergyUsed()); - } - } else - { - par1ItemStack.setItemDamage(par1ItemStack.getMaxDamage()); - } - - return par1ItemStack; - } - - @Override - public void onUpdate(ItemStack par1ItemStack, World par2World, Entity par3Entity, int par4, boolean par5) - { - if (!(par3Entity instanceof EntityPlayer)) - { - return; - } - - EntityPlayer par3EntityPlayer = (EntityPlayer) par3Entity; - - if (par1ItemStack.stackTagCompound == null) - { - par1ItemStack.setTagCompound(new NBTTagCompound()); - } - - if (par1ItemStack.stackTagCompound.getBoolean("isActive")) - { - if (par2World.getWorldTime() % tickDelay == par1ItemStack.stackTagCompound.getInteger("worldTimeDelay") && par3Entity instanceof EntityPlayer) - { - //EnergyItems.syphonBatteries(par1ItemStack, (EntityPlayer)par3Entity, getEnergyUsed()); - } - - //TODO Do stuff - par3EntityPlayer.addPotionEffect(new PotionEffect(AlchemicalWizardry.customPotionInhibit.id, 2, 0)); - } - - return; - } - -// @Override -// public void onArmourUpdate(World world, EntityPlayer player, ItemStack thisItemStack) { -// -// int range = 5; -// int verticalRange = 2; -// int posX = (int)Math.round(player.posX-0.5f); -// int posY = (int)player.posY; -// int posZ = (int)Math.round(player.posZ-0.5f); -// -// for(int ix=posX-range;ix<=posX+range;ix++) -// { -// for(int iz=posZ-range;iz<=posZ+range;iz++) -// { -// for(int iy=posY-verticalRange;iy<=posY+verticalRange;iy++) -// { -// int id = world.getBlockId(ix, iy, iz); -// Block block = Block.blocksList[id]; -// if(block instanceof IPlantable) -// { -// if(world.rand.nextInt(10)==0) -// block.updateTick(world, ix, iy, iz, world.rand); -// } -// } -// } -// } -// -// } - -// @Override -// public boolean isUpgrade() { -// // TODO Auto-generated method stub -// return true; -// } -// -// @Override -// public int getEnergyForTenSeconds() { -// // TODO Auto-generated method stub -// return 50; -// } -} diff --git a/src-backup/main/java/WayofTime/alchemicalWizardry/common/items/BlankSpell.java b/src-backup/main/java/WayofTime/alchemicalWizardry/common/items/BlankSpell.java deleted file mode 100644 index 58c004d3..00000000 --- a/src-backup/main/java/WayofTime/alchemicalWizardry/common/items/BlankSpell.java +++ /dev/null @@ -1,114 +0,0 @@ -package WayofTime.alchemicalWizardry.common.items; - -import java.util.List; - -import net.minecraft.client.renderer.texture.IIconRegister; -import net.minecraft.entity.player.EntityPlayer; -import net.minecraft.item.ItemStack; -import net.minecraft.nbt.NBTTagCompound; -import net.minecraft.tileentity.TileEntity; -import net.minecraft.world.World; -import net.minecraftforge.common.DimensionManager; -import WayofTime.alchemicalWizardry.AlchemicalWizardry; -import WayofTime.alchemicalWizardry.common.tileEntity.TEHomHeart; -import cpw.mods.fml.relauncher.Side; -import cpw.mods.fml.relauncher.SideOnly; - -public class BlankSpell extends EnergyItems -{ - public BlankSpell() - { - super(); - this.setMaxStackSize(1); - setCreativeTab(AlchemicalWizardry.tabBloodMagic); - } - - @Override - @SideOnly(Side.CLIENT) - public void registerIcons(IIconRegister iconRegister) - { - this.itemIcon = iconRegister.registerIcon("AlchemicalWizardry:BlankSpell"); - } - - @Override - public void addInformation(ItemStack par1ItemStack, EntityPlayer par2EntityPlayer, List par3List, boolean par4) - { - par3List.add("Crystal of infinite possibilities."); - - if (!(par1ItemStack.stackTagCompound == null)) - { - NBTTagCompound itemTag = par1ItemStack.stackTagCompound; - - if (!par1ItemStack.stackTagCompound.getString("ownerName").equals("")) - { - par3List.add("Current owner: " + par1ItemStack.stackTagCompound.getString("ownerName")); - } - - par3List.add("Coords: " + itemTag.getInteger("xCoord") + ", " + itemTag.getInteger("yCoord") + ", " + itemTag.getInteger("zCoord")); - par3List.add("Bound Dimension: " + getDimensionID(par1ItemStack)); - } - } - - @Override - public ItemStack onItemRightClick(ItemStack par1ItemStack, World par2World, EntityPlayer par3EntityPlayer) - { - EnergyItems.checkAndSetItemOwner(par1ItemStack, par3EntityPlayer); - - if (par3EntityPlayer.isSneaking()) - { - return par1ItemStack; - } - - if (!par2World.isRemote) - { - //World world = MinecraftServer.getServer().worldServers[getDimensionID(par1ItemStack)]; - World world = DimensionManager.getWorld(getDimensionID(par1ItemStack)); - - if (world != null) - { - NBTTagCompound itemTag = par1ItemStack.stackTagCompound; - TileEntity tileEntity = world.getTileEntity(itemTag.getInteger("xCoord"), itemTag.getInteger("yCoord"), itemTag.getInteger("zCoord")); - - if (tileEntity instanceof TEHomHeart) - { - TEHomHeart homHeart = (TEHomHeart) tileEntity; - - if (homHeart.canCastSpell(par1ItemStack, par2World, par3EntityPlayer)) - { - EnergyItems.syphonBatteries(par1ItemStack, par3EntityPlayer, homHeart.castSpell(par1ItemStack, par2World, par3EntityPlayer)); - } else - { - return par1ItemStack; - } - } else - { - return par1ItemStack; - } - } else - { - return par1ItemStack; - } - } else - { - return par1ItemStack; - } - - par2World.playSoundAtEntity(par3EntityPlayer, "random.fizz", 0.5F, 0.4F / (itemRand.nextFloat() * 0.4F + 0.8F)); -// if (!par2World.isRemote) -// { -// //par2World.spawnEntityInWorld(new EnergyBlastProjectile(par2World, par3EntityPlayer, damage)); -// par2World.spawnEntityInWorld(new FireProjectile(par2World, par3EntityPlayer, 10)); -// } - return par1ItemStack; - } - - public int getDimensionID(ItemStack itemStack) - { - if (itemStack.stackTagCompound == null) - { - itemStack.setTagCompound(new NBTTagCompound()); - } - - return itemStack.stackTagCompound.getInteger("dimensionId"); - } -} diff --git a/src-backup/main/java/WayofTime/alchemicalWizardry/common/items/BloodShard.java b/src-backup/main/java/WayofTime/alchemicalWizardry/common/items/BloodShard.java deleted file mode 100644 index 43b5e5b8..00000000 --- a/src-backup/main/java/WayofTime/alchemicalWizardry/common/items/BloodShard.java +++ /dev/null @@ -1,73 +0,0 @@ -package WayofTime.alchemicalWizardry.common.items; - -import net.minecraft.client.renderer.texture.IIconRegister; -import net.minecraft.entity.player.EntityPlayer; -import net.minecraft.item.Item; -import net.minecraft.item.ItemStack; -import net.minecraft.world.World; -import WayofTime.alchemicalWizardry.AlchemicalWizardry; -import WayofTime.alchemicalWizardry.ModItems; -import WayofTime.alchemicalWizardry.api.items.interfaces.ArmourUpgrade; -import cpw.mods.fml.relauncher.Side; -import cpw.mods.fml.relauncher.SideOnly; - -public class BloodShard extends Item implements ArmourUpgrade -{ - public BloodShard() - { - super(); - this.maxStackSize = 64; - //setEnergyUsed(100); - setCreativeTab(AlchemicalWizardry.tabBloodMagic); - } - - @Override - @SideOnly(Side.CLIENT) - public void registerIcons(IIconRegister iconRegister) - { - if (this.equals(ModItems.weakBloodShard)) - { - this.itemIcon = iconRegister.registerIcon("AlchemicalWizardry:WeakBloodShard"); - return; - } - - if (this.equals(ModItems.demonBloodShard)) - { - this.itemIcon = iconRegister.registerIcon("AlchemicalWizardry:DemonBloodShard"); - return; - } - } - - public int getBloodShardLevel() - { - if (this.equals(ModItems.weakBloodShard)) - { - return 1; - } else if (this.equals(ModItems.demonBloodShard)) - { - return 2; - } - - return 0; - } - - @Override - public void onArmourUpdate(World world, EntityPlayer player, ItemStack thisItemStack) - { - // TODO Auto-generated method stub - } - - @Override - public boolean isUpgrade() - { - // TODO Auto-generated method stub - return false; - } - - @Override - public int getEnergyForTenSeconds() - { - // TODO Auto-generated method stub - return 0; - } -} diff --git a/src-backup/main/java/WayofTime/alchemicalWizardry/common/items/BloodboundSword.java b/src-backup/main/java/WayofTime/alchemicalWizardry/common/items/BloodboundSword.java deleted file mode 100644 index 07b4ac20..00000000 --- a/src-backup/main/java/WayofTime/alchemicalWizardry/common/items/BloodboundSword.java +++ /dev/null @@ -1,103 +0,0 @@ -package WayofTime.alchemicalWizardry.common.items; - -import java.util.List; - -import net.minecraft.block.Block; -import net.minecraft.block.material.Material; -import net.minecraft.client.renderer.texture.IIconRegister; -import net.minecraft.entity.EntityLivingBase; -import net.minecraft.entity.player.EntityPlayer; -import net.minecraft.init.Blocks; -import net.minecraft.item.ItemStack; -import net.minecraft.nbt.NBTTagCompound; -import WayofTime.alchemicalWizardry.AlchemicalWizardry; -import cpw.mods.fml.relauncher.Side; -import cpw.mods.fml.relauncher.SideOnly; - -public class BloodboundSword extends EnergyItems -{ - private float weaponDamage; - //private int maxMode = 3; - private NBTTagCompound data; - - public BloodboundSword(int id) - { - super(); - this.maxStackSize = 1; - setCreativeTab(AlchemicalWizardry.tabBloodMagic); - setEnergyUsed(100); - setFull3D(); - weaponDamage = 10.0F; - } - - @Override - @SideOnly(Side.CLIENT) - public void registerIcons(IIconRegister iconRegister) - { - this.itemIcon = iconRegister.registerIcon("AlchemicalWizardry:EnergySword"); - } - - public boolean hitEntity(ItemStack par1ItemStack, EntityLivingBase par2EntityLivingBase, EntityLivingBase par3EntityLivingBase) - { - if (par3EntityLivingBase instanceof EntityPlayer) - { - EnergyItems.checkAndSetItemOwner(par1ItemStack, (EntityPlayer) par3EntityLivingBase); - - if (!this.syphonBatteries(par1ItemStack, (EntityPlayer) par3EntityLivingBase, this.getEnergyUsed())) - { - //this.damagePlayer(null, (EntityPlayer)par3EntityLivingBase, (this.getEnergyUsed() + 99) / 100); - } - } - - return true; - } - - /* - public int getDamageVsEntity(Entity par1Entity) - { - return this.weaponDamage; - } - */ - - public float func_82803_g() - { - return 4.0F; - } - - @Override - public void addInformation(ItemStack par1ItemStack, EntityPlayer par2EntityPlayer, List par3List, boolean par4) - { - par3List.add("Caution: may cause"); - par3List.add("a bad day..."); - - if (!(par1ItemStack.stackTagCompound == null)) - { - par3List.add("Current owner: " + par1ItemStack.stackTagCompound.getString("ownerName")); - } - } - - @Override - public float getDigSpeed(ItemStack par1ItemStack, Block par2Block, int meta) - { - if (par2Block.equals(Blocks.web)) - { - return 15.0F; - } else - { - Material material = par2Block.getMaterial(); - return material != Material.plants && material != Material.vine && material != Material.coral && material != Material.leaves && material != Material.gourd ? 1.0F : 1.5F; - } - } - - public boolean getIsRepairable(ItemStack par1ItemStack, ItemStack par2ItemStack) - { - return false; - } - -// public Multimap func_111205_h() -// { -// Multimap multimap = super.func_111205_h(); -// multimap.put(SharedMonsterAttributes.field_111264_e.func_111108_a(), new AttributeModifier(field_111210_e, "Weapon modifier", (double)this.weaponDamage, 0)); -// return multimap; -// } -} \ No newline at end of file diff --git a/src-backup/main/java/WayofTime/alchemicalWizardry/common/items/BoundArmour.java b/src-backup/main/java/WayofTime/alchemicalWizardry/common/items/BoundArmour.java deleted file mode 100644 index 1baaab9a..00000000 --- a/src-backup/main/java/WayofTime/alchemicalWizardry/common/items/BoundArmour.java +++ /dev/null @@ -1,806 +0,0 @@ -package WayofTime.alchemicalWizardry.common.items; - -import java.util.List; - -import net.minecraft.client.model.ModelBiped; -import net.minecraft.client.renderer.texture.IIconRegister; -import net.minecraft.entity.Entity; -import net.minecraft.entity.EntityLivingBase; -import net.minecraft.entity.player.EntityPlayer; -import net.minecraft.item.EnumAction; -import net.minecraft.item.Item; -import net.minecraft.item.ItemArmor; -import net.minecraft.item.ItemStack; -import net.minecraft.nbt.NBTTagCompound; -import net.minecraft.nbt.NBTTagList; -import net.minecraft.potion.Potion; -import net.minecraft.util.DamageSource; -import net.minecraft.util.IIcon; -import net.minecraft.world.World; -import net.minecraftforge.common.ISpecialArmor; -import net.minecraftforge.common.util.Constants; -import thaumcraft.api.IGoggles; -import thaumcraft.api.IRunicArmor; -import thaumcraft.api.nodes.IRevealer; -import WayofTime.alchemicalWizardry.AlchemicalWizardry; -import WayofTime.alchemicalWizardry.ModItems; -import WayofTime.alchemicalWizardry.api.alchemy.energy.IAlchemyGoggles; -import WayofTime.alchemicalWizardry.api.items.interfaces.ArmourUpgrade; -import WayofTime.alchemicalWizardry.api.items.interfaces.IBindable; -import WayofTime.alchemicalWizardry.common.renderer.model.ModelOmegaArmour; -import cpw.mods.fml.common.Optional; -import cpw.mods.fml.common.Optional.Interface; -import cpw.mods.fml.relauncher.Side; -import cpw.mods.fml.relauncher.SideOnly; - -@Optional.InterfaceList(value = {@Interface(iface="thaumcraft.api.nodes.IRevealer", modid = "Thaumcraft"), @Interface(iface="thaumcraft.api.IGoggles", modid = "Thaumcraft"), @Interface(iface="thaumcraft.api.IRunicArmor", modid = "Thaumcraft")}) -public class BoundArmour extends ItemArmor implements IAlchemyGoggles,ISpecialArmor,IBindable ,IRevealer, IGoggles, IRunicArmor -{ - private static int invSize = 9; - private static IIcon helmetIcon; - private static IIcon plateIcon; - private static IIcon leggingsIcon; - private static IIcon bootsIcon; - - private static final boolean tryComplexRendering = true; - - public BoundArmour(int armorType) - { - super(ItemArmor.ArmorMaterial.GOLD, 0, armorType); - setMaxDamage(1000); - setCreativeTab(AlchemicalWizardry.tabBloodMagic); - } - - ModelBiped model1 = null; - ModelBiped model2 = null; - ModelBiped model = null; - - @Override - @SideOnly(Side.CLIENT) - public ModelBiped getArmorModel(EntityLivingBase entityLiving, ItemStack itemStack, int armorSlot) - { - if(tryComplexRendering) - { - int type = ((ItemArmor)itemStack.getItem()).armorType; - if(this.model1 == null) - { - this.model1 = new ModelOmegaArmour(1.0f, true, true, false, true); - } - if(this.model2 == null) - { - this.model2 = new ModelOmegaArmour(0.5f, false, false, true, false); - } - - if(type == 1 || type == 3 || type == 0) - { - this.model = model1; - }else - { - this.model = model2; - } - - if(this.model != null) - { - this.model.bipedHead.showModel = (type == 0); - this.model.bipedHeadwear.showModel = (type == 0); - this.model.bipedBody.showModel = ((type == 1) || (type == 2)); - this.model.bipedLeftArm.showModel = (type == 1); - this.model.bipedRightArm.showModel = (type == 1); - this.model.bipedLeftLeg.showModel = (type == 2 || type == 3); - this.model.bipedRightLeg.showModel = (type == 2 || type == 3); - this.model.isSneak = entityLiving.isSneaking(); - - this.model.isRiding = entityLiving.isRiding(); - this.model.isChild = entityLiving.isChild(); - - this.model.aimedBow = false; - this.model.heldItemRight = (entityLiving.getHeldItem() != null ? 1 : 0); - - if ((entityLiving instanceof EntityPlayer)) - { - if (((EntityPlayer)entityLiving).getItemInUseDuration() > 0) - { - EnumAction enumaction = ((EntityPlayer)entityLiving).getItemInUse().getItemUseAction(); - if (enumaction == EnumAction.block) - { - this.model.heldItemRight = 3; - } else if (enumaction == EnumAction.bow) - { - this.model.aimedBow = true; - } - } - } - } - - return model; - - }else - { - return super.getArmorModel(entityLiving, itemStack, armorSlot); - } - } - - @Override - @SideOnly(Side.CLIENT) - public void registerIcons(IIconRegister iconRegister) - { - this.itemIcon = iconRegister.registerIcon("AlchemicalWizardry:SheathedItem"); - this.helmetIcon = iconRegister.registerIcon("AlchemicalWizardry:BoundHelmet"); - this.plateIcon = iconRegister.registerIcon("AlchemicalWizardry:BoundPlate"); - this.leggingsIcon = iconRegister.registerIcon("AlchemicalWizardry:BoundLeggings"); - this.bootsIcon = iconRegister.registerIcon("AlchemicalWizardry:BoundBoots"); - } - - @SideOnly(Side.CLIENT) - public IIcon getIconFromDamage(int par1) - { - if (this.equals(ModItems.boundHelmet)) - { - return this.helmetIcon; - } - - if (this.equals(ModItems.boundPlate)) - { - return this.plateIcon; - } - - if (this.equals(ModItems.boundLeggings)) - { - return this.leggingsIcon; - } - - if (this.equals(ModItems.boundBoots)) - { - return this.bootsIcon; - } - - return this.itemIcon; - } - - @Override - public boolean getIsRepairable(ItemStack par1ItemStack, ItemStack par2ItemStack) - { - return false; - } - - @Override - public ArmorProperties getProperties(EntityLivingBase player, ItemStack armor, DamageSource source, double damage, int slot) - { - double armourReduction = 0.0; - - if(player.isPotionActive(AlchemicalWizardry.customPotionSoulFray)) - { - int i = player.getActivePotionEffect(AlchemicalWizardry.customPotionSoulFray).getAmplifier() + 1; - - armourReduction = (i+1)*0.1; - } - - double damageAmount = 0.25; - - if(player.isPotionActive(AlchemicalWizardry.customPotionSoulHarden)) - { - int i = player.getActivePotionEffect(AlchemicalWizardry.customPotionSoulHarden).getAmplifier() + 1; - damageAmount /= Math.max((1 - i*0.1), 0.1); - }else - { - damageAmount *= 0.9; - } - - damageAmount *= (1.0-armourReduction); - - int maxAbsorption = 100000; - - if (source.equals(DamageSource.drown)) - { - return new ArmorProperties(-1, 0, 0); - } - - if (source.equals(DamageSource.outOfWorld)) - { - if (isImmuneToVoid(armor)) - { - return new ArmorProperties(-1, damageAmount, maxAbsorption); - } else - { - return new ArmorProperties(-1, 0, 0); - } - } - - ItemStack helmet = player.getEquipmentInSlot(4); - ItemStack plate = player.getEquipmentInSlot(3); - ItemStack leggings = player.getEquipmentInSlot(2); - ItemStack boots = player.getEquipmentInSlot(1); - - if (helmet == null || plate == null || leggings == null || boots == null) - { - return new ArmorProperties(-1, 0, 0); - } - - if (helmet.getItem().equals(ModItems.boundHelmet) && plate.getItem().equals(ModItems.boundPlate) && leggings.getItem().equals(ModItems.boundLeggings) && boots.getItem().equals(ModItems.boundBoots)) - { - if (source.isUnblockable()) - { - return new ArmorProperties(-1, damageAmount * 0.9d, maxAbsorption); - } - - return new ArmorProperties(-1, damageAmount, maxAbsorption); - } - - return new ArmorProperties(-1, 0, 0); - } - - @Override - public int getArmorDisplay(EntityPlayer player, ItemStack armor, int slot) - { - if (armor.equals(ModItems.boundHelmet)) - { - return 3; - } - - if (armor.equals(ModItems.boundPlate)) - { - return 8; - } - - if (armor.equals(ModItems.boundLeggings)) - { - return 6; - } - - if (armor.equals(ModItems.boundBoots)) - { - return 3; - } - - return 5; - } - - @Override - public void damageArmor(EntityLivingBase entity, ItemStack stack, DamageSource source, int damage, int slot) - { - if (entity instanceof EntityPlayer) - { - EnergyItems.checkAndSetItemOwner(stack, (EntityPlayer) entity); - - if (((EntityPlayer) entity).capabilities.isCreativeMode) - { - return; - } - - //EnergyItems.syphonBatteries(stack, (EntityPlayer)entity, 200); - } - - stack.setItemDamage(stack.getItemDamage() + damage); - } - - @Override - public void addInformation(ItemStack par1ItemStack, EntityPlayer par2EntityPlayer, List par3List, boolean par4) - { - par3List.add("Devilish Protection"); - - if (!(par1ItemStack.stackTagCompound == null)) - { - if (!par1ItemStack.stackTagCompound.getString("ownerName").equals("")) - { - par3List.add("Current owner: " + par1ItemStack.stackTagCompound.getString("ownerName")); - } - - ItemStack[] inv = getInternalInventory(par1ItemStack); - - if (inv == null) - { - return; - } - - for (int i = 0; i < invSize; i++) - { - if (inv[i] != null) - { - par3List.add("Item in slot " + i + ": " + inv[i].getDisplayName()); - } - } - } - } - - @Override - public String getArmorTexture(ItemStack stack, Entity entity, int slot, String type) - { - if(this.tryComplexRendering) - { - return "alchemicalwizardry:models/armor/BloodArmour_WIP.png"; - } - - if (entity instanceof EntityLivingBase) - { - if (this.getIsInvisible(stack)) - { - if (this== ModItems.boundHelmet || this == ModItems.boundPlate || this == ModItems.boundBoots) - { - return "alchemicalwizardry:models/armor/boundArmour_invisible_layer_1.png"; - } - - if (this == ModItems.boundLeggings) - { - return "alchemicalwizardry:models/armor/boundArmour_invisible_layer_2.png"; - } - } - } - - if (this == ModItems.boundHelmet || this == ModItems.boundPlate || this == ModItems.boundBoots) - { - return "alchemicalwizardry:models/armor/boundArmour_layer_1.png"; - } - - if (this == ModItems.boundLeggings) - { - return "alchemicalwizardry:models/armor/boundArmour_layer_2.png"; - } else - { - return null; - } - } - - @Override - public ItemStack onItemRightClick(ItemStack par1ItemStack, World par2World, EntityPlayer par3EntityPlayer) - { - EnergyItems.checkAndSetItemOwner(par1ItemStack, par3EntityPlayer); - return super.onItemRightClick(par1ItemStack, par2World, par3EntityPlayer); - } - - @Override - public void onArmorTick(World world, EntityPlayer player, ItemStack itemStack) - { - if (itemStack.stackTagCompound == null) - { - itemStack.setTagCompound(new NBTTagCompound()); - } - - int maxBloodLevel = getMaxBloodShardLevel(itemStack); - ItemStack[] inv = getInternalInventory(itemStack); - - if (inv != null) - { - int iSize = 0; - int iBlood = 0; - } - - if (!player.isPotionActive(AlchemicalWizardry.customPotionInhibit)) - { - tickInternalInventory(itemStack, world, player, 0, false); - } - - this.setIsInvisible(itemStack, player.isPotionActive(Potion.invisibility.id)); - - if (itemStack.getItemDamage() > 0) - { - EnergyItems.checkAndSetItemOwner(itemStack, player); - - if (!player.capabilities.isCreativeMode) - { - EnergyItems.syphonBatteries(itemStack, player, itemStack.getItemDamage() * 75); - itemStack.setItemDamage(0); - } - } - - return; - } - - public void tickInternalInventory(ItemStack par1ItemStack, World par2World, EntityPlayer par3Entity, int par4, boolean par5) - { - ItemStack[] inv = getInternalInventory(par1ItemStack); - - if (inv == null) - { - return; - } - - int blood = getMaxBloodShardLevel(par1ItemStack); - - //int blood = 1; - for (int i = 0; i < invSize; i++) - { - if (inv[i] == null) - { - continue; - } - - if (inv[i].getItem() instanceof ArmourUpgrade && blood > 0) - { - if (((ArmourUpgrade) inv[i].getItem()).isUpgrade()) - { - ((ArmourUpgrade) inv[i].getItem()).onArmourUpdate(par2World, par3Entity, inv[i]); - blood--; - } - - if (par2World.getWorldTime() % 200 == 0) - { - if (getUpgradeCostMultiplier(par1ItemStack) > 0.02f) - { - EnergyItems.syphonBatteries(par1ItemStack, par3Entity, (int) (((ArmourUpgrade) inv[i].getItem()).getEnergyForTenSeconds() * getUpgradeCostMultiplier(par1ItemStack))); - } - } - } - } - } - - public int getMaxBloodShardLevel(ItemStack armourStack) - { - ItemStack[] inv = getInternalInventory(armourStack); - - if (inv == null) - { - return 0; - } - - int max = 0; - - for (int i = 0; i < invSize; i++) - { - ItemStack itemStack = inv[i]; - - if (itemStack != null) - { - if (itemStack.getItem().equals(ModItems.weakBloodShard)) - { - max = Math.max(max, 1); - } - - if (itemStack.getItem().equals(ModItems.demonBloodShard)) - { - max = Math.max(max, 2); - } - } - } - - return max; - } - - public boolean hasAddedToInventory(ItemStack sigilItemStack, ItemStack addedItemStack) - { - ItemStack[] inv = getInternalInventory(sigilItemStack); - - if (inv == null) - { - return false; - } - - if (addedItemStack == null) - { - return false; - } - - Item item = addedItemStack.getItem(); - int candidateSlot = -1; - - for (int i = invSize - 1; i >= 0; i--) - { - ItemStack nextItem = inv[i]; - - if (nextItem == null) - { - candidateSlot = i; - continue; - } - } - - if (candidateSlot == -1) - { - return false; - } - - if (addedItemStack.getItem() instanceof ArmourUpgrade) - { - inv[candidateSlot] = addedItemStack; - saveInternalInventory(sigilItemStack, inv); - return true; - } - - return false; - } - - public ItemStack[] getInternalInventory(ItemStack itemStack) - { - NBTTagCompound itemTag = itemStack.stackTagCompound; - - if (itemTag == null) - { - itemStack.setTagCompound(new NBTTagCompound()); - } - itemTag = itemStack.stackTagCompound; - - ItemStack[] inv = new ItemStack[9]; - NBTTagList tagList = itemTag.getTagList("Inventory", Constants.NBT.TAG_COMPOUND); - - if (tagList == null) - { - return null; - } - - for (int i = 0; i < tagList.tagCount(); i++) - { - NBTTagCompound tag = (NBTTagCompound) tagList.getCompoundTagAt(i); - int slot = tag.getByte("Slot"); - - if (slot >= 0 && slot < invSize) - { - inv[slot] = ItemStack.loadItemStackFromNBT(tag); - } - } - - return inv; - } - - public void saveInternalInventory(ItemStack itemStack, ItemStack[] inventory) - { - NBTTagCompound itemTag = itemStack.stackTagCompound; - - if (itemTag == null) - { - itemStack.setTagCompound(new NBTTagCompound()); - } - - NBTTagList itemList = new NBTTagList(); - - for (int i = 0; i < invSize; i++) - { - ItemStack stack = inventory[i]; - - if (inventory[i] != null) - { - NBTTagCompound tag = new NBTTagCompound(); - tag.setByte("Slot", (byte) i); - inventory[i].writeToNBT(tag); - itemList.appendTag(tag); - } - } - - itemTag.setTag("Inventory", itemList); - } - - public boolean isImmuneToVoid(ItemStack itemStack) - { - ItemStack[] inv = getInternalInventory(itemStack); - - if (inv == null) - { - return false; - } - - for (ItemStack item : inv) - { - if (item == null) - { - continue; - } - - if (item.getItem().equals(ModItems.voidSigil)) - { - return true; - } - } - - return false; - } - - @Optional.Method(modid = "Thaumcraft") - public boolean hasIRevealer(ItemStack itemStack) - { - ItemStack[] inv = getInternalInventory(itemStack); - - if (inv == null) - { - return false; - } - - for (ItemStack item : inv) - { - if (item == null) - { - continue; - } - - if (item.getItem() instanceof IRevealer) - { - return true; - } - } - - return false; - } - - @Optional.Method(modid = "Thaumcraft") - public boolean hasIGoggles(ItemStack itemStack) - { - ItemStack[] inv = getInternalInventory(itemStack); - - if (inv == null) - { - return false; - } - - for (ItemStack item : inv) - { - if (item == null) - { - continue; - } - - if (item.getItem() instanceof IGoggles) - { - return true; - } - } - - return false; - } - - public float getUpgradeCostMultiplier(ItemStack itemStack) - { - ItemStack[] inv = getInternalInventory(itemStack); - - if (inv == null) - { - return 1.0f; - } - - for (ItemStack item : inv) - { - if (item == null) - { - continue; - } - - if (item.getItem().equals(ModItems.weakBloodOrb)) - { - return 0.75f; - } - - if (item.getItem().equals(ModItems.apprenticeBloodOrb)) - { - return 0.50f; - } - - if (item.getItem().equals(ModItems.magicianBloodOrb)) - { - return 0.25f; - } - - if (item.getItem().equals(ModItems.masterBloodOrb)) - { - return 0.0f; - } - - if (item.getItem().equals(ModItems.archmageBloodOrb)) - { - return 0.0f; - } - } - - return 1.0f; - } - - public int getItemEnchantability() - { - return 0; - } - - public boolean getIsInvisible(ItemStack armourStack) - { - NBTTagCompound tag = armourStack.getTagCompound(); - if(tag != null) - { - return tag.getBoolean("invisible"); - } - - return false; - } - - public void setIsInvisible(ItemStack armourStack, boolean invisible) - { - NBTTagCompound tag = armourStack.getTagCompound(); - - if(tag == null) - { - armourStack.setTagCompound(new NBTTagCompound()); - tag = armourStack.getTagCompound(); - } - - tag.setBoolean("invisible", invisible); - } - - @Override - @Optional.Method(modid = "Thaumcraft") - public boolean showNodes(ItemStack itemstack, EntityLivingBase player) - { - return this.hasIRevealer(itemstack); - } - - @Override - @Optional.Method(modid = "Thaumcraft") - public boolean showIngamePopups(ItemStack itemstack, EntityLivingBase player) - { - return this.hasIGoggles(itemstack); - } - - @Override - @Optional.Method(modid = "Thaumcraft") - public int getRunicCharge(ItemStack itemstack) - { - ItemStack[] inv = this.getInternalInventory(itemstack); - int shardLevel = this.getMaxBloodShardLevel(itemstack); - int count = 0; - int harden = 0; - - if(inv == null) - { - return 0; - } - - for(ItemStack stack : inv) - { - if(count >= shardLevel) - { - break; - } - - if(stack == null || !(stack.getItem() instanceof ArmourUpgrade)) - { - continue; - } - - if(stack.getItem() instanceof ItemArmor && ((ItemArmor)stack.getItem()).armorType != this.armorType) - { - continue; - } - - if(stack.hasTagCompound()) - { - NBTTagCompound tag = stack.getTagCompound(); - - int enchLvl = tag.getByte("RS.HARDEN"); - - if(stack.getItem() instanceof IRunicArmor) - { - enchLvl += ((IRunicArmor)stack.getItem()).getRunicCharge(stack); - } - - if(enchLvl > 0) - { - harden += enchLvl; - if(((ArmourUpgrade)stack.getItem()).isUpgrade()) - { - count += 1; - } - } - } - } - - return harden; - } - - @Override - public boolean showIngameHUD(World world, ItemStack stack, EntityPlayer player) - { - ItemStack[] inv = getInternalInventory(stack); - - if (inv == null) - { - return false; - } - - for (ItemStack item : inv) - { - if (item == null) - { - continue; - } - - if (item.getItem().equals(ModItems.itemSeerSigil)) - { - return true; - } - } - - return false; - } -} diff --git a/src-backup/main/java/WayofTime/alchemicalWizardry/common/items/BoundAxe.java b/src-backup/main/java/WayofTime/alchemicalWizardry/common/items/BoundAxe.java deleted file mode 100644 index e6d0a770..00000000 --- a/src-backup/main/java/WayofTime/alchemicalWizardry/common/items/BoundAxe.java +++ /dev/null @@ -1,360 +0,0 @@ -package WayofTime.alchemicalWizardry.common.items; - -import java.util.ArrayList; -import java.util.List; - -import javax.swing.Icon; - -import net.minecraft.block.Block; -import net.minecraft.block.BlockLeavesBase; -import net.minecraft.client.renderer.texture.IIconRegister; -import net.minecraft.enchantment.Enchantment; -import net.minecraft.entity.Entity; -import net.minecraft.entity.EntityLivingBase; -import net.minecraft.entity.item.EntityItem; -import net.minecraft.entity.player.EntityPlayer; -import net.minecraft.init.Blocks; -import net.minecraft.item.ItemAxe; -import net.minecraft.item.ItemStack; -import net.minecraft.nbt.NBTTagCompound; -import net.minecraft.nbt.NBTTagList; -import net.minecraft.util.IIcon; -import net.minecraft.util.Vec3; -import net.minecraft.world.World; -import net.minecraftforge.common.ForgeHooks; -import WayofTime.alchemicalWizardry.AlchemicalWizardry; -import WayofTime.alchemicalWizardry.api.items.interfaces.IBindable; -import WayofTime.alchemicalWizardry.common.spell.complex.effect.SpellHelper; -import cpw.mods.fml.relauncher.Side; -import cpw.mods.fml.relauncher.SideOnly; -import net.minecraft.enchantment.EnchantmentHelper; - -public class BoundAxe extends ItemAxe implements IBindable -{ - /** - * Array of blocks the tool has extra effect against. - */ - public static final Block[] blocksEffectiveAgainst = new Block[]{Blocks.planks, Blocks.bookshelf, Blocks.log, Blocks.chest, Blocks.stone_slab, Blocks.pumpkin, Blocks.lit_pumpkin}; - - public float efficiencyOnProperMaterial = 12.0F; - - /** - * Damage versus entities. - */ - public float damageVsEntity; - - private static IIcon activeIcon; - private static IIcon passiveIcon; - - private int energyUsed; - - public BoundAxe() - { - super(AlchemicalWizardry.bloodBoundToolMaterial); - this.maxStackSize = 1; - //this.setMaxDamage(par3EnumToolMaterial.getMaxUses()); - this.efficiencyOnProperMaterial = 12.0F; - this.damageVsEntity = 5; - setCreativeTab(AlchemicalWizardry.tabBloodMagic); - setEnergyUsed(5); - } - - public void setEnergyUsed(int i) - { - energyUsed = i; - } - - public int getEnergyUsed() - { - return this.energyUsed; - } - - @Override - public void addInformation(ItemStack par1ItemStack, EntityPlayer par2EntityPlayer, List par3List, boolean par4) - { - par3List.add("Axe me about my puns!"); - - if (!(par1ItemStack.stackTagCompound == null)) - { - if (par1ItemStack.stackTagCompound.getBoolean("isActive")) - { - par3List.add("Activated"); - } else - { - par3List.add("Deactivated"); - } - - if (!par1ItemStack.stackTagCompound.getString("ownerName").equals("")) - { - par3List.add("Current owner: " + par1ItemStack.stackTagCompound.getString("ownerName")); - } - } - } - - @Override - @SideOnly(Side.CLIENT) - public void registerIcons(IIconRegister iconRegister) - { - this.itemIcon = iconRegister.registerIcon("AlchemicalWizardry:BoundAxe_activated"); - this.activeIcon = iconRegister.registerIcon("AlchemicalWizardry:BoundAxe_activated"); - this.passiveIcon = iconRegister.registerIcon("AlchemicalWizardry:SheathedItem"); - } - - @Override - public IIcon getIcon(ItemStack stack, int renderPass, EntityPlayer player, ItemStack usingItem, int useRemaining) - { - if (stack.stackTagCompound == null) - { - stack.setTagCompound(new NBTTagCompound()); - } - - NBTTagCompound tag = stack.stackTagCompound; - - if (tag.getBoolean("isActive")) - { - return this.activeIcon; - } else - { - return this.passiveIcon; - } - } - - @Override - public ItemStack onItemRightClick(ItemStack par1ItemStack, World par2World, EntityPlayer par3EntityPlayer) - { - EnergyItems.checkAndSetItemOwner(par1ItemStack, par3EntityPlayer); - - if (par3EntityPlayer.isSneaking()) - { - this.setActivated(par1ItemStack, !getActivated(par1ItemStack)); - par1ItemStack.stackTagCompound.setInteger("worldTimeDelay", (int) (par2World.getWorldTime() - 1) % 200); - return par1ItemStack; - } - - if (!getActivated(par1ItemStack) || SpellHelper.isFakePlayer(par2World, par3EntityPlayer)) - { - return par1ItemStack; - } - - if (par3EntityPlayer.isPotionActive(AlchemicalWizardry.customPotionInhibit)) - { - return par1ItemStack; - } - - Vec3 blockVec = SpellHelper.getEntityBlockVector(par3EntityPlayer); - int posX = (int)(blockVec.xCoord); - int posY = (int)(blockVec.yCoord); - int posZ = (int)(blockVec.zCoord); - boolean silkTouch = EnchantmentHelper.getSilkTouchModifier(par3EntityPlayer); - int fortuneLvl = EnchantmentHelper.getFortuneModifier(par3EntityPlayer); - - for (int i = -5; i <= 5; i++) - { - for (int j = 0; j <= 10; j++) - { - for (int k = -5; k <= 5; k++) - { - Block block = par2World.getBlock(posX + i, posY + j, posZ + k); - int meta = par2World.getBlockMetadata(posX + i, posY + j, posZ + k); - - if (block != null) - { - float str = func_150893_a(par1ItemStack, block); - - if (str > 1.1f || block instanceof BlockLeavesBase && par2World.canMineBlock(par3EntityPlayer, posX + i, posY + j, posZ + k)) - { - //par1ItemStack.getEnchantmentTagList(); - if (silkTouch) - { - ItemStack droppedItem = new ItemStack(block, 1, meta); - - if (!par2World.isRemote) - { - par2World.spawnEntityInWorld(new EntityItem(par2World, posX, posY + par3EntityPlayer.getEyeHeight(), posZ, droppedItem)); - } - } else - { - ArrayList itemDropList = block.getDrops(par2World, posX + i, posY + j, posZ + k, meta, fortuneLvl); - - if (itemDropList != null) - { - for (ItemStack item : itemDropList) - { - if (!par2World.isRemote) - { - par2World.spawnEntityInWorld(new EntityItem(par2World, posX, posY + par3EntityPlayer.getEyeHeight(), posZ, item)); - } - } - } - } - - par2World.setBlockToAir(posX + i, posY + j, posZ + k); - } - } - } - } - } - - EnergyItems.syphonBatteries(par1ItemStack, par3EntityPlayer, 10000); - return par1ItemStack; - } - - @Override - public void onUpdate(ItemStack par1ItemStack, World par2World, Entity par3Entity, int par4, boolean par5) - { - if (!(par3Entity instanceof EntityPlayer)) - { - return; - } - - EntityPlayer par3EntityPlayer = (EntityPlayer) par3Entity; - - if (par1ItemStack.stackTagCompound == null) - { - par1ItemStack.setTagCompound(new NBTTagCompound()); - } - -// if(par1ItemStack.stackTagCompound.getBoolean("isActive")) -// { -// EnergyItems.syphonBatteries(par1ItemStack, par3EntityPlayer, 1); -// } - - if (par2World.getWorldTime() % 200 == par1ItemStack.stackTagCompound.getInteger("worldTimeDelay") && par1ItemStack.stackTagCompound.getBoolean("isActive")) - { - if (!par3EntityPlayer.capabilities.isCreativeMode) - { - EnergyItems.syphonBatteries(par1ItemStack, par3EntityPlayer, 20); - } - } - - par1ItemStack.setItemDamage(0); - return; - } - - public void setActivated(ItemStack par1ItemStack, boolean newActivated) - { - NBTTagCompound itemTag = par1ItemStack.stackTagCompound; - - if (itemTag == null) - { - par1ItemStack.setTagCompound(new NBTTagCompound()); - } - - itemTag.setBoolean("isActive", newActivated); - } - - public boolean getActivated(ItemStack par1ItemStack) - { - NBTTagCompound itemTag = par1ItemStack.stackTagCompound; - - if (itemTag == null) - { - par1ItemStack.setTagCompound(new NBTTagCompound()); - } - - return itemTag.getBoolean("isActive"); - } - - /** - * Returns the strength of the stack against a given block. 1.0F base, (Quality+1)*2 if correct blocktype, 1.5F if - * sword - */ - @Override - public float func_150893_a(ItemStack par1ItemStack, Block par2Block) - { - if (!getActivated(par1ItemStack)) - { - return 0.0F; - } - - return super.func_150893_a(par1ItemStack, par2Block); - } - - /** - * Current implementations of this method in child classes do not use the entry argument beside ev. They just raise - * the damage on the stack. - */ - public boolean hitEntity(ItemStack par1ItemStack, EntityLivingBase par2EntityLivingBase, EntityLivingBase par3EntityLivingBase) - { - if (!getActivated(par1ItemStack)) - { - return false; - } - - //par1ItemStack.damageItem(2, par3EntityLivingBase); - return true; - } - - public boolean onBlockDestroyed(ItemStack par1ItemStack, World par2World, Block par3, int par4, int par5, int par6, EntityLivingBase par7EntityLivingBase) - { - if ((double) par3.getBlockHardness(par2World, par4, par5, par6) != 0.0D) - { - //par1ItemStack.damageItem(1, par7EntityLivingBase); - } - - return true; - } - - @SideOnly(Side.CLIENT) - - /** - * Returns True is the item is renderer in full 3D when hold. - */ - public boolean isFull3D() - { - return true; - } - - /** - * Return the enchantability factor of the item, most of the time is based on material. - */ - @Override - public int getItemEnchantability() - { - return 30; - } - - /** - * Return whether this item is repairable in an anvil. - */ -// public boolean getIsRepairable(ItemStack par1ItemStack, ItemStack par2ItemStack) -// { -// return true; -// } - - /** - * FORGE: Overridden to allow custom tool effectiveness - */ - @Override - public float getDigSpeed(ItemStack stack, Block block, int meta) - { - if (!getActivated(stack)) - { - return 0.0F; - } - - if (ForgeHooks.isToolEffective(stack, block, meta)) - { - return efficiencyOnProperMaterial; - } - - return func_150893_a(stack, block); - } - - @Override - public boolean onLeftClickEntity(ItemStack stack, EntityPlayer player, Entity entity) - { - return !getActivated(stack); - } - - @Override - public int getHarvestLevel(ItemStack stack, String toolClass) - { - if("axe".equals(toolClass)) - { - return 5; - } - - return 0; - } -} diff --git a/src-backup/main/java/WayofTime/alchemicalWizardry/common/items/BoundPickaxe.java b/src-backup/main/java/WayofTime/alchemicalWizardry/common/items/BoundPickaxe.java deleted file mode 100644 index 922f59f9..00000000 --- a/src-backup/main/java/WayofTime/alchemicalWizardry/common/items/BoundPickaxe.java +++ /dev/null @@ -1,376 +0,0 @@ -package WayofTime.alchemicalWizardry.common.items; - -import java.util.ArrayList; -import java.util.List; - -import net.minecraft.block.Block; -import net.minecraft.client.renderer.texture.IIconRegister; -import net.minecraft.enchantment.Enchantment; -import net.minecraft.entity.Entity; -import net.minecraft.entity.EntityLivingBase; -import net.minecraft.entity.item.EntityItem; -import net.minecraft.entity.player.EntityPlayer; -import net.minecraft.item.ItemPickaxe; -import net.minecraft.item.ItemStack; -import net.minecraft.nbt.NBTTagCompound; -import net.minecraft.nbt.NBTTagList; -import net.minecraft.util.IIcon; -import net.minecraft.util.Vec3; -import net.minecraft.world.World; -import net.minecraftforge.common.ForgeHooks; -import WayofTime.alchemicalWizardry.AlchemicalWizardry; -import WayofTime.alchemicalWizardry.api.items.interfaces.IBindable; -import WayofTime.alchemicalWizardry.common.spell.complex.effect.SpellHelper; -import cpw.mods.fml.relauncher.Side; -import cpw.mods.fml.relauncher.SideOnly; -import net.minecraft.enchantment.EnchantmentHelper; - -public class BoundPickaxe extends ItemPickaxe implements IBindable -{ - /** - * Array of blocks the tool has extra effect against. - */ - // public static final Block[] blocksEffectiveAgainst = new Block[]{Blocks.cobblestone, Blocks.stoneDoubleSlab, Blocks.stoneSingleSlab, Block.stone, Block.sandStone, Block.cobblestoneMossy, Block.oreIron, Block.blockIron, Block.oreCoal, Block.blockGold, Block.oreGold, Block.oreDiamond, Block.blockDiamond, Block.ice, Block.netherrack, Block.oreLapis, Block.blockLapis, Block.oreRedstone, Block.oreRedstoneGlowing, Block.rail, Block.railDetector, Block.railPowered, Block.railActivator}; - - public float efficiencyOnProperMaterial = 12.0F; - - /** - * Damage versus entities. - */ - public float damageVsEntity; - - private static IIcon activeIcon; - private static IIcon passiveIcon; - - private int energyUsed; - - public BoundPickaxe() - { - super(AlchemicalWizardry.bloodBoundToolMaterial); - this.maxStackSize = 1; - //this.setMaxDamage(par3EnumToolMaterial.getMaxUses()); - this.efficiencyOnProperMaterial = 12.0F; - this.damageVsEntity = 5; - setCreativeTab(AlchemicalWizardry.tabBloodMagic); - this.setEnergyUsed(5); - } - - public void setEnergyUsed(int i) - { - energyUsed = i; - } - - public int getEnergyUsed() - { - return this.energyUsed; - } - - @Override - public void addInformation(ItemStack par1ItemStack, EntityPlayer par2EntityPlayer, List par3List, boolean par4) - { - par3List.add("The Souls of the Damned"); - par3List.add("do not like stone..."); - - if (!(par1ItemStack.stackTagCompound == null)) - { - if (par1ItemStack.stackTagCompound.getBoolean("isActive")) - { - par3List.add("Activated"); - } else - { - par3List.add("Deactivated"); - } - - if (!par1ItemStack.stackTagCompound.getString("ownerName").equals("")) - { - par3List.add("Current owner: " + par1ItemStack.stackTagCompound.getString("ownerName")); - } - } - } - - @Override - @SideOnly(Side.CLIENT) - public void registerIcons(IIconRegister iconRegister) - { - this.itemIcon = iconRegister.registerIcon("AlchemicalWizardry:BoundPickaxe_activated"); - this.activeIcon = iconRegister.registerIcon("AlchemicalWizardry:BoundPickaxe_activated"); - this.passiveIcon = iconRegister.registerIcon("AlchemicalWizardry:SheathedItem"); - } - - @Override - public IIcon getIcon(ItemStack stack, int renderPass, EntityPlayer player, ItemStack usingItem, int useRemaining) - { - if (stack.stackTagCompound == null) - { - stack.setTagCompound(new NBTTagCompound()); - } - - NBTTagCompound tag = stack.stackTagCompound; - - if (tag.getBoolean("isActive")) - { - return this.activeIcon; - } else - { - return this.passiveIcon; - } - } - - @Override - public ItemStack onItemRightClick(ItemStack par1ItemStack, World par2World, EntityPlayer par3EntityPlayer) - { - EnergyItems.checkAndSetItemOwner(par1ItemStack, par3EntityPlayer); - - if (par3EntityPlayer.isSneaking()) - { - this.setActivated(par1ItemStack, !getActivated(par1ItemStack)); - par1ItemStack.stackTagCompound.setInteger("worldTimeDelay", (int) (par2World.getWorldTime() - 1) % 200); - return par1ItemStack; - } - - if (!getActivated(par1ItemStack) || SpellHelper.isFakePlayer(par2World, par3EntityPlayer)) - { - return par1ItemStack; - } - - if (par3EntityPlayer.isPotionActive(AlchemicalWizardry.customPotionInhibit)) - { - return par1ItemStack; - } - - if(par2World.isRemote) - { - return par1ItemStack; - } - - Vec3 blockVec = SpellHelper.getEntityBlockVector(par3EntityPlayer); - int posX = (int)(blockVec.xCoord); - int posY = (int)(blockVec.yCoord); - int posZ = (int)(blockVec.zCoord); - boolean silkTouch = EnchantmentHelper.getSilkTouchModifier(par3EntityPlayer); - int fortuneLvl = EnchantmentHelper.getFortuneModifier(par3EntityPlayer); - - for (int i = -5; i <= 5; i++) - { - for (int j = -5; j <= 5; j++) - { - for (int k = -5; k <= 5; k++) - { - Block block = par2World.getBlock(posX + i, posY + j, posZ + k); - int meta = par2World.getBlockMetadata(posX + i, posY + j, posZ + k); - - if (block != null && block.getBlockHardness(par2World, posX + i, posY + j, posZ + k) != -1) - { - float str = func_150893_a(par1ItemStack, block); - - if (str > 1.1f && par2World.canMineBlock(par3EntityPlayer, posX + i, posY + j, posZ + k)) - { - //par1ItemStack.getEnchantmentTagList(); - if (silkTouch) - { - ItemStack droppedItem = new ItemStack(block, 1, meta); - - if (!par2World.isRemote) - { - par2World.spawnEntityInWorld(new EntityItem(par2World, posX, posY + par3EntityPlayer.getEyeHeight(), posZ, droppedItem)); - } - } else - { - ArrayList itemDropList = block.getDrops(par2World, posX + i, posY + j, posZ + k, meta, fortuneLvl); - - if (itemDropList != null) - { - for (ItemStack item : itemDropList) - { - if (!par2World.isRemote) - { - par2World.spawnEntityInWorld(new EntityItem(par2World, posX, posY + par3EntityPlayer.getEyeHeight(), posZ, item)); - } - } - } - } - - par2World.setBlockToAir(posX + i, posY + j, posZ + k); - } - } - } - } - } - - EnergyItems.syphonBatteries(par1ItemStack, par3EntityPlayer, 10000); - return par1ItemStack; - } - - @Override - public void onUpdate(ItemStack par1ItemStack, World par2World, Entity par3Entity, int par4, boolean par5) - { - if (!(par3Entity instanceof EntityPlayer)) - { - return; - } - - EntityPlayer par3EntityPlayer = (EntityPlayer) par3Entity; - - if (par1ItemStack.stackTagCompound == null) - { - par1ItemStack.setTagCompound(new NBTTagCompound()); - } - -// if(par1ItemStack.stackTagCompound.getBoolean("isActive")) -// { -// EnergyItems.syphonBatteries(par1ItemStack, par3EntityPlayer, 1); -// } - - if (par2World.getWorldTime() % 200 == par1ItemStack.stackTagCompound.getInteger("worldTimeDelay") && par1ItemStack.stackTagCompound.getBoolean("isActive")) - { - if (!par3EntityPlayer.capabilities.isCreativeMode) - { - EnergyItems.syphonBatteries(par1ItemStack, par3EntityPlayer, 20); - } - } - - par1ItemStack.setItemDamage(0); - return; - } - - public void setActivated(ItemStack par1ItemStack, boolean newActivated) - { - NBTTagCompound itemTag = par1ItemStack.stackTagCompound; - - if (itemTag == null) - { - par1ItemStack.setTagCompound(new NBTTagCompound()); - } - - itemTag.setBoolean("isActive", newActivated); - } - - public boolean getActivated(ItemStack par1ItemStack) - { - NBTTagCompound itemTag = par1ItemStack.stackTagCompound; - - if (itemTag == null) - { - par1ItemStack.setTagCompound(new NBTTagCompound()); - } - - return itemTag.getBoolean("isActive"); - } - - /** - * Returns the strength of the stack against a given block. 1.0F base, (Quality+1)*2 if correct blocktype, 1.5F if - * sword - */ - @Override - public float func_150893_a(ItemStack par1ItemStack, Block par2Block) //getStrVsBlock - { - if (!getActivated(par1ItemStack)) - { - return 0.0F; - } - - return super.func_150893_a(par1ItemStack, par2Block); - } - - /** - * Current implementations of this method in child classes do not use the entry argument beside ev. They just raise - * the damage on the stack. - */ - public boolean hitEntity(ItemStack par1ItemStack, EntityLivingBase par2EntityLivingBase, EntityLivingBase par3EntityLivingBase) - { - if (!getActivated(par1ItemStack)) - { - return false; - } - - //par1ItemStack.damageItem(2, par3EntityLivingBase); - return true; - } - - @Override - public boolean onBlockDestroyed(ItemStack par1ItemStack, World par2World, Block par3, int par4, int par5, int par6, EntityLivingBase par7EntityLivingBase) - { - - if (par7EntityLivingBase instanceof EntityPlayer) - { - EnergyItems.syphonBatteries(par1ItemStack, (EntityPlayer) par7EntityLivingBase, getEnergyUsed()); - } - - //TODO Possibly add better functionality for the items? - //par7EntityLivingBase.getLookVec(); - return true; - } - - @SideOnly(Side.CLIENT) - - /** - * Returns True is the item is renderer in full 3D when hold. - */ - public boolean isFull3D() - { - return true; - } - - /** - * Return the enchantability factor of the item, most of the time is based on material. - */ - @Override - public int getItemEnchantability() - { - return 30; - } - - /** - * Return whether this item is repairable in an anvil. - */ -// public boolean getIsRepairable(ItemStack par1ItemStack, ItemStack par2ItemStack) -// { -// return false; -// } - - /** - * FORGE: Overridden to allow custom tool effectiveness - */ - @Override - public float getDigSpeed(ItemStack stack, Block block, int meta) - { - if (!getActivated(stack)) - { - return 0.0F; - } - - if (ForgeHooks.isToolEffective(stack, block, meta)) - { - return efficiencyOnProperMaterial; - } - - return func_150893_a(stack, block); - } - -// @Override -// -// /** -// * Returns if the item (tool) can harvest results from the block type. -// */ -// public boolean func_150897_b(Block par1Block) //canHarvestBlock -// { -// return par1Block == Blocks.obsidian ? true : (par1Block != Blocks.diamond_block && par1Block != Blocks.diamond_ore ? (par1Block != Blocks.emerald_ore && par1Block != Blocks.emerald_block ? (par1Block != Blocks.gold_block && par1Block != Blocks.gold_ore ? (par1Block != Blocks.iron_block && par1Block != Blocks.iron_ore ? (par1Block != Blocks.lapis_block && par1Block != Blocks.lapis_ore ? (par1Block != Blocks.redstone_ore && par1Block != Blocks.oreRedstoneGlowing ? (par1Block.getMaterial() == Material.rock ? true : (par1Block.blockMaterial == Material.iron ? true : par1Block.blockMaterial == Material.anvil)) : true) : true) : true) : true) : true) : true); -// } - - @Override - public boolean onLeftClickEntity(ItemStack stack, EntityPlayer player, Entity entity) - { - return !getActivated(stack); - } - - @Override - public int getHarvestLevel(ItemStack stack, String toolClass) - { - if("pickaxe".equals(toolClass)) - { - return 5; - } - - return 0; - } -} diff --git a/src-backup/main/java/WayofTime/alchemicalWizardry/common/items/BoundShovel.java b/src-backup/main/java/WayofTime/alchemicalWizardry/common/items/BoundShovel.java deleted file mode 100644 index df65ebcb..00000000 --- a/src-backup/main/java/WayofTime/alchemicalWizardry/common/items/BoundShovel.java +++ /dev/null @@ -1,367 +0,0 @@ -package WayofTime.alchemicalWizardry.common.items; - -import java.util.ArrayList; -import java.util.List; - -import net.minecraft.block.Block; -import net.minecraft.client.renderer.texture.IIconRegister; -import net.minecraft.enchantment.Enchantment; -import net.minecraft.entity.Entity; -import net.minecraft.entity.EntityLivingBase; -import net.minecraft.entity.SharedMonsterAttributes; -import net.minecraft.entity.ai.attributes.AttributeModifier; -import net.minecraft.entity.item.EntityItem; -import net.minecraft.entity.player.EntityPlayer; -import net.minecraft.item.ItemSpade; -import net.minecraft.item.ItemStack; -import net.minecraft.nbt.NBTTagCompound; -import net.minecraft.nbt.NBTTagList; -import net.minecraft.util.IIcon; -import net.minecraft.util.Vec3; -import net.minecraft.world.World; -import net.minecraftforge.common.ForgeHooks; -import WayofTime.alchemicalWizardry.AlchemicalWizardry; -import WayofTime.alchemicalWizardry.api.items.interfaces.IBindable; -import WayofTime.alchemicalWizardry.common.spell.complex.effect.SpellHelper; -import net.minecraft.enchantment.EnchantmentHelper; - -import com.google.common.collect.Multimap; - -import cpw.mods.fml.relauncher.Side; -import cpw.mods.fml.relauncher.SideOnly; - -public class BoundShovel extends ItemSpade implements IBindable -{ - /** - * Array of blocks the tool has extra effect against. - */ - //public static final Block[] blocksEffectiveAgainst = new Block[]{Block.grass, Block.dirt, Block.sand, Block.gravel, Block.snow, Block.blockSnow, Block.blockClay, Block.tilledField, Block.slowSand, Block.mycelium}; - - public float efficiencyOnProperMaterial = 12.0F; - - /** - * Damage versus entities. - */ - public float damageVsEntity; - - private static IIcon activeIcon; - private static IIcon passiveIcon; - - private int energyUsed; - - public BoundShovel() - { - super(AlchemicalWizardry.bloodBoundToolMaterial); - this.maxStackSize = 1; - //this.setMaxDamage(par3EnumToolMaterial.getMaxUses()); - this.efficiencyOnProperMaterial = 12.0F; - this.damageVsEntity = 5; - setCreativeTab(AlchemicalWizardry.tabBloodMagic); - setEnergyUsed(5); - } - - public void setEnergyUsed(int i) - { - energyUsed = i; - } - - public int getEnergyUsed() - { - return this.energyUsed; - } - - @Override - public void addInformation(ItemStack par1ItemStack, EntityPlayer par2EntityPlayer, List par3List, boolean par4) - { - par3List.add("No, not that type of spade."); - - if (!(par1ItemStack.stackTagCompound == null)) - { - if (par1ItemStack.stackTagCompound.getBoolean("isActive")) - { - par3List.add("Activated"); - } else - { - par3List.add("Deactivated"); - } - - if (!par1ItemStack.stackTagCompound.getString("ownerName").equals("")) - { - par3List.add("Current owner: " + par1ItemStack.stackTagCompound.getString("ownerName")); - } - } - } - - @Override - @SideOnly(Side.CLIENT) - public void registerIcons(IIconRegister iconRegister) - { - this.itemIcon = iconRegister.registerIcon("AlchemicalWizardry:BoundShovel_activated"); - this.activeIcon = iconRegister.registerIcon("AlchemicalWizardry:BoundShovel_activated"); - this.passiveIcon = iconRegister.registerIcon("AlchemicalWizardry:SheathedItem"); - } - - @Override - public IIcon getIcon(ItemStack stack, int renderPass, EntityPlayer player, ItemStack usingItem, int useRemaining) - { - if (stack.stackTagCompound == null) - { - stack.setTagCompound(new NBTTagCompound()); - } - - NBTTagCompound tag = stack.stackTagCompound; - - if (tag.getBoolean("isActive")) - { - return this.activeIcon; - } else - { - return this.passiveIcon; - } - } - - @Override - public ItemStack onItemRightClick(ItemStack par1ItemStack, World par2World, EntityPlayer par3EntityPlayer) - { - EnergyItems.checkAndSetItemOwner(par1ItemStack, par3EntityPlayer); - - if (par3EntityPlayer.isSneaking()) - { - this.setActivated(par1ItemStack, !getActivated(par1ItemStack)); - par1ItemStack.stackTagCompound.setInteger("worldTimeDelay", (int) (par2World.getWorldTime() - 1) % 200); - return par1ItemStack; - } - - if (!getActivated(par1ItemStack) || SpellHelper.isFakePlayer(par2World, par3EntityPlayer)) - { - return par1ItemStack; - } - - if (par3EntityPlayer.isPotionActive(AlchemicalWizardry.customPotionInhibit)) - { - return par1ItemStack; - } - - Vec3 blockVec = SpellHelper.getEntityBlockVector(par3EntityPlayer); - int posX = (int)(blockVec.xCoord); - int posY = (int)(blockVec.yCoord); - int posZ = (int)(blockVec.zCoord); - boolean silkTouch = EnchantmentHelper.getSilkTouchModifier(par3EntityPlayer); - int fortuneLvl = EnchantmentHelper.getFortuneModifier(par3EntityPlayer); - - for (int i = -5; i <= 5; i++) - { - for (int j = 0; j <= 10; j++) - { - for (int k = -5; k <= 5; k++) - { - Block block = par2World.getBlock(posX + i, posY + j, posZ + k); - int meta = par2World.getBlockMetadata(posX + i, posY + j, posZ + k); - - if (block != null) - { - float str = func_150893_a(par1ItemStack, block); - - if (str > 1.1f && par2World.canMineBlock(par3EntityPlayer, posX + i, posY + j, posZ + k)) - { - //par1ItemStack.getEnchantmentTagList(); - if (silkTouch) - { - ItemStack droppedItem = new ItemStack(block, 1, meta); - - if (!par2World.isRemote) - { - par2World.spawnEntityInWorld(new EntityItem(par2World, posX, posY + par3EntityPlayer.getEyeHeight(), posZ, droppedItem)); - } - } else - { - ArrayList itemDropList = block.getDrops(par2World, posX + i, posY + j, posZ + k, meta, fortuneLvl); - - if (itemDropList != null) - { - for (ItemStack item : itemDropList) - { - if (!par2World.isRemote) - { - par2World.spawnEntityInWorld(new EntityItem(par2World, posX, posY + par3EntityPlayer.getEyeHeight(), posZ, item)); - } - } - } - } - - par2World.setBlockToAir(posX + i, posY + j, posZ + k); - } - } - } - } - } - - EnergyItems.syphonBatteries(par1ItemStack, par3EntityPlayer, 10000); - return par1ItemStack; - } - - @Override - public void onUpdate(ItemStack par1ItemStack, World par2World, Entity par3Entity, int par4, boolean par5) - { - if (!(par3Entity instanceof EntityPlayer)) - { - return; - } - - EntityPlayer par3EntityPlayer = (EntityPlayer) par3Entity; - - if (par1ItemStack.stackTagCompound == null) - { - par1ItemStack.setTagCompound(new NBTTagCompound()); - } - -// if(par1ItemStack.stackTagCompound.getBoolean("isActive")) -// { -// EnergyItems.syphonBatteries(par1ItemStack, par3EntityPlayer, 1); -// } - - if (par2World.getWorldTime() % 200 == par1ItemStack.stackTagCompound.getInteger("worldTimeDelay") && par1ItemStack.stackTagCompound.getBoolean("isActive")) - { - if (!par3EntityPlayer.capabilities.isCreativeMode) - { - EnergyItems.syphonBatteries(par1ItemStack, par3EntityPlayer, 20); - } - } - - par1ItemStack.setItemDamage(0); - return; - } - - public void setActivated(ItemStack par1ItemStack, boolean newActivated) - { - NBTTagCompound itemTag = par1ItemStack.stackTagCompound; - - if (itemTag == null) - { - par1ItemStack.setTagCompound(new NBTTagCompound()); - } - - itemTag.setBoolean("isActive", newActivated); - } - - public boolean getActivated(ItemStack par1ItemStack) - { - NBTTagCompound itemTag = par1ItemStack.stackTagCompound; - - if (itemTag == null) - { - par1ItemStack.setTagCompound(new NBTTagCompound()); - } - - return itemTag.getBoolean("isActive"); - } - - /** - * Returns the strength of the stack against a given block. 1.0F base, (Quality+1)*2 if correct blocktype, 1.5F if - * sword - */ - @Override - public float func_150893_a(ItemStack par1ItemStack, Block par2Block) - { - if (!getActivated(par1ItemStack)) - { - return 0.0F; - } - - return super.func_150893_a(par1ItemStack, par2Block); - } - - /** - * Current implementations of this method in child classes do not use the entry argument beside ev. They just raise - * the damage on the stack. - */ - public boolean hitEntity(ItemStack par1ItemStack, EntityLivingBase par2EntityLivingBase, EntityLivingBase par3EntityLivingBase) - { - if (!getActivated(par1ItemStack)) - { - return false; - } - - //par1ItemStack.damageItem(2, par3EntityLivingBase); - return true; - } - - public boolean onBlockDestroyed(ItemStack par1ItemStack, World par2World, int par3, int par4, int par5, int par6, EntityLivingBase par7EntityLivingBase) - { - return true; - } - - @SideOnly(Side.CLIENT) - - /** - * Returns True is the item is renderer in full 3D when hold. - */ - public boolean isFull3D() - { - return true; - } - - /** - * Return the enchantability factor of the item, most of the time is based on material. - */ - public int getItemEnchantability() - { - return 30; - } - - /** - * Return whether this item is repairable in an anvil. - */ -// public boolean getIsRepairable(ItemStack par1ItemStack, ItemStack par2ItemStack) -// { -// return false; -// } - @Override - public Multimap getItemAttributeModifiers() - { - Multimap multimap = super.getItemAttributeModifiers(); - multimap.put(SharedMonsterAttributes.attackDamage.getAttributeUnlocalizedName(), new AttributeModifier(field_111210_e, "Tool modifier", (double) this.damageVsEntity, 0)); - return multimap; - } - - /** - * FORGE: Overridden to allow custom tool effectiveness - */ - @Override - public float getDigSpeed(ItemStack stack, Block block, int meta) - { - if (!getActivated(stack)) - { - return 0.0F; - } - - if (ForgeHooks.isToolEffective(stack, block, meta)) - { - return efficiencyOnProperMaterial; - } - - return func_150893_a(stack, block); - } -// -// public boolean canHarvestBlock(Block par1Block) -// { -// return par1Block == Block.snow ? true : par1Block == Block.blockSnow; -// } - - @Override - public boolean onLeftClickEntity(ItemStack stack, EntityPlayer player, Entity entity) - { - return !getActivated(stack); - } - - @Override - public int getHarvestLevel(ItemStack stack, String toolClass) - { - if("shovel".equals(toolClass)) - { - return 5; - } - - return 0; - } -} diff --git a/src-backup/main/java/WayofTime/alchemicalWizardry/common/items/CheatyItem.java b/src-backup/main/java/WayofTime/alchemicalWizardry/common/items/CheatyItem.java deleted file mode 100644 index 8b44398d..00000000 --- a/src-backup/main/java/WayofTime/alchemicalWizardry/common/items/CheatyItem.java +++ /dev/null @@ -1,254 +0,0 @@ -package WayofTime.alchemicalWizardry.common.items; - -import java.util.List; - -import net.minecraft.client.renderer.texture.IIconRegister; -import net.minecraft.entity.player.EntityPlayer; -import net.minecraft.item.Item; -import net.minecraft.item.ItemStack; -import net.minecraft.nbt.NBTTagCompound; -import net.minecraft.server.MinecraftServer; -import net.minecraft.util.DamageSource; -import net.minecraft.world.World; -import net.minecraftforge.common.util.FakePlayer; -import WayofTime.alchemicalWizardry.AlchemicalWizardry; -import WayofTime.alchemicalWizardry.api.items.interfaces.IBindable; -import WayofTime.alchemicalWizardry.api.soulNetwork.LifeEssenceNetwork; -import WayofTime.alchemicalWizardry.common.PacketHandler; -import WayofTime.alchemicalWizardry.common.spell.complex.effect.SpellHelper; -import WayofTime.alchemicalWizardry.common.tileEntity.TEAltar; -import cpw.mods.fml.relauncher.Side; -import cpw.mods.fml.relauncher.SideOnly; - -public class CheatyItem extends Item implements IBindable -{ - // private int maxEssence; - //protected int orbLevel; - - public CheatyItem() - { - super(); - DamageSource damageSource = DamageSource.generic; - setMaxStackSize(1); - //setMaxDamage(damage); - setCreativeTab(AlchemicalWizardry.tabBloodMagic); - //setFull3D(); - //maxEssence = damage; - //orbLevel = 1; - } - - @Override - @SideOnly(Side.CLIENT) - public void registerIcons(IIconRegister iconRegister) - { - this.itemIcon = iconRegister.registerIcon("AlchemicalWizardry:EnergyBattery"); - } - - @Override - public void addInformation(ItemStack par1ItemStack, EntityPlayer par2EntityPlayer, List par3List, boolean par4) - { - par3List.add("Creative only"); - par3List.add("Right-click to fill network,"); - par3List.add("shift-right to empty."); - - //par3List.add("LP: " + (this.getMaxDamage() - this.getDamage(par1ItemStack))); - if (!(par1ItemStack.stackTagCompound == null)) - { - par3List.add("Current owner: " + par1ItemStack.stackTagCompound.getString("ownerName")); -// EntityPlayer owner = MinecraftServer.getServer().getConfigurationManager().getPlayerForUsername(par1ItemStack.stackTagCompound.getString("ownerName")); -// if(owner!=null) -// { -// NBTTagCompound tag = owner.getEntityData(); -// par3List.add("LP: " + tag.getInteger("currentEssence")); -// } - } - - //par3List.add("LP: " + par2EntityPlayer.getEntityData().getInteger("currentEssence")); - } - - public ItemStack onItemRightClick(ItemStack par1ItemStack, World par2World, EntityPlayer par3EntityPlayer) - { - EnergyItems.checkAndSetItemOwner(par1ItemStack, par3EntityPlayer); - World world = par3EntityPlayer.worldObj; - - if (par3EntityPlayer instanceof FakePlayer) - { - return par1ItemStack; - } - - if (world != null) - { - double posX = par3EntityPlayer.posX; - double posY = par3EntityPlayer.posY; - double posZ = par3EntityPlayer.posZ; - world.playSoundEffect((double) ((float) posX + 0.5F), (double) ((float) posY + 0.5F), (double) ((float) posZ + 0.5F), "random.fizz", 0.5F, 2.6F + (world.rand.nextFloat() - world.rand.nextFloat()) * 0.8F); - SpellHelper.sendIndexedParticleToAllAround(world, posX, posY, posZ, 20, world.provider.dimensionId, 4, posX, posY, posZ); - } - - if (!par3EntityPlayer.worldObj.isRemote) - { - return par1ItemStack; - } - - NBTTagCompound itemTag = par1ItemStack.stackTagCompound; - - if (itemTag == null || itemTag.getString("ownerName").equals("")) - { - return par1ItemStack; - } - - if (par3EntityPlayer.isSneaking()) - { - EnergyItems.setCurrentEssence(itemTag.getString("ownerName"), 0); - } else - { - EnergyItems.addEssenceToMaximum(itemTag.getString("ownerName"), 1000000, Integer.MAX_VALUE); - } - - //PacketDispatcher.sendPacketToPlayer(PacketHandler.getPacket(itemTag.getString("ownerName")), (Player)par3EntityPlayer); -// EntityPlayer owner = MinecraftServer.getServer().getConfigurationManager().getPlayerForUsername(itemTag.getString("ownerName")); -// if(owner==null){return par1ItemStack;} -// NBTTagCompound ownerTag = owner.getEntityData(); -// if(ownerTag.getInteger("currentEssence")<=this.maxEssence) -// { -// damagePlayer(par2World, par3EntityPlayer,2); -// ownerTag.setInteger("currentEssence", Math.min(this.maxEssence, ownerTag.getInteger("currentEssence")+200/2)); -// } - return par1ItemStack; - } - - /* - * @return the damage that was not deducted - */ - public int damageItem(ItemStack par1ItemStack, int par2int) - { - if (par2int == 0) - { - return 0; - } - - int before = this.getDamage(par1ItemStack); - this.setDamage(par1ItemStack, this.getDamage(par1ItemStack) + par2int); - return par2int - (this.getDamage(par1ItemStack) - before); - } - - protected void damagePlayer(World world, EntityPlayer player, int damage) - { - if (world != null) - { - double posX = player.posX; - double posY = player.posY; - double posZ = player.posZ; - world.playSoundEffect((double) ((float) posX + 0.5F), (double) ((float) posY + 0.5F), (double) ((float) posZ + 0.5F), "random.fizz", 0.5F, 2.6F + (world.rand.nextFloat() - world.rand.nextFloat()) * 0.8F); - float f = (float) 1.0F; - float f1 = f * 0.6F + 0.4F; - float f2 = f * f * 0.7F - 0.5F; - float f3 = f * f * 0.6F - 0.7F; - - for (int l = 0; l < 8; ++l) - { - world.spawnParticle("reddust", posX + Math.random() - Math.random(), posY + Math.random() - Math.random(), posZ + Math.random() - Math.random(), f1, f2, f3); - } - } - - if (!player.capabilities.isCreativeMode) - { - for (int i = 0; i < damage; i++) - { - player.setHealth((player.getHealth() - 1)); - //player.setEntityHealth(player.func_110143_aJ() - 1); - } - } - - if (player.getHealth() <= 0) - { - player.inventory.dropAllItems(); - } - } - -// public int getMaxEssence() -// { -// return this.maxEssence; -// } -// -// public int getOrbLevel() -// { -// return orbLevel; -// } -// -// @Override -// public void onArmourUpdate(World world, EntityPlayer player, -// ItemStack thisItemStack) { -// // TODO Auto-generated method stub -// -// } -// -// @Override -// public boolean isUpgrade() -// { -// // TODO Auto-generated method stub -// return false; -// } -// -// @Override -// public int getEnergyForTenSeconds() -// { -// // TODO Auto-generated method stub -// return 0; -// } - - @Override - public ItemStack getContainerItem(ItemStack itemStack) - { - //if(!syphonBatteries(itemStack, null, 10)) - { - //syphonWhileInContainer(itemStack, this.getEnergyUsed()); -// ItemStack copiedStack = itemStack.copy(); -// copiedStack.setItemDamage(copiedStack.getItemDamage()); -// copiedStack.stackSize = 1; -// return copiedStack; - } - return itemStack; - } - - @Override - public boolean hasContainerItem() - { - return true; - } - - //@SideOnly(Side.SERVER) - public int getCurrentEssence(ItemStack par1ItemStack) - { - if (par1ItemStack == null) - { - return 0; - } - - NBTTagCompound itemTag = par1ItemStack.stackTagCompound; - - if (itemTag == null || itemTag.getString("ownerName").equals("")) - { - return 0; - } - - String owner = itemTag.getString("ownerName"); - World worldSave = MinecraftServer.getServer().worldServers[0]; - LifeEssenceNetwork data = (LifeEssenceNetwork) worldSave.loadItemData(LifeEssenceNetwork.class, owner); - - if (data == null) - { - data = new LifeEssenceNetwork(owner); - worldSave.setItemData(owner, data); - } - - int currentEssence = data.currentEssence; - return (currentEssence); - } - - @Override - public boolean doesContainerItemLeaveCraftingGrid(ItemStack itemStack) - { - return false; - } -} diff --git a/src-backup/main/java/WayofTime/alchemicalWizardry/common/items/DaggerOfSacrifice.java b/src-backup/main/java/WayofTime/alchemicalWizardry/common/items/DaggerOfSacrifice.java deleted file mode 100644 index a2569610..00000000 --- a/src-backup/main/java/WayofTime/alchemicalWizardry/common/items/DaggerOfSacrifice.java +++ /dev/null @@ -1,268 +0,0 @@ -package WayofTime.alchemicalWizardry.common.items; - -import java.util.List; - -import net.minecraft.block.Block; -import net.minecraft.block.material.Material; -import net.minecraft.client.renderer.texture.IIconRegister; -import net.minecraft.entity.EntityLivingBase; -import net.minecraft.entity.SharedMonsterAttributes; -import net.minecraft.entity.ai.attributes.AttributeModifier; -import net.minecraft.entity.boss.EntityDragon; -import net.minecraft.entity.boss.EntityWither; -import net.minecraft.entity.boss.IBossDisplayData; -import net.minecraft.entity.monster.EntityEnderman; -import net.minecraft.entity.monster.EntitySlime; -import net.minecraft.entity.passive.EntityAnimal; -import net.minecraft.entity.passive.EntityVillager; -import net.minecraft.entity.player.EntityPlayer; -import net.minecraft.entity.player.EntityPlayerMP; -import net.minecraft.init.Blocks; -import net.minecraft.item.ItemStack; -import net.minecraft.tileentity.TileEntity; -import net.minecraft.util.DamageSource; -import net.minecraft.world.World; -import WayofTime.alchemicalWizardry.AlchemicalWizardry; -import WayofTime.alchemicalWizardry.common.spell.complex.effect.SpellHelper; -import WayofTime.alchemicalWizardry.common.tileEntity.TEAltar; - -import com.google.common.collect.Multimap; - -import cpw.mods.fml.relauncher.Side; -import cpw.mods.fml.relauncher.SideOnly; - -public class DaggerOfSacrifice extends EnergyItems -{ - private float weaponDamage; - - public DaggerOfSacrifice() - { - super(); - this.maxStackSize = 1; - setCreativeTab(AlchemicalWizardry.tabBloodMagic); - setEnergyUsed(100); - setFull3D(); - setMaxDamage(100); - weaponDamage = 1.0F; - } - - @Override - @SideOnly(Side.CLIENT) - public void registerIcons(IIconRegister iconRegister) - { - this.itemIcon = iconRegister.registerIcon("AlchemicalWizardry:DaggerOfSacrifice"); - } - - @Override - public boolean hitEntity(ItemStack par1ItemStack, EntityLivingBase par2EntityLivingBase, EntityLivingBase par3EntityLivingBase) - { - if (par3EntityLivingBase == null || par2EntityLivingBase == null || par3EntityLivingBase.worldObj.isRemote || (par3EntityLivingBase instanceof EntityPlayer && SpellHelper.isFakePlayer(par3EntityLivingBase.worldObj, (EntityPlayer) par3EntityLivingBase))) - { - return false; - } - - //EntityWither d; - if (par2EntityLivingBase.isChild() || par2EntityLivingBase instanceof EntityWither || par2EntityLivingBase instanceof EntityDragon || par2EntityLivingBase instanceof EntityPlayer || par2EntityLivingBase instanceof IBossDisplayData) - { - return false; - } - - World world = par2EntityLivingBase.worldObj; - - if (par2EntityLivingBase.isDead || par2EntityLivingBase.getHealth() < 0.5f) - { - return false; - } - - if (par2EntityLivingBase instanceof EntityVillager && !par2EntityLivingBase.isChild()) - { - if (findAndFillAltar(par2EntityLivingBase.worldObj, par2EntityLivingBase, 2000)) - { - double posX = par2EntityLivingBase.posX; - double posY = par2EntityLivingBase.posY; - double posZ = par2EntityLivingBase.posZ; - - - - for (int i = 0; i < 8; i++) - { - SpellHelper.sendIndexedParticleToAllAround(world, posX, posY, posZ, 20, world.provider.dimensionId, 1, posX, posY, posZ); - } - - par2EntityLivingBase.setHealth(-1); - par2EntityLivingBase.onDeath(DamageSource.generic); - return false; - } - } - - if (par2EntityLivingBase instanceof EntitySlime && !par2EntityLivingBase.isChild()) - { - if (findAndFillAltar(par2EntityLivingBase.worldObj, par2EntityLivingBase, 150)) - { - double posX = par2EntityLivingBase.posX; - double posY = par2EntityLivingBase.posY; - double posZ = par2EntityLivingBase.posZ; - - for (int i = 0; i < 8; i++) - { - SpellHelper.sendIndexedParticleToAllAround(world, posX, posY, posZ, 20, world.provider.dimensionId, 1, posX, posY, posZ); - } - - par2EntityLivingBase.setHealth(-1); - par2EntityLivingBase.onDeath(DamageSource.generic); - return false; - } - } - - if (par2EntityLivingBase instanceof EntityEnderman && !par2EntityLivingBase.isChild()) - { - if (findAndFillAltar(par2EntityLivingBase.worldObj, par2EntityLivingBase, 200)) - { - double posX = par2EntityLivingBase.posX; - double posY = par2EntityLivingBase.posY; - double posZ = par2EntityLivingBase.posZ; - - for (int i = 0; i < 8; i++) - { - SpellHelper.sendIndexedParticleToAllAround(world, posX, posY, posZ, 20, world.provider.dimensionId, 1, posX, posY, posZ); - } - - par2EntityLivingBase.setHealth(-1); - par2EntityLivingBase.onDeath(DamageSource.generic); - return false; - } - } - - if (par2EntityLivingBase instanceof EntityAnimal && !par2EntityLivingBase.isChild()) - { - if (findAndFillAltar(par2EntityLivingBase.worldObj, par2EntityLivingBase, 250)) - { - double posX = par2EntityLivingBase.posX; - double posY = par2EntityLivingBase.posY; - double posZ = par2EntityLivingBase.posZ; - - for (int i = 0; i < 8; i++) - { - SpellHelper.sendIndexedParticleToAllAround(world, posX, posY, posZ, 20, world.provider.dimensionId, 1, posX, posY, posZ); - } - - par2EntityLivingBase.setHealth(-1); - par2EntityLivingBase.onDeath(DamageSource.generic); - return false; - } - } - - if (findAndFillAltar(par2EntityLivingBase.worldObj, par2EntityLivingBase, 500)) - { - double posX = par2EntityLivingBase.posX; - double posY = par2EntityLivingBase.posY; - double posZ = par2EntityLivingBase.posZ; - - for (int i = 0; i < 8; i++) - { - SpellHelper.sendIndexedParticleToAllAround(world, posX, posY, posZ, 20, world.provider.dimensionId, 1, posX, posY, posZ); - } - - par2EntityLivingBase.setHealth(-1); - par2EntityLivingBase.onDeath(DamageSource.generic); - return false; - } - - return false; - } - - public float func_82803_g() - { - return 4.0F; - } - - @Override - public void addInformation(ItemStack par1ItemStack, EntityPlayer par2EntityPlayer, List par3List, boolean par4) - { - par3List.add("Caution: may cause"); - par3List.add("a bad day..."); - } - - @Override - public float func_150893_a(ItemStack par1ItemStack, Block par2Block) - { - if (par2Block == Blocks.web) - { - return 15.0F; - } else - { - Material material = par2Block.getMaterial(); - return material != Material.plants && material != Material.vine && material != Material.coral && material != Material.leaves && material != Material.gourd ? 1.0F : 1.5F; - } - } - - @Override - public boolean getIsRepairable(ItemStack par1ItemStack, ItemStack par2ItemStack) - { - return false; - } - - @Override - - public Multimap getItemAttributeModifiers() - { - Multimap multimap = super.getItemAttributeModifiers(); - multimap.put(SharedMonsterAttributes.attackDamage.getAttributeUnlocalizedName(), new AttributeModifier(field_111210_e, "Tool modifier", 1.0d, 0)); - return multimap; - } - - public boolean findAndFillAltar(World world, EntityLivingBase sacrifice, int amount) - { - int posX = (int) Math.round(sacrifice.posX - 0.5f); - int posY = (int) sacrifice.posY; - int posZ = (int) Math.round(sacrifice.posZ - 0.5f); - TEAltar altarEntity = this.getAltar(world, posX, posY, posZ); - - if (altarEntity == null) - { - return false; - } - - altarEntity.sacrificialDaggerCall(amount, true); - altarEntity.startCycle(); - return true; - } - - public TEAltar getAltar(World world, int x, int y, int z) - { - TileEntity tileEntity = null; - - for (int i = -2; i <= 2; i++) - { - for (int j = -2; j <= 2; j++) - { - for (int k = -2; k <= 1; k++) - { - tileEntity = world.getTileEntity(i + x, k + y, j + z); - - if ((tileEntity instanceof TEAltar)) - { - return (TEAltar) tileEntity; - } - } - - if ((tileEntity instanceof TEAltar)) - { - return (TEAltar) tileEntity; - } - } - - if ((tileEntity instanceof TEAltar)) - { - return (TEAltar) tileEntity; - } - } - - if ((tileEntity instanceof TEAltar)) - { - return (TEAltar) tileEntity; - } - - return null; - } -} diff --git a/src-backup/main/java/WayofTime/alchemicalWizardry/common/items/DemonPlacer.java b/src-backup/main/java/WayofTime/alchemicalWizardry/common/items/DemonPlacer.java deleted file mode 100644 index 6708cd74..00000000 --- a/src-backup/main/java/WayofTime/alchemicalWizardry/common/items/DemonPlacer.java +++ /dev/null @@ -1,277 +0,0 @@ -package WayofTime.alchemicalWizardry.common.items; - -import java.util.List; - -import net.minecraft.block.Block; -import net.minecraft.block.material.Material; -import net.minecraft.client.renderer.texture.IIconRegister; -import net.minecraft.creativetab.CreativeTabs; -import net.minecraft.entity.Entity; -import net.minecraft.entity.EntityList; -import net.minecraft.entity.EntityList.EntityEggInfo; -import net.minecraft.entity.EntityLiving; -import net.minecraft.entity.EntityLivingBase; -import net.minecraft.entity.player.EntityPlayer; -import net.minecraft.item.Item; -import net.minecraft.item.ItemStack; -import net.minecraft.nbt.NBTTagCompound; -import net.minecraft.util.Facing; -import net.minecraft.util.IIcon; -import net.minecraft.util.MathHelper; -import net.minecraft.util.MovingObjectPosition; -import net.minecraft.world.World; -import WayofTime.alchemicalWizardry.api.summoningRegistry.SummoningRegistry; -import WayofTime.alchemicalWizardry.common.entity.mob.EntityDemon; -import cpw.mods.fml.relauncher.Side; -import cpw.mods.fml.relauncher.SideOnly; - -public class DemonPlacer extends Item -{ - @SideOnly(Side.CLIENT) - private IIcon theIcon; - - public DemonPlacer() - { - super(); - this.setHasSubtypes(true); - this.setCreativeTab(CreativeTabs.tabMisc); - this.maxStackSize = 1; - } - - public String getItemDisplayName(ItemStack par1ItemStack) - { -// String s = ("" + StatCollector.translateToLocal(this.getUnlocalizedName() + ".name")).trim(); -// String s1 = EntityList.getStringFromID(par1ItemStack.getItemDamage()); -// -// if (s1 != null) -// { -// s = s + " " + StatCollector.translateToLocal("entity." + s1 + ".name"); -// } -// -// return s; - return "Demon Crystal"; - } - - @SideOnly(Side.CLIENT) - public int getColorFromItemStack(ItemStack par1ItemStack, int par2) - { - EntityEggInfo entityegginfo = (EntityEggInfo) EntityList.entityEggs.get(Integer.valueOf(par1ItemStack.getItemDamage())); - return entityegginfo != null ? (par2 == 0 ? entityegginfo.primaryColor : entityegginfo.secondaryColor) : 16777215; - } - - /** - * Callback for item usage. If the item does something special on right clicking, he will have one of those. Return - * True if something happen and false if it don't. This is for ITEMS, not BLOCKS - */ - 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) - { - return true; - } else - { - Block i1 = par3World.getBlock(par4, par5, par6); - par4 += Facing.offsetsXForSide[par7]; - par5 += Facing.offsetsYForSide[par7]; - par6 += Facing.offsetsZForSide[par7]; - double d0 = 0.0D; - - if (par7 == 1 && i1 != null && i1.getRenderType() == 11) - { - d0 = 0.5D; - } - - Entity entity = spawnCreature(par3World, par1ItemStack.getItemDamage(), (double) par4 + 0.5D, (double) par5 + d0, (double) par6 + 0.5D, par1ItemStack); - - if (entity != null) - { - if (entity instanceof EntityLivingBase && par1ItemStack.hasDisplayName()) - { - ((EntityLiving) entity).setCustomNameTag(par1ItemStack.getDisplayName()); - } - - if (!par2EntityPlayer.capabilities.isCreativeMode) - { - --par1ItemStack.stackSize; - } - } - - return true; - } - } - - /** - * Called whenever this item is equipped and the right mouse button is pressed. Args: itemStack, world, entityPlayer - */ - public ItemStack onItemRightClick(ItemStack par1ItemStack, World par2World, EntityPlayer par3EntityPlayer) - { - if (par2World.isRemote) - { - return par1ItemStack; - } else - { - MovingObjectPosition movingobjectposition = this.getMovingObjectPositionFromPlayer(par2World, par3EntityPlayer, true); - - if (movingobjectposition == null) - { - return par1ItemStack; - } else - { - if (movingobjectposition.typeOfHit == MovingObjectPosition.MovingObjectType.BLOCK) - { - int i = movingobjectposition.blockX; - int j = movingobjectposition.blockY; - int k = movingobjectposition.blockZ; - - if (!par2World.canMineBlock(par3EntityPlayer, i, j, k)) - { - return par1ItemStack; - } - - if (!par3EntityPlayer.canPlayerEdit(i, j, k, movingobjectposition.sideHit, par1ItemStack)) - { - return par1ItemStack; - } - - if (par2World.getBlock(i, j, k).getMaterial() == Material.water) - { - Entity entity = spawnCreature(par2World, par1ItemStack.getItemDamage(), (double) i, (double) j, (double) k, par1ItemStack); - - if (entity != null) - { - if (entity instanceof EntityLivingBase && par1ItemStack.hasDisplayName()) - { - ((EntityLiving) entity).setCustomNameTag(par1ItemStack.getDisplayName()); - } - - if (!par3EntityPlayer.capabilities.isCreativeMode) - { - --par1ItemStack.stackSize; - } - } - } - } - - return par1ItemStack; - } - } - } - - /** - * Spawns the creature specified by the egg's type in the location specified by the last three parameters. - * Parameters: world, entityID, x, y, z. - */ - public static Entity spawnCreature(World par0World, int par1, double par2, double par4, double par6, ItemStack itemStack) - { -// if (!EntityList.entityEggs.containsKey(Integer.valueOf(par1))) -// { -// return null; -// } -// else - { - Entity entity = null; - - for (int j = 0; j < 1; ++j) - { - entity = SummoningRegistry.getEntityWithID(par0World, par1); - - if (entity != null && entity instanceof EntityLivingBase) - { - EntityLiving entityliving = (EntityLiving) entity; - entity.setLocationAndAngles(par2, par4, par6, MathHelper.wrapAngleTo180_float(par0World.rand.nextFloat() * 360.0F), 0.0F); - entityliving.rotationYawHead = entityliving.rotationYaw; - entityliving.renderYawOffset = entityliving.rotationYaw; - - //entityliving.onSpawnWithEgg((EntityLivingData)null); - if (entityliving instanceof EntityDemon) - { - ((EntityDemon) entityliving).func_152115_b(DemonPlacer.getOwnerName(itemStack)); - - if (!DemonPlacer.getOwnerName(itemStack).equals("")) - { - ((EntityDemon) entityliving).setTamed(true); - } - } - - par0World.spawnEntityInWorld(entity); - entityliving.playLivingSound(); - } - } - - return entity; - } - } - -// @SideOnly(Side.CLIENT) -// public boolean requiresMultipleRenderPasses() -// { -// return true; -// } - -// @SideOnly(Side.CLIENT) -// -// /** -// * Gets an icon index based on an item's damage value and the given render pass -// */ -// public Icon getIconFromDamageForRenderPass(int par1, int par2) -// { -// return par2 > 0 ? this.theIcon : super.getIconFromDamageForRenderPass(par1, par2); -// } - -// @SideOnly(Side.CLIENT) -// -// /** -// * returns a list of items with the same ID, but different meta (eg: dye returns 16 items) -// */ -// public void getSubItems(int par1, CreativeTabs par2CreativeTabs, List par3List) -// { -// Iterator iterator = EntityList.entityEggs.values().iterator(); -// -// while (iterator.hasNext()) -// { -// EntityEggInfo entityegginfo = (EntityEggInfo)iterator.next(); -// par3List.add(new ItemStack(par1, 1, entityegginfo.spawnedID)); -// } -// } - - public static void setOwnerName(ItemStack par1ItemStack, String ownerName) - { - if (par1ItemStack.stackTagCompound == null) - { - par1ItemStack.setTagCompound(new NBTTagCompound()); - } - - par1ItemStack.stackTagCompound.setString("ownerName", ownerName); - } - - public static String getOwnerName(ItemStack par1ItemStack) - { - if (par1ItemStack.stackTagCompound == null) - { - par1ItemStack.setTagCompound(new NBTTagCompound()); - } - - return par1ItemStack.stackTagCompound.getString("ownerName"); - } - - @Override - public void addInformation(ItemStack par1ItemStack, EntityPlayer par2EntityPlayer, List par3List, boolean par4) - { - par3List.add("Used to spawn demons."); - - if (!(par1ItemStack.stackTagCompound == null)) - { - if (!par1ItemStack.stackTagCompound.getString("ownerName").equals("")) - { - par3List.add("Demon's Owner: " + par1ItemStack.stackTagCompound.getString("ownerName")); - } - } - } - - @Override - @SideOnly(Side.CLIENT) - public void registerIcons(IIconRegister iconRegister) - { - this.itemIcon = iconRegister.registerIcon("AlchemicalWizardry:DemonPlacer"); - } -} diff --git a/src-backup/main/java/WayofTime/alchemicalWizardry/common/items/DemonicTelepositionFocus.java b/src-backup/main/java/WayofTime/alchemicalWizardry/common/items/DemonicTelepositionFocus.java deleted file mode 100644 index d26de12d..00000000 --- a/src-backup/main/java/WayofTime/alchemicalWizardry/common/items/DemonicTelepositionFocus.java +++ /dev/null @@ -1,47 +0,0 @@ -package WayofTime.alchemicalWizardry.common.items; - -import java.util.List; - -import net.minecraft.client.renderer.texture.IIconRegister; -import net.minecraft.entity.player.EntityPlayer; -import net.minecraft.item.ItemStack; -import net.minecraft.nbt.NBTTagCompound; -import cpw.mods.fml.relauncher.Side; -import cpw.mods.fml.relauncher.SideOnly; - -public class DemonicTelepositionFocus extends TelepositionFocus -{ - public DemonicTelepositionFocus() - { - super(4); - // TODO Auto-generated constructor stub - } - - @Override - @SideOnly(Side.CLIENT) - public void registerIcons(IIconRegister iconRegister) - { - //TODO - this.itemIcon = iconRegister.registerIcon("AlchemicalWizardry:DemonicTeleposerFocus"); - } - - @Override - public void addInformation(ItemStack par1ItemStack, EntityPlayer par2EntityPlayer, List par3List, boolean par4) - { - par3List.add("A stronger version of the focus,"); - par3List.add("using a demonic shard"); - - if (!(par1ItemStack.stackTagCompound == null)) - { - NBTTagCompound itemTag = par1ItemStack.stackTagCompound; - - if (!par1ItemStack.stackTagCompound.getString("ownerName").equals("")) - { - par3List.add("Current owner: " + par1ItemStack.stackTagCompound.getString("ownerName")); - } - - par3List.add("Coords: " + itemTag.getInteger("xCoord") + ", " + itemTag.getInteger("yCoord") + ", " + itemTag.getInteger("zCoord")); - par3List.add("Bound Dimension: " + getDimensionID(par1ItemStack)); - } - } -} diff --git a/src-backup/main/java/WayofTime/alchemicalWizardry/common/items/DuskScribeTool.java b/src-backup/main/java/WayofTime/alchemicalWizardry/common/items/DuskScribeTool.java deleted file mode 100644 index ddbdbfe9..00000000 --- a/src-backup/main/java/WayofTime/alchemicalWizardry/common/items/DuskScribeTool.java +++ /dev/null @@ -1,20 +0,0 @@ -package WayofTime.alchemicalWizardry.common.items; - -import net.minecraft.client.renderer.texture.IIconRegister; -import cpw.mods.fml.relauncher.Side; -import cpw.mods.fml.relauncher.SideOnly; - -public class DuskScribeTool extends ScribeTool -{ - public DuskScribeTool() - { - super(5); - } - - @Override - @SideOnly(Side.CLIENT) - public void registerIcons(IIconRegister iconRegister) - { - this.itemIcon = iconRegister.registerIcon("AlchemicalWizardry:DuskScribeTool"); - } -} \ No newline at end of file diff --git a/src-backup/main/java/WayofTime/alchemicalWizardry/common/items/EarthScribeTool.java b/src-backup/main/java/WayofTime/alchemicalWizardry/common/items/EarthScribeTool.java deleted file mode 100644 index 290c6f91..00000000 --- a/src-backup/main/java/WayofTime/alchemicalWizardry/common/items/EarthScribeTool.java +++ /dev/null @@ -1,20 +0,0 @@ -package WayofTime.alchemicalWizardry.common.items; - -import net.minecraft.client.renderer.texture.IIconRegister; -import cpw.mods.fml.relauncher.Side; -import cpw.mods.fml.relauncher.SideOnly; - -public class EarthScribeTool extends ScribeTool -{ - public EarthScribeTool() - { - super(3); - } - - @Override - @SideOnly(Side.CLIENT) - public void registerIcons(IIconRegister iconRegister) - { - this.itemIcon = iconRegister.registerIcon("AlchemicalWizardry:EarthScribeTool"); - } -} \ No newline at end of file diff --git a/src-backup/main/java/WayofTime/alchemicalWizardry/common/items/EnergyBattery.java b/src-backup/main/java/WayofTime/alchemicalWizardry/common/items/EnergyBattery.java deleted file mode 100644 index e935437e..00000000 --- a/src-backup/main/java/WayofTime/alchemicalWizardry/common/items/EnergyBattery.java +++ /dev/null @@ -1,252 +0,0 @@ -package WayofTime.alchemicalWizardry.common.items; - -import java.util.List; - -import net.minecraft.client.renderer.texture.IIconRegister; -import net.minecraft.entity.player.EntityPlayer; -import net.minecraft.item.Item; -import net.minecraft.item.ItemStack; -import net.minecraft.nbt.NBTTagCompound; -import net.minecraft.server.MinecraftServer; -import net.minecraft.util.DamageSource; -import net.minecraft.world.World; -import WayofTime.alchemicalWizardry.AlchemicalWizardry; -import WayofTime.alchemicalWizardry.api.items.interfaces.ArmourUpgrade; -import WayofTime.alchemicalWizardry.api.items.interfaces.IBindable; -import WayofTime.alchemicalWizardry.api.items.interfaces.IBloodOrb; -import WayofTime.alchemicalWizardry.api.soulNetwork.LifeEssenceNetwork; -import WayofTime.alchemicalWizardry.common.spell.complex.effect.SpellHelper; -import cpw.mods.fml.relauncher.Side; -import cpw.mods.fml.relauncher.SideOnly; - -public class EnergyBattery extends Item implements ArmourUpgrade, IBindable, IBloodOrb -{ - private int maxEssence; - protected int orbLevel; - - public EnergyBattery(int damage) - { - super(); - DamageSource damageSource = DamageSource.generic; - setMaxStackSize(1); - //setMaxDamage(damage); - setCreativeTab(AlchemicalWizardry.tabBloodMagic); - //setFull3D(); - maxEssence = damage; - orbLevel = 1; - } - - @Override - @SideOnly(Side.CLIENT) - public void registerIcons(IIconRegister iconRegister) - { - this.itemIcon = iconRegister.registerIcon("AlchemicalWizardry:EnergyBattery"); - } - - @Override - public void addInformation(ItemStack par1ItemStack, EntityPlayer par2EntityPlayer, List par3List, boolean par4) - { - par3List.add("Stores raw Life Essence"); - - //par3List.add("LP: " + (this.getMaxDamage() - this.getDamage(par1ItemStack))); - if (!(par1ItemStack.stackTagCompound == null)) - { - par3List.add("Current owner: " + par1ItemStack.stackTagCompound.getString("ownerName")); -// EntityPlayer owner = MinecraftServer.getServer().getConfigurationManager().getPlayerForUsername(par1ItemStack.stackTagCompound.getString("ownerName")); -// if(owner!=null) -// { -// NBTTagCompound tag = owner.getEntityData(); -// par3List.add("LP: " + tag.getInteger("currentEssence")); -// } - } - - //par3List.add("LP: " + par2EntityPlayer.getEntityData().getInteger("currentEssence")); - } - - public ItemStack onItemRightClick(ItemStack par1ItemStack, World par2World, EntityPlayer par3EntityPlayer) - { - EnergyItems.checkAndSetItemOwner(par1ItemStack, par3EntityPlayer); - World world = par3EntityPlayer.worldObj; - -// if (par3EntityPlayer instanceof FakePlayer || par3EntityPlayer instanceof EntityPlayerMP) -// { -// return par1ItemStack; -// } - - if (world != null) - { - double posX = par3EntityPlayer.posX; - double posY = par3EntityPlayer.posY; - double posZ = par3EntityPlayer.posZ; - world.playSoundEffect((double) ((float) posX + 0.5F), (double) ((float) posY + 0.5F), (double) ((float) posZ + 0.5F), "random.fizz", 0.5F, 2.6F + (world.rand.nextFloat() - world.rand.nextFloat()) * 0.8F); - SpellHelper.sendIndexedParticleToAllAround(world, posX, posY, posZ, 20, world.provider.dimensionId, 4, posX, posY, posZ); - } - -// if (!(par3EntityPlayer.getClass().equals(EntityPlayerMP.class))) -// { -// return par1ItemStack; -// } - - - -// if (Keyboard.isKeyDown(Keyboard.KEY_RSHIFT) || Keyboard.isKeyDown(Keyboard.KEY_LSHIFT)) -// { -// return par1ItemStack; -// } - NBTTagCompound itemTag = par1ItemStack.stackTagCompound; - - if (itemTag == null || itemTag.getString("ownerName").equals("")) - { - return par1ItemStack; - } - - if(world.isRemote) - { - return par1ItemStack; - } - - EnergyItems.addEssenceToMaximum(itemTag.getString("ownerName"), 200, this.getMaxEssence()); - EnergyItems.hurtPlayer(par3EntityPlayer, 200); - //PacketDispatcher.sendPacketToPlayer(PacketHandler.getPacket(itemTag.getString("ownerName")), (Player)par3EntityPlayer); -// EntityPlayer owner = MinecraftServer.getServer().getConfigurationManager().getPlayerForUsername(itemTag.getString("ownerName")); -// if(owner==null){return par1ItemStack;} -// NBTTagCompound ownerTag = owner.getEntityData(); -// if(ownerTag.getInteger("currentEssence")<=this.maxEssence) -// { -// damagePlayer(par2World, par3EntityPlayer,2); -// ownerTag.setInteger("currentEssence", Math.min(this.maxEssence, ownerTag.getInteger("currentEssence")+200/2)); -// } - return par1ItemStack; - } - - /* - * @return the damage that was not deducted - */ - public int damageItem(ItemStack par1ItemStack, int par2int) - { - if (par2int == 0) - { - return 0; - } - - int before = this.getDamage(par1ItemStack); - this.setDamage(par1ItemStack, this.getDamage(par1ItemStack) + par2int); - return par2int - (this.getDamage(par1ItemStack) - before); - } - - protected void damagePlayer(World world, EntityPlayer player, int damage) - { - if (world != null) - { - double posX = player.posX; - double posY = player.posY; - double posZ = player.posZ; - world.playSoundEffect((double) ((float) posX + 0.5F), (double) ((float) posY + 0.5F), (double) ((float) posZ + 0.5F), "random.fizz", 0.5F, 2.6F + (world.rand.nextFloat() - world.rand.nextFloat()) * 0.8F); - float f = (float) 1.0F; - float f1 = f * 0.6F + 0.4F; - float f2 = f * f * 0.7F - 0.5F; - float f3 = f * f * 0.6F - 0.7F; - - for (int l = 0; l < 8; ++l) - { - world.spawnParticle("reddust", posX + Math.random() - Math.random(), posY + Math.random() - Math.random(), posZ + Math.random() - Math.random(), f1, f2, f3); - } - } - - if (!player.capabilities.isCreativeMode) - { - for (int i = 0; i < damage; i++) - { - player.setHealth((player.getHealth() - 1)); - //player.setEntityHealth(player.func_110143_aJ() - 1); - } - } - - if (player.getHealth() <= 0) - { - player.inventory.dropAllItems(); - } - } - - public int getMaxEssence() - { - return this.maxEssence; - } - - public int getOrbLevel() - { - return orbLevel; - } - - @Override - public void onArmourUpdate(World world, EntityPlayer player, ItemStack thisItemStack) - { - } - - @Override - public boolean isUpgrade() - { - return false; - } - - @Override - public int getEnergyForTenSeconds() - { - return 0; - } - - @Override - public ItemStack getContainerItem(ItemStack itemStack) - { - //if(!syphonBatteries(itemStack, null, 10)) - { - //syphonWhileInContainer(itemStack, this.getEnergyUsed()); -// ItemStack copiedStack = itemStack.copy(); -// copiedStack.setItemDamage(copiedStack.getItemDamage()); -// copiedStack.stackSize = 1; -// return copiedStack; - } - return itemStack; - } - - @Override - public boolean hasContainerItem() - { - return true; - } - - //@SideOnly(Side.SERVER) - public int getCurrentEssence(ItemStack par1ItemStack) - { - if (par1ItemStack == null) - { - return 0; - } - - NBTTagCompound itemTag = par1ItemStack.stackTagCompound; - - if (itemTag == null || itemTag.getString("ownerName").equals("")) - { - return 0; - } - - String owner = itemTag.getString("ownerName"); - World worldSave = MinecraftServer.getServer().worldServers[0]; - LifeEssenceNetwork data = (LifeEssenceNetwork) worldSave.loadItemData(LifeEssenceNetwork.class, owner); - - if (data == null) - { - data = new LifeEssenceNetwork(owner); - worldSave.setItemData(owner, data); - } - - int currentEssence = data.currentEssence; - return (currentEssence); - } - - @Override - public boolean doesContainerItemLeaveCraftingGrid(ItemStack itemStack) - { - return false; - } -} diff --git a/src-backup/main/java/WayofTime/alchemicalWizardry/common/items/EnergyBazooka.java b/src-backup/main/java/WayofTime/alchemicalWizardry/common/items/EnergyBazooka.java deleted file mode 100644 index be0eddc2..00000000 --- a/src-backup/main/java/WayofTime/alchemicalWizardry/common/items/EnergyBazooka.java +++ /dev/null @@ -1,219 +0,0 @@ -package WayofTime.alchemicalWizardry.common.items; - -import java.util.List; - -import net.minecraft.client.renderer.texture.IIconRegister; -import net.minecraft.entity.Entity; -import net.minecraft.entity.player.EntityPlayer; -import net.minecraft.item.ItemStack; -import net.minecraft.nbt.NBTTagCompound; -import net.minecraft.util.IIcon; -import net.minecraft.util.Vec3; -import net.minecraft.world.World; -import WayofTime.alchemicalWizardry.AlchemicalWizardry; -import WayofTime.alchemicalWizardry.common.entity.projectile.EntityEnergyBazookaMainProjectile; -import cpw.mods.fml.relauncher.Side; -import cpw.mods.fml.relauncher.SideOnly; - -public class EnergyBazooka extends EnergyItems -{ - private static IIcon activeIcon; - private static IIcon passiveIcon; - private static int damage; - //private static int delay; - private static final int maxDelay = 150; - - public EnergyBazooka() - { - super(); - setMaxStackSize(1); - setCreativeTab(AlchemicalWizardry.tabBloodMagic); - setFull3D(); - setMaxDamage(250); - this.setEnergyUsed(20000); - damage = 12; - //delay = 0; - } - - @Override - @SideOnly(Side.CLIENT) - public void registerIcons(IIconRegister iconRegister) - { - this.itemIcon = iconRegister.registerIcon("AlchemicalWizardry:EnergyBazooka_activated"); - this.activeIcon = iconRegister.registerIcon("AlchemicalWizardry:EnergyBazooka_activated"); - this.passiveIcon = iconRegister.registerIcon("AlchemicalWizardry:SheathedItem"); - } - - @Override - public IIcon getIcon(ItemStack stack, int renderPass, EntityPlayer player, ItemStack usingItem, int useRemaining) - { - if (stack.stackTagCompound == null) - { - stack.setTagCompound(new NBTTagCompound()); - } - - NBTTagCompound tag = stack.stackTagCompound; - - if (tag.getBoolean("isActive")) - { - return this.activeIcon; - } else - { - return this.passiveIcon; - } - } - - @Override - public ItemStack onItemRightClick(ItemStack par1ItemStack, World par2World, EntityPlayer par3EntityPlayer) - { - EnergyItems.checkAndSetItemOwner(par1ItemStack, par3EntityPlayer); - - if (par3EntityPlayer.isSneaking()) - { - this.setActivated(par1ItemStack, !getActivated(par1ItemStack)); - par1ItemStack.stackTagCompound.setInteger("worldTimeDelay", (int) (par2World.getWorldTime() - 1) % 100); - return par1ItemStack; - } - - if (!getActivated(par1ItemStack)) - { - return par1ItemStack; - } - - if (this.getDelay(par1ItemStack) > 0) - { - return par1ItemStack; - } - - if (!par3EntityPlayer.capabilities.isCreativeMode) - { - this.syphonBatteries(par1ItemStack, par3EntityPlayer, this.getEnergyUsed()); - } - - par2World.playSoundAtEntity(par3EntityPlayer, "random.bow", 0.5F, 0.4F / (itemRand.nextFloat() * 0.4F + 0.8F)); - - if (!par2World.isRemote) - { - //par2World.spawnEntityInWorld(new EntityEnergyBazookaMainProjectile(par2World, par3EntityPlayer, damage)); - par2World.spawnEntityInWorld(new EntityEnergyBazookaMainProjectile(par2World, par3EntityPlayer, damage)); - this.setDelay(par1ItemStack, maxDelay); - } - - Vec3 vec = par3EntityPlayer.getLookVec(); - double wantedVelocity = 3.0f; - par3EntityPlayer.motionX = -vec.xCoord * wantedVelocity; - par3EntityPlayer.motionY = -vec.yCoord * wantedVelocity; - par3EntityPlayer.motionZ = -vec.zCoord * wantedVelocity; - par2World.playSoundEffect((double) ((float) par3EntityPlayer.posX + 0.5F), (double) ((float) par3EntityPlayer.posY + 0.5F), (double) ((float) par3EntityPlayer.posZ + 0.5F), "random.fizz", 0.5F, 2.6F + (par2World.rand.nextFloat() - par2World.rand.nextFloat()) * 0.8F); - par3EntityPlayer.fallDistance = 0; - return par1ItemStack; - } - - @Override - public void onUpdate(ItemStack par1ItemStack, World par2World, Entity par3Entity, int par4, boolean par5) - { - if (!(par3Entity instanceof EntityPlayer)) - { - return; - } - - EntityPlayer par3EntityPlayer = (EntityPlayer) par3Entity; - - if (par1ItemStack.stackTagCompound == null) - { - par1ItemStack.setTagCompound(new NBTTagCompound()); - } - -// if(par1ItemStack.stackTagCompound.getBoolean("isActive")) -// { -// EnergyItems.syphonBatteries(par1ItemStack, par3EntityPlayer, 1); -// } - int delay = this.getDelay(par1ItemStack); - - if (!par2World.isRemote && delay > 0) - { - this.setDelay(par1ItemStack, delay - 1); - } - - if (par2World.getWorldTime() % 100 == par1ItemStack.stackTagCompound.getInteger("worldTimeDelay") && par1ItemStack.stackTagCompound.getBoolean("isActive")) - { - if (!par3EntityPlayer.capabilities.isCreativeMode) - { - EnergyItems.syphonBatteries(par1ItemStack, par3EntityPlayer, 50); - } - } - - par1ItemStack.setItemDamage(0); - return; - } - - @Override - public void addInformation(ItemStack par1ItemStack, EntityPlayer par2EntityPlayer, List par3List, boolean par4) - { - par3List.add("Boom."); - - if (!(par1ItemStack.stackTagCompound == null)) - { - if (par1ItemStack.stackTagCompound.getBoolean("isActive")) - { - par3List.add("Activated"); - } else - { - par3List.add("Deactivated"); - } - - if (!par1ItemStack.stackTagCompound.getString("ownerName").equals("")) - { - par3List.add("Current owner: " + par1ItemStack.stackTagCompound.getString("ownerName")); - } - } - } - - public void setActivated(ItemStack par1ItemStack, boolean newActivated) - { - NBTTagCompound itemTag = par1ItemStack.stackTagCompound; - - if (itemTag == null) - { - par1ItemStack.setTagCompound(new NBTTagCompound()); - } - - itemTag.setBoolean("isActive", newActivated); - } - - public boolean getActivated(ItemStack par1ItemStack) - { - NBTTagCompound itemTag = par1ItemStack.stackTagCompound; - - if (itemTag == null) - { - par1ItemStack.setTagCompound(new NBTTagCompound()); - } - - return itemTag.getBoolean("isActive"); - } - - public void setDelay(ItemStack par1ItemStack, int newDelay) - { - NBTTagCompound itemTag = par1ItemStack.stackTagCompound; - - if (itemTag == null) - { - par1ItemStack.setTagCompound(new NBTTagCompound()); - } - - itemTag.setInteger("delay", newDelay); - } - - public int getDelay(ItemStack par1ItemStack) - { - NBTTagCompound itemTag = par1ItemStack.stackTagCompound; - - if (itemTag == null) - { - par1ItemStack.setTagCompound(new NBTTagCompound()); - } - - return itemTag.getInteger("delay"); - } -} diff --git a/src-backup/main/java/WayofTime/alchemicalWizardry/common/items/EnergyBlast.java b/src-backup/main/java/WayofTime/alchemicalWizardry/common/items/EnergyBlast.java deleted file mode 100644 index 298c950d..00000000 --- a/src-backup/main/java/WayofTime/alchemicalWizardry/common/items/EnergyBlast.java +++ /dev/null @@ -1,214 +0,0 @@ -package WayofTime.alchemicalWizardry.common.items; - -import java.util.List; - -import net.minecraft.client.renderer.texture.IIconRegister; -import net.minecraft.entity.Entity; -import net.minecraft.entity.player.EntityPlayer; -import net.minecraft.item.ItemStack; -import net.minecraft.nbt.NBTTagCompound; -import net.minecraft.util.IIcon; -import net.minecraft.world.World; -import WayofTime.alchemicalWizardry.AlchemicalWizardry; -import WayofTime.alchemicalWizardry.common.entity.projectile.EnergyBlastProjectile; -import cpw.mods.fml.relauncher.Side; -import cpw.mods.fml.relauncher.SideOnly; - -public class EnergyBlast extends EnergyItems -{ - private static IIcon activeIcon; - private static IIcon passiveIcon; - private static int damage; - //private static int delay; - private static final int maxDelay = 15; - - public EnergyBlast() - { - super(); - setMaxStackSize(1); - setCreativeTab(AlchemicalWizardry.tabBloodMagic); - setUnlocalizedName("energyBlaster"); - setFull3D(); - setMaxDamage(250); - this.setEnergyUsed(150); - damage = 12; - //delay = 0; - } - - @Override - @SideOnly(Side.CLIENT) - public void registerIcons(IIconRegister iconRegister) - { - this.itemIcon = iconRegister.registerIcon("AlchemicalWizardry:EnergyBlaster_activated"); - this.activeIcon = iconRegister.registerIcon("AlchemicalWizardry:EnergyBlaster_activated"); - this.passiveIcon = iconRegister.registerIcon("AlchemicalWizardry:SheathedItem"); - } - - @Override - public IIcon getIcon(ItemStack stack, int renderPass, EntityPlayer player, ItemStack usingItem, int useRemaining) - { - if (stack.stackTagCompound == null) - { - stack.setTagCompound(new NBTTagCompound()); - } - - NBTTagCompound tag = stack.stackTagCompound; - - if (tag.getBoolean("isActive")) - { - return this.activeIcon; - } else - { - return this.passiveIcon; - } - } - - @Override - public ItemStack onItemRightClick(ItemStack par1ItemStack, World par2World, EntityPlayer par3EntityPlayer) - { - EnergyItems.checkAndSetItemOwner(par1ItemStack, par3EntityPlayer); - - if (par3EntityPlayer.isSneaking()) - { - this.setActivated(par1ItemStack, !getActivated(par1ItemStack)); - par1ItemStack.stackTagCompound.setInteger("worldTimeDelay", (int) (par2World.getWorldTime() - 1) % 100); - return par1ItemStack; - } - - if (!getActivated(par1ItemStack)) - { - return par1ItemStack; - } - - if (this.getDelay(par1ItemStack) > 0) - { - return par1ItemStack; - } - - if (!par3EntityPlayer.capabilities.isCreativeMode) - { - this.syphonBatteries(par1ItemStack, par3EntityPlayer, this.getEnergyUsed()); - } - - par2World.playSoundAtEntity(par3EntityPlayer, "random.bow", 0.5F, 0.4F / (itemRand.nextFloat() * 0.4F + 0.8F)); - - if (!par2World.isRemote) - { - //par2World.spawnEntityInWorld(new EnergyBlastProjectile(par2World, par3EntityPlayer, damage)); - par2World.spawnEntityInWorld(new EnergyBlastProjectile(par2World, par3EntityPlayer, damage)); - this.setDelay(par1ItemStack, maxDelay); - } - - return par1ItemStack; - } - - @Override - public void onUpdate(ItemStack par1ItemStack, World par2World, Entity par3Entity, int par4, boolean par5) - { - if (!(par3Entity instanceof EntityPlayer)) - { - return; - } - - EntityPlayer par3EntityPlayer = (EntityPlayer) par3Entity; - - if (par1ItemStack.stackTagCompound == null) - { - par1ItemStack.setTagCompound(new NBTTagCompound()); - } - -// if(par1ItemStack.stackTagCompound.getBoolean("isActive")) -// { -// EnergyItems.syphonBatteries(par1ItemStack, par3EntityPlayer, 1); -// } - int delay = this.getDelay(par1ItemStack); - - if (!par2World.isRemote && delay > 0) - { - this.setDelay(par1ItemStack, delay - 1); - } - - if (par2World.getWorldTime() % 100 == par1ItemStack.stackTagCompound.getInteger("worldTimeDelay") && par1ItemStack.stackTagCompound.getBoolean("isActive")) - { - if (!par3EntityPlayer.capabilities.isCreativeMode) - { - EnergyItems.syphonBatteries(par1ItemStack, par3EntityPlayer, 50); - } - } - - par1ItemStack.setItemDamage(0); - return; - } - - @Override - public void addInformation(ItemStack par1ItemStack, EntityPlayer par2EntityPlayer, List par3List, boolean par4) - { - par3List.add("Used to fire devastating"); - par3List.add("projectiles."); - par3List.add("Damage: " + damage); - - if (!(par1ItemStack.stackTagCompound == null)) - { - if (par1ItemStack.stackTagCompound.getBoolean("isActive")) - { - par3List.add("Activated"); - } else - { - par3List.add("Deactivated"); - } - - if (!par1ItemStack.stackTagCompound.getString("ownerName").equals("")) - { - par3List.add("Current owner: " + par1ItemStack.stackTagCompound.getString("ownerName")); - } - } - } - - public void setActivated(ItemStack par1ItemStack, boolean newActivated) - { - NBTTagCompound itemTag = par1ItemStack.stackTagCompound; - - if (itemTag == null) - { - par1ItemStack.setTagCompound(new NBTTagCompound()); - } - - itemTag.setBoolean("isActive", newActivated); - } - - public boolean getActivated(ItemStack par1ItemStack) - { - NBTTagCompound itemTag = par1ItemStack.stackTagCompound; - - if (itemTag == null) - { - par1ItemStack.setTagCompound(new NBTTagCompound()); - } - - return itemTag.getBoolean("isActive"); - } - - public void setDelay(ItemStack par1ItemStack, int newDelay) - { - NBTTagCompound itemTag = par1ItemStack.stackTagCompound; - - if (itemTag == null) - { - par1ItemStack.setTagCompound(new NBTTagCompound()); - } - - itemTag.setInteger("delay", newDelay); - } - - public int getDelay(ItemStack par1ItemStack) - { - NBTTagCompound itemTag = par1ItemStack.stackTagCompound; - - if (itemTag == null) - { - par1ItemStack.setTagCompound(new NBTTagCompound()); - } - - return itemTag.getInteger("delay"); - } -} diff --git a/src-backup/main/java/WayofTime/alchemicalWizardry/common/items/EnergyItems.java b/src-backup/main/java/WayofTime/alchemicalWizardry/common/items/EnergyItems.java deleted file mode 100644 index 88b7ef89..00000000 --- a/src-backup/main/java/WayofTime/alchemicalWizardry/common/items/EnergyItems.java +++ /dev/null @@ -1,366 +0,0 @@ -package WayofTime.alchemicalWizardry.common.items; - -import net.minecraft.entity.player.EntityPlayer; -import net.minecraft.item.Item; -import net.minecraft.item.ItemStack; -import net.minecraft.nbt.NBTTagCompound; -import net.minecraft.server.MinecraftServer; -import net.minecraft.util.DamageSource; -import net.minecraft.world.World; -import WayofTime.alchemicalWizardry.AlchemicalWizardry; -import WayofTime.alchemicalWizardry.api.items.interfaces.IBindable; -import WayofTime.alchemicalWizardry.api.soulNetwork.LifeEssenceNetwork; -import WayofTime.alchemicalWizardry.api.soulNetwork.SoulNetworkHandler; -import WayofTime.alchemicalWizardry.common.spell.complex.effect.SpellHelper; - -public class EnergyItems extends Item implements IBindable -{ - private int energyUsed; - - public EnergyItems() - { - super(); - setCreativeTab(AlchemicalWizardry.tabBloodMagic); - } - - protected void setEnergyUsed(int par1int) - { - this.energyUsed = par1int; - } - - protected int getEnergyUsed() - { - return this.energyUsed; - } - //Heals the player using the item. If the player is at full health, or if the durability cannot be used any more, - //the item is not used. - - protected void damagePlayer(World world, EntityPlayer player, int damage) - { - if (world != null) - { - double posX = player.posX; - double posY = player.posY; - double posZ = player.posZ; - world.playSoundEffect((double) ((float) posX + 0.5F), (double) ((float) posY + 0.5F), (double) ((float) posZ + 0.5F), "random.fizz", 0.5F, 2.6F + (world.rand.nextFloat() - world.rand.nextFloat()) * 0.8F); - float f = (float) 1.0F; - float f1 = f * 0.6F + 0.4F; - float f2 = f * f * 0.7F - 0.5F; - float f3 = f * f * 0.6F - 0.7F; - - for (int l = 0; l < 8; ++l) - { - world.spawnParticle("reddust", posX + Math.random() - Math.random(), posY + Math.random() - Math.random(), posZ + Math.random() - Math.random(), f1, f2, f3); - } - } - - for (int i = 0; i < damage; i++) - { - //player.setEntityHealth((player.getHealth()-1)); - player.setHealth((player.getHealth() - 1)); - - if (player.getHealth() <= 0.0005) - { - player.inventory.dropAllItems(); - break; - } - } - } - - public static boolean syphonBatteries(ItemStack ist, EntityPlayer player, int damageToBeDone) - { - if (!player.worldObj.isRemote) - { - return syphonAndDamageWhileInContainer(ist, player, damageToBeDone); - } else - { - World world = player.worldObj; - - if (world != null) - { - double posX = player.posX; - double posY = player.posY; - double posZ = player.posZ; - //if(particles) - { - SpellHelper.sendIndexedParticleToAllAround(world, posX, posY, posZ, 20, world.provider.dimensionId, 4, posX, posY, posZ); - world.playSoundEffect((double) ((float) player.posX + 0.5F), (double) ((float) player.posY + 0.5F), (double) ((float) player.posZ + 0.5F), "random.fizz", 0.5F, 2.6F + (world.rand.nextFloat() - world.rand.nextFloat()) * 0.8F); - } - } - } - - return true; - //return syphonBatteriesWithoutParticles(ist, player, damageToBeDone, true); - } - - public static boolean syphonWhileInContainer(ItemStack ist, int damageToBeDone) - { - if (ist.getTagCompound() != null && !(ist.getTagCompound().getString("ownerName").equals(""))) - { - String ownerName = ist.getTagCompound().getString("ownerName"); - - if (MinecraftServer.getServer() == null) - { - return false; - } - - World world = MinecraftServer.getServer().worldServers[0]; - LifeEssenceNetwork data = (LifeEssenceNetwork) world.loadItemData(LifeEssenceNetwork.class, ownerName); - - if (data == null) - { - data = new LifeEssenceNetwork(ownerName); - world.setItemData(ownerName, data); - } - - if (data.currentEssence >= damageToBeDone) - { - data.currentEssence -= damageToBeDone; - data.markDirty(); - return true; - } - -// EntityPlayer ownerEntity = MinecraftServer.getServer().getConfigurationManager().getPlayerForUsername(ist.getTagCompound().getString("ownerName")); -// if(ownerEntity==null){return false;} -// NBTTagCompound tag = ownerEntity.getEntityData(); -// int currentEssence = tag.getInteger("currentEssence"); -// if(currentEssence>=damageToBeDone) -// { -// tag.setInteger("currentEssence", currentEssence-damageToBeDone); -// return true; -// } - } - - return false; - } - - public static boolean canSyphonInContainer(ItemStack ist, int damageToBeDone) - { - if (ist.getTagCompound() != null && !(ist.getTagCompound().getString("ownerName").equals(""))) - { - String ownerName = ist.getTagCompound().getString("ownerName"); - - if (MinecraftServer.getServer() == null) - { - return false; - } - - World world = MinecraftServer.getServer().worldServers[0]; - LifeEssenceNetwork data = (LifeEssenceNetwork) world.loadItemData(LifeEssenceNetwork.class, ownerName); - - if (data == null) - { - data = new LifeEssenceNetwork(ownerName); - world.setItemData(ownerName, data); - } - - return data.currentEssence >= damageToBeDone; -// EntityPlayer ownerEntity = MinecraftServer.getServer().getConfigurationManager().getPlayerForUsername(ist.getTagCompound().getString("ownerName")); -// if(ownerEntity==null){return false;} -// NBTTagCompound tag = ownerEntity.getEntityData(); -// int currentEssence = tag.getInteger("currentEssence"); -// if(currentEssence>=damageToBeDone) -// { -// tag.setInteger("currentEssence", currentEssence-damageToBeDone); -// return true; -// } - } - - return false; - } - - public static void hurtPlayer(EntityPlayer user, int energySyphoned) - { - if (energySyphoned < 100 && energySyphoned > 0) - { - if (!user.capabilities.isCreativeMode) - { - //player.setEntityHealth((player.getHealth()-1)); - user.setHealth((user.getHealth() - 1)); - - if (user.getHealth() <= 0.0005f) - { - user.onDeath(DamageSource.generic); - - } - } - } else if (energySyphoned >= 100) - { - if (!user.capabilities.isCreativeMode) - { - for (int i = 0; i < ((energySyphoned + 99) / 100); i++) - { - //player.setEntityHealth((player.getHealth()-1)); - user.setHealth((user.getHealth() - 1)); - - if (user.getHealth() <= 0.0005f) - { - user.onDeath(DamageSource.generic); - break; - } - } - } - } - } - - public static boolean syphonAndDamageWhileInContainer(ItemStack ist, EntityPlayer player, int damageToBeDone) - { - if (!syphonWhileInContainer(ist, damageToBeDone)) - { - hurtPlayer(player, damageToBeDone); - } - - return true; - } - - //Global static methods - public static void checkAndSetItemOwner(ItemStack item, EntityPlayer player) - { - if (item.stackTagCompound == null) - { - item.setTagCompound(new NBTTagCompound()); - } - - if (item.stackTagCompound.getString("ownerName").equals("")) - { - item.stackTagCompound.setString("ownerName", SoulNetworkHandler.getUsername(player)); - } - - initializePlayer(player); - } - - public static void setItemOwner(ItemStack item, String ownerName) - { - if (item.stackTagCompound == null) - { - item.setTagCompound(new NBTTagCompound()); - } - - item.stackTagCompound.setString("ownerName", ownerName); - } - - public static void checkAndSetItemOwner(ItemStack item, String ownerName) - { - if (item.stackTagCompound == null) - { - item.setTagCompound(new NBTTagCompound()); - } - - if (item.stackTagCompound.getString("ownerName").equals("")) - { - item.stackTagCompound.setString("ownerName", ownerName); - } - } - - public static void initializePlayer(EntityPlayer player) - { - NBTTagCompound tag = player.getEntityData(); - - if (tag.getInteger("currentEssence") == 0) - { - tag.setInteger("currentEssence", 0); - } - } - - public static String getOwnerName(ItemStack item) - { - if (item.stackTagCompound == null) - { - item.setTagCompound(new NBTTagCompound()); - } - - return item.stackTagCompound.getString("ownerName"); - } - - public static void drainPlayerNetwork(EntityPlayer player, int damageToBeDone) - { - String ownerName = SpellHelper.getUsername(player); - - if (MinecraftServer.getServer() == null) - { - return; - } - - World world = MinecraftServer.getServer().worldServers[0]; - LifeEssenceNetwork data = (LifeEssenceNetwork) world.loadItemData(LifeEssenceNetwork.class, ownerName); - - if (data == null) - { - data = new LifeEssenceNetwork(ownerName); - world.setItemData(ownerName, data); - } - - if (data.currentEssence >= damageToBeDone) - { - data.currentEssence -= damageToBeDone; - data.markDirty(); - }else - { - hurtPlayer(player, damageToBeDone); - } - } - - public static int getCurrentEssence(String ownerName) - { - if (MinecraftServer.getServer() == null) - { - return 0; - } - - World world = MinecraftServer.getServer().worldServers[0]; - LifeEssenceNetwork data = (LifeEssenceNetwork) world.loadItemData(LifeEssenceNetwork.class, ownerName); - - if (data == null) - { - data = new LifeEssenceNetwork(ownerName); - world.setItemData(ownerName, data); - } - - return data.currentEssence; - } - - public static void setCurrentEssence(String ownerName, int amount) - { - if (MinecraftServer.getServer() == null) - { - return; - } - - World world = MinecraftServer.getServer().worldServers[0]; - LifeEssenceNetwork data = (LifeEssenceNetwork) world.loadItemData(LifeEssenceNetwork.class, ownerName); - - if (data == null) - { - data = new LifeEssenceNetwork(ownerName); - world.setItemData(ownerName, data); - } - - data.currentEssence = amount; - data.markDirty(); - } - - public static void addEssenceToMaximum(String ownerName, int amount, int maximum) - { - if (MinecraftServer.getServer() == null) - { - return; - } - - World world = MinecraftServer.getServer().worldServers[0]; - LifeEssenceNetwork data = (LifeEssenceNetwork) world.loadItemData(LifeEssenceNetwork.class, ownerName); - - if (data == null) - { - data = new LifeEssenceNetwork(ownerName); - world.setItemData(ownerName, data); - } - - if(data.currentEssence>=maximum) - { - return; - } - - data.currentEssence = Math.min(maximum, data.currentEssence + amount); - data.markDirty(); - } -} diff --git a/src-backup/main/java/WayofTime/alchemicalWizardry/common/items/EnergySword.java b/src-backup/main/java/WayofTime/alchemicalWizardry/common/items/EnergySword.java deleted file mode 100644 index a4578599..00000000 --- a/src-backup/main/java/WayofTime/alchemicalWizardry/common/items/EnergySword.java +++ /dev/null @@ -1,238 +0,0 @@ -package WayofTime.alchemicalWizardry.common.items; - -import java.util.List; - -import net.minecraft.block.Block; -import net.minecraft.block.material.Material; -import net.minecraft.client.renderer.texture.IIconRegister; -import net.minecraft.entity.Entity; -import net.minecraft.entity.EntityLivingBase; -import net.minecraft.entity.player.EntityPlayer; -import net.minecraft.init.Blocks; -import net.minecraft.item.ItemStack; -import net.minecraft.item.ItemSword; -import net.minecraft.nbt.NBTTagCompound; -import net.minecraft.potion.Potion; -import net.minecraft.potion.PotionEffect; -import net.minecraft.util.IIcon; -import net.minecraft.world.World; -import WayofTime.alchemicalWizardry.AlchemicalWizardry; -import cpw.mods.fml.relauncher.Side; -import cpw.mods.fml.relauncher.SideOnly; - -public class EnergySword extends ItemSword -{ - //private float weaponDamaged; - //private int maxMode = 3; - private NBTTagCompound data; - - private static IIcon activeIcon; - private static IIcon passiveIcon; - - private int energyUsed; - - public EnergySword() - { - super(AlchemicalWizardry.bloodBoundToolMaterial); - this.maxStackSize = 1; - setCreativeTab(AlchemicalWizardry.tabBloodMagic); - setEnergyUsed(50); - setFull3D(); - setMaxDamage(100); - //weaponDamaged = 12.0F; - } - - public void setEnergyUsed(int i) - { - energyUsed = i; - } - - public int getEnergyUsed() - { - return this.energyUsed; - } - - @Override - @SideOnly(Side.CLIENT) - public void registerIcons(IIconRegister iconRegister) - { - this.itemIcon = iconRegister.registerIcon("AlchemicalWizardry:BoundSword_activated"); - this.activeIcon = iconRegister.registerIcon("AlchemicalWizardry:BoundSword_activated"); - this.passiveIcon = iconRegister.registerIcon("AlchemicalWizardry:SheathedItem"); - } - - @Override - public IIcon getIcon(ItemStack stack, int renderPass, EntityPlayer player, ItemStack usingItem, int useRemaining) - { - if (stack.stackTagCompound == null) - { - stack.setTagCompound(new NBTTagCompound()); - } - - NBTTagCompound tag = stack.stackTagCompound; - - if (tag.getBoolean("isActive")) - { - return this.activeIcon; - } else - { - return this.passiveIcon; - } - } - - @Override - public boolean onLeftClickEntity(ItemStack stack, EntityPlayer player, Entity entity) - { - return !getActivated(stack); - } - - @Override - public boolean hitEntity(ItemStack par1ItemStack, EntityLivingBase par2EntityLivingBase, EntityLivingBase par3EntityLivingBase) - { - if (par3EntityLivingBase instanceof EntityPlayer) - { - EnergyItems.checkAndSetItemOwner(par1ItemStack, (EntityPlayer) par3EntityLivingBase); - - if (!EnergyItems.syphonBatteries(par1ItemStack, (EntityPlayer) par3EntityLivingBase, this.getEnergyUsed())) - { - //this.damagePlayer(null, (EntityPlayer)par3EntityLivingBase, (this.getEnergyUsed() + 99) / 100); - } - } - - par2EntityLivingBase.addPotionEffect(new PotionEffect(Potion.weakness.id, 60, 2)); - return true; - } - - @Override - public ItemStack onItemRightClick(ItemStack par1ItemStack, World par2World, EntityPlayer par3EntityPlayer) - { - EnergyItems.checkAndSetItemOwner(par1ItemStack, par3EntityPlayer); - - if (par3EntityPlayer.isSneaking()) - { - this.setActivated(par1ItemStack, !getActivated(par1ItemStack)); - par1ItemStack.stackTagCompound.setInteger("worldTimeDelay", (int) (par2World.getWorldTime() - 1) % 100); - return par1ItemStack; - } - - if (!getActivated(par1ItemStack)) - { - return par1ItemStack; - } - - return par1ItemStack; - } - - @Override - public int getItemEnchantability() - { - return 30; - } - - @Override - public void onUpdate(ItemStack par1ItemStack, World par2World, Entity par3Entity, int par4, boolean par5) - { - if (!(par3Entity instanceof EntityPlayer)) - { - return; - } - - EntityPlayer par3EntityPlayer = (EntityPlayer) par3Entity; - - if (par1ItemStack.stackTagCompound == null) - { - par1ItemStack.setTagCompound(new NBTTagCompound()); - } - -// if(par1ItemStack.stackTagCompound.getBoolean("isActive")) -// { -// EnergyItems.syphonBatteries(par1ItemStack, par3EntityPlayer, 1); -// } - - if (par2World.getWorldTime() % 100 == par1ItemStack.stackTagCompound.getInteger("worldTimeDelay") && par1ItemStack.stackTagCompound.getBoolean("isActive")) - { - if (!par3EntityPlayer.capabilities.isCreativeMode) - { - EnergyItems.syphonBatteries(par1ItemStack, par3EntityPlayer, 50); - } - } - - par1ItemStack.setItemDamage(0); - return; - } - - public void setActivated(ItemStack par1ItemStack, boolean newActivated) - { - NBTTagCompound itemTag = par1ItemStack.stackTagCompound; - - if (itemTag == null) - { - par1ItemStack.setTagCompound(new NBTTagCompound()); - } - - itemTag.setBoolean("isActive", newActivated); - } - - public boolean getActivated(ItemStack par1ItemStack) - { - NBTTagCompound itemTag = par1ItemStack.stackTagCompound; - - if (itemTag == null) - { - par1ItemStack.setTagCompound(new NBTTagCompound()); - } - - return itemTag.getBoolean("isActive"); - } - -// public int getDamageVsEntity(Entity par1Entity) -// { -// return (int) this.weaponDamage; -// } - - public float func_82803_g() - { - return 4.0F; - } - - @Override - public void addInformation(ItemStack par1ItemStack, EntityPlayer par2EntityPlayer, List par3List, boolean par4) - { - par3List.add("Caution: may cause"); - par3List.add("a bad day..."); - - if (!(par1ItemStack.stackTagCompound == null)) - { - if (par1ItemStack.stackTagCompound.getBoolean("isActive")) - { - par3List.add("Activated"); - } else - { - par3List.add("Deactivated"); - } - - if (!par1ItemStack.stackTagCompound.getString("ownerName").equals("")) - { - par3List.add("Current owner: " + par1ItemStack.stackTagCompound.getString("ownerName")); - } - } - } - - @Override - public float func_150893_a(ItemStack par1ItemStack, Block par2Block) - { - if (par2Block == Blocks.web) - { - return 15.0F; - } else - { - Material material = par2Block.getMaterial(); - return material != Material.plants && material != Material.vine && material != Material.coral && material != Material.leaves && material != Material.gourd ? 1.0F : 1.5F; - } - } - -// public boolean getIsRepairable(ItemStack par1ItemStack, ItemStack par2ItemStack) -// { -// return false; -// } -} diff --git a/src-backup/main/java/WayofTime/alchemicalWizardry/common/items/EnhancedTelepositionFocus.java b/src-backup/main/java/WayofTime/alchemicalWizardry/common/items/EnhancedTelepositionFocus.java deleted file mode 100644 index 4753fc05..00000000 --- a/src-backup/main/java/WayofTime/alchemicalWizardry/common/items/EnhancedTelepositionFocus.java +++ /dev/null @@ -1,46 +0,0 @@ -package WayofTime.alchemicalWizardry.common.items; - -import java.util.List; - -import net.minecraft.client.renderer.texture.IIconRegister; -import net.minecraft.entity.player.EntityPlayer; -import net.minecraft.item.ItemStack; -import net.minecraft.nbt.NBTTagCompound; -import cpw.mods.fml.relauncher.Side; -import cpw.mods.fml.relauncher.SideOnly; - -public class EnhancedTelepositionFocus extends TelepositionFocus -{ - public EnhancedTelepositionFocus() - { - super(2); - // TODO Auto-generated constructor stub - } - - @Override - @SideOnly(Side.CLIENT) - public void registerIcons(IIconRegister iconRegister) - { - //TODO - this.itemIcon = iconRegister.registerIcon("AlchemicalWizardry:EnhancedTeleposerFocus"); - } - - @Override - public void addInformation(ItemStack par1ItemStack, EntityPlayer par2EntityPlayer, List par3List, boolean par4) - { - par3List.add("A focus further enhanced in an altar"); - - if (!(par1ItemStack.stackTagCompound == null)) - { - NBTTagCompound itemTag = par1ItemStack.stackTagCompound; - - if (!par1ItemStack.stackTagCompound.getString("ownerName").equals("")) - { - par3List.add("Current owner: " + par1ItemStack.stackTagCompound.getString("ownerName")); - } - - par3List.add("Coords: " + itemTag.getInteger("xCoord") + ", " + itemTag.getInteger("yCoord") + ", " + itemTag.getInteger("zCoord")); - par3List.add("Bound Dimension: " + getDimensionID(par1ItemStack)); - } - } -} diff --git a/src-backup/main/java/WayofTime/alchemicalWizardry/common/items/FireScribeTool.java b/src-backup/main/java/WayofTime/alchemicalWizardry/common/items/FireScribeTool.java deleted file mode 100644 index 18fc3a52..00000000 --- a/src-backup/main/java/WayofTime/alchemicalWizardry/common/items/FireScribeTool.java +++ /dev/null @@ -1,20 +0,0 @@ -package WayofTime.alchemicalWizardry.common.items; - -import net.minecraft.client.renderer.texture.IIconRegister; -import cpw.mods.fml.relauncher.Side; -import cpw.mods.fml.relauncher.SideOnly; - -public class FireScribeTool extends ScribeTool -{ - public FireScribeTool() - { - super(2); - } - - @Override - @SideOnly(Side.CLIENT) - public void registerIcons(IIconRegister iconRegister) - { - this.itemIcon = iconRegister.registerIcon("AlchemicalWizardry:FireScribeTool"); - } -} \ No newline at end of file diff --git a/src-backup/main/java/WayofTime/alchemicalWizardry/common/items/ItemAlchemyBase.java b/src-backup/main/java/WayofTime/alchemicalWizardry/common/items/ItemAlchemyBase.java deleted file mode 100644 index 8319c4a8..00000000 --- a/src-backup/main/java/WayofTime/alchemicalWizardry/common/items/ItemAlchemyBase.java +++ /dev/null @@ -1,107 +0,0 @@ -package WayofTime.alchemicalWizardry.common.items; - -import java.util.List; - -import net.minecraft.client.renderer.texture.IIconRegister; -import net.minecraft.creativetab.CreativeTabs; -import net.minecraft.entity.player.EntityPlayer; -import net.minecraft.item.Item; -import net.minecraft.item.ItemStack; -import net.minecraft.util.EnumChatFormatting; -import net.minecraft.util.IIcon; -import net.minecraft.util.MathHelper; -import net.minecraft.world.World; - -import org.lwjgl.input.Keyboard; - -import WayofTime.alchemicalWizardry.AlchemicalWizardry; -import WayofTime.alchemicalWizardry.api.alchemy.AlchemyRecipeRegistry; -import cpw.mods.fml.relauncher.Side; -import cpw.mods.fml.relauncher.SideOnly; - -public class ItemAlchemyBase extends Item -{ - private static final String[] ITEM_NAMES = new String[]{"Offensa","Praesidium","OrbisTerrae","StrengthenedCatalyst","ConcentratedCatalyst","FracturedBone","Virtus","Reductus","Potentia"}; - - @SideOnly(Side.CLIENT) - private IIcon[] icons; - - public ItemAlchemyBase() - { - super(); - this.maxStackSize = 64; - this.setCreativeTab(AlchemicalWizardry.tabBloodMagic); - this.hasSubtypes = true; - } - - @Override - @SideOnly(Side.CLIENT) - public void registerIcons(IIconRegister iconRegister) - { - icons = new IIcon[ITEM_NAMES.length]; - - for (int i = 0; i < ITEM_NAMES.length; ++i) - { - icons[i] = iconRegister.registerIcon("AlchemicalWizardry:" + "baseAlchemyItem" + ITEM_NAMES[i]); - } - } - - @Override - public void addInformation(ItemStack par1ItemStack, EntityPlayer par2EntityPlayer, List par3List, boolean par4) - { - par3List.add("Used in alchemy"); - - if (Keyboard.isKeyDown(Keyboard.KEY_RSHIFT) || Keyboard.isKeyDown(Keyboard.KEY_LSHIFT)) - { - ItemStack[] recipe = AlchemyRecipeRegistry.getRecipeForItemStack(par1ItemStack); - - if (recipe != null) - { - par3List.add(EnumChatFormatting.BLUE + "Recipe:"); - - for (ItemStack item : recipe) - { - if (item != null) - { - par3List.add("" + item.getDisplayName()); - } - } - } - } else - { - par3List.add("-Press " + EnumChatFormatting.BLUE + "shift" + EnumChatFormatting.GRAY + " for Recipe-"); - } - } - - @Override - public ItemStack onItemRightClick(ItemStack par1ItemStack, World par2World, EntityPlayer par3EntityPlayer) - { - return par1ItemStack; - } - - @Override - public String getUnlocalizedName(ItemStack itemStack) - { - //This is what will do all the localisation things on the alchemy components so you dont have to set it :D - int meta = MathHelper.clamp_int(itemStack.getItemDamage(), 0, ITEM_NAMES.length - 1); - return ("" + "item.bloodMagicAlchemyItem." + ITEM_NAMES[meta]); - } - - @Override - @SideOnly(Side.CLIENT) - public IIcon getIconFromDamage(int meta) - { - int j = MathHelper.clamp_int(meta, 0, ITEM_NAMES.length - 1); - return icons[j]; - } - - @Override - @SideOnly(Side.CLIENT) - public void getSubItems(Item id, CreativeTabs creativeTab, List list) - { - for (int meta = 0; meta < ITEM_NAMES.length; ++meta) - { - list.add(new ItemStack(id, 1, meta)); - } - } -} diff --git a/src-backup/main/java/WayofTime/alchemicalWizardry/common/items/ItemBlockCrystalBelljar.java b/src-backup/main/java/WayofTime/alchemicalWizardry/common/items/ItemBlockCrystalBelljar.java deleted file mode 100644 index 7788b60b..00000000 --- a/src-backup/main/java/WayofTime/alchemicalWizardry/common/items/ItemBlockCrystalBelljar.java +++ /dev/null @@ -1,96 +0,0 @@ -package WayofTime.alchemicalWizardry.common.items; - -import java.util.List; - -import net.minecraft.block.Block; -import net.minecraft.entity.player.EntityPlayer; -import net.minecraft.item.ItemBlock; -import net.minecraft.item.ItemStack; -import net.minecraft.nbt.NBTTagCompound; -import net.minecraft.nbt.NBTTagList; -import net.minecraft.world.World; -import net.minecraftforge.common.util.Constants; -import WayofTime.alchemicalWizardry.api.alchemy.energy.ReagentContainer; -import WayofTime.alchemicalWizardry.api.alchemy.energy.ReagentStack; - -public class ItemBlockCrystalBelljar extends ItemBlock -{ - public ItemBlockCrystalBelljar(Block par1) - { - super(par1); -// this.setUnlocalizedName("itemSpellEnhancementBlock"); -// setCreativeTab(AlchemicalWizardry.tabBloodMagic); - this.setHasSubtypes(true); - this.setMaxDamage(0); - this.setMaxStackSize(16); - } - - public int getMetadata(int par1) - { - return par1; - } - - public ReagentContainer[] getReagentContainers(ItemStack stack) - { - if(stack != null && stack.hasTagCompound()) - { - NBTTagCompound tag = stack.getTagCompound(); - - NBTTagList tagList = tag.getTagList("reagentTanks", Constants.NBT.TAG_COMPOUND); - - int size = tagList.tagCount(); - ReagentContainer[] tanks = new ReagentContainer[size]; - - for(int i=0; i ritualList = Rituals.getRitualList(this.getCurrentRitual(par1ItemStack)); - if(ritualList == null) - { - return; - } - - int blankStones = 0; - int airStones = 0; - int waterStones = 0; - int fireStones = 0; - int earthStones = 0; - int duskStones = 0; - - for (RitualComponent rc : ritualList) - { - switch (rc.getStoneType()) - { - case RitualComponent.BLANK: - blankStones++; - break; - - case RitualComponent.AIR: - airStones++; - break; - - case RitualComponent.WATER: - waterStones++; - break; - - case RitualComponent.FIRE: - fireStones++; - break; - - case RitualComponent.EARTH: - earthStones++; - break; - - case RitualComponent.DUSK: - duskStones++; - break; - } - } - - par3List.add("Blank stones: " + blankStones); - par3List.add(EnumChatFormatting.AQUA + "Air stones: " + airStones); - par3List.add(EnumChatFormatting.BLUE + "Water stones: " + waterStones); - par3List.add(EnumChatFormatting.RED + "Fire stones: " + fireStones); - par3List.add(EnumChatFormatting.DARK_GREEN + "Earth stones: " + earthStones); - par3List.add(EnumChatFormatting.BOLD + "Dusk stones: " + duskStones); - //par3List.add("Ritual Name: " + Rituals.getNameOfRitual(ritualID)); - } - } - - @Override - public String getItemStackDisplayName(ItemStack par1ItemStack) - { - if (!(par1ItemStack.stackTagCompound == null)) - { - String ritualID = this.getCurrentRitual(par1ItemStack); - if(ritualID.equals("")) - { - return super.getItemStackDisplayName(par1ItemStack); - } - return "Ritual: " + Rituals.getNameOfRitual(ritualID); - //par3List.add("Current owner: " + par1ItemStack.stackTagCompound.getString("ownerName")); - } else - { - return super.getItemStackDisplayName(par1ItemStack); - } - } - - @Override - public boolean onItemUse(ItemStack par1ItemStack, EntityPlayer par2EntityPlayer, World par3World, int par4, int par5, int par6, int par7, float par8, float par9, float par10) - { - EnergyItems.checkAndSetItemOwner(par1ItemStack, par2EntityPlayer); - ItemStack[] playerInventory = par2EntityPlayer.inventory.mainInventory; - TileEntity tileEntity = par3World.getTileEntity(par4, par5, par6); - - if (tileEntity instanceof TEMasterStone) - { - TEMasterStone masterStone = (TEMasterStone) tileEntity; - List ritualList = Rituals.getRitualList(this.getCurrentRitual(par1ItemStack)); - if(ritualList == null) - { - return false; - } - - int playerInvRitualStoneLocation = -1; - - for (int i = 0; i < playerInventory.length; i++) - { - if (playerInventory[i] == null) - { - continue; - } - - if (new ItemStack(ModBlocks.ritualStone).isItemEqual(playerInventory[i])) - { - playerInvRitualStoneLocation = i; - break; - } - } - - for (RitualComponent rc : ritualList) - { - if (par3World.isAirBlock(par4 + rc.getX(), par5 + rc.getY(), par6 + rc.getZ())) - { - if (playerInvRitualStoneLocation >= 0) - { - if (rc.getStoneType() > this.maxMetaData + this.getMaxRuneDisplacement(par1ItemStack)) - { - par3World.playAuxSFX(200, par4, par5 + 1, par6, 0); - return true; - } - - if (!par2EntityPlayer.capabilities.isCreativeMode) - { - par2EntityPlayer.inventory.decrStackSize(playerInvRitualStoneLocation, 1); - } - - par3World.setBlock(par4 + rc.getX(), par5 + rc.getY(), par6 + rc.getZ(), ModBlocks.ritualStone, rc.getStoneType(), 3); - - if (par3World.isRemote) - { - par3World.playAuxSFX(2005, par4, par5 + 1, par6, 0); - EnergyItems.syphonBatteries(par1ItemStack, par2EntityPlayer, getEnergyUsed()); - return true; - } - - return true; - } - } else - { - Block block = par3World.getBlock(par4 + rc.getX(), par5 + rc.getY(), par6 + rc.getZ()); - - if (block == ModBlocks.ritualStone) - { - int metadata = par3World.getBlockMetadata(par4 + rc.getX(), par5 + rc.getY(), par6 + rc.getZ()); - - if (metadata != rc.getStoneType()) - { - if (rc.getStoneType() > this.maxMetaData + this.getMaxRuneDisplacement(par1ItemStack)) - { - par3World.playAuxSFX(200, par4, par5 + 1, par6, 0); - return true; - } - - par3World.setBlockMetadataWithNotify(par4 + rc.getX(), par5 + rc.getY(), par6 + rc.getZ(), rc.getStoneType(), 3); - EnergyItems.syphonBatteries(par1ItemStack, par2EntityPlayer, getEnergyUsed()); - return true; - } - } else - { - par3World.playAuxSFX(0000, par4, par5 + 1, par6, 0); - return true; - } - } - } - -// if (par3World.isRemote) -// { -// par3World.playAuxSFX(2005, par4, par5, par6, 0); -// EnergyItems.syphonBatteries(par1ItemStack, par2EntityPlayer, getEnergyUsed()); -// return true; -// } -// return true; - } - - return false; - } - - @Override - public ItemStack onItemRightClick(ItemStack par1ItemStack, World par2World, EntityPlayer par3EntityPlayer) - { - EnergyItems.checkAndSetItemOwner(par1ItemStack, par3EntityPlayer); - - if (par3EntityPlayer.isSneaking()) - { - int maxRitualID = Rituals.getNumberOfRituals(); - String currentRitualID = this.getCurrentRitual(par1ItemStack); - - this.setCurrentRitual(par1ItemStack, Rituals.getNextRitualKey(currentRitualID)); - - if (par2World.isRemote) - { - IChatComponent chatmessagecomponent = new ChatComponentText("Current Ritual: " + Rituals.getNameOfRitual(this.getCurrentRitual(par1ItemStack))); - //chatmessagecomponent.func_111072_b("Current Essence: " + data.currentEssence + "LP"); - //chatmessagecomponent.addText("Current Ritual: " + Rituals.getNameOfRitual(this.getCurrentRitual(par1ItemStack))); - par3EntityPlayer.addChatComponentMessage(chatmessagecomponent); - } - } - - return par1ItemStack; - } - - @Override - public boolean onEntitySwing(EntityLivingBase entityLiving, ItemStack stack) - { - if(entityLiving instanceof EntityPlayer) - { - EntityPlayer player = (EntityPlayer) entityLiving; - - if(player.isSneaking() && !player.isSwingInProgress) - { - int maxRitualID = Rituals.getNumberOfRituals(); - String currentRitualID = this.getCurrentRitual(stack); - - this.setCurrentRitual(stack, Rituals.getPreviousRitualKey(currentRitualID)); - - if (entityLiving.worldObj.isRemote) - { - IChatComponent chatmessagecomponent = new ChatComponentText("Current Ritual: " + Rituals.getNameOfRitual(this.getCurrentRitual(stack))); - //chatmessagecomponent.func_111072_b("Current Essence: " + data.currentEssence + "LP"); - //chatmessagecomponent.addText("Current Ritual: " + Rituals.getNameOfRitual(this.getCurrentRitual(par1ItemStack))); - player.addChatComponentMessage(chatmessagecomponent); - } - } - } - - return false; - } - - public String getCurrentRitual(ItemStack par1ItemStack) - { - if (par1ItemStack.stackTagCompound == null) - { - par1ItemStack.setTagCompound(new NBTTagCompound()); - } - - return par1ItemStack.stackTagCompound.getString("ritualID"); - } - - public void setCurrentRitual(ItemStack par1ItemStack, String ritualID) - { - if (par1ItemStack.stackTagCompound == null) - { - par1ItemStack.setTagCompound(new NBTTagCompound()); - } - - par1ItemStack.stackTagCompound.setString("ritualID", ritualID); - } - - public int getMaxRuneDisplacement(ItemStack par1ItemStack) //0 indicates the starting 4 runes, 1 indicates it can use Dusk runes - { - if (par1ItemStack.stackTagCompound == null) - { - par1ItemStack.setTagCompound(new NBTTagCompound()); - } - - return par1ItemStack.stackTagCompound.getInteger("maxRuneDisplacement"); - } - - public void setMaxRuneDisplacement(ItemStack par1ItemStack, int displacement) - { - if (par1ItemStack.stackTagCompound == null) - { - par1ItemStack.setTagCompound(new NBTTagCompound()); - } - - par1ItemStack.stackTagCompound.setInteger("maxRuneDisplacement", displacement); - } - - @Override - @SideOnly(Side.CLIENT) - public void getSubItems(Item id, CreativeTabs creativeTab, List list) - { - list.add(new ItemStack(ModItems.itemRitualDiviner)); - ItemStack duskRitualDivinerStack = new ItemStack(ModItems.itemRitualDiviner); - ((ItemRitualDiviner) duskRitualDivinerStack.getItem()).setMaxRuneDisplacement(duskRitualDivinerStack, 1); - list.add(duskRitualDivinerStack); - } -} diff --git a/src-backup/main/java/WayofTime/alchemicalWizardry/common/items/ItemSpellEffectBlock.java b/src-backup/main/java/WayofTime/alchemicalWizardry/common/items/ItemSpellEffectBlock.java deleted file mode 100644 index 2c5e106d..00000000 --- a/src-backup/main/java/WayofTime/alchemicalWizardry/common/items/ItemSpellEffectBlock.java +++ /dev/null @@ -1,59 +0,0 @@ -package WayofTime.alchemicalWizardry.common.items; - -import WayofTime.alchemicalWizardry.AlchemicalWizardry; -import net.minecraft.block.Block; -import net.minecraft.item.ItemBlock; -import net.minecraft.item.ItemStack; - -public class ItemSpellEffectBlock extends ItemBlock - -{ - public ItemSpellEffectBlock(Block par1) - { - super(par1); - setHasSubtypes(true); -// this.setUnlocalizedName("itemSpellEffectBlock"); -// setCreativeTab(AlchemicalWizardry.tabBloodMagic); - - } - - public String getUnlocalizedName(ItemStack itemstack) - - { - String name = ""; - - switch (itemstack.getItemDamage()) - { - case 0: - { - name = "fire"; - break; - } - - case 1: - { - name = "ice"; - break; - } - - case 2: - name = "wind"; - break; - - case 3: - name = "earth"; - break; - - default: - name = "broken"; - } - - return getUnlocalizedName() + "." + name; - } - - public int getMetadata(int par1) - - { - return par1; - } -} diff --git a/src-backup/main/java/WayofTime/alchemicalWizardry/common/items/ItemSpellEnhancementBlock.java b/src-backup/main/java/WayofTime/alchemicalWizardry/common/items/ItemSpellEnhancementBlock.java deleted file mode 100644 index 670cbce8..00000000 --- a/src-backup/main/java/WayofTime/alchemicalWizardry/common/items/ItemSpellEnhancementBlock.java +++ /dev/null @@ -1,99 +0,0 @@ -package WayofTime.alchemicalWizardry.common.items; - -import WayofTime.alchemicalWizardry.AlchemicalWizardry; -import net.minecraft.block.Block; -import net.minecraft.item.ItemBlock; -import net.minecraft.item.ItemStack; - -public class ItemSpellEnhancementBlock extends ItemBlock - -{ - public ItemSpellEnhancementBlock(Block par1) - { - super(par1); - setHasSubtypes(true); -// this.setUnlocalizedName("itemSpellEnhancementBlock"); -// setCreativeTab(AlchemicalWizardry.tabBloodMagic); - - } - - public String getUnlocalizedName(ItemStack itemstack) - - { - String name = ""; - - switch (itemstack.getItemDamage()) - { - case 0: - name = "power1"; - break; - - case 1: - name = "power2"; - break; - - case 2: - name = "power3"; - break; - - case 3: - name = "power4"; - break; - - case 4: - name = "power5"; - break; - - case 5: - name = "cost1"; - break; - - case 6: - name = "cost2"; - break; - - case 7: - name = "cost3"; - break; - - case 8: - name = "cost4"; - break; - - case 9: - name = "cost5"; - break; - - case 10: - name = "potency1"; - break; - - case 11: - name = "potency2"; - break; - - case 12: - name = "potency3"; - break; - - case 13: - name = "potency4"; - break; - - case 14: - name = "potency5"; - break; - - default: - name = "broken"; - } - - return getUnlocalizedName() + "." + name; - } - - public int getMetadata(int par1) - - { - return par1; - } -} diff --git a/src-backup/main/java/WayofTime/alchemicalWizardry/common/items/ItemSpellModifierBlock.java b/src-backup/main/java/WayofTime/alchemicalWizardry/common/items/ItemSpellModifierBlock.java deleted file mode 100644 index acd47516..00000000 --- a/src-backup/main/java/WayofTime/alchemicalWizardry/common/items/ItemSpellModifierBlock.java +++ /dev/null @@ -1,59 +0,0 @@ -package WayofTime.alchemicalWizardry.common.items; - -import WayofTime.alchemicalWizardry.AlchemicalWizardry; -import net.minecraft.block.Block; -import net.minecraft.item.ItemBlock; -import net.minecraft.item.ItemStack; - -public class ItemSpellModifierBlock extends ItemBlock - -{ - public ItemSpellModifierBlock(Block par1) - { - super(par1); - setHasSubtypes(true); -// this.setUnlocalizedName("itemSpellModifierBlock"); -// setCreativeTab(AlchemicalWizardry.tabBloodMagic); - - } - - public String getUnlocalizedName(ItemStack itemstack) - - { - String name = ""; - - switch (itemstack.getItemDamage()) - { - case 0: - { - name = "default"; - break; - } - - case 1: - { - name = "offensive"; - break; - } - - case 2: - name = "defensive"; - break; - - case 3: - name = "environmental"; - break; - - default: - name = "broken"; - } - - return getUnlocalizedName() + "." + name; - } - - public int getMetadata(int par1) - - { - return par1; - } -} diff --git a/src-backup/main/java/WayofTime/alchemicalWizardry/common/items/ItemSpellParadigmBlock.java b/src-backup/main/java/WayofTime/alchemicalWizardry/common/items/ItemSpellParadigmBlock.java deleted file mode 100644 index 5fb0b9e3..00000000 --- a/src-backup/main/java/WayofTime/alchemicalWizardry/common/items/ItemSpellParadigmBlock.java +++ /dev/null @@ -1,58 +0,0 @@ -package WayofTime.alchemicalWizardry.common.items; - -import WayofTime.alchemicalWizardry.AlchemicalWizardry; -import net.minecraft.block.Block; -import net.minecraft.item.ItemBlock; -import net.minecraft.item.ItemStack; - -public class ItemSpellParadigmBlock extends ItemBlock - -{ - public ItemSpellParadigmBlock(Block par1) - { - super(par1); - setHasSubtypes(true); - //this.setUnlocalizedName("itemSpellParadigmBlock"); - } - - @Override - public String getUnlocalizedName(ItemStack itemstack) - - { - String name = ""; - - switch (itemstack.getItemDamage()) - { - case 0: - { - name = "projectile"; - break; - } - - case 1: - { - name = "self"; - break; - } - - case 2: - name = "melee"; - break; - - case 3: - name = "tool"; - break; - - default: - name = "broken"; - } - - return getUnlocalizedName() + "." + name; - } - - @Override - public int getMetadata(int par1) - { - return par1; - } -} diff --git a/src-backup/main/java/WayofTime/alchemicalWizardry/common/items/LavaCrystal.java b/src-backup/main/java/WayofTime/alchemicalWizardry/common/items/LavaCrystal.java deleted file mode 100644 index 87610c5e..00000000 --- a/src-backup/main/java/WayofTime/alchemicalWizardry/common/items/LavaCrystal.java +++ /dev/null @@ -1,114 +0,0 @@ -package WayofTime.alchemicalWizardry.common.items; - -import java.util.List; - -import net.minecraft.client.renderer.texture.IIconRegister; -import net.minecraft.entity.player.EntityPlayer; -import net.minecraft.item.ItemStack; -import net.minecraft.server.MinecraftServer; -import net.minecraft.world.World; -import WayofTime.alchemicalWizardry.AlchemicalWizardry; -import WayofTime.alchemicalWizardry.api.soulNetwork.LifeEssenceNetwork; -import cpw.mods.fml.relauncher.Side; -import cpw.mods.fml.relauncher.SideOnly; - -public class LavaCrystal extends EnergyItems -{ - public LavaCrystal() - { - super(); - //setMaxDamage(1000); - setMaxStackSize(1); - setCreativeTab(AlchemicalWizardry.tabBloodMagic); - setUnlocalizedName("lavaCrystal"); - setEnergyUsed(25); - } - - @Override - @SideOnly(Side.CLIENT) - public void registerIcons(IIconRegister iconRegister) - { - this.itemIcon = iconRegister.registerIcon("AlchemicalWizardry:LavaCrystal"); - } - - /* - * Used to have the item contain itself. - */ - @Override - public ItemStack getContainerItem(ItemStack itemStack) - { - //if(!syphonBatteries(itemStack, null, 10)) - { - syphonWhileInContainer(itemStack, this.getEnergyUsed()); - ItemStack copiedStack = itemStack.copy(); - copiedStack.setItemDamage(copiedStack.getItemDamage()); - copiedStack.stackSize = 1; - return copiedStack; - } - //return itemStack; - } - - @Override - public boolean hasContainerItem() - { - return true; - } - - public ItemStack onItemRightClick(ItemStack par1ItemStack, World par2World, EntityPlayer par3EntityPlayer) - { - EnergyItems.checkAndSetItemOwner(par1ItemStack, par3EntityPlayer); - int damage = this.getDamage(par1ItemStack); - return par1ItemStack; - } - - @Override - public void addInformation(ItemStack par1ItemStack, EntityPlayer par2EntityPlayer, List par3List, boolean par4) - { - par3List.add("Store life to smelt"); - par3List.add("stuff in the furnace."); - - if (!(par1ItemStack.stackTagCompound == null)) - { - par3List.add("Current owner: " + par1ItemStack.stackTagCompound.getString("ownerName")); - } - } - - public boolean hasEnoughEssence(ItemStack itemStack) - { - if (itemStack.getTagCompound() != null && !(itemStack.getTagCompound().getString("ownerName").equals(""))) - { - String ownerName = itemStack.getTagCompound().getString("ownerName"); - - if (MinecraftServer.getServer() == null) - { - return false; - } - - World world = MinecraftServer.getServer().worldServers[0]; - LifeEssenceNetwork data = (LifeEssenceNetwork) world.loadItemData(LifeEssenceNetwork.class, ownerName); - - if (data == null) - { - data = new LifeEssenceNetwork(ownerName); - world.setItemData(ownerName, data); - } - - if (data.currentEssence >= this.getEnergyUsed()) - { - return true; - } - -// EntityPlayer ownerEntity = MinecraftServer.getServer().getConfigurationManager().getPlayerForUsername(ist.getTagCompound().getString("ownerName")); -// if(ownerEntity==null){return false;} -// NBTTagCompound tag = ownerEntity.getEntityData(); -// int currentEssence = tag.getInteger("currentEssence"); -// if(currentEssence>=damageToBeDone) -// { -// tag.setInteger("currentEssence", currentEssence-damageToBeDone); -// return true; -// } - } - - return false; - } -} diff --git a/src-backup/main/java/WayofTime/alchemicalWizardry/common/items/LifeBucket.java b/src-backup/main/java/WayofTime/alchemicalWizardry/common/items/LifeBucket.java deleted file mode 100644 index 80a29ed3..00000000 --- a/src-backup/main/java/WayofTime/alchemicalWizardry/common/items/LifeBucket.java +++ /dev/null @@ -1,23 +0,0 @@ -package WayofTime.alchemicalWizardry.common.items; - -import net.minecraft.block.Block; -import net.minecraft.client.renderer.texture.IIconRegister; -import net.minecraft.item.ItemBucket; -import cpw.mods.fml.relauncher.Side; -import cpw.mods.fml.relauncher.SideOnly; - -public class LifeBucket extends ItemBucket -{ - public LifeBucket(Block block) - { - super(block); - // TODO Auto-generated constructor stub - } - - @Override - @SideOnly(Side.CLIENT) - public void registerIcons(IIconRegister iconRegister) - { - this.itemIcon = iconRegister.registerIcon("AlchemicalWizardry:LifeBucket"); - } -} diff --git a/src-backup/main/java/WayofTime/alchemicalWizardry/common/items/MagicianBloodOrb.java b/src-backup/main/java/WayofTime/alchemicalWizardry/common/items/MagicianBloodOrb.java deleted file mode 100644 index e6081180..00000000 --- a/src-backup/main/java/WayofTime/alchemicalWizardry/common/items/MagicianBloodOrb.java +++ /dev/null @@ -1,21 +0,0 @@ -package WayofTime.alchemicalWizardry.common.items; - -import net.minecraft.client.renderer.texture.IIconRegister; -import cpw.mods.fml.relauncher.Side; -import cpw.mods.fml.relauncher.SideOnly; - -public class MagicianBloodOrb extends EnergyBattery -{ - public MagicianBloodOrb(int damage) - { - super(damage); - orbLevel = 3; - } - - @Override - @SideOnly(Side.CLIENT) - public void registerIcons(IIconRegister iconRegister) - { - this.itemIcon = iconRegister.registerIcon("AlchemicalWizardry:MagicianBloodOrb"); - } -} diff --git a/src-backup/main/java/WayofTime/alchemicalWizardry/common/items/MasterBloodOrb.java b/src-backup/main/java/WayofTime/alchemicalWizardry/common/items/MasterBloodOrb.java deleted file mode 100644 index 5e9c19c7..00000000 --- a/src-backup/main/java/WayofTime/alchemicalWizardry/common/items/MasterBloodOrb.java +++ /dev/null @@ -1,21 +0,0 @@ -package WayofTime.alchemicalWizardry.common.items; - -import net.minecraft.client.renderer.texture.IIconRegister; -import cpw.mods.fml.relauncher.Side; -import cpw.mods.fml.relauncher.SideOnly; - -public class MasterBloodOrb extends EnergyBattery -{ - public MasterBloodOrb(int damage) - { - super(damage); - orbLevel = 4; - } - - @Override - @SideOnly(Side.CLIENT) - public void registerIcons(IIconRegister iconRegister) - { - this.itemIcon = iconRegister.registerIcon("AlchemicalWizardry:MasterBloodOrb"); - } -} diff --git a/src-backup/main/java/WayofTime/alchemicalWizardry/common/items/OrbOfTesting.java b/src-backup/main/java/WayofTime/alchemicalWizardry/common/items/OrbOfTesting.java deleted file mode 100644 index 06482ac3..00000000 --- a/src-backup/main/java/WayofTime/alchemicalWizardry/common/items/OrbOfTesting.java +++ /dev/null @@ -1,47 +0,0 @@ -package WayofTime.alchemicalWizardry.common.items; - -import net.minecraft.client.renderer.texture.IIconRegister; -import net.minecraft.creativetab.CreativeTabs; -import net.minecraft.entity.player.EntityPlayer; -import net.minecraft.item.ItemStack; -import net.minecraft.world.World; -import cpw.mods.fml.relauncher.Side; -import cpw.mods.fml.relauncher.SideOnly; - -public class OrbOfTesting extends EnergyItems -{ - public OrbOfTesting() - { - super(); - setMaxStackSize(1); - setCreativeTab(CreativeTabs.tabMisc); - setUnlocalizedName("orbOfTesting"); - setMaxDamage(100); - setFull3D(); - this.setEnergyUsed(100); - } - - @Override - @SideOnly(Side.CLIENT) - public void registerIcons(IIconRegister iconRegister) - { - this.itemIcon = iconRegister.registerIcon("AlchemicalWizardry:Untitled"); - } - - //Heals the player using the item. If the player is at full health, or if the durability cannot be used any more, - //the item is not used. - public ItemStack onItemRightClick(ItemStack par1ItemStack, World par2World, EntityPlayer par3EntityPlayer) - { - if (!par3EntityPlayer.shouldHeal()) - { - return par1ItemStack; - } - - if (this.syphonBatteries(par1ItemStack, par3EntityPlayer, this.getEnergyUsed())) - { - par3EntityPlayer.heal(1); - } - - return par1ItemStack; - } -} diff --git a/src-backup/main/java/WayofTime/alchemicalWizardry/common/items/ReinforcedTelepositionFocus.java b/src-backup/main/java/WayofTime/alchemicalWizardry/common/items/ReinforcedTelepositionFocus.java deleted file mode 100644 index 37134dbc..00000000 --- a/src-backup/main/java/WayofTime/alchemicalWizardry/common/items/ReinforcedTelepositionFocus.java +++ /dev/null @@ -1,47 +0,0 @@ -package WayofTime.alchemicalWizardry.common.items; - -import java.util.List; - -import net.minecraft.client.renderer.texture.IIconRegister; -import net.minecraft.entity.player.EntityPlayer; -import net.minecraft.item.ItemStack; -import net.minecraft.nbt.NBTTagCompound; -import cpw.mods.fml.relauncher.Side; -import cpw.mods.fml.relauncher.SideOnly; - -public class ReinforcedTelepositionFocus extends TelepositionFocus -{ - public ReinforcedTelepositionFocus() - { - super(3); - // TODO Auto-generated constructor stub - } - - @Override - @SideOnly(Side.CLIENT) - public void registerIcons(IIconRegister iconRegister) - { - //TODO - this.itemIcon = iconRegister.registerIcon("AlchemicalWizardry:ReinforcedTeleposerFocus"); - } - - @Override - public void addInformation(ItemStack par1ItemStack, EntityPlayer par2EntityPlayer, List par3List, boolean par4) - { - par3List.add("A stronger version of the focus,"); - par3List.add("using a weak shard"); - - if (!(par1ItemStack.stackTagCompound == null)) - { - NBTTagCompound itemTag = par1ItemStack.stackTagCompound; - - if (!par1ItemStack.stackTagCompound.getString("ownerName").equals("")) - { - par3List.add("Current owner: " + par1ItemStack.stackTagCompound.getString("ownerName")); - } - - par3List.add("Coords: " + itemTag.getInteger("xCoord") + ", " + itemTag.getInteger("yCoord") + ", " + itemTag.getInteger("zCoord")); - par3List.add("Bound Dimension: " + getDimensionID(par1ItemStack)); - } - } -} diff --git a/src-backup/main/java/WayofTime/alchemicalWizardry/common/items/SacrificialDagger.java b/src-backup/main/java/WayofTime/alchemicalWizardry/common/items/SacrificialDagger.java deleted file mode 100644 index 5452e519..00000000 --- a/src-backup/main/java/WayofTime/alchemicalWizardry/common/items/SacrificialDagger.java +++ /dev/null @@ -1,167 +0,0 @@ -package WayofTime.alchemicalWizardry.common.items; - -import java.util.List; - -import net.minecraft.client.renderer.texture.IIconRegister; -import net.minecraft.entity.player.EntityPlayer; -import net.minecraft.entity.player.EntityPlayerMP; -import net.minecraft.item.Item; -import net.minecraft.item.ItemStack; -import net.minecraft.tileentity.TileEntity; -import net.minecraft.util.DamageSource; -import net.minecraft.world.World; -import net.minecraftforge.common.util.FakePlayer; -import WayofTime.alchemicalWizardry.AlchemicalWizardry; -import WayofTime.alchemicalWizardry.common.spell.complex.effect.SpellHelper; -import WayofTime.alchemicalWizardry.common.tileEntity.TEAltar; -import cpw.mods.fml.relauncher.Side; -import cpw.mods.fml.relauncher.SideOnly; - -public class SacrificialDagger extends Item -{ - public SacrificialDagger() - { - super(); - this.maxStackSize = 1; - setCreativeTab(AlchemicalWizardry.tabBloodMagic); - setFull3D(); - } - - @Override - @SideOnly(Side.CLIENT) - public void registerIcons(IIconRegister iconRegister) - { - if(AlchemicalWizardry.wimpySettings) - { - this.itemIcon = iconRegister.registerIcon("AlchemicalWizardry:SheathedItem"); - }else - { - this.itemIcon = iconRegister.registerIcon("AlchemicalWizardry:SacrificialDagger"); - } - } - - public void addInformation(ItemStack par1ItemStack, EntityPlayer par2EntityPlayer, List par3List, boolean par4) - { - if(AlchemicalWizardry.wimpySettings) - { - par3List.add("A slight draining feeling tickles your fingers"); - }else - { - par3List.add("Just a prick of the"); - par3List.add("finger will suffice..."); - } - } - - public ItemStack onItemRightClick(ItemStack par1ItemStack, World par2World, EntityPlayer par3EntityPlayer) - { - if (!par3EntityPlayer.capabilities.isCreativeMode) - { - par3EntityPlayer.setHealth(par3EntityPlayer.getHealth() - 2); - } - - if (par3EntityPlayer instanceof FakePlayer) - { - return par1ItemStack; - } - - double posX = par3EntityPlayer.posX; - double posY = par3EntityPlayer.posY; - double posZ = par3EntityPlayer.posZ; - par2World.playSoundEffect((double) ((float) posX + 0.5F), (double) ((float) posY + 0.5F), (double) ((float) posZ + 0.5F), "random.fizz", 0.5F, 2.6F + (par2World.rand.nextFloat() - par2World.rand.nextFloat()) * 0.8F); - float f = (float) 1.0F; - float f1 = f * 0.6F + 0.4F; - float f2 = f * f * 0.7F - 0.5F; - float f3 = f * f * 0.6F - 0.7F; - - for (int l = 0; l < 8; ++l) - { - par2World.spawnParticle("reddust", posX + Math.random() - Math.random(), posY + Math.random() - Math.random(), posZ + Math.random() - Math.random(), f1, f2, f3); - } - - if(!par2World.isRemote && SpellHelper.isFakePlayer(par2World, par3EntityPlayer)) - //if (!(par3EntityPlayer.getClass().equals(EntityPlayerMP.class))) - { - return par1ItemStack; - } - - if(par3EntityPlayer.isPotionActive(AlchemicalWizardry.customPotionSoulFray)) - { - findAndFillAltar(par2World, par3EntityPlayer, 20); - }else - { - findAndFillAltar(par2World, par3EntityPlayer, 200); - } - - if (par3EntityPlayer.getHealth() <= 0.001f) - { - //par3EntityPlayer.inventory.dropAllItems(); - par3EntityPlayer.onDeath(DamageSource.generic); - } - - return par1ItemStack; - } - - public void findAndFillAltar(World world, EntityPlayer player, int amount) - { - int posX = (int) Math.round(player.posX - 0.5f); - int posY = (int) player.posY; - int posZ = (int) Math.round(player.posZ - 0.5f); - TEAltar altarEntity = getAltar(world, posX, posY, posZ); - - if (altarEntity == null) - { - return; - } - - altarEntity.sacrificialDaggerCall(amount, false); - altarEntity.startCycle(); - } - - public TEAltar getAltar(World world, int x, int y, int z) - { - TileEntity tileEntity = null; - - for (int i = -2; i <= 2; i++) - { - for (int j = -2; j <= 2; j++) - { - for (int k = -2; k <= 1; k++) - { - tileEntity = world.getTileEntity(i + x, k + y, j + z); - - if ((tileEntity instanceof TEAltar)) - { - return (TEAltar) tileEntity; - } - } - - if ((tileEntity instanceof TEAltar)) - { - return (TEAltar) tileEntity; - } - } - - if ((tileEntity instanceof TEAltar)) - { - return (TEAltar) tileEntity; - } - } - - if ((tileEntity instanceof TEAltar)) - { - return (TEAltar) tileEntity; - } - - return null; - } - - @Override - public String getItemStackDisplayName(ItemStack par1ItemStack) - { - if(AlchemicalWizardry.wimpySettings) - { - return "Sacrificial Orb"; - } - return super.getItemStackDisplayName(par1ItemStack); - } -} \ No newline at end of file diff --git a/src-backup/main/java/WayofTime/alchemicalWizardry/common/items/ScribeTool.java b/src-backup/main/java/WayofTime/alchemicalWizardry/common/items/ScribeTool.java deleted file mode 100644 index 0dd3cd63..00000000 --- a/src-backup/main/java/WayofTime/alchemicalWizardry/common/items/ScribeTool.java +++ /dev/null @@ -1,53 +0,0 @@ -package WayofTime.alchemicalWizardry.common.items; - -import WayofTime.alchemicalWizardry.AlchemicalWizardry; -import net.minecraft.entity.player.EntityPlayer; -import net.minecraft.item.ItemStack; -import net.minecraft.world.World; - -import java.util.List; - -public class ScribeTool extends EnergyItems -{ - private int meta; - - public ScribeTool(int inkType) - { - super(); - setMaxStackSize(1); - setCreativeTab(AlchemicalWizardry.tabBloodMagic); - setMaxDamage(10); - setEnergyUsed(10); - this.meta = inkType; - } - - @Override - public void addInformation(ItemStack par1ItemStack, EntityPlayer par2EntityPlayer, List par3List, boolean par4) - { - par3List.add("The writing is on the wall..."); - - if (!(par1ItemStack.stackTagCompound == null)) - { - par3List.add("Current owner: " + par1ItemStack.stackTagCompound.getString("ownerName")); - } - } - - @Override - public ItemStack onItemRightClick(ItemStack par1ItemStack, World par2World, EntityPlayer par3EntityPlayer) - { - EnergyItems.checkAndSetItemOwner(par1ItemStack, par3EntityPlayer); - - if (par1ItemStack.getItemDamage() > 0) - { - par1ItemStack.setItemDamage(par1ItemStack.getItemDamage() - 1); - syphonBatteries(par1ItemStack, par3EntityPlayer, this.getEnergyUsed()); - } - - return par1ItemStack; - } - - public int getType() - { - return this.meta; - } -} diff --git a/src-backup/main/java/WayofTime/alchemicalWizardry/common/items/TelepositionFocus.java b/src-backup/main/java/WayofTime/alchemicalWizardry/common/items/TelepositionFocus.java deleted file mode 100644 index 192f34f4..00000000 --- a/src-backup/main/java/WayofTime/alchemicalWizardry/common/items/TelepositionFocus.java +++ /dev/null @@ -1,124 +0,0 @@ -package WayofTime.alchemicalWizardry.common.items; - -import java.util.List; - -import net.minecraft.client.renderer.texture.IIconRegister; -import net.minecraft.entity.player.EntityPlayer; -import net.minecraft.item.ItemStack; -import net.minecraft.nbt.NBTTagCompound; -import net.minecraft.world.World; -import net.minecraftforge.common.DimensionManager; -import WayofTime.alchemicalWizardry.AlchemicalWizardry; -import cpw.mods.fml.relauncher.Side; -import cpw.mods.fml.relauncher.SideOnly; - -public class TelepositionFocus extends EnergyItems -{ - private int focusLevel; - - public TelepositionFocus(int focusLevel) - { - super(); - this.setMaxStackSize(1); - setCreativeTab(AlchemicalWizardry.tabBloodMagic); - this.focusLevel = focusLevel; - } - - @Override - @SideOnly(Side.CLIENT) - public void registerIcons(IIconRegister iconRegister) - { - //TODO - this.itemIcon = iconRegister.registerIcon("AlchemicalWizardry:TeleposerFocus"); - } - - @Override - public void addInformation(ItemStack par1ItemStack, EntityPlayer par2EntityPlayer, List par3List, boolean par4) - { - par3List.add("An Enderpearl imbued with blood"); - - if (!(par1ItemStack.stackTagCompound == null)) - { - NBTTagCompound itemTag = par1ItemStack.stackTagCompound; - - if (!par1ItemStack.stackTagCompound.getString("ownerName").equals("")) - { - par3List.add("Current owner: " + par1ItemStack.stackTagCompound.getString("ownerName")); - } - - par3List.add("Coords: " + itemTag.getInteger("xCoord") + ", " + itemTag.getInteger("yCoord") + ", " + itemTag.getInteger("zCoord")); - par3List.add("Bound Dimension: " + getDimensionID(par1ItemStack)); - } - } - - @Override - public ItemStack onItemRightClick(ItemStack par1ItemStack, World par2World, EntityPlayer par3EntityPlayer) - { - EnergyItems.checkAndSetItemOwner(par1ItemStack, par3EntityPlayer); - - if (par3EntityPlayer.isSneaking()) - { - return par1ItemStack; - } - -// if (!par2World.isRemote) -// { -// //par2World.spawnEntityInWorld(new EnergyBlastProjectile(par2World, par3EntityPlayer, damage)); -// par2World.spawnEntityInWorld(new FireProjectile(par2World, par3EntityPlayer, 10)); -// } - return par1ItemStack; - } - - public int getDimensionID(ItemStack itemStack) - { - if (itemStack.stackTagCompound == null) - { - itemStack.setTagCompound(new NBTTagCompound()); - } - - return itemStack.stackTagCompound.getInteger("dimensionId"); - } - - public World getWorld(ItemStack itemStack) - { - return DimensionManager.getWorld(getDimensionID(itemStack)); - } - - public int xCoord(ItemStack itemStack) - { - if (!(itemStack.stackTagCompound == null)) - { - return itemStack.stackTagCompound.getInteger("xCoord"); - } else - { - return 0; - } - } - - public int yCoord(ItemStack itemStack) - { - if (!(itemStack.stackTagCompound == null)) - { - return itemStack.stackTagCompound.getInteger("yCoord"); - } else - { - return 0; - } - } - - public int zCoord(ItemStack itemStack) - { - if (!(itemStack.stackTagCompound == null)) - { - return itemStack.stackTagCompound.getInteger("zCoord"); - } else - { - return 0; - } - } - - public int getFocusLevel() - { - return this.focusLevel; - } -} diff --git a/src-backup/main/java/WayofTime/alchemicalWizardry/common/items/WaterScribeTool.java b/src-backup/main/java/WayofTime/alchemicalWizardry/common/items/WaterScribeTool.java deleted file mode 100644 index 86132c84..00000000 --- a/src-backup/main/java/WayofTime/alchemicalWizardry/common/items/WaterScribeTool.java +++ /dev/null @@ -1,22 +0,0 @@ -package WayofTime.alchemicalWizardry.common.items; - -import net.minecraft.client.renderer.texture.IIconRegister; -import WayofTime.alchemicalWizardry.AlchemicalWizardry; -import cpw.mods.fml.relauncher.Side; -import cpw.mods.fml.relauncher.SideOnly; - -public class WaterScribeTool extends ScribeTool -{ - public WaterScribeTool() - { - super(1); - setCreativeTab(AlchemicalWizardry.tabBloodMagic); - } - - @Override - @SideOnly(Side.CLIENT) - public void registerIcons(IIconRegister iconRegister) - { - this.itemIcon = iconRegister.registerIcon("AlchemicalWizardry:WaterScribeTool"); - } -} diff --git a/src-backup/main/java/WayofTime/alchemicalWizardry/common/items/energy/ItemAttunedCrystal.java b/src-backup/main/java/WayofTime/alchemicalWizardry/common/items/energy/ItemAttunedCrystal.java deleted file mode 100644 index 1bf349ca..00000000 --- a/src-backup/main/java/WayofTime/alchemicalWizardry/common/items/energy/ItemAttunedCrystal.java +++ /dev/null @@ -1,387 +0,0 @@ -package WayofTime.alchemicalWizardry.common.items.energy; - -import java.util.LinkedList; -import java.util.List; - -import net.minecraft.client.renderer.texture.IIconRegister; -import net.minecraft.entity.player.EntityPlayer; -import net.minecraft.item.Item; -import net.minecraft.item.ItemStack; -import net.minecraft.nbt.NBTTagCompound; -import net.minecraft.tileentity.TileEntity; -import net.minecraft.util.ChatComponentText; -import net.minecraft.util.IIcon; -import net.minecraft.util.MovingObjectPosition; -import net.minecraft.world.World; -import net.minecraftforge.common.util.ForgeDirection; -import WayofTime.alchemicalWizardry.AlchemicalWizardry; -import WayofTime.alchemicalWizardry.api.alchemy.energy.IReagentHandler; -import WayofTime.alchemicalWizardry.api.alchemy.energy.Reagent; -import WayofTime.alchemicalWizardry.api.alchemy.energy.ReagentContainerInfo; -import WayofTime.alchemicalWizardry.api.alchemy.energy.ReagentRegistry; -import WayofTime.alchemicalWizardry.api.alchemy.energy.ReagentStack; -import WayofTime.alchemicalWizardry.api.items.interfaces.IReagentManipulator; -import WayofTime.alchemicalWizardry.common.Int3; -import WayofTime.alchemicalWizardry.common.tileEntity.TEReagentConduit; -import cpw.mods.fml.relauncher.Side; -import cpw.mods.fml.relauncher.SideOnly; - -public class ItemAttunedCrystal extends Item implements IReagentManipulator -{ - public static final int maxDistance = 5; - - public IIcon crystalBody; - public IIcon crystalLabel; - - public ItemAttunedCrystal() - { - super(); - this.setCreativeTab(AlchemicalWizardry.tabBloodMagic); - this.hasSubtypes = true; - this.maxStackSize = 1; - } - - @Override - public String getItemStackDisplayName(ItemStack stack) - { - Reagent reagent = this.getReagent(stack); - - String name = super.getItemStackDisplayName(stack); - - if(reagent != null) - { - name = name + " (" + reagent.name + ")"; - } - - return name; - } - - @Override - public void addInformation(ItemStack par1ItemStack, EntityPlayer par2EntityPlayer, List par3List, boolean par4) - { - par3List.add("A tool to tune alchemy"); - par3List.add("reagent transmission"); - - if (!(par1ItemStack.stackTagCompound == null)) - { - Reagent reagent = this.getReagent(par1ItemStack); - if(reagent != null) - { - par3List.add("Currently selected reagent: " + reagent.name); - } - - if(this.getHasSavedCoordinates(par1ItemStack)) - { - par3List.add(""); - Int3 coords = this.getCoordinates(par1ItemStack); - par3List.add("Coords: " + coords.xCoord + ", " + coords.yCoord + ", " + coords.zCoord); - par3List.add("Bound Dimension: " + getDimension(par1ItemStack)); - } - } - } - - @Override - @SideOnly(Side.CLIENT) - public void registerIcons(IIconRegister iconRegister) - { - this.crystalBody = iconRegister.registerIcon("AlchemicalWizardry:AttunedCrystal1"); - this.crystalLabel = iconRegister.registerIcon("AlchemicalWizardry:AttunedCrystal2"); - } - - @Override - @SideOnly(Side.CLIENT) - public int getColorFromItemStack(ItemStack stack, int pass) - { - switch(pass) - { - case 0: - return 256*(256*255 + 255) + 255; - case 1: - Reagent reagent = this.getReagent(stack); - if(reagent != null) - { - return (reagent.getColourRed()*256*256 + reagent.getColourGreen()*256 + reagent.getColourBlue()); - } - break; - } - - return 256*(256*255 + 255) + 255; - } - - @Override - @SideOnly(Side.CLIENT) - public boolean requiresMultipleRenderPasses() - { - return true; - } - - @Override - @SideOnly(Side.CLIENT) - public int getRenderPasses(int meta) - { - return 2; - } - - @Override - @SideOnly(Side.CLIENT) - public IIcon getIcon(ItemStack stack, int pass) - { - switch(pass) - { - case 0: - return this.crystalBody; - case 1: - return this.crystalLabel; - } - return this.itemIcon; - } - - @Override - public ItemStack onItemRightClick(ItemStack itemStack, World world, EntityPlayer player) - { - if(world.isRemote) - { - return itemStack; - } - - MovingObjectPosition movingobjectposition = this.getMovingObjectPositionFromPlayer(world, player, false); - - if (movingobjectposition == null) - { - if(player.isSneaking()) - { - this.setHasSavedCoordinates(itemStack, false); - player.addChatComponentMessage(new ChatComponentText("Clearing saved container...")); - } - - return itemStack; - } else - { - if (movingobjectposition.typeOfHit == MovingObjectPosition.MovingObjectType.BLOCK) - { - int x = movingobjectposition.blockX; - int y = movingobjectposition.blockY; - int z = movingobjectposition.blockZ; - - TileEntity tile = world.getTileEntity(x, y, z); - - if(!(tile instanceof IReagentHandler)) - { - return itemStack; - } - - IReagentHandler relay = (IReagentHandler)tile; - - if(player.isSneaking()) - { - ReagentContainerInfo[] infos = relay.getContainerInfo(ForgeDirection.UNKNOWN); - if(infos != null) - { - List reagentList = new LinkedList(); - for(ReagentContainerInfo info : infos) - { - if(info != null) - { - ReagentStack reagentStack = info.reagent; - if(reagentStack != null) - { - Reagent reagent = reagentStack.reagent; - if(reagent != null) - { - reagentList.add(reagent); - } - } - } - } - - Reagent pastReagent = this.getReagent(itemStack); - - if(reagentList.size() <= 0) - { - return itemStack; - } - - int reagentLocation = -1; - - reagentLocation = reagentList.indexOf(pastReagent); - - if(reagentLocation == -1 || reagentLocation+1 >= reagentList.size()) - { - this.setReagentWithNotification(itemStack, reagentList.get(0), player); - }else - { - this.setReagentWithNotification(itemStack, reagentList.get(reagentLocation + 1), player); - } - } - }else - { - if(this.getHasSavedCoordinates(itemStack)) - { - Int3 coords = this.getCoordinates(itemStack); - int dimension = this.getDimension(itemStack); - - if(coords == null) - { - return itemStack; - } - - if(dimension != world.provider.dimensionId || Math.abs(coords.xCoord - x) > maxDistance || Math.abs(coords.yCoord - y) > maxDistance || Math.abs(coords.zCoord - z) > maxDistance) - { - player.addChatComponentMessage(new ChatComponentText("Linked container is either too far or is in a different dimension.")); - return itemStack; - } - - TileEntity pastTile = world.getTileEntity(coords.xCoord, coords.yCoord, coords.zCoord); - if(!(pastTile instanceof TEReagentConduit)) - { - player.addChatComponentMessage(new ChatComponentText("Can no longer find linked container.")); - return itemStack; - } - - Reagent reagent = this.getReagent(itemStack); - - if(reagent == null) - { - return itemStack; - } - - TEReagentConduit pastRelay = (TEReagentConduit)pastTile; - - if(player.isSneaking()) - { - pastRelay.removeReagentDestinationViaActual(reagent, x, y, z); - }else - { - if(pastRelay.addReagentDestinationViaActual(reagent, x, y, z)) - { - player.addChatComponentMessage(new ChatComponentText("Container is now linked. Transmitting: " + reagent.name)); - }else - { - player.addChatComponentMessage(new ChatComponentText("Linked container has no connections remaining!")); - } - } - world.markBlockForUpdate(coords.xCoord, coords.yCoord, coords.zCoord); - }else - { - int dimension = world.provider.dimensionId; - - this.setDimension(itemStack, dimension); - this.setCoordinates(itemStack, new Int3(x, y, z)); - - player.addChatComponentMessage(new ChatComponentText("Linking to selected container.")); - } - } - } - } - - return itemStack; - } - - public void setCoordinates(ItemStack stack, Int3 coords) - { - if(!stack.hasTagCompound()) - { - stack.setTagCompound(new NBTTagCompound()); - } - - NBTTagCompound tag = stack.getTagCompound(); - - coords.writeToNBT(tag); - - this.setHasSavedCoordinates(stack, true); - } - - public void setDimension(ItemStack stack, int dimension) - { - if(!stack.hasTagCompound()) - { - stack.setTagCompound(new NBTTagCompound()); - } - - NBTTagCompound tag = stack.getTagCompound(); - - tag.setInteger("dimension", dimension); - } - - public Int3 getCoordinates(ItemStack stack) - { - if(!stack.hasTagCompound()) - { - stack.setTagCompound(new NBTTagCompound()); - } - - NBTTagCompound tag = stack.getTagCompound(); - - return Int3.readFromNBT(tag); - } - - public int getDimension(ItemStack stack) - { - if(!stack.hasTagCompound()) - { - stack.setTagCompound(new NBTTagCompound()); - } - - NBTTagCompound tag = stack.getTagCompound(); - - return tag.getInteger("dimension"); - } - - public void setHasSavedCoordinates(ItemStack stack, boolean flag) - { - if(!stack.hasTagCompound()) - { - stack.setTagCompound(new NBTTagCompound()); - } - - NBTTagCompound tag = stack.getTagCompound(); - - tag.setBoolean("hasSavedCoordinates", flag); - } - - public boolean getHasSavedCoordinates(ItemStack stack) - { - if(!stack.hasTagCompound()) - { - stack.setTagCompound(new NBTTagCompound()); - } - - NBTTagCompound tag = stack.getTagCompound(); - - return tag.getBoolean("hasSavedCoordinates"); - } - - public Reagent getReagent(ItemStack stack) - { - if(!stack.hasTagCompound()) - { - stack.setTagCompound(new NBTTagCompound()); - } - - NBTTagCompound tag = stack.getTagCompound(); - - return ReagentRegistry.getReagentForKey(tag.getString("reagent")); - } - - public void setReagent(ItemStack stack, Reagent reagent) - { - if(!stack.hasTagCompound()) - { - stack.setTagCompound(new NBTTagCompound()); - } - - NBTTagCompound tag = stack.getTagCompound(); - - tag.setString("reagent", ReagentRegistry.getKeyForReagent(reagent)); - } - - public void setReagentWithNotification(ItemStack stack, Reagent reagent, EntityPlayer player) - { - this.setReagent(stack, reagent); - - if(reagent != null) - { - player.addChatComponentMessage(new ChatComponentText("Attuned Crystal now set to: " + reagent.name)); - } - } -} diff --git a/src-backup/main/java/WayofTime/alchemicalWizardry/common/items/energy/ItemDestinationClearer.java b/src-backup/main/java/WayofTime/alchemicalWizardry/common/items/energy/ItemDestinationClearer.java deleted file mode 100644 index 38ae34fc..00000000 --- a/src-backup/main/java/WayofTime/alchemicalWizardry/common/items/energy/ItemDestinationClearer.java +++ /dev/null @@ -1,82 +0,0 @@ -package WayofTime.alchemicalWizardry.common.items.energy; - -import java.util.List; - -import net.minecraft.client.renderer.texture.IIconRegister; -import net.minecraft.entity.player.EntityPlayer; -import net.minecraft.item.Item; -import net.minecraft.item.ItemStack; -import net.minecraft.tileentity.TileEntity; -import net.minecraft.util.ChatComponentText; -import net.minecraft.util.MovingObjectPosition; -import net.minecraft.world.World; -import WayofTime.alchemicalWizardry.AlchemicalWizardry; -import WayofTime.alchemicalWizardry.api.alchemy.energy.Reagent; -import WayofTime.alchemicalWizardry.api.items.interfaces.IReagentManipulator; -import WayofTime.alchemicalWizardry.common.Int3; -import WayofTime.alchemicalWizardry.common.tileEntity.TEReagentConduit; -import cpw.mods.fml.relauncher.Side; -import cpw.mods.fml.relauncher.SideOnly; - -public class ItemDestinationClearer extends Item implements IReagentManipulator -{ - public ItemDestinationClearer() - { - super(); - this.setCreativeTab(AlchemicalWizardry.tabBloodMagic); - this.maxStackSize = 1; - } - - @Override - @SideOnly(Side.CLIENT) - public void registerIcons(IIconRegister iconRegister) - { - this.itemIcon = iconRegister.registerIcon("AlchemicalWizardry:TankClearer"); - } - - @Override - public void addInformation(ItemStack par1ItemStack, EntityPlayer par2EntityPlayer, List par3List, boolean par4) - { - par3List.add("Used to clear the destination"); - par3List.add("list for an alchemy container"); - } - - @Override - public ItemStack onItemRightClick(ItemStack itemStack, World world, EntityPlayer player) - { - if(world.isRemote) - { - return itemStack; - } - - MovingObjectPosition movingobjectposition = this.getMovingObjectPositionFromPlayer(world, player, false); - - if (movingobjectposition == null) - { - return itemStack; - } else - { - if (movingobjectposition.typeOfHit == MovingObjectPosition.MovingObjectType.BLOCK) - { - int x = movingobjectposition.blockX; - int y = movingobjectposition.blockY; - int z = movingobjectposition.blockZ; - - TileEntity tile = world.getTileEntity(x, y, z); - - if(!(tile instanceof TEReagentConduit)) - { - return itemStack; - } - - TEReagentConduit relay = (TEReagentConduit)tile; - - relay.reagentTargetList.clear(); - - player.addChatComponentMessage(new ChatComponentText("Destination list now cleared.")); - } - } - - return itemStack; - } -} diff --git a/src-backup/main/java/WayofTime/alchemicalWizardry/common/items/energy/ItemTankSegmenter.java b/src-backup/main/java/WayofTime/alchemicalWizardry/common/items/energy/ItemTankSegmenter.java deleted file mode 100644 index 14772607..00000000 --- a/src-backup/main/java/WayofTime/alchemicalWizardry/common/items/energy/ItemTankSegmenter.java +++ /dev/null @@ -1,278 +0,0 @@ -package WayofTime.alchemicalWizardry.common.items.energy; - -import java.util.LinkedList; -import java.util.List; - -import net.minecraft.client.renderer.texture.IIconRegister; -import net.minecraft.entity.player.EntityPlayer; -import net.minecraft.item.Item; -import net.minecraft.item.ItemStack; -import net.minecraft.nbt.NBTTagCompound; -import net.minecraft.tileentity.TileEntity; -import net.minecraft.util.ChatComponentText; -import net.minecraft.util.IIcon; -import net.minecraft.util.MovingObjectPosition; -import net.minecraft.world.World; -import net.minecraftforge.common.util.ForgeDirection; -import WayofTime.alchemicalWizardry.AlchemicalWizardry; -import WayofTime.alchemicalWizardry.api.alchemy.energy.IReagentHandler; -import WayofTime.alchemicalWizardry.api.alchemy.energy.ISegmentedReagentHandler; -import WayofTime.alchemicalWizardry.api.alchemy.energy.Reagent; -import WayofTime.alchemicalWizardry.api.alchemy.energy.ReagentContainerInfo; -import WayofTime.alchemicalWizardry.api.alchemy.energy.ReagentRegistry; -import WayofTime.alchemicalWizardry.api.alchemy.energy.ReagentStack; -import WayofTime.alchemicalWizardry.api.items.interfaces.IReagentManipulator; -import WayofTime.alchemicalWizardry.common.Int3; -import cpw.mods.fml.relauncher.Side; -import cpw.mods.fml.relauncher.SideOnly; - -public class ItemTankSegmenter extends Item implements IReagentManipulator -{ - public IIcon crystalBody; - public IIcon crystalLabel; - - public ItemTankSegmenter() - { - super(); - this.setCreativeTab(AlchemicalWizardry.tabBloodMagic); - this.hasSubtypes = true; - this.maxStackSize = 1; - } - - @Override - public String getItemStackDisplayName(ItemStack stack) - { - Reagent reagent = this.getReagent(stack); - - String name = super.getItemStackDisplayName(stack); - - if(reagent != null) - { - name = name + " (" + reagent.name + ")"; - } - - return name; - } - - @Override - public void addInformation(ItemStack par1ItemStack, EntityPlayer par2EntityPlayer, List par3List, boolean par4) - { - par3List.add("Used to designate which"); - par3List.add("reagents can go into a container"); - - if (!(par1ItemStack.stackTagCompound == null)) - { - Reagent reagent = this.getReagent(par1ItemStack); - if(reagent != null) - { - par3List.add("Currently selected reagent: " + reagent.name); - } - } - } - - @Override - @SideOnly(Side.CLIENT) - public void registerIcons(IIconRegister iconRegister) - { - this.crystalBody = iconRegister.registerIcon("AlchemicalWizardry:TankSegmenter1"); - this.crystalLabel = iconRegister.registerIcon("AlchemicalWizardry:TankSegmenter2"); - } - - @Override - @SideOnly(Side.CLIENT) - public int getColorFromItemStack(ItemStack stack, int pass) - { - switch(pass) - { - case 0: - return 256*(256*255 + 255) + 255; - case 1: - Reagent reagent = this.getReagent(stack); - if(reagent != null) - { - return (reagent.getColourRed()*256*256 + reagent.getColourGreen()*256 + reagent.getColourBlue()); - } - break; - } - - return 256*(256*255 + 255) + 255; - } - - @Override - @SideOnly(Side.CLIENT) - public boolean requiresMultipleRenderPasses() - { - return true; - } - - @Override - @SideOnly(Side.CLIENT) - public int getRenderPasses(int meta) - { - return 2; - } - - @Override - @SideOnly(Side.CLIENT) - public IIcon getIcon(ItemStack stack, int pass) - { - switch(pass) - { - case 0: - return this.crystalBody; - case 1: - return this.crystalLabel; - } - return this.itemIcon; - } - - @Override - public ItemStack onItemRightClick(ItemStack itemStack, World world, EntityPlayer player) - { - if(world.isRemote) - { - return itemStack; - } - - MovingObjectPosition movingobjectposition = this.getMovingObjectPositionFromPlayer(world, player, false); - - if (movingobjectposition == null) - { - return itemStack; - } else - { - if (movingobjectposition.typeOfHit == MovingObjectPosition.MovingObjectType.BLOCK) - { - int x = movingobjectposition.blockX; - int y = movingobjectposition.blockY; - int z = movingobjectposition.blockZ; - - TileEntity tile = world.getTileEntity(x, y, z); - - if(!(tile instanceof ISegmentedReagentHandler)) - { - return itemStack; - } - - ISegmentedReagentHandler reagentHandler = (ISegmentedReagentHandler)tile; - - if(player.isSneaking()) - { - ReagentContainerInfo[] infos = reagentHandler.getContainerInfo(ForgeDirection.UNKNOWN); - if(infos != null) - { - List reagentList = new LinkedList(); - for(ReagentContainerInfo info : infos) - { - if(info != null) - { - ReagentStack reagentStack = info.reagent; - if(reagentStack != null) - { - Reagent reagent = reagentStack.reagent; - if(reagent != null) - { - reagentList.add(reagent); - } - } - } - } - - Reagent pastReagent = this.getReagent(itemStack); - - boolean goForNext = false; - boolean hasFound = false; - for(Reagent reagent : reagentList) - { - if(goForNext) - { - goForNext = false; - break; - } - - if(reagent == pastReagent) - { - goForNext = true; - hasFound = true; - } - } - - if(hasFound) - { - if(goForNext) - { - this.setReagentWithNotification(itemStack, reagentList.get(0), player); - } - }else - { - if(reagentList.size() >= 1) - { - this.setReagentWithNotification(itemStack, reagentList.get(0), player); - } - } - } - - }else - { - Reagent reagent = this.getReagent(itemStack); - if(reagent == null) - { - //TODO: Send message that "All are wiped" - reagentHandler.getAttunedTankMap().clear(); - return itemStack; - } - int totalTankSize = reagentHandler.getNumberOfTanks(); - int numberAssigned = reagentHandler.getTanksTunedToReagent(reagent) + 1; - - if(numberAssigned > totalTankSize) - { - numberAssigned = 0; - } - - player.addChatComponentMessage(new ChatComponentText("Tank now has " + numberAssigned + " tank(s) set to: " + reagent.name)); - - reagentHandler.setTanksTunedToReagent(reagent, numberAssigned); - } - }else if(movingobjectposition.typeOfHit == MovingObjectPosition.MovingObjectType.MISS) - { - this.setReagent(itemStack, null); - } - } - - return itemStack; - } - - public Reagent getReagent(ItemStack stack) - { - if(!stack.hasTagCompound()) - { - stack.setTagCompound(new NBTTagCompound()); - } - - NBTTagCompound tag = stack.getTagCompound(); - - return ReagentRegistry.getReagentForKey(tag.getString("reagent")); - } - - public void setReagent(ItemStack stack, Reagent reagent) - { - if(!stack.hasTagCompound()) - { - stack.setTagCompound(new NBTTagCompound()); - } - - NBTTagCompound tag = stack.getTagCompound(); - - tag.setString("reagent", ReagentRegistry.getKeyForReagent(reagent)); - } - - public void setReagentWithNotification(ItemStack stack, Reagent reagent, EntityPlayer player) - { - this.setReagent(stack, reagent); - - if(reagent != null) - { - player.addChatComponentMessage(new ChatComponentText("Tank Segmenter now set to: " + reagent.name)); - } - } -} diff --git a/src-backup/main/java/WayofTime/alchemicalWizardry/common/items/forestry/ItemBloodFrame.java b/src-backup/main/java/WayofTime/alchemicalWizardry/common/items/forestry/ItemBloodFrame.java deleted file mode 100644 index 32da83be..00000000 --- a/src-backup/main/java/WayofTime/alchemicalWizardry/common/items/forestry/ItemBloodFrame.java +++ /dev/null @@ -1,151 +0,0 @@ -package WayofTime.alchemicalWizardry.common.items.forestry; - -import java.util.List; - -import net.minecraft.client.renderer.texture.IIconRegister; -import net.minecraft.entity.player.EntityPlayer; -import net.minecraft.item.ItemStack; -import net.minecraft.world.World; -import WayofTime.alchemicalWizardry.AlchemicalWizardry; -import WayofTime.alchemicalWizardry.common.items.EnergyItems; -import cpw.mods.fml.relauncher.Side; -import cpw.mods.fml.relauncher.SideOnly; - -public class ItemBloodFrame extends EnergyItems //implements IHiveFrame -{ - public ItemBloodFrame() - { - super(); - this.maxStackSize = 1; - this.setMaxDamage(10); - //setMaxDamage(1000); - setEnergyUsed(3000); - setCreativeTab(AlchemicalWizardry.tabBloodMagic); - } - - @Override - public void addInformation(ItemStack par1ItemStack, EntityPlayer par2EntityPlayer, List par3List, boolean par4) - { - par3List.add("Stirs bees into a frenzy."); - - if (!(par1ItemStack.stackTagCompound == null)) - { - par3List.add("Current owner: " + par1ItemStack.stackTagCompound.getString("ownerName")); - } - } - - @Override - @SideOnly(Side.CLIENT) - public void registerIcons(IIconRegister iconRegister) - { - this.itemIcon = iconRegister.registerIcon("AlchemicalWizardry:BloodFrame"); - } - - @Override - public ItemStack onItemRightClick(ItemStack par1ItemStack, World par2World, EntityPlayer par3EntityPlayer) - { - EnergyItems.checkAndSetItemOwner(par1ItemStack, par3EntityPlayer); - - if(par1ItemStack.getItemDamage()>0) - { - EnergyItems.syphonBatteries(par1ItemStack, par3EntityPlayer, getEnergyUsed()); - par1ItemStack.setItemDamage(par1ItemStack.getItemDamage()-1); - } - - return par1ItemStack; - } - - /**TODO Bee Stuff - @Override - public float getTerritoryModifier(IBeeGenome genome, float currentModifier) - { - // TODO Auto-generated method stub - return 1; - } - - @Override - public float getMutationModifier(IBeeGenome genome, IBeeGenome mate, float currentModifier) - { - // TODO Auto-generated method stub - return 1; - } - - @Override - public float getLifespanModifier(IBeeGenome genome, IBeeGenome mate, float currentModifier) - { - // TODO Auto-generated method stub - return 0.0001f; - } - - @Override - public float getProductionModifier(IBeeGenome genome, float currentModifier) - { - // TODO Auto-generated method stub - return 0; - } - - @Override - public float getFloweringModifier(IBeeGenome genome, float currentModifier) - { - // TODO Auto-generated method stub - return 1; - } - - @Override - public float getGeneticDecay(IBeeGenome genome, float currentModifier) - { - // TODO Auto-generated method stub - return 1; - } - - @Override - public boolean isSealed() - { - // TODO Auto-generated method stub - return false; - } - - @Override - public boolean isSelfLighted() - { - // TODO Auto-generated method stub - return false; - } - - @Override - public boolean isSunlightSimulated() - { - // TODO Auto-generated method stub - return false; - } - - @Override - public boolean isHellish() - { - // TODO Auto-generated method stub - return false; - } - - @Override - public ItemStack frameUsed(IBeeHousing housing, ItemStack frame, IBee queen, int wear) - { - // TODO Auto-generated method stub - if(EnergyItems.canSyphonInContainer(frame, getEnergyUsed()*wear)) - { - EnergyItems.syphonWhileInContainer(frame, getEnergyUsed()*wear); - return frame; - }else - { - frame.setItemDamage(frame.getItemDamage() + wear); - if(frame.getItemDamage()>=frame.getMaxDamage()) - { - return null; - } - return frame; - } - - } - - */ - -} diff --git a/src-backup/main/java/WayofTime/alchemicalWizardry/common/items/potion/AlchemyFlask.java b/src-backup/main/java/WayofTime/alchemicalWizardry/common/items/potion/AlchemyFlask.java deleted file mode 100644 index 05f3d698..00000000 --- a/src-backup/main/java/WayofTime/alchemicalWizardry/common/items/potion/AlchemyFlask.java +++ /dev/null @@ -1,435 +0,0 @@ -package WayofTime.alchemicalWizardry.common.items.potion; - -import java.util.ArrayList; -import java.util.Iterator; -import java.util.List; -import java.util.Map; -import java.util.Map.Entry; - -import net.minecraft.client.renderer.texture.IIconRegister; -import net.minecraft.entity.EntityLivingBase; -import net.minecraft.entity.ai.attributes.AttributeModifier; -import net.minecraft.entity.ai.attributes.IAttribute; -import net.minecraft.entity.player.EntityPlayer; -import net.minecraft.entity.projectile.EntityPotion; -import net.minecraft.init.Items; -import net.minecraft.item.EnumAction; -import net.minecraft.item.Item; -import net.minecraft.item.ItemStack; -import net.minecraft.nbt.NBTTagCompound; -import net.minecraft.nbt.NBTTagList; -import net.minecraft.potion.Potion; -import net.minecraft.potion.PotionEffect; -import net.minecraft.util.EnumChatFormatting; -import net.minecraft.util.StatCollector; -import net.minecraft.world.World; -import net.minecraftforge.common.util.Constants; -import WayofTime.alchemicalWizardry.AlchemicalWizardry; -import WayofTime.alchemicalWizardry.api.alchemy.AlchemyPotionHelper; - -import com.google.common.collect.HashMultimap; - -import cpw.mods.fml.relauncher.Side; -import cpw.mods.fml.relauncher.SideOnly; - -public class AlchemyFlask extends Item -{ - private int maxPotionAmount = 20; - - public AlchemyFlask() - { - super(); - this.setMaxDamage(8); - this.setMaxStackSize(1); - setCreativeTab(AlchemicalWizardry.tabBloodMagic); - // TODO Auto-generated constructor stub - } - - @Override - @SideOnly(Side.CLIENT) - public void registerIcons(IIconRegister iconRegister) - { - this.itemIcon = iconRegister.registerIcon("AlchemicalWizardry:PotionFlask"); - } - - public static ArrayList getEffects(ItemStack par1ItemStack) - { - if (par1ItemStack.hasTagCompound() && par1ItemStack.getTagCompound().hasKey("CustomFlaskEffects")) - { - ArrayList arraylist = new ArrayList(); - NBTTagList nbttaglist = par1ItemStack.getTagCompound().getTagList("CustomFlaskEffects", Constants.NBT.TAG_COMPOUND); - - for (int i = 0; i < nbttaglist.tagCount(); ++i) - { - NBTTagCompound nbttagcompound = (NBTTagCompound) nbttaglist.getCompoundTagAt(i); - arraylist.add(AlchemyPotionHelper.readEffectFromNBT(nbttagcompound)); - } - - return arraylist; - } else - { - return null; - } - } - - public static ArrayList getPotionEffects(ItemStack par1ItemStack) - { - ArrayList list = AlchemyFlask.getEffects(par1ItemStack); - - if (list != null) - { - ArrayList newList = new ArrayList(); - - for (AlchemyPotionHelper aph : list) - { - newList.add(aph.getPotionEffect()); - } - - return newList; - } else - { - return null; - } - } - - public static void setEffects(ItemStack par1ItemStack, List list) - { - NBTTagCompound itemTag = par1ItemStack.stackTagCompound; - - if (itemTag == null) - { - par1ItemStack.setTagCompound(new NBTTagCompound()); - } - - NBTTagList nbttaglist = new NBTTagList(); - - for (AlchemyPotionHelper aph : list) - { - nbttaglist.appendTag(AlchemyPotionHelper.setEffectToNBT(aph)); - } - - par1ItemStack.stackTagCompound.setTag("CustomFlaskEffects", nbttaglist); - } - - public ItemStack onEaten(ItemStack par1ItemStack, World par2World, EntityPlayer par3EntityPlayer) - { - if (!par3EntityPlayer.capabilities.isCreativeMode) - { - par1ItemStack.setItemDamage(par1ItemStack.getItemDamage() + 1); - } - - if (!par2World.isRemote) - { - ArrayList list = this.getEffects(par1ItemStack); - - if (list != null) - { - for (AlchemyPotionHelper aph : list) - { - PotionEffect pe = aph.getPotionEffect(); - - if (pe != null) - { - //if(pe.get) - par3EntityPlayer.addPotionEffect(pe); - } - } - } - } - - return par1ItemStack; - } - - /** - * How long it takes to use or consume an item - */ - public int getMaxItemUseDuration(ItemStack par1ItemStack) - { - return 32; - } - - /** - * returns the action that specifies what animation to play when the items is being used - */ - public EnumAction getItemUseAction(ItemStack par1ItemStack) - { - if (this.isPotionThrowable(par1ItemStack)) - { - return EnumAction.none; - } - - return EnumAction.drink; - } - - /** - * Called whenever this item is equipped and the right mouse button is pressed. Args: itemStack, world, entityPlayer - */ - public ItemStack onItemRightClick(ItemStack par1ItemStack, World par2World, EntityPlayer par3EntityPlayer) - { -// if(par3EntityPlayer.isSneaking()) -// { -// this.setIsPotionThrowable(true, par1ItemStack); -// return par1ItemStack; -// } - if (par1ItemStack.getItemDamage() < par1ItemStack.getMaxDamage()) - { - if (this.isPotionThrowable(par1ItemStack)) - { - if (!par2World.isRemote) - { - EntityPotion entityPotion = this.getEntityPotion(par1ItemStack, par2World, par3EntityPlayer); - - if (entityPotion != null) - { - float velocityChange = 2.0f; - entityPotion.motionX *= velocityChange; - entityPotion.motionY *= velocityChange; - entityPotion.motionZ *= velocityChange; - par2World.spawnEntityInWorld(entityPotion); - par1ItemStack.setItemDamage(par1ItemStack.getItemDamage() + 1); - } - } - - return par1ItemStack; - } - - par3EntityPlayer.setItemInUse(par1ItemStack, this.getMaxItemUseDuration(par1ItemStack)); - } - - return par1ItemStack; - } - - public void setConcentrationOfPotion(ItemStack par1ItemStack, int potionID, int concentration) - { - ArrayList list = this.getEffects(par1ItemStack); - - if (list != null) - { - for (AlchemyPotionHelper aph : list) - { - if (aph.getPotionID() == potionID) - { - aph.setConcentration(concentration); - break; - } - } - - this.setEffects(par1ItemStack, list); - } - } - - public void setDurationFactorOfPotion(ItemStack par1ItemStack, int potionID, int durationFactor) - { - ArrayList list = this.getEffects(par1ItemStack); - - if (list != null) - { - for (AlchemyPotionHelper aph : list) - { - if (aph.getPotionID() == potionID) - { - aph.setDurationFactor(durationFactor); - break; - } - } - - this.setEffects(par1ItemStack, list); - } - } - - public boolean hasPotionEffect(ItemStack par1ItemStack, int potionID) - { - return false; - } - - public int getNumberOfPotionEffects(ItemStack par1ItemStack) - { - if (getEffects(par1ItemStack) != null) - { - return getEffects(par1ItemStack).size(); - } else - { - return 0; - } - } - - public boolean addPotionEffect(ItemStack par1ItemStack, int potionID, int tickDuration) - { - int i = 0; - ArrayList list = this.getEffects(par1ItemStack); - - if (list != null) - { - for (AlchemyPotionHelper aph : list) - { - if (aph.getPotionID() == potionID) - { - return false; - } - - i++; - } - - //if(i 0) - { - Iterator iterator1 = map.entrySet().iterator(); - - while (iterator1.hasNext()) - { - Entry entry = (Entry) iterator1.next(); - AttributeModifier attributemodifier = (AttributeModifier) entry.getValue(); - AttributeModifier attributemodifier1 = new AttributeModifier(attributemodifier.getName(), potion.func_111183_a(potioneffect.getAmplifier(), attributemodifier), attributemodifier.getOperation()); - hashmultimap.put(((IAttribute)entry.getKey()).getAttributeUnlocalizedName(), attributemodifier1); - } - } - - if (potioneffect.getAmplifier() > 0) - { - s = s + " " + StatCollector.translateToLocal("potion.potency." + potioneffect.getAmplifier()).trim(); - } - - if (potioneffect.getDuration() > 20) - { - s = s + " (" + Potion.getDurationString(potioneffect) + ")"; - } - - if (potion.isBadEffect()) - { - par3List.add(EnumChatFormatting.RED + s); - } else - { - par3List.add(EnumChatFormatting.GRAY + s); - } - } - } else - { - String s1 = StatCollector.translateToLocal("potion.empty").trim(); - par3List.add(EnumChatFormatting.GRAY + s1); - } - - if (!hashmultimap.isEmpty()) - { - par3List.add(""); - par3List.add(EnumChatFormatting.DARK_PURPLE + StatCollector.translateToLocal("potion.effects.whenDrank")); - iterator = hashmultimap.entries().iterator(); - - while (iterator.hasNext()) - { - Entry entry1 = (Entry) iterator.next(); - AttributeModifier attributemodifier2 = (AttributeModifier) entry1.getValue(); - double d0 = attributemodifier2.getAmount(); - double d1; - - if (attributemodifier2.getOperation() != 1 && attributemodifier2.getOperation() != 2) - { - d1 = attributemodifier2.getAmount(); - } else - { - d1 = attributemodifier2.getAmount() * 100.0D; - } - - if (d0 > 0.0D) - { - par3List.add(EnumChatFormatting.BLUE + StatCollector.translateToLocalFormatted("attribute.modifier.plus." + attributemodifier2.getOperation(), new Object[]{ItemStack.field_111284_a.format(d1), StatCollector.translateToLocal("attribute.name." + (String) entry1.getKey())})); - } else if (d0 < 0.0D) - { - d1 *= -1.0D; - par3List.add(EnumChatFormatting.RED + StatCollector.translateToLocalFormatted("attribute.modifier.take." + attributemodifier2.getOperation(), new Object[]{ItemStack.field_111284_a.format(d1), StatCollector.translateToLocal("attribute.name." + (String) entry1.getKey())})); - } - } - } - } - - public boolean isPotionThrowable(ItemStack par1ItemStack) - { - if (par1ItemStack.hasTagCompound() && par1ItemStack.getTagCompound().getBoolean("throwable")) - { - return true; - } else - { - return false; - } - - //return false; - } - - public void setIsPotionThrowable(boolean flag, ItemStack par1ItemStack) - { - if (!par1ItemStack.hasTagCompound()) - { - par1ItemStack.setTagCompound(new NBTTagCompound()); - } - - par1ItemStack.stackTagCompound.setBoolean("throwable", flag); - } - - public EntityPotion getEntityPotion(ItemStack par1ItemStack, World worldObj, EntityLivingBase entityLivingBase) - { - ItemStack potionStack = new ItemStack(Items.potionitem, 1, 0); - potionStack.setTagCompound(new NBTTagCompound()); - ArrayList potionList = this.getPotionEffects(par1ItemStack); - - if (potionList == null) - { - return null; - } - - NBTTagList nbttaglist = new NBTTagList(); - - for (PotionEffect pe : potionList) - { - NBTTagCompound d = new NBTTagCompound(); - d.setByte("Id", (byte) pe.getPotionID()); - d.setByte("Amplifier", (byte) pe.getAmplifier()); - //byte b1 = par0NBTTagCompound.getByte("Amplifier"); - d.setInteger("Duration", pe.getDuration()); - //int i = par0NBTTagCompound.getInteger("Duration"); - d.setBoolean("Ambient", pe.getIsAmbient()); - // boolean flag = par0NBTTagCompound.getBoolean("Ambient"); - nbttaglist.appendTag(d); - } - - potionStack.stackTagCompound.setTag("CustomPotionEffects", nbttaglist); - EntityPotion entityPotion = new EntityPotion(worldObj, entityLivingBase, potionStack); - return entityPotion; - } -} diff --git a/src-backup/main/java/WayofTime/alchemicalWizardry/common/items/potion/AlchemyReagent.java b/src-backup/main/java/WayofTime/alchemicalWizardry/common/items/potion/AlchemyReagent.java deleted file mode 100644 index 3987c581..00000000 --- a/src-backup/main/java/WayofTime/alchemicalWizardry/common/items/potion/AlchemyReagent.java +++ /dev/null @@ -1,120 +0,0 @@ -package WayofTime.alchemicalWizardry.common.items.potion; - -import java.util.List; - -import net.minecraft.client.renderer.texture.IIconRegister; -import net.minecraft.entity.player.EntityPlayer; -import net.minecraft.item.Item; -import net.minecraft.item.ItemStack; -import net.minecraft.util.EnumChatFormatting; - -import org.lwjgl.input.Keyboard; - -import WayofTime.alchemicalWizardry.AlchemicalWizardry; -import WayofTime.alchemicalWizardry.ModItems; -import WayofTime.alchemicalWizardry.api.alchemy.AlchemyRecipeRegistry; -import cpw.mods.fml.relauncher.Side; -import cpw.mods.fml.relauncher.SideOnly; - -public class AlchemyReagent extends Item -{ - public AlchemyReagent() - { - super(); - setCreativeTab(AlchemicalWizardry.tabBloodMagic); - this.setMaxStackSize(64); - // TODO Auto-generated constructor stub - } - - @Override - @SideOnly(Side.CLIENT) - public void registerIcons(IIconRegister iconRegister) - { - if (this == ModItems.incendium) - { - this.itemIcon = iconRegister.registerIcon("AlchemicalWizardry:Incendium"); - return; - } - - if (this == ModItems.magicales) - { - this.itemIcon = iconRegister.registerIcon("AlchemicalWizardry:Magicales"); - return; - } - - if (this == ModItems.sanctus) - { - this.itemIcon = iconRegister.registerIcon("AlchemicalWizardry:Sanctus"); - return; - } - - if (this == ModItems.aether) - { - this.itemIcon = iconRegister.registerIcon("AlchemicalWizardry:Aether"); - return; - } - - if (this == ModItems.simpleCatalyst) - { - this.itemIcon = iconRegister.registerIcon("AlchemicalWizardry:SimpleCatalyst"); - return; - } - - if (this == ModItems.crepitous) - { - this.itemIcon = iconRegister.registerIcon("AlchemicalWizardry:Crepitous"); - return; - } - - if (this == ModItems.crystallos) - { - this.itemIcon = iconRegister.registerIcon("AlchemicalWizardry:Crystallos"); - return; - } - - if (this == ModItems.terrae) - { - this.itemIcon = iconRegister.registerIcon("AlchemicalWizardry:Terrae"); - return; - } - - if (this == ModItems.aquasalus) - { - this.itemIcon = iconRegister.registerIcon("AlchemicalWizardry:Aquasalus"); - return; - } - - if (this == ModItems.tennebrae) - { - this.itemIcon = iconRegister.registerIcon("AlchemicalWizardry:Tennebrae"); - return; - } - } - - @Override - public void addInformation(ItemStack par1ItemStack, EntityPlayer par2EntityPlayer, List par3List, boolean par4) - { - par3List.add("Used in alchemy"); - - if (Keyboard.isKeyDown(Keyboard.KEY_RSHIFT) || Keyboard.isKeyDown(Keyboard.KEY_LSHIFT)) - { - ItemStack[] recipe = AlchemyRecipeRegistry.getRecipeForItemStack(par1ItemStack); - - if (recipe != null) - { - par3List.add(EnumChatFormatting.BLUE + "Recipe:"); - - for (ItemStack item : recipe) - { - if (item != null) - { - par3List.add("" + item.getDisplayName()); - } - } - } - } else - { - par3List.add("-Press " + EnumChatFormatting.BLUE + "shift" + EnumChatFormatting.GRAY + " for Recipe-"); - } - } -} diff --git a/src-backup/main/java/WayofTime/alchemicalWizardry/common/items/potion/AverageLengtheningCatalyst.java b/src-backup/main/java/WayofTime/alchemicalWizardry/common/items/potion/AverageLengtheningCatalyst.java deleted file mode 100644 index 841a9729..00000000 --- a/src-backup/main/java/WayofTime/alchemicalWizardry/common/items/potion/AverageLengtheningCatalyst.java +++ /dev/null @@ -1,20 +0,0 @@ -package WayofTime.alchemicalWizardry.common.items.potion; - -import net.minecraft.client.renderer.texture.IIconRegister; -import cpw.mods.fml.relauncher.Side; -import cpw.mods.fml.relauncher.SideOnly; - -public class AverageLengtheningCatalyst extends LengtheningCatalyst -{ - public AverageLengtheningCatalyst() - { - super(2); - } - - @Override - @SideOnly(Side.CLIENT) - public void registerIcons(IIconRegister iconRegister) - { - this.itemIcon = iconRegister.registerIcon("AlchemicalWizardry:AverageLengtheningCatalyst"); - } -} \ No newline at end of file diff --git a/src-backup/main/java/WayofTime/alchemicalWizardry/common/items/potion/AveragePowerCatalyst.java b/src-backup/main/java/WayofTime/alchemicalWizardry/common/items/potion/AveragePowerCatalyst.java deleted file mode 100644 index 3ce2cde9..00000000 --- a/src-backup/main/java/WayofTime/alchemicalWizardry/common/items/potion/AveragePowerCatalyst.java +++ /dev/null @@ -1,20 +0,0 @@ -package WayofTime.alchemicalWizardry.common.items.potion; - -import net.minecraft.client.renderer.texture.IIconRegister; -import cpw.mods.fml.relauncher.Side; -import cpw.mods.fml.relauncher.SideOnly; - -public class AveragePowerCatalyst extends PowerCatalyst -{ - public AveragePowerCatalyst() - { - super(2); - } - - @Override - @SideOnly(Side.CLIENT) - public void registerIcons(IIconRegister iconRegister) - { - this.itemIcon = iconRegister.registerIcon("AlchemicalWizardry:AveragePowerCatalyst"); - } -} \ No newline at end of file diff --git a/src-backup/main/java/WayofTime/alchemicalWizardry/common/items/potion/CombinationalCatalyst.java b/src-backup/main/java/WayofTime/alchemicalWizardry/common/items/potion/CombinationalCatalyst.java deleted file mode 100644 index 8097cde0..00000000 --- a/src-backup/main/java/WayofTime/alchemicalWizardry/common/items/potion/CombinationalCatalyst.java +++ /dev/null @@ -1,24 +0,0 @@ -package WayofTime.alchemicalWizardry.common.items.potion; - -import cpw.mods.fml.relauncher.Side; -import cpw.mods.fml.relauncher.SideOnly; -import net.minecraft.client.renderer.texture.IIconRegister; -import net.minecraft.item.Item; -import WayofTime.alchemicalWizardry.AlchemicalWizardry; -import WayofTime.alchemicalWizardry.common.alchemy.ICombinationalCatalyst; - -public class CombinationalCatalyst extends Item implements ICombinationalCatalyst -{ - public CombinationalCatalyst() - { - super(); - this.setCreativeTab(AlchemicalWizardry.tabBloodMagic); - } - - @Override - @SideOnly(Side.CLIENT) - public void registerIcons(IIconRegister iconRegister) - { - this.itemIcon = iconRegister.registerIcon("AlchemicalWizardry:CombinationalCatalyst"); - } -} diff --git a/src-backup/main/java/WayofTime/alchemicalWizardry/common/items/potion/EnhancedFillingAgent.java b/src-backup/main/java/WayofTime/alchemicalWizardry/common/items/potion/EnhancedFillingAgent.java deleted file mode 100644 index ecbad19d..00000000 --- a/src-backup/main/java/WayofTime/alchemicalWizardry/common/items/potion/EnhancedFillingAgent.java +++ /dev/null @@ -1,57 +0,0 @@ -package WayofTime.alchemicalWizardry.common.items.potion; - -import java.util.Random; - -import net.minecraft.client.renderer.texture.IIconRegister; -import WayofTime.alchemicalWizardry.AlchemicalWizardry; -import cpw.mods.fml.relauncher.Side; -import cpw.mods.fml.relauncher.SideOnly; - -public class EnhancedFillingAgent extends WeakFillingAgent -{ - public EnhancedFillingAgent() - { - super(); - setCreativeTab(AlchemicalWizardry.tabBloodMagic); - } - - @Override - public int getFilledAmountForPotionNumber(int potionEffects) - { - Random rand = new Random(); - - if (potionEffects == 0) - { - return 8; - } - - //if(potionEffects >=1 && potionEffects<=5) - { - switch (potionEffects) - { - case 1: - return 6; - - case 2: - return 4; - - case 3: - return 3; - - case 4: - return 2; - - case 5: - return 2; - } - } - return 0; - } - - @Override - @SideOnly(Side.CLIENT) - public void registerIcons(IIconRegister iconRegister) - { - this.itemIcon = iconRegister.registerIcon("AlchemicalWizardry:EnhancedFillingAgent"); - } -} diff --git a/src-backup/main/java/WayofTime/alchemicalWizardry/common/items/potion/GreaterLengtheningCatalyst.java b/src-backup/main/java/WayofTime/alchemicalWizardry/common/items/potion/GreaterLengtheningCatalyst.java deleted file mode 100644 index 65bb052e..00000000 --- a/src-backup/main/java/WayofTime/alchemicalWizardry/common/items/potion/GreaterLengtheningCatalyst.java +++ /dev/null @@ -1,20 +0,0 @@ -package WayofTime.alchemicalWizardry.common.items.potion; - -import net.minecraft.client.renderer.texture.IIconRegister; -import cpw.mods.fml.relauncher.Side; -import cpw.mods.fml.relauncher.SideOnly; - -public class GreaterLengtheningCatalyst extends LengtheningCatalyst -{ - public GreaterLengtheningCatalyst() - { - super(3); - } - - @Override - @SideOnly(Side.CLIENT) - public void registerIcons(IIconRegister iconRegister) - { - this.itemIcon = iconRegister.registerIcon("AlchemicalWizardry:GreaterLengtheningCatalyst"); - } -} \ No newline at end of file diff --git a/src-backup/main/java/WayofTime/alchemicalWizardry/common/items/potion/GreaterPowerCatalyst.java b/src-backup/main/java/WayofTime/alchemicalWizardry/common/items/potion/GreaterPowerCatalyst.java deleted file mode 100644 index e5dd6d47..00000000 --- a/src-backup/main/java/WayofTime/alchemicalWizardry/common/items/potion/GreaterPowerCatalyst.java +++ /dev/null @@ -1,20 +0,0 @@ -package WayofTime.alchemicalWizardry.common.items.potion; - -import net.minecraft.client.renderer.texture.IIconRegister; -import cpw.mods.fml.relauncher.Side; -import cpw.mods.fml.relauncher.SideOnly; - -public class GreaterPowerCatalyst extends PowerCatalyst -{ - public GreaterPowerCatalyst() - { - super(3); - } - - @Override - @SideOnly(Side.CLIENT) - public void registerIcons(IIconRegister iconRegister) - { - this.itemIcon = iconRegister.registerIcon("AlchemicalWizardry:GreaterPowerCatalyst"); - } -} \ No newline at end of file diff --git a/src-backup/main/java/WayofTime/alchemicalWizardry/common/items/potion/LengtheningCatalyst.java b/src-backup/main/java/WayofTime/alchemicalWizardry/common/items/potion/LengtheningCatalyst.java deleted file mode 100644 index 7476f689..00000000 --- a/src-backup/main/java/WayofTime/alchemicalWizardry/common/items/potion/LengtheningCatalyst.java +++ /dev/null @@ -1,64 +0,0 @@ -package WayofTime.alchemicalWizardry.common.items.potion; - -import WayofTime.alchemicalWizardry.AlchemicalWizardry; -import WayofTime.alchemicalWizardry.api.alchemy.AlchemyRecipeRegistry; -import WayofTime.alchemicalWizardry.common.ICatalyst; -import net.minecraft.entity.player.EntityPlayer; -import net.minecraft.item.Item; -import net.minecraft.item.ItemStack; -import net.minecraft.util.EnumChatFormatting; - -import org.lwjgl.input.Keyboard; - -import java.util.List; - -public class LengtheningCatalyst extends Item implements ICatalyst -{ - private int catalystStrength; - - public LengtheningCatalyst(int catalystStrength) - { - super(); - this.catalystStrength = catalystStrength; - setCreativeTab(AlchemicalWizardry.tabBloodMagic); - } - - @Override - public int getCatalystLevel() - { - return catalystStrength; - } - - @Override - public boolean isConcentration() - { - return false; - } - - @Override - public void addInformation(ItemStack par1ItemStack, EntityPlayer par2EntityPlayer, List par3List, boolean par4) - { - par3List.add("Used in alchemy"); - - if (Keyboard.isKeyDown(Keyboard.KEY_RSHIFT) || Keyboard.isKeyDown(Keyboard.KEY_LSHIFT)) - { - ItemStack[] recipe = AlchemyRecipeRegistry.getRecipeForItemStack(par1ItemStack); - - if (recipe != null) - { - par3List.add(EnumChatFormatting.BLUE + "Recipe:"); - - for (ItemStack item : recipe) - { - if (item != null) - { - par3List.add("" + item.getDisplayName()); - } - } - } - } else - { - par3List.add("-Press " + EnumChatFormatting.BLUE + "shift" + EnumChatFormatting.GRAY + " for Recipe-"); - } - } -} diff --git a/src-backup/main/java/WayofTime/alchemicalWizardry/common/items/potion/MundaneLengtheningCatalyst.java b/src-backup/main/java/WayofTime/alchemicalWizardry/common/items/potion/MundaneLengtheningCatalyst.java deleted file mode 100644 index e945ed22..00000000 --- a/src-backup/main/java/WayofTime/alchemicalWizardry/common/items/potion/MundaneLengtheningCatalyst.java +++ /dev/null @@ -1,20 +0,0 @@ -package WayofTime.alchemicalWizardry.common.items.potion; - -import net.minecraft.client.renderer.texture.IIconRegister; -import cpw.mods.fml.relauncher.Side; -import cpw.mods.fml.relauncher.SideOnly; - -public class MundaneLengtheningCatalyst extends LengtheningCatalyst -{ - public MundaneLengtheningCatalyst() - { - super(1); - } - - @Override - @SideOnly(Side.CLIENT) - public void registerIcons(IIconRegister iconRegister) - { - this.itemIcon = iconRegister.registerIcon("AlchemicalWizardry:MundaneLengtheningCatalyst"); - } -} diff --git a/src-backup/main/java/WayofTime/alchemicalWizardry/common/items/potion/MundanePowerCatalyst.java b/src-backup/main/java/WayofTime/alchemicalWizardry/common/items/potion/MundanePowerCatalyst.java deleted file mode 100644 index 86291dec..00000000 --- a/src-backup/main/java/WayofTime/alchemicalWizardry/common/items/potion/MundanePowerCatalyst.java +++ /dev/null @@ -1,20 +0,0 @@ -package WayofTime.alchemicalWizardry.common.items.potion; - -import net.minecraft.client.renderer.texture.IIconRegister; -import cpw.mods.fml.relauncher.Side; -import cpw.mods.fml.relauncher.SideOnly; - -public class MundanePowerCatalyst extends PowerCatalyst -{ - public MundanePowerCatalyst() - { - super(1); - } - - @Override - @SideOnly(Side.CLIENT) - public void registerIcons(IIconRegister iconRegister) - { - this.itemIcon = iconRegister.registerIcon("AlchemicalWizardry:MundanePowerCatalyst"); - } -} diff --git a/src-backup/main/java/WayofTime/alchemicalWizardry/common/items/potion/PowerCatalyst.java b/src-backup/main/java/WayofTime/alchemicalWizardry/common/items/potion/PowerCatalyst.java deleted file mode 100644 index 60d98566..00000000 --- a/src-backup/main/java/WayofTime/alchemicalWizardry/common/items/potion/PowerCatalyst.java +++ /dev/null @@ -1,64 +0,0 @@ -package WayofTime.alchemicalWizardry.common.items.potion; - -import WayofTime.alchemicalWizardry.AlchemicalWizardry; -import WayofTime.alchemicalWizardry.api.alchemy.AlchemyRecipeRegistry; -import WayofTime.alchemicalWizardry.common.ICatalyst; -import net.minecraft.entity.player.EntityPlayer; -import net.minecraft.item.Item; -import net.minecraft.item.ItemStack; -import net.minecraft.util.EnumChatFormatting; - -import org.lwjgl.input.Keyboard; - -import java.util.List; - -public class PowerCatalyst extends Item implements ICatalyst -{ - private int catalystStrength; - - public PowerCatalyst(int catalystStrength) - { - super(); - this.catalystStrength = catalystStrength; - setCreativeTab(AlchemicalWizardry.tabBloodMagic); - } - - @Override - public int getCatalystLevel() - { - return catalystStrength; - } - - @Override - public boolean isConcentration() - { - return true; - } - - @Override - public void addInformation(ItemStack par1ItemStack, EntityPlayer par2EntityPlayer, List par3List, boolean par4) - { - par3List.add("Used in alchemy"); - - if (Keyboard.isKeyDown(Keyboard.KEY_RSHIFT) || Keyboard.isKeyDown(Keyboard.KEY_LSHIFT)) - { - ItemStack[] recipe = AlchemyRecipeRegistry.getRecipeForItemStack(par1ItemStack); - - if (recipe != null) - { - par3List.add(EnumChatFormatting.BLUE + "Recipe:"); - - for (ItemStack item : recipe) - { - if (item != null) - { - par3List.add("" + item.getDisplayName()); - } - } - } - } else - { - par3List.add("-Press " + EnumChatFormatting.BLUE + "shift" + EnumChatFormatting.GRAY + " for Recipe-"); - } - } -} diff --git a/src-backup/main/java/WayofTime/alchemicalWizardry/common/items/potion/StandardBindingAgent.java b/src-backup/main/java/WayofTime/alchemicalWizardry/common/items/potion/StandardBindingAgent.java deleted file mode 100644 index 6a2edc0b..00000000 --- a/src-backup/main/java/WayofTime/alchemicalWizardry/common/items/potion/StandardBindingAgent.java +++ /dev/null @@ -1,66 +0,0 @@ -package WayofTime.alchemicalWizardry.common.items.potion; - -import java.util.List; - -import net.minecraft.client.renderer.texture.IIconRegister; -import net.minecraft.entity.player.EntityPlayer; -import net.minecraft.item.Item; -import net.minecraft.item.ItemStack; -import net.minecraft.util.EnumChatFormatting; - -import org.lwjgl.input.Keyboard; - -import WayofTime.alchemicalWizardry.AlchemicalWizardry; -import WayofTime.alchemicalWizardry.api.alchemy.AlchemyRecipeRegistry; -import WayofTime.alchemicalWizardry.common.IBindingAgent; -import cpw.mods.fml.relauncher.Side; -import cpw.mods.fml.relauncher.SideOnly; - -public class StandardBindingAgent extends Item implements IBindingAgent -{ - public StandardBindingAgent() - { - super(); - setCreativeTab(AlchemicalWizardry.tabBloodMagic); - } - - @Override - public float getSuccessRateForPotionNumber(int potions) - { - return (float) Math.pow(0.65, potions); - } - - @Override - @SideOnly(Side.CLIENT) - public void registerIcons(IIconRegister iconRegister) - { - this.itemIcon = iconRegister.registerIcon("AlchemicalWizardry:StandardBindingAgent"); - } - - @Override - public void addInformation(ItemStack par1ItemStack, EntityPlayer par2EntityPlayer, List par3List, boolean par4) - { - par3List.add("Used in alchemy"); - - if (Keyboard.isKeyDown(Keyboard.KEY_RSHIFT) || Keyboard.isKeyDown(Keyboard.KEY_LSHIFT)) - { - ItemStack[] recipe = AlchemyRecipeRegistry.getRecipeForItemStack(par1ItemStack); - - if (recipe != null) - { - par3List.add(EnumChatFormatting.BLUE + "Recipe:"); - - for (ItemStack item : recipe) - { - if (item != null) - { - par3List.add("" + item.getDisplayName()); - } - } - } - } else - { - par3List.add("-Press " + EnumChatFormatting.BLUE + "shift" + EnumChatFormatting.GRAY + " for Recipe-"); - } - } -} diff --git a/src-backup/main/java/WayofTime/alchemicalWizardry/common/items/potion/StandardFillingAgent.java b/src-backup/main/java/WayofTime/alchemicalWizardry/common/items/potion/StandardFillingAgent.java deleted file mode 100644 index 0cc4c9a8..00000000 --- a/src-backup/main/java/WayofTime/alchemicalWizardry/common/items/potion/StandardFillingAgent.java +++ /dev/null @@ -1,39 +0,0 @@ -package WayofTime.alchemicalWizardry.common.items.potion; - -import net.minecraft.client.renderer.texture.IIconRegister; -import WayofTime.alchemicalWizardry.AlchemicalWizardry; -import cpw.mods.fml.relauncher.Side; -import cpw.mods.fml.relauncher.SideOnly; - -public class StandardFillingAgent extends WeakFillingAgent -{ - public StandardFillingAgent() - { - super(); - setCreativeTab(AlchemicalWizardry.tabBloodMagic); - } - - @Override - public int getFilledAmountForPotionNumber(int potionEffects) - { - //Random rand = new Random(); - if (potionEffects == 0) - { - return 8; - } - - if (potionEffects >= 1 && potionEffects <= 3) - { - return (int) (4 * (Math.pow(0.5f, potionEffects - 1) + 0.01f)); - } - - return 0; - } - - @Override - @SideOnly(Side.CLIENT) - public void registerIcons(IIconRegister iconRegister) - { - this.itemIcon = iconRegister.registerIcon("AlchemicalWizardry:StandardFillingAgent"); - } -} diff --git a/src-backup/main/java/WayofTime/alchemicalWizardry/common/items/potion/WeakBindingAgent.java b/src-backup/main/java/WayofTime/alchemicalWizardry/common/items/potion/WeakBindingAgent.java deleted file mode 100644 index 24ee6f0b..00000000 --- a/src-backup/main/java/WayofTime/alchemicalWizardry/common/items/potion/WeakBindingAgent.java +++ /dev/null @@ -1,27 +0,0 @@ -package WayofTime.alchemicalWizardry.common.items.potion; - -import net.minecraft.client.renderer.texture.IIconRegister; -import cpw.mods.fml.relauncher.Side; -import cpw.mods.fml.relauncher.SideOnly; - -public class WeakBindingAgent extends StandardBindingAgent -{ - public WeakBindingAgent() - { - super(); - // TODO Auto-generated constructor stub - } - - @Override - public float getSuccessRateForPotionNumber(int potions) - { - return (float) Math.pow(0.4, potions); - } - - @Override - @SideOnly(Side.CLIENT) - public void registerIcons(IIconRegister iconRegister) - { - this.itemIcon = iconRegister.registerIcon("AlchemicalWizardry:WeakBindingAgent"); - } -} diff --git a/src-backup/main/java/WayofTime/alchemicalWizardry/common/items/potion/WeakFillingAgent.java b/src-backup/main/java/WayofTime/alchemicalWizardry/common/items/potion/WeakFillingAgent.java deleted file mode 100644 index cd858f16..00000000 --- a/src-backup/main/java/WayofTime/alchemicalWizardry/common/items/potion/WeakFillingAgent.java +++ /dev/null @@ -1,85 +0,0 @@ -package WayofTime.alchemicalWizardry.common.items.potion; - -import java.util.List; -import java.util.Random; - -import net.minecraft.client.renderer.texture.IIconRegister; -import net.minecraft.entity.player.EntityPlayer; -import net.minecraft.item.Item; -import net.minecraft.item.ItemStack; -import net.minecraft.util.EnumChatFormatting; - -import org.lwjgl.input.Keyboard; - -import WayofTime.alchemicalWizardry.AlchemicalWizardry; -import WayofTime.alchemicalWizardry.api.alchemy.AlchemyRecipeRegistry; -import WayofTime.alchemicalWizardry.common.IFillingAgent; -import cpw.mods.fml.relauncher.Side; -import cpw.mods.fml.relauncher.SideOnly; - -public class WeakFillingAgent extends Item implements IFillingAgent -{ - public WeakFillingAgent() - { - super(); - setCreativeTab(AlchemicalWizardry.tabBloodMagic); - } - - @Override - public int getFilledAmountForPotionNumber(int potionEffects) - { - Random rand = new Random(); - - if (potionEffects == 0) - { - return 8; - } - - if (potionEffects == 1 || potionEffects == 2) - { - if (rand.nextFloat() > 0.5f) - { - return (4 - potionEffects); - } else - { - return 3 - potionEffects; - } - } - - return 0; - } - - @Override - @SideOnly(Side.CLIENT) - public void registerIcons(IIconRegister iconRegister) - { - this.itemIcon = iconRegister.registerIcon("AlchemicalWizardry:WeakFillingAgent"); - } - - @Override - public void addInformation(ItemStack par1ItemStack, EntityPlayer par2EntityPlayer, List par3List, boolean par4) - { - par3List.add("Used in alchemy"); - - if (Keyboard.isKeyDown(Keyboard.KEY_RSHIFT) || Keyboard.isKeyDown(Keyboard.KEY_LSHIFT)) - { - ItemStack[] recipe = AlchemyRecipeRegistry.getRecipeForItemStack(par1ItemStack); - - if (recipe != null) - { - par3List.add(EnumChatFormatting.BLUE + "Recipe:"); - - for (ItemStack item : recipe) - { - if (item != null) - { - par3List.add("" + item.getDisplayName()); - } - } - } - } else - { - par3List.add("-Press " + EnumChatFormatting.BLUE + "shift" + EnumChatFormatting.GRAY + " for Recipe-"); - } - } -} diff --git a/src-backup/main/java/WayofTime/alchemicalWizardry/common/items/sigil/AirSigil.java b/src-backup/main/java/WayofTime/alchemicalWizardry/common/items/sigil/AirSigil.java deleted file mode 100644 index 8858819b..00000000 --- a/src-backup/main/java/WayofTime/alchemicalWizardry/common/items/sigil/AirSigil.java +++ /dev/null @@ -1,106 +0,0 @@ -package WayofTime.alchemicalWizardry.common.items.sigil; - -import java.util.List; - -import net.minecraft.client.renderer.texture.IIconRegister; -import net.minecraft.entity.player.EntityPlayer; -import net.minecraft.item.ItemStack; -import net.minecraft.util.Vec3; -import net.minecraft.world.World; -import WayofTime.alchemicalWizardry.AlchemicalWizardry; -import WayofTime.alchemicalWizardry.api.items.interfaces.ArmourUpgrade; -import WayofTime.alchemicalWizardry.common.items.EnergyItems; -import cpw.mods.fml.relauncher.Side; -import cpw.mods.fml.relauncher.SideOnly; - -public class AirSigil extends EnergyItems implements ArmourUpgrade -{ - private int energyUsed; - - public AirSigil() - { - super(); - this.maxStackSize = 1; - //setMaxDamage(1000); - setEnergyUsed(50); - setCreativeTab(AlchemicalWizardry.tabBloodMagic); - } - - @Override - public void addInformation(ItemStack par1ItemStack, EntityPlayer par2EntityPlayer, List par3List, boolean par4) - { - par3List.add("I feel lighter already..."); - - if (!(par1ItemStack.stackTagCompound == null)) - { - par3List.add("Current owner: " + par1ItemStack.stackTagCompound.getString("ownerName")); - } - } - - @Override - @SideOnly(Side.CLIENT) - public void registerIcons(IIconRegister iconRegister) - { - this.itemIcon = iconRegister.registerIcon("AlchemicalWizardry:AirSigil"); - } - - @Override - public ItemStack onItemRightClick(ItemStack par1ItemStack, World par2World, EntityPlayer par3EntityPlayer) - { - EnergyItems.checkAndSetItemOwner(par1ItemStack, par3EntityPlayer); - - if (par3EntityPlayer.isSneaking()) - { - return par1ItemStack; - } - - Vec3 vec = par3EntityPlayer.getLookVec(); - double wantedVelocity = 1.7; - - if (par3EntityPlayer.isPotionActive(AlchemicalWizardry.customPotionBoost)) - { - int i = par3EntityPlayer.getActivePotionEffect(AlchemicalWizardry.customPotionBoost).getAmplifier(); - wantedVelocity += (1 + i) * (0.35); - } - - par3EntityPlayer.motionX = vec.xCoord * wantedVelocity; - par3EntityPlayer.motionY = vec.yCoord * wantedVelocity; - par3EntityPlayer.motionZ = vec.zCoord * wantedVelocity; - par2World.playSoundEffect((double) ((float) par3EntityPlayer.posX + 0.5F), (double) ((float) par3EntityPlayer.posY + 0.5F), (double) ((float) par3EntityPlayer.posZ + 0.5F), "random.fizz", 0.5F, 2.6F + (par2World.rand.nextFloat() - par2World.rand.nextFloat()) * 0.8F); - par3EntityPlayer.fallDistance = 0; - - if (!par3EntityPlayer.capabilities.isCreativeMode) - { - if (!EnergyItems.syphonBatteries(par1ItemStack, par3EntityPlayer, getEnergyUsed())) - { - } - } else - { - return par1ItemStack; - } - - return par1ItemStack; - } - - @Override - public void onArmourUpdate(World world, EntityPlayer player, - ItemStack thisItemStack) - { - // TODO Auto-generated method stub - player.fallDistance = 0; - } - - @Override - public boolean isUpgrade() - { - // TODO Auto-generated method stub - return true; - } - - @Override - public int getEnergyForTenSeconds() - { - // TODO Auto-generated method stub - return 50; - } -} diff --git a/src-backup/main/java/WayofTime/alchemicalWizardry/common/items/sigil/DivinationSigil.java b/src-backup/main/java/WayofTime/alchemicalWizardry/common/items/sigil/DivinationSigil.java deleted file mode 100644 index bf83193b..00000000 --- a/src-backup/main/java/WayofTime/alchemicalWizardry/common/items/sigil/DivinationSigil.java +++ /dev/null @@ -1,141 +0,0 @@ -package WayofTime.alchemicalWizardry.common.items.sigil; - -import java.util.List; - -import net.minecraft.client.renderer.texture.IIconRegister; -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.tileentity.TileEntity; -import net.minecraft.util.ChatComponentText; -import net.minecraft.util.MovingObjectPosition; -import net.minecraft.world.World; -import net.minecraftforge.common.util.ForgeDirection; -import WayofTime.alchemicalWizardry.AlchemicalWizardry; -import WayofTime.alchemicalWizardry.api.alchemy.energy.IReagentHandler; -import WayofTime.alchemicalWizardry.api.alchemy.energy.ReagentContainerInfo; -import WayofTime.alchemicalWizardry.api.alchemy.energy.ReagentRegistry; -import WayofTime.alchemicalWizardry.api.items.interfaces.ArmourUpgrade; -import WayofTime.alchemicalWizardry.api.items.interfaces.IBindable; -import WayofTime.alchemicalWizardry.api.items.interfaces.IReagentManipulator; -import WayofTime.alchemicalWizardry.common.items.EnergyItems; -import cpw.mods.fml.relauncher.Side; -import cpw.mods.fml.relauncher.SideOnly; - -public class DivinationSigil extends Item implements ArmourUpgrade, IReagentManipulator, IBindable -{ - public DivinationSigil() - { - super(); - this.maxStackSize = 1; - //setMaxDamage(1000); - setCreativeTab(AlchemicalWizardry.tabBloodMagic); - } - - @Override - @SideOnly(Side.CLIENT) - public void registerIcons(IIconRegister iconRegister) - { - this.itemIcon = iconRegister.registerIcon("AlchemicalWizardry:DivinationSigil"); - } - - @Override - public void addInformation(ItemStack par1ItemStack, EntityPlayer par2EntityPlayer, List par3List, boolean par4) - { - par3List.add("Peer into the soul to"); - par3List.add("get the current essence"); - - if (!(par1ItemStack.stackTagCompound == null)) - { - par3List.add("Current owner: " + par1ItemStack.stackTagCompound.getString("ownerName")); - } - } - - @Override - public ItemStack onItemRightClick(ItemStack par1ItemStack, World par2World, EntityPlayer par3EntityPlayer) - { - EnergyItems.checkAndSetItemOwner(par1ItemStack, par3EntityPlayer); - - if (par3EntityPlayer.worldObj.isRemote) - { - return par1ItemStack; - } - - NBTTagCompound itemTag = par1ItemStack.stackTagCompound; - - if (itemTag == null || itemTag.getString("ownerName").equals("")) - { - return par1ItemStack; - } - - String ownerName = itemTag.getString("ownerName"); - //PacketDispatcher.sendPacketToServer(PacketHandler.getPacket(ownerName)); - int currentEssence = EnergyItems.getCurrentEssence(ownerName); - - MovingObjectPosition movingobjectposition = this.getMovingObjectPositionFromPlayer(par2World, par3EntityPlayer, false); - - if (movingobjectposition == null) - { - par3EntityPlayer.addChatMessage(new ChatComponentText("Current Essence: " + EnergyItems.getCurrentEssence(ownerName) + "LP")); - - return par1ItemStack; - } else - { - if (movingobjectposition.typeOfHit == MovingObjectPosition.MovingObjectType.BLOCK) - { - int x = movingobjectposition.blockX; - int y = movingobjectposition.blockY; - int z = movingobjectposition.blockZ; - - TileEntity tile = par2World.getTileEntity(x, y, z); - - if(!(tile instanceof IReagentHandler)) - { - par3EntityPlayer.addChatMessage(new ChatComponentText("Current Essence: " + EnergyItems.getCurrentEssence(ownerName) + "LP")); - - return par1ItemStack; - } - - IReagentHandler relay = (IReagentHandler)tile; - - ReagentContainerInfo[] infoList = relay.getContainerInfo(ForgeDirection.UNKNOWN); - if(infoList != null) - { - for(ReagentContainerInfo info : infoList) - { - if(info != null && info.reagent != null && info.reagent.reagent != null) - { - par3EntityPlayer.addChatComponentMessage(new ChatComponentText("Reagent: " + ReagentRegistry.getKeyForReagent(info.reagent.reagent) + ", Amount: " + info.reagent.amount)); - } - } - } - } - } - - return par1ItemStack; - } - - @Override - public void onArmourUpdate(World world, EntityPlayer player, ItemStack thisItemStack) - { - // TODO Auto-generated method stub - player.addPotionEffect(new PotionEffect(Potion.nightVision.id, 400, 9, true)); - } - - @Override - public boolean isUpgrade() - { - // TODO Auto-generated method stub - return true; - } - - @Override - public int getEnergyForTenSeconds() - { - // TODO Auto-generated method stub - return 25; - } -} diff --git a/src-backup/main/java/WayofTime/alchemicalWizardry/common/items/sigil/ItemBloodLightSigil.java b/src-backup/main/java/WayofTime/alchemicalWizardry/common/items/sigil/ItemBloodLightSigil.java deleted file mode 100644 index 6134399a..00000000 --- a/src-backup/main/java/WayofTime/alchemicalWizardry/common/items/sigil/ItemBloodLightSigil.java +++ /dev/null @@ -1,145 +0,0 @@ -package WayofTime.alchemicalWizardry.common.items.sigil; - -import java.util.List; - -import net.minecraft.client.renderer.texture.IIconRegister; -import net.minecraft.entity.Entity; -import net.minecraft.entity.player.EntityPlayer; -import net.minecraft.item.ItemStack; -import net.minecraft.nbt.NBTTagCompound; -import net.minecraft.world.World; -import WayofTime.alchemicalWizardry.AlchemicalWizardry; -import WayofTime.alchemicalWizardry.ModBlocks; -import WayofTime.alchemicalWizardry.api.items.interfaces.IHolding; -import WayofTime.alchemicalWizardry.common.entity.projectile.EntityBloodLightProjectile; -import WayofTime.alchemicalWizardry.common.items.EnergyItems; -import cpw.mods.fml.relauncher.Side; -import cpw.mods.fml.relauncher.SideOnly; - -public class ItemBloodLightSigil extends EnergyItems implements IHolding -{ - private int tickDelay = 100; - - public ItemBloodLightSigil() - { - super(); - this.maxStackSize = 1; - //setMaxDamage(1000); - setEnergyUsed(10); - setCreativeTab(AlchemicalWizardry.tabBloodMagic); - // TODO Auto-generated constructor stub - } - - @Override - public void addInformation(ItemStack par1ItemStack, EntityPlayer par2EntityPlayer, List par3List, boolean par4) - { - par3List.add("I see a light!"); - - if (!(par1ItemStack.stackTagCompound == null)) - { - par3List.add("Current owner: " + par1ItemStack.stackTagCompound.getString("ownerName")); - } - } - - @Override - @SideOnly(Side.CLIENT) - public void registerIcons(IIconRegister iconRegister) - { - this.itemIcon = iconRegister.registerIcon("AlchemicalWizardry:BloodLightSigil"); - } - - @Override - public boolean onItemUse(ItemStack par1ItemStack, EntityPlayer par2EntityPlayer, World par3World, int par4, int par5, int par6, int par7, float par8, float par9, float par10) - { - EnergyItems.checkAndSetItemOwner(par1ItemStack, par2EntityPlayer); - EnergyItems.syphonBatteries(par1ItemStack, par2EntityPlayer, getEnergyUsed()); - - if (par3World.isRemote) - { - return true; - } - - if (par7 == 0 && par3World.isAirBlock(par4, par5 - 1, par6)) - { - par3World.setBlock(par4, par5 - 1, par6, ModBlocks.blockBloodLight); - } - - if (par7 == 1 && par3World.isAirBlock(par4, par5 + 1, par6)) - { - par3World.setBlock(par4, par5 + 1, par6, ModBlocks.blockBloodLight); - } - - if (par7 == 2 && par3World.isAirBlock(par4, par5, par6 - 1)) - { - par3World.setBlock(par4, par5, par6 - 1, ModBlocks.blockBloodLight); - } - - if (par7 == 3 && par3World.isAirBlock(par4, par5, par6 + 1)) - { - par3World.setBlock(par4, par5, par6 + 1, ModBlocks.blockBloodLight); - } - - if (par7 == 4 && par3World.isAirBlock(par4 - 1, par5, par6)) - { - par3World.setBlock(par4 - 1, par5, par6, ModBlocks.blockBloodLight); - } - - if (par7 == 5 && par3World.isAirBlock(par4 + 1, par5, par6)) - { - par3World.setBlock(par4 + 1, par5, par6, ModBlocks.blockBloodLight); - } - - return true; - } - - @Override - public ItemStack onItemRightClick(ItemStack par1ItemStack, World par2World, EntityPlayer par3EntityPlayer) - { - EnergyItems.checkAndSetItemOwner(par1ItemStack, par3EntityPlayer); - - if (par3EntityPlayer.isSneaking()) - { - return par1ItemStack; - } - - if (par1ItemStack.stackTagCompound == null) - { - par1ItemStack.setTagCompound(new NBTTagCompound()); - } - - EnergyItems.syphonBatteries(par1ItemStack, par3EntityPlayer, getEnergyUsed() * 5); - - if (!par2World.isRemote) - { - par2World.spawnEntityInWorld(new EntityBloodLightProjectile(par2World, par3EntityPlayer, 10)); - } - - return par1ItemStack; - } - - @Override - public void onUpdate(ItemStack par1ItemStack, World par2World, Entity par3Entity, int par4, boolean par5) - { - if (!(par3Entity instanceof EntityPlayer)) - { - return; - } - - EntityPlayer par3EntityPlayer = (EntityPlayer) par3Entity; - - if (par1ItemStack.stackTagCompound == null) - { - par1ItemStack.setTagCompound(new NBTTagCompound()); - } - - if (par1ItemStack.stackTagCompound.getBoolean("isActive")) - { - if (par2World.getWorldTime() % tickDelay == par1ItemStack.stackTagCompound.getInteger("worldTimeDelay") && par3Entity instanceof EntityPlayer) - { - EnergyItems.syphonBatteries(par1ItemStack, (EntityPlayer) par3Entity, getEnergyUsed()); - } - } - - return; - } -} diff --git a/src-backup/main/java/WayofTime/alchemicalWizardry/common/items/sigil/ItemFluidSigil.java b/src-backup/main/java/WayofTime/alchemicalWizardry/common/items/sigil/ItemFluidSigil.java deleted file mode 100644 index 2af9459f..00000000 --- a/src-backup/main/java/WayofTime/alchemicalWizardry/common/items/sigil/ItemFluidSigil.java +++ /dev/null @@ -1,811 +0,0 @@ -package WayofTime.alchemicalWizardry.common.items.sigil; - -import java.util.ArrayList; -import java.util.List; - -import net.minecraft.block.Block; -import net.minecraft.block.material.MaterialLiquid; -import net.minecraft.client.renderer.texture.IIconRegister; -import net.minecraft.entity.player.EntityPlayer; -import net.minecraft.init.Blocks; -import net.minecraft.item.Item; -import net.minecraft.item.ItemStack; -import net.minecraft.nbt.NBTTagCompound; -import net.minecraft.tileentity.TileEntity; -import net.minecraft.util.ChatComponentText; -import net.minecraft.util.MovingObjectPosition; -import net.minecraft.world.World; -import net.minecraftforge.common.util.ForgeDirection; -import net.minecraftforge.fluids.Fluid; -import net.minecraftforge.fluids.FluidRegistry; -import net.minecraftforge.fluids.FluidStack; -import net.minecraftforge.fluids.IFluidContainerItem; -import net.minecraftforge.fluids.IFluidHandler; -import WayofTime.alchemicalWizardry.AlchemicalWizardry; -import WayofTime.alchemicalWizardry.ModBlocks; -import WayofTime.alchemicalWizardry.common.Int3; -import cpw.mods.fml.relauncher.Side; -import cpw.mods.fml.relauncher.SideOnly; - -public class ItemFluidSigil extends Item implements IFluidContainerItem -{ - private int capacity = 128 * 1000; - private static final int STATE_SYPHON = 0; - private static final int STATE_FORCE_SYPHON = 1; - private static final int STATE_PLACE = 2; - private static final int STATE_INPUT_TANK = 3; - private static final int STATE_DRAIN_TANK = 4; - private static final int STATE_BEAST_DRAIN = 5; - private static final int maxNumOfStates = 6; - - public ItemFluidSigil() - { - super(); - this.setMaxDamage(0); - this.setMaxStackSize(1); - setCreativeTab(AlchemicalWizardry.tabBloodMagic); - } - - @Override - public void addInformation(ItemStack par1ItemStack, EntityPlayer par2EntityPlayer, List par3List, boolean par4) - { - par3List.add("A sigil with a lovely affinity for fluids"); - - if (!(par1ItemStack.stackTagCompound == null)) - { - //par3List.add("Current owner: " + par1ItemStack.stackTagCompound.getString("ownerName")); - - switch(this.getActionState(par1ItemStack)) - { - case STATE_SYPHON: - par3List.add("Syphoning Mode"); - break; - case STATE_FORCE_SYPHON: - par3List.add("Force-syphon Mode"); - break; - case STATE_PLACE: - par3List.add("Fluid Placement Mode"); - break; - case STATE_INPUT_TANK: - par3List.add("Fill Tank Mode"); - break; - case STATE_DRAIN_TANK: - par3List.add("Drain Tank Mode"); - break; - case STATE_BEAST_DRAIN: - par3List.add("Beast Mode"); - break; - } - - FluidStack fluid = this.getFluid(par1ItemStack); - if(fluid!=null && fluid.amount>0) - { - String str = fluid.getFluid().getName(); - int amount = fluid.amount; - - par3List.add("" + amount + "mB of " + str); - }else - { - par3List.add("Empty"); - } - } - } - - @Override - @SideOnly(Side.CLIENT) - public void registerIcons(IIconRegister iconRegister) - { - this.itemIcon = iconRegister.registerIcon("AlchemicalWizardry:WaterSigil"); - } - - @Override - public ItemStack onItemRightClick(ItemStack par1ItemStack, World par2World, EntityPlayer par3EntityPlayer) - { - if(par3EntityPlayer.isSneaking()) - { - int curState = this.cycleActionState(par1ItemStack); - this.sendMessageViaState(curState, par3EntityPlayer); - return par1ItemStack; - } - -// if(par2World.isRemote) -// { -// return par1ItemStack; -// } - - switch(this.getActionState(par1ItemStack)) - { - case STATE_SYPHON: - return this.fillItemFromWorld(par1ItemStack, par2World, par3EntityPlayer,false); - case STATE_FORCE_SYPHON: - return this.fillItemFromWorld(par1ItemStack, par2World, par3EntityPlayer,true); - case STATE_PLACE: - return this.emptyItemToWorld(par1ItemStack, par2World, par3EntityPlayer); - case STATE_INPUT_TANK: - return this.fillSelectedTank(par1ItemStack, par2World, par3EntityPlayer); - case STATE_DRAIN_TANK: - return this.drainSelectedTank(par1ItemStack, par2World, par3EntityPlayer); - case STATE_BEAST_DRAIN: - return this.fillItemFromBeastWorld(par1ItemStack, par2World, par3EntityPlayer, true); - } - - return par1ItemStack; - } - - public int getActionState(ItemStack item) - { - if (item.stackTagCompound == null) - { - item.setTagCompound(new NBTTagCompound()); - } - - return item.stackTagCompound.getInteger("actionState"); - } - - public void setActionState(ItemStack item, int actionState) - { - if (item.stackTagCompound == null) - { - item.setTagCompound(new NBTTagCompound()); - } - - item.stackTagCompound.setInteger("actionState", actionState); - } - - public int cycleActionState(ItemStack item) - { - int state = this.getActionState(item); - - state++; - - if(state>=maxNumOfStates) - { - state = 0; - } - - this.setActionState(item, state); - - return state; - } - - public void sendMessageViaState(int state, EntityPlayer player) - { - if(player.worldObj.isRemote) - { - ChatComponentText cmc = new ChatComponentText(""); - switch(state) - { - case STATE_SYPHON: - cmc.appendText("Now in Syphoning Mode"); - break; - case STATE_FORCE_SYPHON: - cmc.appendText("Now in Force-syphon Mode"); - break; - case STATE_PLACE: - cmc.appendText("Now in Fluid Placement Mode"); - break; - case STATE_INPUT_TANK: - cmc.appendText("Now in Fill Tank Mode"); - break; - case STATE_DRAIN_TANK: - cmc.appendText("Now in Drain Tank Mode"); - break; - case STATE_BEAST_DRAIN: - cmc.appendText("Now in Beast Mode"); - break; - } - player.addChatComponentMessage(cmc); - } - } - - public ItemStack fillItemFromBeastWorld(ItemStack container, World world, EntityPlayer player, boolean forceFill) - { - if(world.isRemote) - { - return container; - } - int range = 5; - - float f = 1.0F; - double d0 = player.prevPosX + (player.posX - player.prevPosX) * (double)f; - double d1 = player.prevPosY + (player.posY - player.prevPosY) * (double)f + 1.62D - (double)player.yOffset; - double d2 = player.prevPosZ + (player.posZ - player.prevPosZ) * (double)f; - boolean flag = true; - MovingObjectPosition movingobjectposition = this.getMovingObjectPositionFromPlayer(world, player, flag); - - if (movingobjectposition == null) - { - return container; - } - else - { - if (movingobjectposition.typeOfHit == MovingObjectPosition.MovingObjectType.BLOCK) - { - int x = movingobjectposition.blockX; - int y = movingobjectposition.blockY; - int z = movingobjectposition.blockZ; - - if (!world.canMineBlock(player, x, y, z)) - { - return container; - } - - if (!player.canPlayerEdit(x, y, z, movingobjectposition.sideHit, container)) - { - return container; - } - - boolean[][][] boolList = new boolean[range * 2 + 1][range * 2 + 1][range * 2 + 1]; - - for (int i = 0; i < 2 * range + 1; i++) - { - for (int j = 0; j < 2 * range + 1; j++) - { - for(int k = 0; k < 2 * range + 1; k++) - { - boolList[i][j][k] = false; - } - } - } - - List positionList = new ArrayList(); - - boolList[range][range][range] = true; - positionList.add(new Int3(range, range, range)); - boolean isReady = false; - - while (!isReady) - { - isReady = true; - - for (int i = 0; i < 2 * range + 1; i++) - { - for (int j = 0; j < 2 * range + 1; j++) - { - for(int k=0; k < 2*range+1;k++) - { - if (boolList[i][j][k]) - { - if (i - 1 >= 0 && !boolList[i - 1][j][k]) - { - Block block = world.getBlock(x - range + i - 1, y - range + j, z - range + k); - Fluid fluid = FluidRegistry.lookupFluidForBlock(block); - - if (fluid != null) - { - boolList[i - 1][j][k] = true; - positionList.add(new Int3(i-1,j,k)); - isReady = false; - } - } - - if (j - 1 >= 0 && !boolList[i][j - 1][k]) - { - Block block = world.getBlock(x - range + i, y - range + j - 1, z - range + k); - Fluid fluid = FluidRegistry.lookupFluidForBlock(block); - - if (fluid != null) - { - boolList[i][j - 1][k] = true; - positionList.add(new Int3(i,j-1,k)); - isReady = false; - } - } - - if(k - 1 >=0 && !boolList[i][j][k - 1]) - { - Block block = world.getBlock(x - range + i, y - range + j, z - range + k - 1); - Fluid fluid = FluidRegistry.lookupFluidForBlock(block); - - if (fluid != null) - { - boolList[i][j][k - 1] = true; - positionList.add(new Int3(i,j,k-1)); - isReady = false; - } - } - - if (i + 1 <= 2 * range && !boolList[i + 1][j][k]) - { - Block block = world.getBlock(x - range + i + 1, y - range + j, z - range + k); - Fluid fluid = FluidRegistry.lookupFluidForBlock(block); - - if (fluid != null) - { - boolList[i + 1][j][k] = true; - positionList.add(new Int3(i+1,j,k)); - isReady = false; - } - } - - if (j + 1 <= 2 * range && !boolList[i][j + 1][k]) - { - Block block = world.getBlock(x - range + i, y - range + j + 1, z - range + k); - Fluid fluid = FluidRegistry.lookupFluidForBlock(block); - - if (fluid != null) - { - boolList[i][j + 1][k] = true; - positionList.add(new Int3(i,j+1,k)); - isReady = false; - } - } - - if(k + 1 <= 2*range && !boolList[i][j][k+1]) - { - Block block = world.getBlock(x - range + i, y - range + j, z - range + k + 1); - Fluid fluid = FluidRegistry.lookupFluidForBlock(block); - - if (fluid != null) - { - boolList[i][j][k+1] = true; - positionList.add(new Int3(i,j,k+1)); - isReady = false; - } - } - } - } - } - } - } - - for(Int3 pos : positionList) - { - int i = pos.xCoord; - int j = pos.yCoord; - int k = pos.zCoord; - - if(!boolList[i][j][k]) - { - continue; - } - if (world.getBlock(x+i-range, y+j-range, z+k-range) != null && world.getBlock(x+i-range, y+j-range, z+k-range).getMaterial() instanceof MaterialLiquid) - { - //world.setBlockToAir(x+i-range, y+j-range, z+k-range); - Block block = world.getBlock(x+i-range, y+j-range, z+k-range); - if(block == null) - { - continue; - } - Fluid fluid = FluidRegistry.lookupFluidForBlock(block); - - System.out.println("x: " + (i-range) + " y: " + (j-range) + " z: " + (k-range)); - - - if(fluid==null || world.getBlockMetadata(x+i-range, y+j-range, z+k-range) != 0) - { - continue; - } - - - FluidStack fillStack = new FluidStack(fluid,1000); - - int amount = this.fill(container, fillStack, false); - - if((amount > 0 && forceFill) || (amount >=1000 && !forceFill)) - { - //if(!player.capabilities.isCreativeMode) - { - world.setBlockToAir(x+i-range, y+j-range, z+k-range); - - } - - this.fill(container, new FluidStack(fluid,1000), true); - } - } - } - } - - return container; - } - } - - public ItemStack fillItemFromWorld(ItemStack container, World world, EntityPlayer player, boolean forceFill) - { - float f = 1.0F; - double d0 = player.prevPosX + (player.posX - player.prevPosX) * (double)f; - double d1 = player.prevPosY + (player.posY - player.prevPosY) * (double)f + 1.62D - (double)player.yOffset; - double d2 = player.prevPosZ + (player.posZ - player.prevPosZ) * (double)f; - boolean flag = true; - MovingObjectPosition movingobjectposition = this.getMovingObjectPositionFromPlayer(world, player, flag); - - if (movingobjectposition == null) - { - return container; - } - else - { - if (movingobjectposition.typeOfHit == MovingObjectPosition.MovingObjectType.BLOCK) - { - int i = movingobjectposition.blockX; - int j = movingobjectposition.blockY; - int k = movingobjectposition.blockZ; - - if (!world.canMineBlock(player, i, j, k)) - { - return container; - } - - if (!player.canPlayerEdit(i, j, k, movingobjectposition.sideHit, container)) - { - return container; - } - - if (world.getBlock(i, j, k) != null && world.getBlock(i, j, k).getMaterial() instanceof MaterialLiquid) - { - Block block = world.getBlock(i, j, k); - Fluid fluid = FluidRegistry.lookupFluidForBlock(block); - - if(fluid==null) - { - return container; - } - - FluidStack fillStack = new FluidStack(fluid,1000); - - int amount = this.fill(container, fillStack, false); - - if((amount > 0 && forceFill) || (amount >=1000 && !forceFill)) - { - if(!player.capabilities.isCreativeMode) - { - world.setBlockToAir(i, j, k); - } - - this.fill(container, new FluidStack(fluid,1000), true); - - if (!player.capabilities.isCreativeMode) - { -// if (!EnergyItems.syphonBatteries(container, player, getEnergyUsed())) -// { -// } - } - else - { - return container; - } - } - } - } - - return container; - } - } - - public ItemStack emptyItemToWorld(ItemStack container, World world, EntityPlayer player) - { - FluidStack simStack = this.drain(container, 1000, false); - - if(simStack!=null && simStack.amount>=1000) - { - Block fluidBlock = simStack.getFluid().getBlock(); - - float f = 1.0F; - double d0 = player.prevPosX + (player.posX - player.prevPosX) * (double)f; - double d1 = player.prevPosY + (player.posY - player.prevPosY) * (double)f + 1.62D - (double)player.yOffset; - double d2 = player.prevPosZ + (player.posZ - player.prevPosZ) * (double)f; - boolean flag = false; - MovingObjectPosition movingobjectposition = this.getMovingObjectPositionFromPlayer(world, player, flag); - - if (movingobjectposition == null) - { - return container; - } - else - { - if (movingobjectposition.typeOfHit == MovingObjectPosition.MovingObjectType.BLOCK) - { - int i = movingobjectposition.blockX; - int j = movingobjectposition.blockY; - int k = movingobjectposition.blockZ; - - if (!world.canMineBlock(player, i, j, k)) - { - return container; - } - - if (movingobjectposition.sideHit == 0) - { - --j; - } - - if (movingobjectposition.sideHit == 1) - { - ++j; - } - - if (movingobjectposition.sideHit == 2) - { - --k; - } - - if (movingobjectposition.sideHit == 3) - { - ++k; - } - - if (movingobjectposition.sideHit == 4) - { - --i; - } - - if (movingobjectposition.sideHit == 5) - { - ++i; - } - - if (!player.canPlayerEdit(i, j, k, movingobjectposition.sideHit, container)) - { - return container; - } - - if (this.tryPlaceContainedLiquid(world, fluidBlock, d0, d1, d2, i, j, k) && !player.capabilities.isCreativeMode) - { - this.drain(container, 1000, true); - - return container; - } - - } - - return container; - } - } - - return container; - } - - public boolean tryPlaceContainedLiquid(World par1World, Block block, double par2, double par4, double par6, int par8, int par9, int par10) - { - if (!par1World.isAirBlock(par8, par9, par10) && par1World.getBlock(par8, par9, par10).func_149730_j()) - { - return false; - } - else if ((par1World.getBlock(par8, par9, par10).getMaterial() instanceof MaterialLiquid && (par1World.getBlockMetadata(par8, par9, par10) == 0))) - { - return false; - } - else - { - if ((block == Blocks.water || block == Blocks.flowing_water) && par1World.provider.isHellWorld) - { - par1World.playSoundEffect(par2 + 0.5D, par4 + 0.5D, par6 + 0.5D, "random.fizz", 0.5F, 2.6F + (par1World.rand.nextFloat() - par1World.rand.nextFloat()) * 0.8F); - - for (int l = 0; l < 8; ++l) - { - par1World.spawnParticle("largesmoke", (double)par8 + Math.random(), (double)par9 + Math.random(), (double)par10 + Math.random(), 0.0D, 0.0D, 0.0D); - } - } - else - { - par1World.setBlock(par8, par9, par10, block, 0, 3); - } - - return true; - } - } - - public ItemStack fillSelectedTank(ItemStack container, World world, EntityPlayer player) - { - FluidStack fluid = this.getFluid(container); - - if(fluid == null) - { - return container; - } - - float f = 1.0F; - double d0 = player.prevPosX + (player.posX - player.prevPosX) * (double)f; - double d1 = player.prevPosY + (player.posY - player.prevPosY) * (double)f + 1.62D - (double)player.yOffset; - double d2 = player.prevPosZ + (player.posZ - player.prevPosZ) * (double)f; - boolean flag = false; - MovingObjectPosition movingobjectposition = this.getMovingObjectPositionFromPlayer(world, player, flag); - - if (movingobjectposition == null) - { - return container; - } - else - { - if (movingobjectposition.typeOfHit == MovingObjectPosition.MovingObjectType.BLOCK) - { - int i = movingobjectposition.blockX; - int j = movingobjectposition.blockY; - int k = movingobjectposition.blockZ; - - TileEntity tile = world.getTileEntity(i, j, k); - - if(tile instanceof IFluidHandler) - { - int amount = ((IFluidHandler) tile).fill(ForgeDirection.getOrientation(movingobjectposition.sideHit), fluid, true); - - this.drain(container, amount, true); - } - } - } - - return container; - } - - public ItemStack drainSelectedTank(ItemStack container, World world, EntityPlayer player) - { - float f = 1.0F; - double d0 = player.prevPosX + (player.posX - player.prevPosX) * (double)f; - double d1 = player.prevPosY + (player.posY - player.prevPosY) * (double)f + 1.62D - (double)player.yOffset; - double d2 = player.prevPosZ + (player.posZ - player.prevPosZ) * (double)f; - boolean flag = false; - MovingObjectPosition movingobjectposition = this.getMovingObjectPositionFromPlayer(world, player, flag); - - if (movingobjectposition == null) - { - return container; - } - else - { - if (movingobjectposition.typeOfHit == MovingObjectPosition.MovingObjectType.BLOCK) - { - int i = movingobjectposition.blockX; - int j = movingobjectposition.blockY; - int k = movingobjectposition.blockZ; - - TileEntity tile = world.getTileEntity(i, j, k); - - if(tile instanceof IFluidHandler) - { - FluidStack fluidAmount = ((IFluidHandler) tile).drain(ForgeDirection.getOrientation(movingobjectposition.sideHit), this.getCapacity(container), false); - - int amount = this.fill(container, fluidAmount, false); - - if(amount>0) - { - ((IFluidHandler) tile).drain(ForgeDirection.getOrientation(movingobjectposition.sideHit), this.getCapacity(container), true); - - this.fill(container, fluidAmount, true); - } - } - } - } - - return container; - } - - /* IFluidContainerItem */ - @Override - public FluidStack getFluid(ItemStack container) - { - if (container.stackTagCompound == null || !container.stackTagCompound.hasKey("Fluid")) - { - return null; - } - return FluidStack.loadFluidStackFromNBT(container.stackTagCompound.getCompoundTag("Fluid")); - } - - @Override - public int getCapacity(ItemStack container) - { - return capacity; - } - - @Override - public int fill(ItemStack container, FluidStack resource, boolean doFill) - { - if (resource == null) - { - return 0; - } - - if (!doFill) - { - if (container.stackTagCompound == null || !container.stackTagCompound.hasKey("Fluid")) - { - return Math.min(capacity, resource.amount); - } - - FluidStack stack = FluidStack.loadFluidStackFromNBT(container.stackTagCompound.getCompoundTag("Fluid")); - - if (stack == null || stack.amount <= 0) - { - return Math.min(capacity, resource.amount); - } - - if (!stack.isFluidEqual(resource)) - { - return 0; - } - - return Math.min(capacity - stack.amount, resource.amount); - } - - if (container.stackTagCompound == null) - { - container.stackTagCompound = new NBTTagCompound(); - } - - if (!container.stackTagCompound.hasKey("Fluid")) - { - NBTTagCompound fluidTag = resource.writeToNBT(new NBTTagCompound()); - - if (capacity < resource.amount) - { - fluidTag.setInteger("Amount", capacity); - container.stackTagCompound.setTag("Fluid", fluidTag); - return capacity; - } - - container.stackTagCompound.setTag("Fluid", fluidTag); - return resource.amount; - } - - NBTTagCompound fluidTag = container.stackTagCompound.getCompoundTag("Fluid"); - FluidStack stack = FluidStack.loadFluidStackFromNBT(fluidTag); - - if(stack==null || stack.amount<=0) - { - NBTTagCompound fluidTag1 = resource.writeToNBT(new NBTTagCompound()); - - if (capacity < resource.amount) - { - fluidTag1.setInteger("Amount", capacity); - container.stackTagCompound.setTag("Fluid", fluidTag1); - return capacity; - } - - container.stackTagCompound.setTag("Fluid", fluidTag1); - return resource.amount; - } - - if (!stack.isFluidEqual(resource)) - { - return 0; - } - - int filled = capacity - stack.amount; - if (resource.amount < filled) - { - stack.amount += resource.amount; - filled = resource.amount; - } - else - { - stack.amount = capacity; - } - - container.stackTagCompound.setTag("Fluid", stack.writeToNBT(fluidTag)); - return filled; - } - - @Override - public FluidStack drain(ItemStack container, int maxDrain, boolean doDrain) - { - if (container.stackTagCompound == null || !container.stackTagCompound.hasKey("Fluid")) - { - return null; - } - - FluidStack stack = FluidStack.loadFluidStackFromNBT(container.stackTagCompound.getCompoundTag("Fluid")); - if (stack == null) - { - return null; - } - - stack.amount = Math.min(stack.amount, maxDrain); - if (doDrain) - { - if (maxDrain >= capacity) - { - container.stackTagCompound.removeTag("Fluid"); - - if (container.stackTagCompound.hasNoTags()) - { - container.stackTagCompound = null; - } - return stack; - } - - NBTTagCompound fluidTag = container.stackTagCompound.getCompoundTag("Fluid"); - fluidTag.setInteger("Amount", fluidTag.getInteger("Amount") - maxDrain); - container.stackTagCompound.setTag("Fluid", fluidTag); - } - return stack; - } -} diff --git a/src-backup/main/java/WayofTime/alchemicalWizardry/common/items/sigil/ItemSeerSigil.java b/src-backup/main/java/WayofTime/alchemicalWizardry/common/items/sigil/ItemSeerSigil.java deleted file mode 100644 index ea4e4db2..00000000 --- a/src-backup/main/java/WayofTime/alchemicalWizardry/common/items/sigil/ItemSeerSigil.java +++ /dev/null @@ -1,88 +0,0 @@ -package WayofTime.alchemicalWizardry.common.items.sigil; - -import java.util.List; - -import net.minecraft.client.renderer.texture.IIconRegister; -import net.minecraft.entity.player.EntityPlayer; -import net.minecraft.item.Item; -import net.minecraft.item.ItemStack; -import net.minecraft.nbt.NBTTagCompound; -import net.minecraft.world.World; -import WayofTime.alchemicalWizardry.AlchemicalWizardry; -import WayofTime.alchemicalWizardry.api.items.interfaces.ArmourUpgrade; -import WayofTime.alchemicalWizardry.api.items.interfaces.IHolding; -import WayofTime.alchemicalWizardry.common.items.EnergyItems; -import cpw.mods.fml.relauncher.Side; -import cpw.mods.fml.relauncher.SideOnly; - -public class ItemSeerSigil extends Item implements IHolding, ArmourUpgrade -{ - public ItemSeerSigil() - { - super(); - this.maxStackSize = 1; - setCreativeTab(AlchemicalWizardry.tabBloodMagic); - } - - @Override - @SideOnly(Side.CLIENT) - public void registerIcons(IIconRegister iconRegister) - { - this.itemIcon = iconRegister.registerIcon("AlchemicalWizardry:SeerSigil"); - } - - @Override - public void addInformation(ItemStack par1ItemStack, EntityPlayer par2EntityPlayer, List par3List, boolean par4) - { - par3List.add("When seeing all is not enough"); - - if (!(par1ItemStack.stackTagCompound == null)) - { - par3List.add("Current owner: " + par1ItemStack.stackTagCompound.getString("ownerName")); - } - } - - @Override - public ItemStack onItemRightClick(ItemStack par1ItemStack, World par2World, EntityPlayer par3EntityPlayer) - { - EnergyItems.checkAndSetItemOwner(par1ItemStack, par3EntityPlayer); - - if (par3EntityPlayer.worldObj.isRemote) - { - return par1ItemStack; - } - - NBTTagCompound itemTag = par1ItemStack.stackTagCompound; - - if (itemTag == null || itemTag.getString("ownerName").equals("")) - { - return par1ItemStack; - } - - String ownerName = itemTag.getString("ownerName"); - - return par1ItemStack; - } - - @Override - public void onArmourUpdate(World world, EntityPlayer player, - ItemStack thisItemStack) - { - // TODO Auto-generated method stub - - } - - @Override - public boolean isUpgrade() - { - // TODO Auto-generated method stub - return false; - } - - @Override - public int getEnergyForTenSeconds() - { - // TODO Auto-generated method stub - return 0; - } -} diff --git a/src-backup/main/java/WayofTime/alchemicalWizardry/common/items/sigil/ItemSigilOfEnderSeverance.java b/src-backup/main/java/WayofTime/alchemicalWizardry/common/items/sigil/ItemSigilOfEnderSeverance.java deleted file mode 100644 index b341e859..00000000 --- a/src-backup/main/java/WayofTime/alchemicalWizardry/common/items/sigil/ItemSigilOfEnderSeverance.java +++ /dev/null @@ -1,171 +0,0 @@ -package WayofTime.alchemicalWizardry.common.items.sigil; - -import java.util.List; - -import net.minecraft.client.renderer.texture.IIconRegister; -import net.minecraft.entity.Entity; -import net.minecraft.entity.EntityLiving; -import net.minecraft.entity.player.EntityPlayer; -import net.minecraft.item.ItemStack; -import net.minecraft.nbt.NBTTagCompound; -import net.minecraft.potion.PotionEffect; -import net.minecraft.util.IIcon; -import net.minecraft.world.World; -import WayofTime.alchemicalWizardry.AlchemicalWizardry; -import WayofTime.alchemicalWizardry.api.items.interfaces.IHolding; -import WayofTime.alchemicalWizardry.common.items.EnergyItems; -import WayofTime.alchemicalWizardry.common.spell.complex.effect.SpellHelper; -import cpw.mods.fml.relauncher.Side; -import cpw.mods.fml.relauncher.SideOnly; - -public class ItemSigilOfEnderSeverance extends EnergyItems implements IHolding -{ - @SideOnly(Side.CLIENT) - private static IIcon activeIcon; - @SideOnly(Side.CLIENT) - private static IIcon passiveIcon; - - public ItemSigilOfEnderSeverance() - { - super(); - this.maxStackSize = 1; - setEnergyUsed(200); - setCreativeTab(AlchemicalWizardry.tabBloodMagic); - } - - @Override - public void addInformation(ItemStack par1ItemStack, EntityPlayer par2EntityPlayer, List par3List, boolean par4) - { - par3List.add("Put those endermen in a Dire situation!"); - - if (!(par1ItemStack.stackTagCompound == null)) - { - if (par1ItemStack.stackTagCompound.getBoolean("isActive")) - { - par3List.add("Activated"); - } else - { - par3List.add("Deactivated"); - } - - par3List.add("Current owner: " + par1ItemStack.stackTagCompound.getString("ownerName")); - } - } - - @Override - @SideOnly(Side.CLIENT) - public void registerIcons(IIconRegister iconRegister) - { - this.itemIcon = iconRegister.registerIcon("AlchemicalWizardry:SigilOfSeverance_deactivated"); - this.activeIcon = iconRegister.registerIcon("AlchemicalWizardry:SigilOfSeverance_activated"); - this.passiveIcon = iconRegister.registerIcon("AlchemicalWizardry:SigilOfSeverance_deactivated"); - } - - @Override - public IIcon getIcon(ItemStack stack, int renderPass, EntityPlayer player, ItemStack usingItem, int useRemaining) - { - if (stack.stackTagCompound == null) - { - stack.setTagCompound(new NBTTagCompound()); - } - - NBTTagCompound tag = stack.stackTagCompound; - - if (tag.getBoolean("isActive")) - { - return this.activeIcon; - } else - { - return this.passiveIcon; - } - } - - @Override - @SideOnly(Side.CLIENT) - public IIcon getIconFromDamage(int par1) - { - if (par1 == 1) - { - return this.activeIcon; - } else - { - return this.passiveIcon; - } - } - - @Override - public ItemStack onItemRightClick(ItemStack par1ItemStack, World par2World, EntityPlayer par3EntityPlayer) - { - EnergyItems.checkAndSetItemOwner(par1ItemStack, par3EntityPlayer); - - if (par3EntityPlayer.isSneaking()) - { - return par1ItemStack; - } - - if (par1ItemStack.stackTagCompound == null) - { - par1ItemStack.setTagCompound(new NBTTagCompound()); - } - - NBTTagCompound tag = par1ItemStack.stackTagCompound; - tag.setBoolean("isActive", !(tag.getBoolean("isActive"))); - - if (tag.getBoolean("isActive")) - { - par1ItemStack.setItemDamage(1); - tag.setInteger("worldTimeDelay", (int) (par2World.getWorldTime() - 1) % 200); - - if (!par3EntityPlayer.capabilities.isCreativeMode) - { - if (!EnergyItems.syphonBatteries(par1ItemStack, par3EntityPlayer, getEnergyUsed())) - { - } - } - } else - { - par1ItemStack.setItemDamage(par1ItemStack.getMaxDamage()); - } - - return par1ItemStack; - } - - @Override - public void onUpdate(ItemStack par1ItemStack, World par2World, Entity par3Entity, int par4, boolean par5) - { - if (!(par3Entity instanceof EntityPlayer)) - { - return; - } - - EntityPlayer par3EntityPlayer = (EntityPlayer) par3Entity; - - if (par1ItemStack.stackTagCompound == null) - { - par1ItemStack.setTagCompound(new NBTTagCompound()); - } - - if (par1ItemStack.stackTagCompound.getBoolean("isActive")) - { - List list = SpellHelper.getEntitiesInRange(par2World, par3Entity.posX, par3Entity.posY, par3Entity.posZ, 4.5, 4.5); - for(Entity entity : list) - { - if(!entity.equals(par3Entity)&&entity instanceof EntityLiving) - { - ((EntityLiving)entity).addPotionEffect(new PotionEffect(AlchemicalWizardry.customPotionPlanarBinding.id,5,0)); - } - } - } - - if (par2World.getWorldTime() % 200 == par1ItemStack.stackTagCompound.getInteger("worldTimeDelay") && par1ItemStack.stackTagCompound.getBoolean("isActive")) - { - //par3EntityPlayer.addPotionEffect(new PotionEffect(Potion.field_76444_x.id, 2400,99)); - if (!par3EntityPlayer.capabilities.isCreativeMode) - { - EnergyItems.syphonBatteries(par1ItemStack, par3EntityPlayer, getEnergyUsed()); - } - } - - return; - } -} \ No newline at end of file diff --git a/src-backup/main/java/WayofTime/alchemicalWizardry/common/items/sigil/ItemSigilOfSupression.java b/src-backup/main/java/WayofTime/alchemicalWizardry/common/items/sigil/ItemSigilOfSupression.java deleted file mode 100644 index c7c607c4..00000000 --- a/src-backup/main/java/WayofTime/alchemicalWizardry/common/items/sigil/ItemSigilOfSupression.java +++ /dev/null @@ -1,270 +0,0 @@ -package WayofTime.alchemicalWizardry.common.items.sigil; - -import java.util.List; - -import javax.swing.Icon; - -import net.minecraft.block.Block; -import net.minecraft.client.renderer.texture.IIconRegister; -import net.minecraft.entity.Entity; -import net.minecraft.entity.player.EntityPlayer; -import net.minecraft.item.ItemStack; -import net.minecraft.nbt.NBTTagCompound; -import net.minecraft.tileentity.TileEntity; -import net.minecraft.util.IIcon; -import net.minecraft.util.Vec3; -import net.minecraft.world.World; -import WayofTime.alchemicalWizardry.AlchemicalWizardry; -import WayofTime.alchemicalWizardry.api.items.interfaces.ArmourUpgrade; -import WayofTime.alchemicalWizardry.common.items.EnergyItems; -import WayofTime.alchemicalWizardry.common.spell.complex.effect.SpellHelper; -import WayofTime.alchemicalWizardry.common.tileEntity.TESpectralContainer; -import cpw.mods.fml.relauncher.Side; -import cpw.mods.fml.relauncher.SideOnly; - -public class ItemSigilOfSupression extends EnergyItems implements ArmourUpgrade -{ - private static IIcon activeIcon; - private static IIcon passiveIcon; - private int tickDelay = 200; - private int radius = 5; - private int refresh = 100; - - public ItemSigilOfSupression() - { - super(); - this.maxStackSize = 1; - setEnergyUsed(400); - setCreativeTab(AlchemicalWizardry.tabBloodMagic); - } - - @Override - public void addInformation(ItemStack par1ItemStack, EntityPlayer par2EntityPlayer, List par3List, boolean par4) - { - par3List.add("Better than telekinesis"); - - if (!(par1ItemStack.stackTagCompound == null)) - { - if (par1ItemStack.stackTagCompound.getBoolean("isActive")) - { - par3List.add("Activated"); - } else - { - par3List.add("Deactivated"); - } - - par3List.add("Current owner: " + par1ItemStack.stackTagCompound.getString("ownerName")); - } - } - - @Override - @SideOnly(Side.CLIENT) - public void registerIcons(IIconRegister iconRegister) - { - this.itemIcon = iconRegister.registerIcon("AlchemicalWizardry:SigilOfSupression_deactivated"); - this.activeIcon = iconRegister.registerIcon("AlchemicalWizardry:SigilOfSupression_activated"); - this.passiveIcon = iconRegister.registerIcon("AlchemicalWizardry:SigilOfSupression_deactivated"); - } - - @Override - public IIcon getIcon(ItemStack stack, int renderPass, EntityPlayer player, ItemStack usingItem, int useRemaining) - { - if (stack.stackTagCompound == null) - { - stack.setTagCompound(new NBTTagCompound()); - } - - NBTTagCompound tag = stack.stackTagCompound; - - if (tag.getBoolean("isActive")) - { - return this.activeIcon; - } else - { - return this.passiveIcon; - } - } - - @Override - @SideOnly(Side.CLIENT) - public IIcon getIconFromDamage(int par1) - { - if (par1 == 1) - { - return this.activeIcon; - } else - { - return this.passiveIcon; - } - } - - @Override - public ItemStack onItemRightClick(ItemStack par1ItemStack, World par2World, EntityPlayer par3EntityPlayer) - { - EnergyItems.checkAndSetItemOwner(par1ItemStack, par3EntityPlayer); - - if(SpellHelper.isFakePlayer(par2World, par3EntityPlayer)) - { - return par1ItemStack; - } - - if (par3EntityPlayer.isSneaking()) - { - return par1ItemStack; - } - - if (par1ItemStack.stackTagCompound == null) - { - par1ItemStack.setTagCompound(new NBTTagCompound()); - } - - NBTTagCompound tag = par1ItemStack.stackTagCompound; - tag.setBoolean("isActive", !(tag.getBoolean("isActive"))); - - if (tag.getBoolean("isActive")) - { - par1ItemStack.setItemDamage(1); - tag.setInteger("worldTimeDelay", (int) (par2World.getWorldTime() - 1) % tickDelay); - - if (!par3EntityPlayer.capabilities.isCreativeMode) - { - EnergyItems.syphonBatteries(par1ItemStack, par3EntityPlayer, getEnergyUsed()); - } - } else - { - par1ItemStack.setItemDamage(par1ItemStack.getMaxDamage()); - } - - return par1ItemStack; - } - - @Override - public void onUpdate(ItemStack par1ItemStack, World par2World, Entity par3Entity, int par4, boolean par5) - { - if (!(par3Entity instanceof EntityPlayer)) - { - return; - } - - if(SpellHelper.isFakePlayer(par2World, (EntityPlayer)par3Entity)) - { - return; - } - - EntityPlayer par3EntityPlayer = (EntityPlayer) par3Entity; - - if (par1ItemStack.stackTagCompound == null) - { - par1ItemStack.setTagCompound(new NBTTagCompound()); - } - - if (par1ItemStack.stackTagCompound.getBoolean("isActive")&&(!par2World.isRemote)) - { - Vec3 blockVec = SpellHelper.getEntityBlockVector(par3EntityPlayer); - int x = (int)blockVec.xCoord; - int y = (int)blockVec.yCoord; - int z = (int)blockVec.zCoord; - - for (int i = -radius; i <= radius; i++) - { - for (int j = -radius; j <= radius; j++) - { - for(int k = -radius; k <= radius; k++) - { - if (i * i + j * j + k * k >= (radius + 0.50f) * (radius + 0.50f)) - { - continue; - } - - Block block = par2World.getBlock(x+i, y+j, z+k); - - - if(SpellHelper.isBlockFluid(block)) - { - if(par2World.getTileEntity(x+i, y+j, z+k)!=null) - { - par2World.setBlockToAir(x+i, y+j, z+k); - } - TESpectralContainer.createSpectralBlockAtLocation(par2World, x+i, y+j, z+k, refresh); - } - else - { - TileEntity tile = par2World.getTileEntity(x+i, y+j, z+k); - if(tile instanceof TESpectralContainer) - { - ((TESpectralContainer) tile).resetDuration(refresh); - } - } - } - } - } - } - - if (par2World.getWorldTime() % 200 == par1ItemStack.stackTagCompound.getInteger("worldTimeDelay") && par1ItemStack.stackTagCompound.getBoolean("isActive")) - { - //par3EntityPlayer.addPotionEffect(new PotionEffect(Potion.field_76444_x.id, 2400,99)); - if (!par3EntityPlayer.capabilities.isCreativeMode) - { - EnergyItems.syphonBatteries(par1ItemStack, par3EntityPlayer, getEnergyUsed()); - - } - } - - return; - } - - @Override - public void onArmourUpdate(World world, EntityPlayer player, ItemStack thisItemStack) - { - Vec3 blockVec = SpellHelper.getEntityBlockVector(player); - int x = (int)blockVec.xCoord; - int y = (int)blockVec.yCoord; - int z = (int)blockVec.zCoord; - - for (int i = -radius; i <= radius; i++) - { - for (int j = -radius; j <= radius; j++) - { - for(int k = -radius; k <= radius; k++) - { - if (i * i + j * j + k * k >= (radius + 0.50f) * (radius + 0.50f)) - { - continue; - } - - Block block = world.getBlock(x+i, y+j, z+k); - - - if(SpellHelper.isBlockFluid(block)) - { - if(world.getTileEntity(x+i, y+j, z+k)!=null) - { - world.setBlockToAir(x+i, y+j, z+k); - } - TESpectralContainer.createSpectralBlockAtLocation(world, x+i, y+j, z+k, refresh); - } - else - { - TileEntity tile = world.getTileEntity(x+i, y+j, z+k); - if(tile instanceof TESpectralContainer) - { - ((TESpectralContainer) tile).resetDuration(refresh); - } - } - } - } - } - } - - @Override - public boolean isUpgrade() - { - return true; - } - - @Override - public int getEnergyForTenSeconds() - { - return 200; - } -} diff --git a/src-backup/main/java/WayofTime/alchemicalWizardry/common/items/sigil/LavaSigil.java b/src-backup/main/java/WayofTime/alchemicalWizardry/common/items/sigil/LavaSigil.java deleted file mode 100644 index 75028002..00000000 --- a/src-backup/main/java/WayofTime/alchemicalWizardry/common/items/sigil/LavaSigil.java +++ /dev/null @@ -1,310 +0,0 @@ -package WayofTime.alchemicalWizardry.common.items.sigil; - -import java.util.List; - -import net.minecraft.block.Block; -import net.minecraft.client.renderer.texture.IIconRegister; -import net.minecraft.entity.player.EntityPlayer; -import net.minecraft.init.Blocks; -import net.minecraft.inventory.IInventory; -import net.minecraft.item.ItemBucket; -import net.minecraft.item.ItemStack; -import net.minecraft.potion.Potion; -import net.minecraft.potion.PotionEffect; -import net.minecraft.tileentity.TileEntity; -import net.minecraft.util.MovingObjectPosition; -import net.minecraft.world.World; -import net.minecraftforge.common.util.ForgeDirection; -import net.minecraftforge.fluids.FluidRegistry; -import net.minecraftforge.fluids.FluidStack; -import net.minecraftforge.fluids.IFluidHandler; -import WayofTime.alchemicalWizardry.AlchemicalWizardry; -import WayofTime.alchemicalWizardry.api.items.interfaces.ArmourUpgrade; -import WayofTime.alchemicalWizardry.common.items.EnergyBattery; -import WayofTime.alchemicalWizardry.common.items.EnergyItems; -import cpw.mods.fml.relauncher.Side; -import cpw.mods.fml.relauncher.SideOnly; - -public class LavaSigil extends ItemBucket implements ArmourUpgrade -{ - /** - * field for checking if the bucket has been filled. - */ - private Block isFull = Blocks.lava; - private int energyUsed; - - public LavaSigil() - { - super(Blocks.lava); - this.maxStackSize = 1; - //setMaxDamage(2000); - setEnergyUsed(1000); - setCreativeTab(AlchemicalWizardry.tabBloodMagic); - } - - @Override - @SideOnly(Side.CLIENT) - public void registerIcons(IIconRegister iconRegister) - { - this.itemIcon = iconRegister.registerIcon("AlchemicalWizardry:LavaSigil"); - } - - @Override - public ItemStack getContainerItem(ItemStack itemStack) - { - ItemStack copiedStack = itemStack.copy(); - copiedStack.setItemDamage(copiedStack.getItemDamage() + getEnergyUsed()); - copiedStack.stackSize = 1; - return copiedStack; - } - - @Override - public void addInformation(ItemStack par1ItemStack, EntityPlayer par2EntityPlayer, List par3List, boolean par4) - { - par3List.add("Contact with liquid is"); - par3List.add("highly unrecommended."); - - if (!(par1ItemStack.stackTagCompound == null)) - { - par3List.add("Current owner: " + par1ItemStack.stackTagCompound.getString("ownerName")); - } - } - - /** - * Called whenever this item is equipped and the right mouse button is pressed. Args: itemStack, world, entityPlayer - */ - public ItemStack onItemRightClick(ItemStack par1ItemStack, World par2World, EntityPlayer par3EntityPlayer) - { - EnergyItems.checkAndSetItemOwner(par1ItemStack, par3EntityPlayer); - - if (par3EntityPlayer.isSneaking()) - { - return par1ItemStack; - } - - float f = 1.0F; - double d0 = par3EntityPlayer.prevPosX + (par3EntityPlayer.posX - par3EntityPlayer.prevPosX) * (double) f; - double d1 = par3EntityPlayer.prevPosY + (par3EntityPlayer.posY - par3EntityPlayer.prevPosY) * (double) f + 1.62D - (double) par3EntityPlayer.yOffset; - double d2 = par3EntityPlayer.prevPosZ + (par3EntityPlayer.posZ - par3EntityPlayer.prevPosZ) * (double) f; - - MovingObjectPosition movingobjectposition = this.getMovingObjectPositionFromPlayer(par2World, par3EntityPlayer, false); - - if (movingobjectposition == null) - { - return par1ItemStack; - } else - { - if (movingobjectposition.typeOfHit == MovingObjectPosition.MovingObjectType.BLOCK) - { - int i = movingobjectposition.blockX; - int j = movingobjectposition.blockY; - int k = movingobjectposition.blockZ; - - if (!par2World.canMineBlock(par3EntityPlayer, i, j, k)) - { - return par1ItemStack; - } - - TileEntity tile = par2World.getTileEntity(i, j, k); - if(tile instanceof IFluidHandler) - { - FluidStack fluid = new FluidStack(FluidRegistry.LAVA,1000); - int amount = ((IFluidHandler) tile).fill(ForgeDirection.getOrientation(movingobjectposition.sideHit), fluid, false); - - if(amount>0) - { - ((IFluidHandler) tile).fill(ForgeDirection.getOrientation(movingobjectposition.sideHit), fluid, true); - if (!par3EntityPlayer.capabilities.isCreativeMode) - { - if (!EnergyItems.syphonBatteries(par1ItemStack, par3EntityPlayer, getEnergyUsed())) - { - } - } - } - - return par1ItemStack; - } - - //if (this.isFull == 0) - { - //Empty - } //else - { - if (movingobjectposition.sideHit == 0) - { - --j; - } - - if (movingobjectposition.sideHit == 1) - { - ++j; - } - - if (movingobjectposition.sideHit == 2) - { - --k; - } - - if (movingobjectposition.sideHit == 3) - { - ++k; - } - - if (movingobjectposition.sideHit == 4) - { - --i; - } - - if (movingobjectposition.sideHit == 5) - { - ++i; - } - - if (!par3EntityPlayer.canPlayerEdit(i, j, k, movingobjectposition.sideHit, par1ItemStack)) - { - return par1ItemStack; - } - - if (this.tryPlaceContainedLiquid(par2World, d0, d1, d2, i, j, k) && !par3EntityPlayer.capabilities.isCreativeMode) - { - if (!par3EntityPlayer.capabilities.isCreativeMode) - { - if (!EnergyItems.syphonBatteries(par1ItemStack, par3EntityPlayer, getEnergyUsed())) - { - } - } else - { - return par1ItemStack; - } - } - } - } - - return par1ItemStack; - } - } - - /** - * Attempts to place the liquid contained inside the bucket. - */ - public boolean tryPlaceContainedLiquid(World par1World, double par2, double par4, double par6, int par8, int par9, int par10) - { - //if (this.isFull <= 0) - { - //return false; - } if (!par1World.isAirBlock(par8, par9, par10) && par1World.getBlock(par8, par9, par10).getMaterial().isSolid()) - { - return false; - } else if ((par1World.getBlock(par8, par9, par10) == Blocks.lava || par1World.getBlock(par8, par9, par10) == Blocks.flowing_lava) && par1World.getBlockMetadata(par8, par9, par10) == 0) - { - return false; - } else - { - par1World.setBlock(par8, par9, par10, this.isFull, 0, 3); - return true; - } - } - - protected void setEnergyUsed(int par1int) - { - this.energyUsed = par1int; - } - - protected int getEnergyUsed() - { - return this.energyUsed; - } - //Heals the player using the item. If the player is at full health, or if the durability cannot be used any more, - //the item is not used. - - // protected void damagePlayer(World world, EntityPlayer player, int damage) -// { -// if (world != null) -// { -// double posX = player.posX; -// double posY = player.posY; -// double posZ = player.posZ; -// world.playSoundEffect((double)((float)posX + 0.5F), (double)((float)posY + 0.5F), (double)((float)posZ + 0.5F), "random.fizz", 0.5F, 2.6F + (world.rand.nextFloat() - world.rand.nextFloat()) * 0.8F); -// float f = (float)1.0F; -// float f1 = f * 0.6F + 0.4F; -// float f2 = f * f * 0.7F - 0.5F; -// float f3 = f * f * 0.6F - 0.7F; -// -// for (int l = 0; l < 8; ++l) -// { -// world.spawnParticle("reddust", posX + Math.random() - Math.random(), posY + Math.random() - Math.random(), posZ + Math.random() - Math.random(), f1, f2, f3); -// } -// } -// -// for (int i = 0; i < damage; i++) -// { -// //player.setEntityHealth((player.getHealth()-1)); -// player.setEntityHealth(player.func_110143_aJ() - 1); -// -// if (player.func_110143_aJ() <= 0) -// { -// player.inventory.dropAllItems(); -// } -// } -// } - protected boolean syphonBatteries(ItemStack ist, EntityPlayer player, int damageToBeDone) - { - if (!player.capabilities.isCreativeMode) - { - boolean usedBattery = false; - IInventory inventory = player.inventory; - - for (int slot = 0; slot < inventory.getSizeInventory(); slot++) - { - ItemStack stack = inventory.getStackInSlot(slot); - - if (stack == null) - { - continue; - } - - if (stack.getItem() instanceof EnergyBattery && !usedBattery) - { - if (stack.getItemDamage() <= stack.getMaxDamage() - damageToBeDone) - { - stack.setItemDamage(stack.getItemDamage() + damageToBeDone); - usedBattery = true; - } - } - } - - if (!usedBattery) - { - return false; - } - - return true; - } else - { - return true; - } - } - - @Override - public void onArmourUpdate(World world, EntityPlayer player, - ItemStack thisItemStack) - { - // TODO Auto-generated method stub - player.addPotionEffect(new PotionEffect(Potion.fireResistance.id, 2, 9,true)); - player.extinguish(); - } - - @Override - public boolean isUpgrade() - { - // TODO Auto-generated method stub - return true; - } - - @Override - public int getEnergyForTenSeconds() - { - // TODO Auto-generated method stub - return 100; - } -} diff --git a/src-backup/main/java/WayofTime/alchemicalWizardry/common/items/sigil/SigilOfElementalAffinity.java b/src-backup/main/java/WayofTime/alchemicalWizardry/common/items/sigil/SigilOfElementalAffinity.java deleted file mode 100644 index daa017a1..00000000 --- a/src-backup/main/java/WayofTime/alchemicalWizardry/common/items/sigil/SigilOfElementalAffinity.java +++ /dev/null @@ -1,171 +0,0 @@ -package WayofTime.alchemicalWizardry.common.items.sigil; - -import java.util.List; - -import net.minecraft.client.renderer.texture.IIconRegister; -import net.minecraft.entity.Entity; -import net.minecraft.entity.player.EntityPlayer; -import net.minecraft.item.ItemStack; -import net.minecraft.nbt.NBTTagCompound; -import net.minecraft.potion.Potion; -import net.minecraft.potion.PotionEffect; -import net.minecraft.util.IIcon; -import net.minecraft.world.World; -import WayofTime.alchemicalWizardry.AlchemicalWizardry; -import WayofTime.alchemicalWizardry.common.items.EnergyItems; -import cpw.mods.fml.relauncher.Side; -import cpw.mods.fml.relauncher.SideOnly; - -public class SigilOfElementalAffinity extends EnergyItems -{ - @SideOnly(Side.CLIENT) - private static IIcon activeIcon; - @SideOnly(Side.CLIENT) - private static IIcon passiveIcon; - - public SigilOfElementalAffinity() - { - super(); - this.maxStackSize = 1; - setEnergyUsed(200); - setCreativeTab(AlchemicalWizardry.tabBloodMagic); - } - - @Override - public void addInformation(ItemStack par1ItemStack, EntityPlayer par2EntityPlayer, List par3List, boolean par4) - { - par3List.add("Perfect for a fire-breathing fish"); - par3List.add("who is afraid of heights!"); - - if (!(par1ItemStack.stackTagCompound == null)) - { - if (par1ItemStack.stackTagCompound.getBoolean("isActive")) - { - par3List.add("Activated"); - } else - { - par3List.add("Deactivated"); - } - - par3List.add("Current owner: " + par1ItemStack.stackTagCompound.getString("ownerName")); - } - } - - @Override - @SideOnly(Side.CLIENT) - public void registerIcons(IIconRegister iconRegister) - { - this.itemIcon = iconRegister.registerIcon("AlchemicalWizardry:SigilOfTheFastMiner"); - this.activeIcon = iconRegister.registerIcon("AlchemicalWizardry:ElementalSigil_activated"); - this.passiveIcon = iconRegister.registerIcon("AlchemicalWizardry:ElementalSigil_deactivated"); - } - - @Override - public IIcon getIcon(ItemStack stack, int renderPass, EntityPlayer player, ItemStack usingItem, int useRemaining) - { - if (stack.stackTagCompound == null) - { - stack.setTagCompound(new NBTTagCompound()); - } - - NBTTagCompound tag = stack.stackTagCompound; - - if (tag.getBoolean("isActive")) - { - return this.activeIcon; - } else - { - return this.passiveIcon; - } - } - - @Override - @SideOnly(Side.CLIENT) - public IIcon getIconFromDamage(int par1) - { - if (par1 == 1) - { - return this.activeIcon; - } else - { - return this.passiveIcon; - } - } - - @Override - public ItemStack onItemRightClick(ItemStack par1ItemStack, World par2World, EntityPlayer par3EntityPlayer) - { - EnergyItems.checkAndSetItemOwner(par1ItemStack, par3EntityPlayer); - - if (par3EntityPlayer.isSneaking()) - { - return par1ItemStack; - } - - if (par1ItemStack.stackTagCompound == null) - { - par1ItemStack.setTagCompound(new NBTTagCompound()); - } - - NBTTagCompound tag = par1ItemStack.stackTagCompound; - tag.setBoolean("isActive", !(tag.getBoolean("isActive"))); - - if (tag.getBoolean("isActive")) - { - par1ItemStack.setItemDamage(1); - tag.setInteger("worldTimeDelay", (int) (par2World.getWorldTime() - 1) % 200); - par3EntityPlayer.addPotionEffect(new PotionEffect(Potion.waterBreathing.id, 2, 0, true)); - par3EntityPlayer.addPotionEffect(new PotionEffect(Potion.fireResistance.id, 2, 0, true)); - - //Test with added health boost - //par3EntityPlayer.addPotionEffect(new PotionEffect(Potion.field_76444_x.id, 2400,99)); - if (!par3EntityPlayer.capabilities.isCreativeMode) - { - if (!EnergyItems.syphonBatteries(par1ItemStack, par3EntityPlayer, getEnergyUsed())) - { - } - } - } else - { - par1ItemStack.setItemDamage(par1ItemStack.getMaxDamage()); - } - - return par1ItemStack; - } - - @Override - public void onUpdate(ItemStack par1ItemStack, World par2World, Entity par3Entity, int par4, boolean par5) - { - if (!(par3Entity instanceof EntityPlayer)) - { - return; - } - - EntityPlayer par3EntityPlayer = (EntityPlayer) par3Entity; - - if (par1ItemStack.stackTagCompound == null) - { - par1ItemStack.setTagCompound(new NBTTagCompound()); - } - - if (par1ItemStack.stackTagCompound.getBoolean("isActive")) - { - par3EntityPlayer.fallDistance = 0; - par3EntityPlayer.addPotionEffect(new PotionEffect(Potion.waterBreathing.id, 2, 0, true)); - par3EntityPlayer.addPotionEffect(new PotionEffect(Potion.fireResistance.id, 2, 0, true)); - } - - if (par2World.getWorldTime() % 200 == par1ItemStack.stackTagCompound.getInteger("worldTimeDelay") && par1ItemStack.stackTagCompound.getBoolean("isActive")) - { - //par3EntityPlayer.addPotionEffect(new PotionEffect(Potion.field_76444_x.id, 2400,99)); - if (!par3EntityPlayer.capabilities.isCreativeMode) - { - if (!EnergyItems.syphonBatteries(par1ItemStack, par3EntityPlayer, getEnergyUsed())) - { - } - } - } - - return; - } -} \ No newline at end of file diff --git a/src-backup/main/java/WayofTime/alchemicalWizardry/common/items/sigil/SigilOfGrowth.java b/src-backup/main/java/WayofTime/alchemicalWizardry/common/items/sigil/SigilOfGrowth.java deleted file mode 100644 index 54c64001..00000000 --- a/src-backup/main/java/WayofTime/alchemicalWizardry/common/items/sigil/SigilOfGrowth.java +++ /dev/null @@ -1,305 +0,0 @@ -package WayofTime.alchemicalWizardry.common.items.sigil; - -import java.util.List; - -import net.minecraft.block.Block; -import net.minecraft.block.IGrowable; -import net.minecraft.client.renderer.texture.IIconRegister; -import net.minecraft.entity.Entity; -import net.minecraft.entity.player.EntityPlayer; -import net.minecraft.item.ItemStack; -import net.minecraft.nbt.NBTTagCompound; -import net.minecraft.util.IIcon; -import net.minecraft.world.World; -import net.minecraftforge.common.IPlantable; -import net.minecraftforge.common.MinecraftForge; -import net.minecraftforge.event.entity.player.BonemealEvent; -import WayofTime.alchemicalWizardry.AlchemicalWizardry; -import WayofTime.alchemicalWizardry.api.items.interfaces.ArmourUpgrade; -import WayofTime.alchemicalWizardry.common.alchemy.ICombinationalCatalyst; -import WayofTime.alchemicalWizardry.common.items.EnergyItems; -import cpw.mods.fml.common.eventhandler.Event.Result; -import cpw.mods.fml.relauncher.Side; -import cpw.mods.fml.relauncher.SideOnly; - -public class SigilOfGrowth extends EnergyItems implements ArmourUpgrade -{ - private static IIcon activeIcon; - private static IIcon passiveIcon; - private int tickDelay = 100; - - public SigilOfGrowth() - { - super(); - this.maxStackSize = 1; - //setMaxDamage(1000); - setEnergyUsed(150); - setCreativeTab(AlchemicalWizardry.tabBloodMagic); - // TODO Auto-generated constructor stub - } - - @Override - public void addInformation(ItemStack par1ItemStack, EntityPlayer par2EntityPlayer, List par3List, boolean par4) - { - par3List.add("Who needs a green thumb when"); - par3List.add("you have a green slate?"); - - if (!(par1ItemStack.stackTagCompound == null)) - { - if (par1ItemStack.stackTagCompound.getBoolean("isActive")) - { - par3List.add("Activated"); - } else - { - par3List.add("Deactivated"); - } - - par3List.add("Current owner: " + par1ItemStack.stackTagCompound.getString("ownerName")); - } - } - - @Override - @SideOnly(Side.CLIENT) - public void registerIcons(IIconRegister iconRegister) - { - this.itemIcon = iconRegister.registerIcon("AlchemicalWizardry:GrowthSigil_deactivated"); - this.activeIcon = iconRegister.registerIcon("AlchemicalWizardry:GrowthSigil_activated"); - this.passiveIcon = iconRegister.registerIcon("AlchemicalWizardry:GrowthSigil_deactivated"); - } - - @Override - public IIcon getIcon(ItemStack stack, int renderPass, EntityPlayer player, ItemStack usingItem, int useRemaining) - { - if (stack.stackTagCompound == null) - { - stack.setTagCompound(new NBTTagCompound()); - } - - NBTTagCompound tag = stack.stackTagCompound; - - if (tag.getBoolean("isActive")) - { - return this.activeIcon; - } else - { - return this.passiveIcon; - } - } - - @Override - @SideOnly(Side.CLIENT) - public IIcon getIconFromDamage(int par1) - { - if (par1 == 1) - { - return this.activeIcon; - } else - { - return this.passiveIcon; - } - } - - @Override - public boolean onItemUse(ItemStack par1ItemStack, EntityPlayer par2EntityPlayer, World par3World, int par4, int par5, int par6, int par7, float par8, float par9, float par10) - { - EnergyItems.checkAndSetItemOwner(par1ItemStack, par2EntityPlayer); - - if (applyBonemeal(par1ItemStack, par3World, par4, par5, par6, par2EntityPlayer)) - { - EnergyItems.syphonBatteries(par1ItemStack, par2EntityPlayer, getEnergyUsed()); - - if (par3World.isRemote) - { - par3World.playAuxSFX(2005, par4, par5, par6, 0); - return true; - } - - return true; - } - - return false; - } - - @Override - public ItemStack onItemRightClick(ItemStack par1ItemStack, World par2World, EntityPlayer par3EntityPlayer) - { - EnergyItems.checkAndSetItemOwner(par1ItemStack, par3EntityPlayer); - - if(par2World.isRemote) - { - return par1ItemStack; - } - - if (par3EntityPlayer.isSneaking()) - { - return par1ItemStack; - } - - if (par1ItemStack.stackTagCompound == null) - { - par1ItemStack.setTagCompound(new NBTTagCompound()); - } - - NBTTagCompound tag = par1ItemStack.stackTagCompound; - tag.setBoolean("isActive", !(tag.getBoolean("isActive"))); - - if (tag.getBoolean("isActive")) - { - par1ItemStack.setItemDamage(1); - tag.setInteger("worldTimeDelay", (int) (par2World.getWorldTime() - 1) % tickDelay); - - if (!par3EntityPlayer.capabilities.isCreativeMode) - { - EnergyItems.syphonBatteries(par1ItemStack, par3EntityPlayer, getEnergyUsed()); - } - } else - { - par1ItemStack.setItemDamage(par1ItemStack.getMaxDamage()); - } - - return par1ItemStack; - } - - @Override - public void onUpdate(ItemStack par1ItemStack, World par2World, Entity par3Entity, int par4, boolean par5) - { - if (!(par3Entity instanceof EntityPlayer)) - { - return; - } - - EntityPlayer par3EntityPlayer = (EntityPlayer) par3Entity; - - if (par1ItemStack.stackTagCompound == null) - { - par1ItemStack.setTagCompound(new NBTTagCompound()); - } - - if (par1ItemStack.stackTagCompound.getBoolean("isActive")) - { - if (par2World.getWorldTime() % tickDelay == par1ItemStack.stackTagCompound.getInteger("worldTimeDelay") && par3Entity instanceof EntityPlayer) - { - EnergyItems.syphonBatteries(par1ItemStack, (EntityPlayer) par3Entity, getEnergyUsed()); - } - - int range = 5; - int verticalRange = 2; - int posX = (int) Math.round(par3Entity.posX - 0.5f); - int posY = (int) par3Entity.posY; - int posZ = (int) Math.round(par3Entity.posZ - 0.5f); - - for (int ix = posX - range; ix <= posX + range; ix++) - { - for (int iz = posZ - range; iz <= posZ + range; iz++) - { - for (int iy = posY - verticalRange; iy <= posY + verticalRange; iy++) - { - Block block = par2World.getBlock(ix, iy, iz); - - - if (block instanceof IPlantable) - { - if (par2World.rand.nextInt(20) == 0) - { - block.updateTick(par2World, ix, iy, iz, par2World.rand); - } - } - } - } - } - } - - return; - } - - public static boolean applyBonemeal(ItemStack p_150919_0_, World p_150919_1_, int p_150919_2_, int p_150919_3_, int p_150919_4_, EntityPlayer player) - { - Block block = p_150919_1_.getBlock(p_150919_2_, p_150919_3_, p_150919_4_); - - BonemealEvent event = new BonemealEvent(player, p_150919_1_, block, p_150919_2_, p_150919_3_, p_150919_4_); - if (MinecraftForge.EVENT_BUS.post(event)) - { - return false; - } - - if (event.getResult() == Result.ALLOW) - { - if (!p_150919_1_.isRemote) - { - - } - return true; - } - - if (block instanceof IGrowable) - { - IGrowable igrowable = (IGrowable)block; - - if (igrowable.func_149851_a(p_150919_1_, p_150919_2_, p_150919_3_, p_150919_4_, p_150919_1_.isRemote)) - { - if (!p_150919_1_.isRemote) - { - if (igrowable.func_149852_a(p_150919_1_, p_150919_1_.rand, p_150919_2_, p_150919_3_, p_150919_4_)) - { - igrowable.func_149853_b(p_150919_1_, p_150919_1_.rand, p_150919_2_, p_150919_3_, p_150919_4_); - } - - - } - - return true; - } - } - - return false; - } - - @Override - public void onArmourUpdate(World world, EntityPlayer player, ItemStack thisItemStack) - { - if(world.isRemote) - { - return; - } - - int range = 5; - int verticalRange = 2; - int posX = (int) Math.round(player.posX - 0.5f); - int posY = (int) player.posY; - int posZ = (int) Math.round(player.posZ - 0.5f); - - for (int ix = posX - range; ix <= posX + range; ix++) - { - for (int iz = posZ - range; iz <= posZ + range; iz++) - { - for (int iy = posY - verticalRange; iy <= posY + verticalRange; iy++) - { - Block block = world.getBlock(ix, iy, iz); - - - if (block instanceof IPlantable) - { - if (world.rand.nextInt(10) == 0) - { - block.updateTick(world, ix, iy, iz, world.rand); - } - } - } - } - } - } - - @Override - public boolean isUpgrade() - { - // TODO Auto-generated method stub - return true; - } - - @Override - public int getEnergyForTenSeconds() - { - // TODO Auto-generated method stub - return 50; - } -} diff --git a/src-backup/main/java/WayofTime/alchemicalWizardry/common/items/sigil/SigilOfHaste.java b/src-backup/main/java/WayofTime/alchemicalWizardry/common/items/sigil/SigilOfHaste.java deleted file mode 100644 index 2aecbf25..00000000 --- a/src-backup/main/java/WayofTime/alchemicalWizardry/common/items/sigil/SigilOfHaste.java +++ /dev/null @@ -1,198 +0,0 @@ -package WayofTime.alchemicalWizardry.common.items.sigil; - -import java.util.List; - -import javax.swing.Icon; - -import net.minecraft.client.renderer.texture.IIconRegister; -import net.minecraft.entity.Entity; -import net.minecraft.entity.player.EntityPlayer; -import net.minecraft.item.ItemStack; -import net.minecraft.nbt.NBTTagCompound; -import net.minecraft.potion.PotionEffect; -import net.minecraft.util.IIcon; -import net.minecraft.world.World; -import WayofTime.alchemicalWizardry.AlchemicalWizardry; -import WayofTime.alchemicalWizardry.api.items.interfaces.ArmourUpgrade; -import WayofTime.alchemicalWizardry.common.items.EnergyItems; -import cpw.mods.fml.relauncher.Side; -import cpw.mods.fml.relauncher.SideOnly; - -public class SigilOfHaste extends EnergyItems implements ArmourUpgrade -{ - @SideOnly(Side.CLIENT) - private static IIcon activeIcon; - @SideOnly(Side.CLIENT) - private static IIcon passiveIcon; - - public SigilOfHaste() - { - super(); - this.maxStackSize = 1; - //setMaxDamage(100); - setEnergyUsed(250); - setCreativeTab(AlchemicalWizardry.tabBloodMagic); - } - - @Override - public void addInformation(ItemStack par1ItemStack, EntityPlayer par2EntityPlayer, List par3List, boolean par4) - { - par3List.add("One dose of caffeine later..."); - - if (!(par1ItemStack.stackTagCompound == null)) - { - if (par1ItemStack.stackTagCompound.getBoolean("isActive")) - { - par3List.add("Activated"); - } else - { - par3List.add("Deactivated"); - } - - par3List.add("Current owner: " + par1ItemStack.stackTagCompound.getString("ownerName")); - } - } - - @Override - @SideOnly(Side.CLIENT) - public void registerIcons(IIconRegister iconRegister) - { - this.itemIcon = iconRegister.registerIcon("AlchemicalWizardry:HasteSigil_deactivated"); - this.activeIcon = iconRegister.registerIcon("AlchemicalWizardry:HasteSigil_activated"); - this.passiveIcon = iconRegister.registerIcon("AlchemicalWizardry:HasteSigil_deactivated"); - } - - @Override - public IIcon getIcon(ItemStack stack, int renderPass, EntityPlayer player, ItemStack usingItem, int useRemaining) - { - if (stack.stackTagCompound == null) - { - stack.setTagCompound(new NBTTagCompound()); - } - - NBTTagCompound tag = stack.stackTagCompound; - - if (tag.getBoolean("isActive")) - { - return this.activeIcon; - } else - { - return this.passiveIcon; - } - } - - @Override - @SideOnly(Side.CLIENT) - public IIcon getIconFromDamage(int par1) - { - if (par1 == 1) - { - return this.activeIcon; - } else - { - return this.passiveIcon; - } - } - - @Override - public ItemStack onItemRightClick(ItemStack par1ItemStack, World par2World, EntityPlayer par3EntityPlayer) - { - EnergyItems.checkAndSetItemOwner(par1ItemStack, par3EntityPlayer); - - if (par3EntityPlayer.isSneaking()) - { - return par1ItemStack; - } - - if (par1ItemStack.stackTagCompound == null) - { - par1ItemStack.setTagCompound(new NBTTagCompound()); - } - - NBTTagCompound tag = par1ItemStack.stackTagCompound; - tag.setBoolean("isActive", !(tag.getBoolean("isActive"))); - - if (tag.getBoolean("isActive")) - { - par1ItemStack.setItemDamage(1); - tag.setInteger("worldTimeDelay", (int) (par2World.getWorldTime() - 1) % 200); - par3EntityPlayer.addPotionEffect(new PotionEffect(AlchemicalWizardry.customPotionBoost.id, 3, 1)); - //par3EntityPlayer.addPotionEffect(new PotionEffect(AlchemicalWizardry.customPotionProjProt.id, 2, 2)); - - //Test with added health boost - //par3EntityPlayer.addPotionEffect(new PotionEffect(Potion.field_76444_x.id, 2400,99)); - if (!par3EntityPlayer.capabilities.isCreativeMode) - { - if (!EnergyItems.syphonBatteries(par1ItemStack, par3EntityPlayer, getEnergyUsed())) - { - } - } - } else - { - par1ItemStack.setItemDamage(par1ItemStack.getMaxDamage()); - } - - return par1ItemStack; - } - - @Override - public void onUpdate(ItemStack par1ItemStack, World par2World, Entity par3Entity, int par4, boolean par5) - { - if (!(par3Entity instanceof EntityPlayer)) - { - return; - } - - EntityPlayer par3EntityPlayer = (EntityPlayer) par3Entity; - - if (par1ItemStack.stackTagCompound == null) - { - par1ItemStack.setTagCompound(new NBTTagCompound()); - } - - if (par1ItemStack.stackTagCompound.getBoolean("isActive")) - { - par3EntityPlayer.addPotionEffect(new PotionEffect(AlchemicalWizardry.customPotionBoost.id, 3, 1)); - } - - if (par2World.getWorldTime() % 200 == par1ItemStack.stackTagCompound.getInteger("worldTimeDelay") && par1ItemStack.stackTagCompound.getBoolean("isActive")) - { - //par3EntityPlayer.addPotionEffect(new PotionEffect(AlchemicalWizardry.customPotionBoost.id, 205, 1)); - - //par3EntityPlayer.addPotionEffect(new PotionEffect(AlchemicalWizardry.customPotionProjProt.id, 205, 2)); - if (!par3EntityPlayer.capabilities.isCreativeMode) - { - if (!EnergyItems.syphonBatteries(par1ItemStack, par3EntityPlayer, getEnergyUsed())) - { - } - } - } - - return; - } - - @Override - public void onArmourUpdate(World world, EntityPlayer player, ItemStack itemStack) - { - if (itemStack.stackTagCompound == null) - { - itemStack.setTagCompound(new NBTTagCompound()); - } - - player.addPotionEffect(new PotionEffect(AlchemicalWizardry.customPotionBoost.id, 3, 1,true)); - } - - @Override - public boolean isUpgrade() - { - // TODO Auto-generated method stub - return true; - } - - @Override - public int getEnergyForTenSeconds() - { - // TODO Auto-generated method stub - return 150; - } -} \ No newline at end of file diff --git a/src-backup/main/java/WayofTime/alchemicalWizardry/common/items/sigil/SigilOfHolding.java b/src-backup/main/java/WayofTime/alchemicalWizardry/common/items/sigil/SigilOfHolding.java deleted file mode 100644 index 03b1f730..00000000 --- a/src-backup/main/java/WayofTime/alchemicalWizardry/common/items/sigil/SigilOfHolding.java +++ /dev/null @@ -1,371 +0,0 @@ -package WayofTime.alchemicalWizardry.common.items.sigil; - -import java.util.ArrayList; -import java.util.List; - -import net.minecraft.client.renderer.texture.IIconRegister; -import net.minecraft.entity.Entity; -import net.minecraft.entity.player.EntityPlayer; -import net.minecraft.item.Item; -import net.minecraft.item.ItemStack; -import net.minecraft.nbt.NBTTagCompound; -import net.minecraft.nbt.NBTTagList; -import net.minecraft.util.IIcon; -import net.minecraft.world.World; -import net.minecraftforge.common.util.Constants; -import WayofTime.alchemicalWizardry.AlchemicalWizardry; -import WayofTime.alchemicalWizardry.ModItems; -import WayofTime.alchemicalWizardry.api.items.interfaces.IHolding; -import WayofTime.alchemicalWizardry.common.items.EnergyItems; -import cpw.mods.fml.relauncher.Side; -import cpw.mods.fml.relauncher.SideOnly; - -public class SigilOfHolding extends EnergyItems -{ - private int invSize = 4; - - public static List allowedSigils = new ArrayList(); - - public SigilOfHolding() - { - super(); - this.maxStackSize = 1; - //setEnergyUsed(100); - setCreativeTab(AlchemicalWizardry.tabBloodMagic); - } - - @Override - @SideOnly(Side.CLIENT) - public void registerIcons(IIconRegister iconRegister) - { - this.itemIcon = iconRegister.registerIcon("AlchemicalWizardry:SigilOfHolding"); - } - - @Override - public IIcon getIcon(ItemStack stack, int renderPass, EntityPlayer player, ItemStack usingItem, int useRemaining) - { - if (!(stack.stackTagCompound == null)) - { - ItemStack[] inv = getInternalInventory(stack); - - if (inv == null) - { - return this.itemIcon; - } - - ItemStack item = inv[stack.stackTagCompound.getInteger("selectedSlot")]; - - if (item != null) - { - return item.getIconIndex(); - } - } - - return this.itemIcon; - } - - @Override - public void addInformation(ItemStack par1ItemStack, EntityPlayer par2EntityPlayer, List par3List, boolean par4) - { - par3List.add("Used to hold several Sigils!"); - - if (!(par1ItemStack.stackTagCompound == null)) - { - par3List.add("Current owner: " + par1ItemStack.stackTagCompound.getString("ownerName")); -// par3List.add("Current slot: " + par1ItemStack.stackTagCompound.getInteger("selectedSlot")); - ItemStack[] inv = getInternalInventory(par1ItemStack); - - if (inv == null) - { - return; - } - - ItemStack item = inv[par1ItemStack.stackTagCompound.getInteger("selectedSlot")]; - - if (item != null) - { - par3List.add("Current item: " + item.getDisplayName()); - } - - for (int i = 0; i < invSize; i++) - { - if (inv[i] != null) - { - par3List.add("Item in slot " + i + ": " + inv[i].getDisplayName()); - } - } - } - } - - @Override - public ItemStack onItemRightClick(ItemStack par1ItemStack, World par2World, EntityPlayer par3EntityPlayer) - { - //TODO Might be a good idea to have this item need to be in the player's first slot - //for it to search and consume sigils on right click. Might avoid confusion? At least - //will avoid the need to add a button just for it... - this.checkAndSetItemOwner(par1ItemStack, par3EntityPlayer); - - if (par3EntityPlayer.isSneaking()) - { - if (this.addSigilToInventory(par1ItemStack, par3EntityPlayer)) - { - return par1ItemStack; - } - - selectNextSlot(par1ItemStack); - return par1ItemStack; - } - - int currentSlot = this.getSelectedSlot(par1ItemStack); - ItemStack[] inv = getInternalInventory(par1ItemStack); - - if (inv == null) - { - return par1ItemStack; - } - - ItemStack itemUsed = inv[currentSlot]; - - if (itemUsed == null) - { - return par1ItemStack; - } - - itemUsed.getItem().onItemRightClick(itemUsed, par2World, par3EntityPlayer); - saveInternalInventory(par1ItemStack, inv); - return par1ItemStack; - } - - @Override - public void onUpdate(ItemStack par1ItemStack, World par2World, Entity par3Entity, int par4, boolean par5) - { - if (!(par1ItemStack.stackTagCompound == null)) - { - this.tickInternalInventory(par1ItemStack, par2World, par3Entity, par4, par5); - } - } - - public ItemStack[] getInternalInventory(ItemStack itemStack) - { - NBTTagCompound itemTag = itemStack.stackTagCompound; - - if (itemTag == null) - { - itemStack.setTagCompound(new NBTTagCompound()); - return null; - } - - ItemStack[] inv = new ItemStack[9]; - NBTTagList tagList = itemTag.getTagList("Inventory", Constants.NBT.TAG_COMPOUND); - - if (tagList == null) - { - return null; - } - - for (int i = 0; i < tagList.tagCount(); i++) - { - NBTTagCompound tag = (NBTTagCompound) tagList.getCompoundTagAt(i); - int slot = tag.getByte("Slot"); - - if (slot >= 0 && slot < invSize) - { - inv[slot] = ItemStack.loadItemStackFromNBT(tag); - } - } - - return inv; - } - - public void saveInternalInventory(ItemStack itemStack, ItemStack[] inventory) - { - NBTTagCompound itemTag = itemStack.stackTagCompound; - - if (itemTag == null) - { - itemStack.setTagCompound(new NBTTagCompound()); - } - - NBTTagList itemList = new NBTTagList(); - - for (int i = 0; i < invSize; i++) - { - ItemStack stack = inventory[i]; - - if (inventory[i] != null) - { - NBTTagCompound tag = new NBTTagCompound(); - tag.setByte("Slot", (byte) i); - inventory[i].writeToNBT(tag); - itemList.appendTag(tag); - } - } - - itemTag.setTag("Inventory", itemList); - } - - public void tickInternalInventory(ItemStack par1ItemStack, World par2World, Entity par3Entity, int par4, boolean par5) - { - ItemStack[] inv = getInternalInventory(par1ItemStack); - - if (inv == null) - { - return; - } - - for (int i = 0; i < invSize; i++) - { - if (inv[i] == null) - { - continue; - } - - inv[i].getItem().onUpdate(inv[i], par2World, par3Entity, par4, par5); - } - } - - public int getSelectedSlot(ItemStack itemStack) - { - NBTTagCompound itemTag = itemStack.stackTagCompound; - - if (itemTag == null) - { - itemStack.setTagCompound(new NBTTagCompound()); - } - - return itemTag.getInteger("selectedSlot"); - } - - public void selectNextSlot(ItemStack itemStack) - { - ItemStack[] inv = getInternalInventory(itemStack); - int filledSlots = 0; - - for (int i = 0; i < invSize; i++) - { - if (inv[i] != null) - { - filledSlots++; - } else - { - break; - } - } - - NBTTagCompound itemTag = itemStack.stackTagCompound; - - if (itemTag == null) - { - itemStack.setTagCompound(new NBTTagCompound()); - } - - if (getSelectedSlot(itemStack) + 1 < filledSlots) - { - itemTag.setInteger("selectedSlot", itemTag.getInteger("selectedSlot") + 1); - } else - { - itemTag.setInteger("selectedSlot", 0); - } - } - - public boolean hasAddedToInventory(ItemStack sigilItemStack, ItemStack addedItemStack) - { - ItemStack[] inv = getInternalInventory(sigilItemStack); - - if (inv == null) - { - return false; - } - - if (addedItemStack == null) - { - return false; - } - - Item item = addedItemStack.getItem(); - int candidateSlot = -1; - - for (int i = invSize - 1; i >= 0; i--) - { - ItemStack nextItem = inv[i]; - - if (nextItem == null) - { - candidateSlot = i; - continue; - } - - if (item == nextItem.getItem()) - { - return false; - } - } - - if (candidateSlot == -1) - { - return false; - } - - if(addedItemStack.getItem() instanceof IHolding) - { - inv[candidateSlot] = addedItemStack; - saveInternalInventory(sigilItemStack, inv); - return true; - } - - for (ItemStack i : allowedSigils) - { - if (i != null && i.getItem() == item) - { - inv[candidateSlot] = addedItemStack; - saveInternalInventory(sigilItemStack, inv); - return true; - } - } - - return false; - } - - public boolean addSigilToInventory(ItemStack sigilItemStack, EntityPlayer player) - { - ItemStack[] playerInventory = player.inventory.mainInventory; - - for (int i = 0; i < 36; i++) - { - if (this.hasAddedToInventory(sigilItemStack, playerInventory[i])) - { - player.inventory.consumeInventoryItem(playerInventory[i].getItem()); - //playerInventory[i].stackSize--; - return true; - } - } - - return false; - } - - public static void initiateSigilOfHolding() - { - allowedSigils.add(new ItemStack(ModItems.waterSigil)); - allowedSigils.add(new ItemStack(ModItems.lavaSigil)); - allowedSigils.add(new ItemStack(ModItems.voidSigil)); - allowedSigils.add(new ItemStack(ModItems.airSigil)); - allowedSigils.add(new ItemStack(ModItems.sigilOfTheFastMiner)); - allowedSigils.add(new ItemStack(ModItems.divinationSigil)); - allowedSigils.add(new ItemStack(ModItems.sigilOfElementalAffinity)); - allowedSigils.add(new ItemStack(ModItems.growthSigil)); - allowedSigils.add(new ItemStack(ModItems.sigilOfHaste)); - allowedSigils.add(new ItemStack(ModItems.sigilOfWind)); - } - - public ItemStack getCurrentItem(ItemStack sigilItemStack) - { - ItemStack[] items = this.getInternalInventory(sigilItemStack); - - if (items == null) - { - return null; - } - - return items[this.getSelectedSlot(sigilItemStack)]; - } -} diff --git a/src-backup/main/java/WayofTime/alchemicalWizardry/common/items/sigil/SigilOfMagnetism.java b/src-backup/main/java/WayofTime/alchemicalWizardry/common/items/sigil/SigilOfMagnetism.java deleted file mode 100644 index 5693d17f..00000000 --- a/src-backup/main/java/WayofTime/alchemicalWizardry/common/items/sigil/SigilOfMagnetism.java +++ /dev/null @@ -1,222 +0,0 @@ -package WayofTime.alchemicalWizardry.common.items.sigil; - -import java.util.List; - -import net.minecraft.client.renderer.texture.IIconRegister; -import net.minecraft.entity.Entity; -import net.minecraft.entity.item.EntityItem; -import net.minecraft.entity.player.EntityPlayer; -import net.minecraft.item.ItemStack; -import net.minecraft.nbt.NBTTagCompound; -import net.minecraft.util.AxisAlignedBB; -import net.minecraft.util.IIcon; -import net.minecraft.world.World; -import WayofTime.alchemicalWizardry.AlchemicalWizardry; -import WayofTime.alchemicalWizardry.api.items.interfaces.ArmourUpgrade; -import WayofTime.alchemicalWizardry.common.items.EnergyItems; -import cpw.mods.fml.relauncher.Side; -import cpw.mods.fml.relauncher.SideOnly; - -public class SigilOfMagnetism extends EnergyItems implements ArmourUpgrade -{ - private static IIcon activeIcon; - private static IIcon passiveIcon; - private int tickDelay = 300; - - public SigilOfMagnetism() - { - super(); - this.maxStackSize = 1; - //setMaxDamage(1000); - setEnergyUsed(50); - setCreativeTab(AlchemicalWizardry.tabBloodMagic); - // TODO Auto-generated constructor stub - } - - @Override - public void addInformation(ItemStack par1ItemStack, EntityPlayer par2EntityPlayer, List par3List, boolean par4) - { - par3List.add("I have a very magnetic personality!"); -// par3List.add("you have a green slate?"); - - if (!(par1ItemStack.stackTagCompound == null)) - { - if (par1ItemStack.stackTagCompound.getBoolean("isActive")) - { - par3List.add("Activated"); - } else - { - par3List.add("Deactivated"); - } - - par3List.add("Current owner: " + par1ItemStack.stackTagCompound.getString("ownerName")); - } - } - - @Override - @SideOnly(Side.CLIENT) - public void registerIcons(IIconRegister iconRegister) - { - this.itemIcon = iconRegister.registerIcon("AlchemicalWizardry:SigilOfMagnetism_deactivated"); - this.activeIcon = iconRegister.registerIcon("AlchemicalWizardry:SigilOfMagnetism_activated"); - this.passiveIcon = iconRegister.registerIcon("AlchemicalWizardry:SigilOfMagnetism_deactivated"); - } - - @Override - public IIcon getIcon(ItemStack stack, int renderPass, EntityPlayer player, ItemStack usingItem, int useRemaining) - { - if (stack.stackTagCompound == null) - { - stack.setTagCompound(new NBTTagCompound()); - } - - NBTTagCompound tag = stack.stackTagCompound; - - if (tag.getBoolean("isActive")) - { - return this.activeIcon; - } else - { - return this.passiveIcon; - } - } - - @Override - @SideOnly(Side.CLIENT) - public IIcon getIconFromDamage(int par1) - { - if (par1 == 1) - { - return this.activeIcon; - } else - { - return this.passiveIcon; - } - } - -// @Override -// public boolean onItemUse(ItemStack par1ItemStack, EntityPlayer par2EntityPlayer, World par3World, int par4, int par5, int par6, int par7, float par8, float par9, float par10) -// { -// EnergyItems.checkAndSetItemOwner(par1ItemStack, par2EntityPlayer); -// if(applyBonemeal(par1ItemStack,par3World,par4,par5,par6,par2EntityPlayer)) -// { -// if (par3World.isRemote) -// { -// par3World.playAuxSFX(2005, par4, par5, par6, 0); -// EnergyItems.syphonBatteries(par1ItemStack, par2EntityPlayer, getEnergyUsed()); -// return true; -// } -// return true; -// } -// return false; -// } - - @Override - public ItemStack onItemRightClick(ItemStack par1ItemStack, World par2World, EntityPlayer par3EntityPlayer) - { - EnergyItems.checkAndSetItemOwner(par1ItemStack, par3EntityPlayer); - - if (par3EntityPlayer.isSneaking()) - { - return par1ItemStack; - } - - if (par1ItemStack.stackTagCompound == null) - { - par1ItemStack.setTagCompound(new NBTTagCompound()); - } - - NBTTagCompound tag = par1ItemStack.stackTagCompound; - tag.setBoolean("isActive", !(tag.getBoolean("isActive"))); - - if (tag.getBoolean("isActive")) - { - par1ItemStack.setItemDamage(1); - tag.setInteger("worldTimeDelay", (int) (par2World.getWorldTime() - 1) % tickDelay); - - if (!par3EntityPlayer.capabilities.isCreativeMode) - { - EnergyItems.syphonBatteries(par1ItemStack, par3EntityPlayer, getEnergyUsed()); - } - } else - { - par1ItemStack.setItemDamage(par1ItemStack.getMaxDamage()); - } - - return par1ItemStack; - } - - @Override - public void onUpdate(ItemStack par1ItemStack, World par2World, Entity par3Entity, int par4, boolean par5) - { - if (!(par3Entity instanceof EntityPlayer)) - { - return; - } - - EntityPlayer par3EntityPlayer = (EntityPlayer) par3Entity; - - if (par1ItemStack.stackTagCompound == null) - { - par1ItemStack.setTagCompound(new NBTTagCompound()); - } - - if (par1ItemStack.stackTagCompound.getBoolean("isActive")) - { - if (par2World.getWorldTime() % tickDelay == par1ItemStack.stackTagCompound.getInteger("worldTimeDelay") && par3Entity instanceof EntityPlayer) - { - EnergyItems.syphonBatteries(par1ItemStack, (EntityPlayer) par3Entity, getEnergyUsed()); - } - - int range = 5; - int verticalRange = 5; - float posX = Math.round(par3Entity.posX); - float posY = (float) (par3Entity.posY - par3Entity.getEyeHeight()); - float posZ = Math.round(par3Entity.posZ); - List entities = par3EntityPlayer.worldObj.getEntitiesWithinAABB(EntityItem.class, AxisAlignedBB.getBoundingBox(posX - 0.5f, posY - 0.5f, posZ - 0.5f, posX + 0.5f, posY + 0.5f, posZ + 0.5f).expand(range, verticalRange, range)); - - for (EntityItem entity : entities) - { - if (entity != null && !par2World.isRemote) - { - entity.onCollideWithPlayer(par3EntityPlayer); - } - } - } - - return; - } - - @Override - public void onArmourUpdate(World world, EntityPlayer player, ItemStack thisItemStack) - { - int range = 5; - int verticalRange = 5; - float posX = Math.round(player.posX); - float posY = (float) (player.posY - player.getEyeHeight()); - float posZ = Math.round(player.posZ); - List entities = player.worldObj.getEntitiesWithinAABB(EntityItem.class, AxisAlignedBB.getBoundingBox(posX - 0.5f, posY - 0.5f, posZ - 0.5f, posX + 0.5f, posY + 0.5f, posZ + 0.5f).expand(range, verticalRange, range)); - - for (EntityItem entity : entities) - { - if (entity != null && !world.isRemote) - { - entity.onCollideWithPlayer(player); - } - } - } - - @Override - public boolean isUpgrade() - { - // TODO Auto-generated method stub - return true; - } - - @Override - public int getEnergyForTenSeconds() - { - // TODO Auto-generated method stub - return 25; - } -} diff --git a/src-backup/main/java/WayofTime/alchemicalWizardry/common/items/sigil/SigilOfTheBridge.java b/src-backup/main/java/WayofTime/alchemicalWizardry/common/items/sigil/SigilOfTheBridge.java deleted file mode 100644 index 424b4904..00000000 --- a/src-backup/main/java/WayofTime/alchemicalWizardry/common/items/sigil/SigilOfTheBridge.java +++ /dev/null @@ -1,336 +0,0 @@ -package WayofTime.alchemicalWizardry.common.items.sigil; - -import java.util.List; - -import net.minecraft.block.Block; -import net.minecraft.client.renderer.texture.IIconRegister; -import net.minecraft.entity.Entity; -import net.minecraft.entity.player.EntityPlayer; -import net.minecraft.item.ItemStack; -import net.minecraft.nbt.NBTTagCompound; -import net.minecraft.tileentity.TileEntity; -import net.minecraft.util.IIcon; -import net.minecraft.world.World; -import WayofTime.alchemicalWizardry.AlchemicalWizardry; -import WayofTime.alchemicalWizardry.ModBlocks; -import WayofTime.alchemicalWizardry.api.items.interfaces.ArmourUpgrade; -import WayofTime.alchemicalWizardry.common.items.EnergyItems; -import WayofTime.alchemicalWizardry.common.tileEntity.TESpectralBlock; -import cpw.mods.fml.relauncher.Side; -import cpw.mods.fml.relauncher.SideOnly; - -public class SigilOfTheBridge extends EnergyItems implements ArmourUpgrade -{ - private static IIcon activeIcon; - private static IIcon passiveIcon; - private int tickDelay = 200; - - public SigilOfTheBridge() - { - super(); - this.maxStackSize = 1; - //setMaxDamage(1000); - setEnergyUsed(100); - setCreativeTab(AlchemicalWizardry.tabBloodMagic); - // TODO Auto-generated constructor stub - } - - @Override - public void addInformation(ItemStack par1ItemStack, EntityPlayer par2EntityPlayer, List par3List, boolean par4) - { - par3List.add("Activate to create a bridge"); - par3List.add("beneath your feet."); - - if (!(par1ItemStack.stackTagCompound == null)) - { - if (par1ItemStack.stackTagCompound.getBoolean("isActive")) - { - par3List.add("Activated"); - } else - { - par3List.add("Deactivated"); - } - - par3List.add("Current owner: " + par1ItemStack.stackTagCompound.getString("ownerName")); - } - } - - @Override - @SideOnly(Side.CLIENT) - public void registerIcons(IIconRegister iconRegister) - { - this.itemIcon = iconRegister.registerIcon("AlchemicalWizardry:BridgeSigil_deactivated"); - this.activeIcon = iconRegister.registerIcon("AlchemicalWizardry:BridgeSigil_activated"); - this.passiveIcon = iconRegister.registerIcon("AlchemicalWizardry:BridgeSigil_deactivated"); - } - - @Override - public IIcon getIcon(ItemStack stack, int renderPass, EntityPlayer player, ItemStack usingItem, int useRemaining) - { - if (stack.stackTagCompound == null) - { - stack.setTagCompound(new NBTTagCompound()); - } - - NBTTagCompound tag = stack.stackTagCompound; - - if (tag.getBoolean("isActive")) - { - return this.activeIcon; - } else - { - return this.passiveIcon; - } - } - - @Override - @SideOnly(Side.CLIENT) - public IIcon getIconFromDamage(int par1) - { - if (par1 == 1) - { - return this.activeIcon; - } else - { - return this.passiveIcon; - } - } - -// @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(applyBonemeal(par1ItemStack,par3World,par4,par5,par6,par2EntityPlayer)) -// { -// if (par3World.isRemote) -// { -// par3World.playAuxSFX(2005, par4, par5, par6, 0); -// EnergyItems.syphonBatteries(par1ItemStack, par2EntityPlayer, getEnergyUsed()); -// return true; -// } -// return true; -// } -// return false; -// } - - @Override - public ItemStack onItemRightClick(ItemStack par1ItemStack, World par2World, EntityPlayer par3EntityPlayer) - { - EnergyItems.checkAndSetItemOwner(par1ItemStack, par3EntityPlayer); - - if (par3EntityPlayer.isSneaking()) - { - return par1ItemStack; - } - - if (par1ItemStack.stackTagCompound == null) - { - par1ItemStack.setTagCompound(new NBTTagCompound()); - } - - NBTTagCompound tag = par1ItemStack.stackTagCompound; - tag.setBoolean("isActive", !(tag.getBoolean("isActive"))); - - if (tag.getBoolean("isActive")) - { - par1ItemStack.setItemDamage(1); - tag.setInteger("worldTimeDelay", (int) (par2World.getWorldTime() - 1) % tickDelay); - - if (!par3EntityPlayer.capabilities.isCreativeMode) - { - EnergyItems.syphonBatteries(par1ItemStack, par3EntityPlayer, getEnergyUsed()); - } - } else - { - par1ItemStack.setItemDamage(par1ItemStack.getMaxDamage()); - } - - return par1ItemStack; - } - - @Override - public void onUpdate(ItemStack par1ItemStack, World par2World, Entity par3Entity, int par4, boolean par5) - { - if (!(par3Entity instanceof EntityPlayer)) - { - return; - } - - EntityPlayer par3EntityPlayer = (EntityPlayer) par3Entity; - - if (par1ItemStack.stackTagCompound == null) - { - par1ItemStack.setTagCompound(new NBTTagCompound()); - } - - if (par1ItemStack.stackTagCompound.getBoolean("isActive")) - { - if (par2World.getWorldTime() % tickDelay == par1ItemStack.stackTagCompound.getInteger("worldTimeDelay") && par3Entity instanceof EntityPlayer) - { - EnergyItems.syphonBatteries(par1ItemStack, (EntityPlayer) par3Entity, this.getLPUsed(par1ItemStack)); - this.setLPUsed(par1ItemStack, 0); - } - -// if(par2World.isRemote) -// { -// return; -// } - if (!par3EntityPlayer.onGround && !par3EntityPlayer.isSneaking()) - { - return; - } - - int range = 2; - int verticalOffset = -1; - - if (par3EntityPlayer.isSneaking()) - { - verticalOffset--; - } - - if (par2World.isRemote) - { - verticalOffset--; - } - - int posX = (int) Math.round(par3Entity.posX - 0.5f); - int posY = (int) par3Entity.posY; - int posZ = (int) Math.round(par3Entity.posZ - 0.5f); - int incremented = 0; - - for (int ix = posX - range; ix <= posX + range; ix++) - { - for (int iz = posZ - range; iz <= posZ + range; iz++) - { - //for(int iy=posY-verticalRange;iy<=posY+verticalRange;iy++) - { - Block block = par2World.getBlock(ix, posY + verticalOffset, iz); - - if (par2World.isAirBlock(ix, posY + verticalOffset, iz)) - { - par2World.setBlock(ix, posY + verticalOffset, iz, ModBlocks.spectralBlock, 0, 3); - - TileEntity tile = par2World.getTileEntity(ix, posY + verticalOffset, iz); - if(tile instanceof TESpectralBlock) - { - ((TESpectralBlock) tile).setDuration(100); - } - - if (par2World.rand.nextInt(2) == 0) - { - incremented++; - } - }else if(block == ModBlocks.spectralBlock) - { - TileEntity tile = par2World.getTileEntity(ix, posY + verticalOffset, iz); - if(tile instanceof TESpectralBlock) - { - ((TESpectralBlock) tile).setDuration(100); - } - } - } - } - } - - this.incrimentLPUSed(par1ItemStack, incremented); - } - - return; - } - - public int getLPUsed(ItemStack par1ItemStack) - { - if (par1ItemStack.stackTagCompound == null) - { - par1ItemStack.setTagCompound(new NBTTagCompound()); - } - - return par1ItemStack.stackTagCompound.getInteger("LPUsed"); - } - - public void incrimentLPUSed(ItemStack par1ItemStack, int addedLP) - { - if (par1ItemStack.stackTagCompound == null) - { - par1ItemStack.setTagCompound(new NBTTagCompound()); - } - - par1ItemStack.stackTagCompound.setInteger("LPUsed", par1ItemStack.stackTagCompound.getInteger("LPUsed") + addedLP); - } - - public void setLPUsed(ItemStack par1ItemStack, int newLP) - { - if (par1ItemStack.stackTagCompound == null) - { - par1ItemStack.setTagCompound(new NBTTagCompound()); - } - - par1ItemStack.stackTagCompound.setInteger("LPUsed", newLP); - } - - @Override - public void onArmourUpdate(World world, EntityPlayer player, ItemStack thisItemStack) - { - if (!player.onGround && !player.isSneaking()) - { - return; - } - - int range = 2; - int verticalOffset = -1; - - if (player.isSneaking()) - { - verticalOffset--; - } - - int posX = (int) Math.round(player.posX - 0.5f); - int posY = (int) player.posY; - int posZ = (int) Math.round(player.posZ - 0.5f); - - //int incremented = 0; - - for (int ix = posX - range; ix <= posX + range; ix++) - { - for (int iz = posZ - range; iz <= posZ + range; iz++) - { - //for(int iy=posY-verticalRange;iy<=posY+verticalRange;iy++) - { - Block block = world.getBlock(ix, posY + verticalOffset, iz); - - if (world.isAirBlock(ix, posY + verticalOffset, iz)) - { - world.setBlock(ix, posY + verticalOffset, iz, ModBlocks.spectralBlock, 0, 3); - - TileEntity tile = world.getTileEntity(ix, posY + verticalOffset, iz); - if(tile instanceof TESpectralBlock) - { - ((TESpectralBlock) tile).setDuration(100); - } - }else if(block == ModBlocks.spectralBlock) - { - TileEntity tile = world.getTileEntity(ix, posY + verticalOffset, iz); - if(tile instanceof TESpectralBlock) - { - ((TESpectralBlock) tile).setDuration(100); - } - } - } - } - } - } - - @Override - public boolean isUpgrade() - { - // TODO Auto-generated method stub - return true; - } - - @Override - public int getEnergyForTenSeconds() - { - // TODO Auto-generated method stub - return 100; - } -} diff --git a/src-backup/main/java/WayofTime/alchemicalWizardry/common/items/sigil/SigilOfTheFastMiner.java b/src-backup/main/java/WayofTime/alchemicalWizardry/common/items/sigil/SigilOfTheFastMiner.java deleted file mode 100644 index 4f439bfe..00000000 --- a/src-backup/main/java/WayofTime/alchemicalWizardry/common/items/sigil/SigilOfTheFastMiner.java +++ /dev/null @@ -1,194 +0,0 @@ -package WayofTime.alchemicalWizardry.common.items.sigil; - -import java.util.List; - -import net.minecraft.client.renderer.texture.IIconRegister; -import net.minecraft.entity.Entity; -import net.minecraft.entity.player.EntityPlayer; -import net.minecraft.item.ItemStack; -import net.minecraft.nbt.NBTTagCompound; -import net.minecraft.potion.Potion; -import net.minecraft.potion.PotionEffect; -import net.minecraft.util.IIcon; -import net.minecraft.world.World; -import WayofTime.alchemicalWizardry.AlchemicalWizardry; -import WayofTime.alchemicalWizardry.api.items.interfaces.ArmourUpgrade; -import WayofTime.alchemicalWizardry.common.items.EnergyItems; -import cpw.mods.fml.relauncher.Side; -import cpw.mods.fml.relauncher.SideOnly; - -public class SigilOfTheFastMiner extends EnergyItems implements ArmourUpgrade -{ - @SideOnly(Side.CLIENT) - private static IIcon activeIcon; - @SideOnly(Side.CLIENT) - private static IIcon passiveIcon; - - public SigilOfTheFastMiner() - { - super(); - this.maxStackSize = 1; - //setMaxDamage(100); - setEnergyUsed(100); - setCreativeTab(AlchemicalWizardry.tabBloodMagic); - } - - @Override - public void addInformation(ItemStack par1ItemStack, EntityPlayer par2EntityPlayer, List par3List, boolean par4) - { - par3List.add("Keep going and going and going..."); - - if (!(par1ItemStack.stackTagCompound == null)) - { - if (par1ItemStack.stackTagCompound.getBoolean("isActive")) - { - par3List.add("Activated"); - } else - { - par3List.add("Deactivated"); - } - - par3List.add("Current owner: " + par1ItemStack.stackTagCompound.getString("ownerName")); - } - } - - @Override - @SideOnly(Side.CLIENT) - public void registerIcons(IIconRegister iconRegister) - { - this.itemIcon = iconRegister.registerIcon("AlchemicalWizardry:SigilOfTheFastMiner"); - this.activeIcon = iconRegister.registerIcon("AlchemicalWizardry:MiningSigil_activated"); - this.passiveIcon = iconRegister.registerIcon("AlchemicalWizardry:MiningSigil_deactivated"); - } - - @Override - public IIcon getIcon(ItemStack stack, int renderPass, EntityPlayer player, ItemStack usingItem, int useRemaining) - { - if (stack.stackTagCompound == null) - { - stack.setTagCompound(new NBTTagCompound()); - } - - NBTTagCompound tag = stack.stackTagCompound; - - if (tag.getBoolean("isActive")) - { - return this.activeIcon; - } else - { - return this.passiveIcon; - } - } - - @Override - @SideOnly(Side.CLIENT) - public IIcon getIconFromDamage(int par1) - { - if (par1 == 1) - { - return this.activeIcon; - } else - { - return this.passiveIcon; - } - } - - @Override - public ItemStack onItemRightClick(ItemStack par1ItemStack, World par2World, EntityPlayer par3EntityPlayer) - { - EnergyItems.checkAndSetItemOwner(par1ItemStack, par3EntityPlayer); - - if (par3EntityPlayer.isSneaking()) - { - return par1ItemStack; - } - - if (par1ItemStack.stackTagCompound == null) - { - par1ItemStack.setTagCompound(new NBTTagCompound()); - } - - NBTTagCompound tag = par1ItemStack.stackTagCompound; - tag.setBoolean("isActive", !(tag.getBoolean("isActive"))); - - if (tag.getBoolean("isActive")) - { - par1ItemStack.setItemDamage(1); - tag.setInteger("worldTimeDelay", (int) (par2World.getWorldTime() - 1) % 200); - par3EntityPlayer.addPotionEffect(new PotionEffect(Potion.digSpeed.id, 2, 1, true)); - - //Test with added health boost - //par3EntityPlayer.addPotionEffect(new PotionEffect(Potion.field_76444_x.id, 2400,99)); - if (!par3EntityPlayer.capabilities.isCreativeMode) - { - if (!EnergyItems.syphonBatteries(par1ItemStack, par3EntityPlayer, getEnergyUsed())) - { - } - } - } else - { - par1ItemStack.setItemDamage(par1ItemStack.getMaxDamage()); - } - - return par1ItemStack; - } - - @Override - public void onUpdate(ItemStack par1ItemStack, World par2World, Entity par3Entity, int par4, boolean par5) - { - if (!(par3Entity instanceof EntityPlayer)) - { - return; - } - - EntityPlayer par3EntityPlayer = (EntityPlayer) par3Entity; - - if (par1ItemStack.stackTagCompound == null) - { - par1ItemStack.setTagCompound(new NBTTagCompound()); - } - - if (par1ItemStack.stackTagCompound.getBoolean("isActive")) - { - par3EntityPlayer.addPotionEffect(new PotionEffect(Potion.digSpeed.id, 2, 1, true)); - } - - if (par2World.getWorldTime() % 200 == par1ItemStack.stackTagCompound.getInteger("worldTimeDelay") && par1ItemStack.stackTagCompound.getBoolean("isActive")) - { - //par3EntityPlayer.addPotionEffect(new PotionEffect(Potion.field_76444_x.id, 2400,99)); - if (!par3EntityPlayer.capabilities.isCreativeMode) - { - if (!EnergyItems.syphonBatteries(par1ItemStack, par3EntityPlayer, getEnergyUsed())) - { - } - } - } - - return; - } - - @Override - public void onArmourUpdate(World world, EntityPlayer player, ItemStack itemStack) - { - if (itemStack.stackTagCompound == null) - { - itemStack.setTagCompound(new NBTTagCompound()); - } - - player.addPotionEffect(new PotionEffect(Potion.digSpeed.id, 3, 1, true)); - } - - @Override - public boolean isUpgrade() - { - // TODO Auto-generated method stub - return true; - } - - @Override - public int getEnergyForTenSeconds() - { - // TODO Auto-generated method stub - return 50; - } -} diff --git a/src-backup/main/java/WayofTime/alchemicalWizardry/common/items/sigil/SigilOfWind.java b/src-backup/main/java/WayofTime/alchemicalWizardry/common/items/sigil/SigilOfWind.java deleted file mode 100644 index 752797a7..00000000 --- a/src-backup/main/java/WayofTime/alchemicalWizardry/common/items/sigil/SigilOfWind.java +++ /dev/null @@ -1,196 +0,0 @@ -package WayofTime.alchemicalWizardry.common.items.sigil; - -import java.util.List; - -import net.minecraft.client.renderer.texture.IIconRegister; -import net.minecraft.entity.Entity; -import net.minecraft.entity.player.EntityPlayer; -import net.minecraft.item.ItemStack; -import net.minecraft.nbt.NBTTagCompound; -import net.minecraft.potion.PotionEffect; -import net.minecraft.util.IIcon; -import net.minecraft.world.World; -import WayofTime.alchemicalWizardry.AlchemicalWizardry; -import WayofTime.alchemicalWizardry.api.items.interfaces.ArmourUpgrade; -import WayofTime.alchemicalWizardry.common.items.EnergyItems; -import cpw.mods.fml.relauncher.Side; -import cpw.mods.fml.relauncher.SideOnly; - -public class SigilOfWind extends EnergyItems implements ArmourUpgrade -{ - @SideOnly(Side.CLIENT) - private static IIcon activeIcon; - @SideOnly(Side.CLIENT) - private static IIcon passiveIcon; - - public SigilOfWind() - { - super(); - this.maxStackSize = 1; - //setMaxDamage(100); - setEnergyUsed(250); - setCreativeTab(AlchemicalWizardry.tabBloodMagic); - } - - @Override - public void addInformation(ItemStack par1ItemStack, EntityPlayer par2EntityPlayer, List par3List, boolean par4) - { - par3List.add("Best not to wear a skirt."); - - if (!(par1ItemStack.stackTagCompound == null)) - { - if (par1ItemStack.stackTagCompound.getBoolean("isActive")) - { - par3List.add("Activated"); - } else - { - par3List.add("Deactivated"); - } - - par3List.add("Current owner: " + par1ItemStack.stackTagCompound.getString("ownerName")); - } - } - - @Override - @SideOnly(Side.CLIENT) - public void registerIcons(IIconRegister iconRegister) - { - this.itemIcon = iconRegister.registerIcon("AlchemicalWizardry:WindSigil_deactivated"); - this.activeIcon = iconRegister.registerIcon("AlchemicalWizardry:WindSigil_activated"); - this.passiveIcon = iconRegister.registerIcon("AlchemicalWizardry:WindSigil_deactivated"); - } - - @Override - public IIcon getIcon(ItemStack stack, int renderPass, EntityPlayer player, ItemStack usingItem, int useRemaining) - { - if (stack.stackTagCompound == null) - { - stack.setTagCompound(new NBTTagCompound()); - } - - NBTTagCompound tag = stack.stackTagCompound; - - if (tag.getBoolean("isActive")) - { - return this.activeIcon; - } else - { - return this.passiveIcon; - } - } - - @Override - @SideOnly(Side.CLIENT) - public IIcon getIconFromDamage(int par1) - { - if (par1 == 1) - { - return this.activeIcon; - } else - { - return this.passiveIcon; - } - } - - @Override - public ItemStack onItemRightClick(ItemStack par1ItemStack, World par2World, EntityPlayer par3EntityPlayer) - { - EnergyItems.checkAndSetItemOwner(par1ItemStack, par3EntityPlayer); - - if (par3EntityPlayer.isSneaking()) - { - return par1ItemStack; - } - - if (par1ItemStack.stackTagCompound == null) - { - par1ItemStack.setTagCompound(new NBTTagCompound()); - } - - NBTTagCompound tag = par1ItemStack.stackTagCompound; - tag.setBoolean("isActive", !(tag.getBoolean("isActive"))); - - if (tag.getBoolean("isActive")) - { - par1ItemStack.setItemDamage(1); - tag.setInteger("worldTimeDelay", (int) (par2World.getWorldTime() - 1) % 200); - par3EntityPlayer.addPotionEffect(new PotionEffect(AlchemicalWizardry.customPotionProjProt.id, 2, 1)); - //par3EntityPlayer.addPotionEffect(new PotionEffect(AlchemicalWizardry.customPotionProjProt.id, 2, 2)); - - //Test with added health boost - //par3EntityPlayer.addPotionEffect(new PotionEffect(Potion.field_76444_x.id, 2400,99)); - if (!par3EntityPlayer.capabilities.isCreativeMode) - { - if (!EnergyItems.syphonBatteries(par1ItemStack, par3EntityPlayer, getEnergyUsed())) - { - } - } - } else - { - par1ItemStack.setItemDamage(par1ItemStack.getMaxDamage()); - } - - return par1ItemStack; - } - - @Override - public void onUpdate(ItemStack par1ItemStack, World par2World, Entity par3Entity, int par4, boolean par5) - { - if (!(par3Entity instanceof EntityPlayer)) - { - return; - } - - EntityPlayer par3EntityPlayer = (EntityPlayer) par3Entity; - - if (par1ItemStack.stackTagCompound == null) - { - par1ItemStack.setTagCompound(new NBTTagCompound()); - } - - if (par1ItemStack.stackTagCompound.getBoolean("isActive")) - { - par3EntityPlayer.addPotionEffect(new PotionEffect(AlchemicalWizardry.customPotionProjProt.id, 2, 1)); - } - - if (par2World.getWorldTime() % 200 == par1ItemStack.stackTagCompound.getInteger("worldTimeDelay") && par1ItemStack.stackTagCompound.getBoolean("isActive")) - { - //par3EntityPlayer.addPotionEffect(new PotionEffect(AlchemicalWizardry.customPotionBoost.id, 205, 1)); - - //par3EntityPlayer.addPotionEffect(new PotionEffect(AlchemicalWizardry.customPotionProjProt.id, 205, 2)); - if (!par3EntityPlayer.capabilities.isCreativeMode) - { - if (!EnergyItems.syphonBatteries(par1ItemStack, par3EntityPlayer, getEnergyUsed())) - { - } - } - } - - return; - } - - @Override - public void onArmourUpdate(World world, EntityPlayer player, ItemStack itemStack) - { - if (itemStack.stackTagCompound == null) - { - itemStack.setTagCompound(new NBTTagCompound()); - } - - player.addPotionEffect(new PotionEffect(AlchemicalWizardry.customPotionProjProt.id, 3, 1)); - } - - @Override - public boolean isUpgrade() - { - // TODO Auto-generated method stub - return true; - } - - @Override - public int getEnergyForTenSeconds() - { - // TODO Auto-generated method stub - return 150; - } -} \ No newline at end of file diff --git a/src-backup/main/java/WayofTime/alchemicalWizardry/common/items/sigil/VoidSigil.java b/src-backup/main/java/WayofTime/alchemicalWizardry/common/items/sigil/VoidSigil.java deleted file mode 100644 index 54695d21..00000000 --- a/src-backup/main/java/WayofTime/alchemicalWizardry/common/items/sigil/VoidSigil.java +++ /dev/null @@ -1,195 +0,0 @@ -package WayofTime.alchemicalWizardry.common.items.sigil; - -import java.util.List; - -import net.minecraft.block.Block; -import net.minecraft.block.material.MaterialLiquid; -import net.minecraft.client.renderer.texture.IIconRegister; -import net.minecraft.entity.player.EntityPlayer; -import net.minecraft.inventory.IInventory; -import net.minecraft.item.ItemBucket; -import net.minecraft.item.ItemStack; -import net.minecraft.tileentity.TileEntity; -import net.minecraft.util.MovingObjectPosition; -import net.minecraft.world.World; -import net.minecraftforge.common.MinecraftForge; -import net.minecraftforge.common.util.ForgeDirection; -import net.minecraftforge.event.entity.player.FillBucketEvent; -import net.minecraftforge.fluids.FluidRegistry; -import net.minecraftforge.fluids.FluidStack; -import net.minecraftforge.fluids.IFluidHandler; -import WayofTime.alchemicalWizardry.AlchemicalWizardry; -import WayofTime.alchemicalWizardry.api.items.interfaces.ArmourUpgrade; -import WayofTime.alchemicalWizardry.common.items.EnergyBattery; -import WayofTime.alchemicalWizardry.common.items.EnergyItems; -import cpw.mods.fml.relauncher.Side; -import cpw.mods.fml.relauncher.SideOnly; - -public class VoidSigil extends ItemBucket implements ArmourUpgrade -{ - private int isFull; - private int energyUsed; - - public VoidSigil() - { - super(null); - this.maxStackSize = 1; - //setMaxDamage(1000); - setEnergyUsed(50); - isFull = 0; - setCreativeTab(AlchemicalWizardry.tabBloodMagic); - } - - @Override - @SideOnly(Side.CLIENT) - public void registerIcons(IIconRegister iconRegister) - { - this.itemIcon = iconRegister.registerIcon("AlchemicalWizardry:VoidSigil"); - } - - @Override - public void addInformation(ItemStack par1ItemStack, EntityPlayer par2EntityPlayer, List par3List, boolean par4) - { - par3List.add("Better than a Swiffer!"); - - if (!(par1ItemStack.stackTagCompound == null)) - { - par3List.add("Current owner: " + par1ItemStack.stackTagCompound.getString("ownerName")); - } - } - - @Override - public ItemStack getContainerItem(ItemStack itemStack) - { - ItemStack copiedStack = itemStack.copy(); - copiedStack.setItemDamage(copiedStack.getItemDamage() + getEnergyUsed()); - copiedStack.stackSize = 1; - return copiedStack; - } - - protected void setEnergyUsed(int par1int) - { - this.energyUsed = par1int; - } - - protected int getEnergyUsed() - { - return this.energyUsed; - } - - @Override - public ItemStack onItemRightClick(ItemStack par1ItemStack, World par2World, EntityPlayer par3EntityPlayer) - { - EnergyItems.checkAndSetItemOwner(par1ItemStack, par3EntityPlayer); - - if (par3EntityPlayer.isSneaking()) - { - return par1ItemStack; - } - - float f = 1.0F; - double d0 = par3EntityPlayer.prevPosX + (par3EntityPlayer.posX - par3EntityPlayer.prevPosX) * (double) f; - double d1 = par3EntityPlayer.prevPosY + (par3EntityPlayer.posY - par3EntityPlayer.prevPosY) * (double) f + 1.62D - (double) par3EntityPlayer.yOffset; - double d2 = par3EntityPlayer.prevPosZ + (par3EntityPlayer.posZ - par3EntityPlayer.prevPosZ) * (double) f; - boolean flag = this.isFull == 0; - MovingObjectPosition movingobjectposition = this.getMovingObjectPositionFromPlayer(par2World, par3EntityPlayer, flag); - - if (movingobjectposition == null) - { - return par1ItemStack; - } else - { - FillBucketEvent event = new FillBucketEvent(par3EntityPlayer, par1ItemStack, par2World, movingobjectposition); - - if (MinecraftForge.EVENT_BUS.post(event)) - { - return par1ItemStack; - } - - if (movingobjectposition.typeOfHit == MovingObjectPosition.MovingObjectType.BLOCK) - { - int i = movingobjectposition.blockX; - int j = movingobjectposition.blockY; - int k = movingobjectposition.blockZ; - - if (!par2World.canMineBlock(par3EntityPlayer, i, j, k)) - { - return par1ItemStack; - } - - TileEntity tile = par2World.getTileEntity(i, j, k); - if(tile instanceof IFluidHandler) - { - FluidStack amount = ((IFluidHandler) tile).drain(ForgeDirection.getOrientation(movingobjectposition.sideHit), 1000, false); - - if(amount != null && amount.amount > 0) - { - ((IFluidHandler) tile).drain(ForgeDirection.getOrientation(movingobjectposition.sideHit), 1000, true); - if (!par3EntityPlayer.capabilities.isCreativeMode) - { - if (!EnergyItems.syphonBatteries(par1ItemStack, par3EntityPlayer, getEnergyUsed())) - { - } - } - } - - return par1ItemStack; - } - - if (this.isFull == 0) - { - if (!par3EntityPlayer.canPlayerEdit(i, j, k, movingobjectposition.sideHit, par1ItemStack)) - { - return par1ItemStack; - } - - if (par2World.getBlock(i, j, k).getMaterial() instanceof MaterialLiquid) - { - par2World.setBlockToAir(i, j, k); - - if (!par3EntityPlayer.capabilities.isCreativeMode) - { - if (!EnergyItems.syphonBatteries(par1ItemStack, par3EntityPlayer, getEnergyUsed())) - { - } - } else - { - return par1ItemStack; - } - } - } - } - - return par1ItemStack; - } - } - - /** - * Attempts to place the liquid contained inside the bucket. - */ - public boolean tryPlaceContainedLiquid(World par1World, double par2, double par4, double par6, int par8, int par9, int par10) - { - return false; - } - - @Override - public void onArmourUpdate(World world, EntityPlayer player, - ItemStack thisItemStack) - { - // TODO Auto-generated method stub - } - - @Override - public boolean isUpgrade() - { - // TODO Auto-generated method stub - return true; - } - - @Override - public int getEnergyForTenSeconds() - { - // TODO Auto-generated method stub - return 25; - } -} diff --git a/src-backup/main/java/WayofTime/alchemicalWizardry/common/items/sigil/WaterSigil.java b/src-backup/main/java/WayofTime/alchemicalWizardry/common/items/sigil/WaterSigil.java deleted file mode 100644 index e8378c7a..00000000 --- a/src-backup/main/java/WayofTime/alchemicalWizardry/common/items/sigil/WaterSigil.java +++ /dev/null @@ -1,285 +0,0 @@ -package WayofTime.alchemicalWizardry.common.items.sigil; - -import java.util.List; - -import net.minecraft.block.Block; -import net.minecraft.client.renderer.texture.IIconRegister; -import net.minecraft.entity.player.EntityPlayer; -import net.minecraft.init.Blocks; -import net.minecraft.item.ItemBucket; -import net.minecraft.item.ItemStack; -import net.minecraft.nbt.NBTTagCompound; -import net.minecraft.potion.Potion; -import net.minecraft.potion.PotionEffect; -import net.minecraft.tileentity.TileEntity; -import net.minecraft.util.MovingObjectPosition; -import net.minecraft.world.World; -import net.minecraftforge.common.util.ForgeDirection; -import net.minecraftforge.fluids.FluidRegistry; -import net.minecraftforge.fluids.FluidStack; -import net.minecraftforge.fluids.IFluidHandler; -import WayofTime.alchemicalWizardry.AlchemicalWizardry; -import WayofTime.alchemicalWizardry.api.items.interfaces.ArmourUpgrade; -import WayofTime.alchemicalWizardry.common.items.EnergyItems; -import cpw.mods.fml.relauncher.Side; -import cpw.mods.fml.relauncher.SideOnly; - -public class WaterSigil extends ItemBucket implements ArmourUpgrade -{ - /** - * field for checking if the bucket has been filled. - */ - private Block isFull = Blocks.water; - private int energyUsed; - - public WaterSigil() - { - super(Blocks.water); - this.maxStackSize = 1; - //setMaxDamage(1000); - setEnergyUsed(100); - setCreativeTab(AlchemicalWizardry.tabBloodMagic); - } - - @Override - public void onCreated(ItemStack par1ItemStack, World par2World, EntityPlayer par3EntityPlayer) - { - if (par1ItemStack.stackTagCompound == null) - { - par1ItemStack.setTagCompound(new NBTTagCompound()); - } - } - - @Override - @SideOnly(Side.CLIENT) - public void registerIcons(IIconRegister iconRegister) - { - this.itemIcon = iconRegister.registerIcon("AlchemicalWizardry:WaterSigil"); - } - - @Override - public ItemStack getContainerItem(ItemStack itemStack) - { - ItemStack copiedStack = itemStack.copy(); - copiedStack.setItemDamage(copiedStack.getItemDamage() + 1); - copiedStack.stackSize = 1; - return copiedStack; - } - - @Override - public void addInformation(ItemStack par1ItemStack, EntityPlayer par2EntityPlayer, List par3List, boolean par4) - { - par3List.add("Infinite water, anyone?"); - - if (!(par1ItemStack.stackTagCompound == null)) - { - par3List.add("Current owner: " + par1ItemStack.stackTagCompound.getString("ownerName")); - } - } - - /** - * Called whenever this item is equipped and the right mouse button is pressed. Args: itemStack, world, entityPlayer - */ - public ItemStack onItemRightClick(ItemStack par1ItemStack, World par2World, EntityPlayer par3EntityPlayer) - { - EnergyItems.checkAndSetItemOwner(par1ItemStack, par3EntityPlayer); - - if (par3EntityPlayer.isSneaking()) - { - return par1ItemStack; - } - - float f = 1.0F; - double d0 = par3EntityPlayer.prevPosX + (par3EntityPlayer.posX - par3EntityPlayer.prevPosX) * (double) f; - double d1 = par3EntityPlayer.prevPosY + (par3EntityPlayer.posY - par3EntityPlayer.prevPosY) * (double) f + 1.62D - (double) par3EntityPlayer.yOffset; - double d2 = par3EntityPlayer.prevPosZ + (par3EntityPlayer.posZ - par3EntityPlayer.prevPosZ) * (double) f; - //boolean flag = this.isFull == 0; - MovingObjectPosition movingobjectposition = this.getMovingObjectPositionFromPlayer(par2World, par3EntityPlayer, false); - - if (movingobjectposition == null) - { - return par1ItemStack; - } else - { - if (movingobjectposition.typeOfHit == MovingObjectPosition.MovingObjectType.BLOCK) - { - int i = movingobjectposition.blockX; - int j = movingobjectposition.blockY; - int k = movingobjectposition.blockZ; - - if (!par2World.canMineBlock(par3EntityPlayer, i, j, k)) - { - return par1ItemStack; - } - - TileEntity tile = par2World.getTileEntity(i, j, k); - if(tile instanceof IFluidHandler) - { - FluidStack fluid = new FluidStack(FluidRegistry.WATER,1000); - int amount = ((IFluidHandler) tile).fill(ForgeDirection.getOrientation(movingobjectposition.sideHit), fluid, false); - - if(amount>0) - { - ((IFluidHandler) tile).fill(ForgeDirection.getOrientation(movingobjectposition.sideHit), fluid, true); - if (!par3EntityPlayer.capabilities.isCreativeMode) - { - if (!EnergyItems.syphonBatteries(par1ItemStack, par3EntityPlayer, getEnergyUsed())) - { - } - } - } - - return par1ItemStack; - } - - { - if (movingobjectposition.sideHit == 0) - { - --j; - } - - if (movingobjectposition.sideHit == 1) - { - ++j; - } - - if (movingobjectposition.sideHit == 2) - { - --k; - } - - if (movingobjectposition.sideHit == 3) - { - ++k; - } - - if (movingobjectposition.sideHit == 4) - { - --i; - } - - if (movingobjectposition.sideHit == 5) - { - ++i; - } - - if (!par3EntityPlayer.canPlayerEdit(i, j, k, movingobjectposition.sideHit, par1ItemStack)) - { - return par1ItemStack; - } - - if (this.tryPlaceContainedLiquid(par2World, d0, d1, d2, i, j, k) && !par3EntityPlayer.capabilities.isCreativeMode) - { - if (!par3EntityPlayer.capabilities.isCreativeMode) - { - if (!EnergyItems.syphonBatteries(par1ItemStack, par3EntityPlayer, getEnergyUsed())) - { - } - } else - { - return par1ItemStack; - } - } - } - } - - return par1ItemStack; - } - } - - /** - * Attempts to place the liquid contained inside the bucket. - */ - public boolean tryPlaceContainedLiquid(World par1World, double par2, double par4, double par6, int par8, int par9, int par10) - { - if (!par1World.isAirBlock(par8, par9, par10) && par1World.getBlock(par8, par9, par10).getMaterial().isSolid()) - { - return false; - } else if ((par1World.getBlock(par8, par9, par10) == Blocks.water || par1World.getBlock(par8, par9, par10) == Blocks.flowing_water) && par1World.getBlockMetadata(par8, par9, par10) == 0) - { - return false; - } else - { - if (par1World.provider.isHellWorld) - { - par1World.playSoundEffect(par2 + 0.5D, par4 + 0.5D, par6 + 0.5D, "random.fizz", 0.5F, 2.6F + (par1World.rand.nextFloat() - par1World.rand.nextFloat()) * 0.8F); - - for (int l = 0; l < 8; ++l) - { - par1World.spawnParticle("largesmoke", (double) par8 + Math.random(), (double) par9 + Math.random(), (double) par10 + Math.random(), 0.0D, 0.0D, 0.0D); - } - } else - { - par1World.setBlock(par8, par9, par10, this.isFull, 0, 3); - } - - return true; - } - } - - protected void setEnergyUsed(int par1int) - { - this.energyUsed = par1int; - } - - protected int getEnergyUsed() - { - return this.energyUsed; - } - //Heals the player using the item. If the player is at full health, or if the durability cannot be used any more, - //the item is not used. - -// protected void damagePlayer(World world, EntityPlayer player, int damage) -// { -// if (world != null) -// { -// double posX = player.posX; -// double posY = player.posY; -// double posZ = player.posZ; -// world.playSoundEffect((double)((float)posX + 0.5F), (double)((float)posY + 0.5F), (double)((float)posZ + 0.5F), "random.fizz", 0.5F, 2.6F + (world.rand.nextFloat() - world.rand.nextFloat()) * 0.8F); -// float f = (float)1.0F; -// float f1 = f * 0.6F + 0.4F; -// float f2 = f * f * 0.7F - 0.5F; -// float f3 = f * f * 0.6F - 0.7F; -// -// for (int l = 0; l < 8; ++l) -// { -// world.spawnParticle("reddust", posX + Math.random() - Math.random(), posY + Math.random() - Math.random(), posZ + Math.random() - Math.random(), f1, f2, f3); -// } -// } -// -// for (int i = 0; i < damage; i++) -// { -// //player.setEntityHealth((player.getHealth()-1)); -// player.setEntityHealth(player.func_110143_aJ() - 1); -// } -// -// if (player.func_110143_aJ() <= 0) -// { -// player.inventory.dropAllItems(); -// } -// } - - @Override - public void onArmourUpdate(World world, EntityPlayer player, - ItemStack thisItemStack) - { - // TODO Auto-generated method stub - //PotionEffect effect = new PotionEffect(Potion.waterBreathing.id, 2,9); - player.addPotionEffect(new PotionEffect(Potion.waterBreathing.id, 2, 9,true)); - } - - @Override - public boolean isUpgrade() - { - // TODO Auto-generated method stub - return true; - } - - @Override - public int getEnergyForTenSeconds() - { - // TODO Auto-generated method stub - return 50; - } -} diff --git a/src-backup/main/java/WayofTime/alchemicalWizardry/common/items/spell/ItemSpellMultiTool.java b/src-backup/main/java/WayofTime/alchemicalWizardry/common/items/spell/ItemSpellMultiTool.java deleted file mode 100644 index 6f1806a1..00000000 --- a/src-backup/main/java/WayofTime/alchemicalWizardry/common/items/spell/ItemSpellMultiTool.java +++ /dev/null @@ -1,861 +0,0 @@ -package WayofTime.alchemicalWizardry.common.items.spell; - -import java.util.HashSet; -import java.util.LinkedList; -import java.util.List; -import java.util.Random; -import java.util.Set; - -import net.minecraft.block.Block; -import net.minecraft.block.material.Material; -import net.minecraft.client.renderer.texture.IIconRegister; -import net.minecraft.entity.Entity; -import net.minecraft.entity.EntityLivingBase; -import net.minecraft.entity.player.EntityPlayer; -import net.minecraft.init.Blocks; -import net.minecraft.item.Item; -import net.minecraft.item.ItemStack; -import net.minecraft.nbt.NBTTagCompound; -import net.minecraft.nbt.NBTTagList; -import net.minecraft.util.DamageSource; -import net.minecraft.util.MovingObjectPosition; -import net.minecraft.world.World; -import net.minecraftforge.common.DimensionManager; -import net.minecraftforge.common.util.Constants; -import net.minecraftforge.common.util.ForgeDirection; -import WayofTime.alchemicalWizardry.common.items.EnergyItems; -import WayofTime.alchemicalWizardry.common.spell.complex.SpellParadigmTool; -import WayofTime.alchemicalWizardry.common.spell.complex.effect.SpellEffect; -import WayofTime.alchemicalWizardry.common.spell.complex.effect.SpellHelper; - -public class ItemSpellMultiTool extends Item -{ - private static final String harvestLevelSuffix = "harvestLvl"; - private static final String digLevelSuffix = "digLvl"; - private static final String tagName = "BloodMagicTool"; - private Random rand = new Random(); - - public ItemSpellMultiTool() - { - super(); - this.setMaxDamage(0); - this.setMaxStackSize(1); - this.setFull3D(); - } - - @Override - public void registerIcons (IIconRegister iconRegister) - { - this.itemIcon = iconRegister.registerIcon("AlchemicalWizardry:BoundTool"); - } - - @Override - public boolean hitEntity(ItemStack par1ItemStack, EntityLivingBase par2EntityLivingBase, EntityLivingBase par3EntityLivingBase) - { - float damage = this.getCustomItemAttack(par1ItemStack); - - SpellParadigmTool parad = this.loadParadigmFromStack(par1ItemStack); - - if(parad != null) - { - parad.onLeftClickEntity(par1ItemStack, par2EntityLivingBase, par3EntityLivingBase); - } - - damage += parad.getAddedDamageForEntity(par2EntityLivingBase); - - if(rand.nextFloat() < this.getCritChance(par1ItemStack)) - { - damage *= 1.75f; - } - - if(par3EntityLivingBase instanceof EntityPlayer) - { - par2EntityLivingBase.attackEntityFrom(DamageSource.causePlayerDamage((EntityPlayer)par3EntityLivingBase), damage); - } - else - { - par2EntityLivingBase.attackEntityFrom(DamageSource.causeMobDamage(par3EntityLivingBase), damage); - } - - return true; - } - - @Override - public boolean onLeftClickEntity(ItemStack stack, EntityPlayer player, Entity entity) - { - SpellParadigmTool parad = this.loadParadigmFromStack(stack); - - if(parad != null && entity instanceof EntityLivingBase) - { - parad.onLeftClickEntity(stack, (EntityLivingBase)entity, player); - } - - return false; - } - - @Override - public boolean onBlockStartBreak (ItemStack stack, int x, int y, int z, EntityPlayer player) - { - if(player.worldObj.isRemote) - { - return false; - } - - if (!stack.hasTagCompound()) - return false; - - World world = player.worldObj; - Block block = player.worldObj.getBlock(x, y, z); - int meta = world.getBlockMetadata(x, y, z); - // Block block = Block.blocksList[bID]; - if (block == null || block == Blocks.air) - return false; - int hlvl = -1; - float blockHardness = block.getBlockHardness(world, x, y, z); - - MovingObjectPosition mop = SpellHelper.raytraceFromEntity(world, player, true, 5.0D); - - Block localBlock = world.getBlock(x, y, z); - int localMeta = world.getBlockMetadata(x, y, z); - String toolClass = block.getHarvestTool(meta); - if (toolClass != null && this.getHarvestLevel(stack, toolClass) != -1) - hlvl = block.getHarvestLevel(meta); - int toolLevel = this.getHarvestLevel(stack, toolClass); - - float localHardness = localBlock == null ? Float.MAX_VALUE : localBlock.getBlockHardness(world, x, y, z); - - if (hlvl <= toolLevel && localHardness - 1.5 <= blockHardness) - { - boolean cancelHarvest = false; - - if (!cancelHarvest) - { - if (localBlock != null && !(localHardness < 0)) - { - boolean isEffective = false; - - String localToolClass = this.getToolClassForMaterial(localBlock.getMaterial()); - - if(localToolClass != null && this.getHarvestLevel(stack, toolClass) >= localBlock.getHarvestLevel(localMeta)) - { - isEffective = true; - } - - - if (localBlock.getMaterial().isToolNotRequired()) - { - isEffective = true; - } - - if (!player.capabilities.isCreativeMode) - { - if (isEffective) - { - if (localBlock.removedByPlayer(world, player, x, y, z)) - { - localBlock.onBlockDestroyedByPlayer(world, x, y, z, localMeta); - } - //localBlock.harvestBlock(world, player, x, y, z, localMeta); - localBlock.onBlockHarvested(world, x, y, z, localMeta, player); - if (blockHardness > 0f) - onBlockDestroyed(stack, world, localBlock, x, y, z, player); - - List items = SpellHelper.getItemsFromBlock(world, localBlock, x, y, z, localMeta, this.getSilkTouch(stack), this.getFortuneLevel(stack)); - - SpellParadigmTool parad = this.loadParadigmFromStack(stack); - List newItems = parad.handleItemList(stack, items); - - if(!world.isRemote) - { - SpellHelper.spawnItemListInWorld(newItems, world, x + 0.5f, y + 0.5f, z + 0.5f); - } - - world.func_147479_m(x, y, z); - - int cost = 0; - - cost += parad.digSurroundingArea(stack, world, player, mop, localToolClass, localHardness, toolLevel, this); - - cost += parad.onBreakBlock(stack, world, player, localBlock, localMeta, x, y, z, ForgeDirection.getOrientation(mop.sideHit)); - - if(cost > 0) - { - EnergyItems.syphonAndDamageWhileInContainer(stack, player, cost); - } - } - else - { - world.setBlockToAir(x, y, z); - world.func_147479_m(x, y, z); - } - - } - else - { - world.setBlockToAir(x, y, z); - world.func_147479_m(x, y, z); - } - } - } - } - - if (!world.isRemote) - world.playAuxSFX(2001, x, y, z, Block.getIdFromBlock(block) + (meta << 12)); - return true; - - } - - public Material[] getMaterialsForToolclass(String toolClass) - { - if("pickaxe".equals(toolClass)) - { - return new Material[] { Material.rock, Material.iron, Material.ice, Material.glass, Material.piston, Material.anvil, Material.circuits }; - } - else if("shovel".equals(toolClass)) - { - return new Material[]{ Material.grass, Material.ground, Material.sand, Material.snow, Material.craftedSnow, Material.clay }; - } - else if("axe".equals(toolClass)) - { - return new Material[]{ Material.wood, Material.vine, Material.circuits, Material.cactus }; - } - return new Material[0]; - } - - public String getToolClassForMaterial(Material mat) - { - String testString = "pickaxe"; - - Material[] matList = this.getMaterialsForToolclass(testString); - for(int i=0; i < matList.length; i++) - { - if(matList[i] == mat) - { - return testString; - } - } - - testString = "shovel"; - matList = this.getMaterialsForToolclass(testString); - for(int i=0; i < matList.length; i++) - { - if(matList[i] == mat) - { - return testString; - } - } - - testString = "axe"; - matList = this.getMaterialsForToolclass(testString); - for(int i=0; i < matList.length; i++) - { - if(matList[i] == mat) - { - return testString; - } - } - - return null; - } - - public Set getToolClasses(ItemStack stack) - { - Set set = new HashSet(); - - if(this.getHarvestLevel(stack, "pickaxe") > -1) - { - set.add("pickaxe"); - } - - if(this.getHarvestLevel(stack, "axe") > -1) - { - set.add("axe"); - } - - if(this.getHarvestLevel(stack, "shovel") > -1) - { - set.add("shovel"); - } - - return set; - } - -// @Override -// public boolean onBlockDestroyed (ItemStack itemstack, World world, Block block, int x, int y, int z, EntityLivingBase player) -// { -// if (block != null && block.getMaterial() == Material.leaves) -// return false; -// -// -// return AbilityHelper.onBlockChanged(itemstack, world, block, x, y, z, player, random); -// } - - @Override - public float getDigSpeed(ItemStack stack, Block block, int meta) - { - String toolClass = block.getHarvestTool(meta); - - if(toolClass == null || toolClass.equals("")) - { - return 1.0f; - } - - //if (ForgeHooks.isToolEffective(stack, block, meta)) - { - if(stack.hasTagCompound()) - { - NBTTagCompound tag = stack.getTagCompound().getCompoundTag(tagName); - - return tag.getFloat(digLevelSuffix + toolClass); - } - else - { - stack.setTagCompound(new NBTTagCompound()); - } - } - - return 1.0f; - } - - @Override - public int getHarvestLevel(ItemStack stack, String toolClass) - { - if(stack.hasTagCompound()) - { - NBTTagCompound tag = stack.getTagCompound().getCompoundTag(tagName); - - if(tag.hasKey(harvestLevelSuffix + toolClass)) - { - return tag.getInteger(harvestLevelSuffix + toolClass); - }else - { - return -1; - } - } - else - { - stack.setTagCompound(new NBTTagCompound()); - } - - return -1; - } - -// @Override -// public float func_150893_a(ItemStack p_150893_1_, Block p_150893_2_) -// { -// return p_150893_2_.getMaterial() != Material.iron && p_150893_2_.getMaterial() != Material.anvil && p_150893_2_.getMaterial() != Material.rock ? super.func_150893_a(p_150893_1_, p_150893_2_) : 15; -// } - - @Override - public boolean canHarvestBlock(Block par1Block, ItemStack itemStack) - { - - return true; - } - - @Override - public boolean getIsRepairable(ItemStack par1ItemStack, ItemStack par2ItemStack) - { - return false; - } - - @Override - public void onUpdate(ItemStack toolStack, World world, Entity par3Entity, int par4, boolean par5) - { - if(world.isRemote) - { - return; - } - - SpellParadigmTool parad = this.loadParadigmFromStack(toolStack); - int cost = parad.onUpdate(toolStack, world, par3Entity, par4, par5); - - if(par3Entity instanceof EntityPlayer && cost > 0) - EnergyItems.syphonAndDamageWhileInContainer(toolStack, (EntityPlayer)par3Entity, cost); - - int duration = Math.max(this.getDuration(toolStack, world), 0); - - if(duration <= 0 && par3Entity instanceof EntityPlayer) - { - int banishCost = parad.onBanishTool(toolStack, world, par3Entity, par4, par5); - EnergyItems.syphonAndDamageWhileInContainer(toolStack, (EntityPlayer)par3Entity, banishCost); - ((EntityPlayer) par3Entity).inventory.mainInventory[par4] = this.getContainedCrystal(toolStack); - } - } - - @Override - public ItemStack onItemRightClick(ItemStack par1ItemStack, World par2World, EntityPlayer par3EntityPlayer) - { - if(par3EntityPlayer.isSneaking()) - { - par3EntityPlayer.setCurrentItemOrArmor(0, this.getContainedCrystal(par1ItemStack)); - return par1ItemStack; - } - - SpellParadigmTool parad = this.loadParadigmFromStack(par1ItemStack); - - MovingObjectPosition mop = this.getMovingObjectPositionFromPlayer(par2World, par3EntityPlayer, false); - - int cost = 0; - - if(mop != null && mop.typeOfHit.equals(MovingObjectPosition.MovingObjectType.BLOCK)) - { - cost = parad.onRightClickBlock(par1ItemStack, par3EntityPlayer, par2World, mop); - }else - { - cost = parad.onRightClickAir(par1ItemStack, par2World, par3EntityPlayer); - } - - if(cost > 0) - { - EnergyItems.syphonAndDamageWhileInContainer(par1ItemStack, par3EntityPlayer, cost); - } - - return par1ItemStack; - } - - @Override - public void addInformation(ItemStack par1ItemStack, EntityPlayer par2EntityPlayer, List par3List, boolean par4) - { - par3List.add("A mace filled with ancient alchemy"); - - if (!(par1ItemStack.stackTagCompound == null)) - { - if (!par1ItemStack.stackTagCompound.getString("ownerName").equals("")) - { - par3List.add("Current owner: " + par1ItemStack.stackTagCompound.getString("ownerName")); - } - - for(String str : this.getToolListString(par1ItemStack)) - { - par3List.add(str); - } - - par3List.add(""); - float damage = this.getCustomItemAttack(par1ItemStack); - par3List.add("\u00A79+" + ((int)(damage*10))/10.0f + " " + "Attack Damage"); - float critChance = ((int)(this.getCritChance(par1ItemStack)*1000))/10.0f; - par3List.add("\u00A79+" + critChance + "% " + "Crit Chance"); - } - } - - //--------------Custom methods--------------// - - public void setHarvestLevel(ItemStack stack, String toolClass, int harvestLevel) - { - if(stack.hasTagCompound()) - { - NBTTagCompound tag = stack.getTagCompound().getCompoundTag(tagName); - - tag.setInteger(harvestLevelSuffix + toolClass, Math.max(-1,harvestLevel)); - - stack.getTagCompound().setTag(tagName, tag); - } - else - { - stack.setTagCompound(new NBTTagCompound()); - - NBTTagCompound tag = stack.getTagCompound().getCompoundTag(tagName); - - tag.setInteger(harvestLevelSuffix + toolClass, Math.max(-1,harvestLevel)); - - stack.getTagCompound().setTag(tagName, tag); - } - } - - public void setDigSpeed(ItemStack stack, String toolClass, float digSpeed) - { - if(stack.hasTagCompound()) - { - NBTTagCompound tag = stack.getTagCompound().getCompoundTag(tagName); - - tag.setFloat(digLevelSuffix + toolClass, digSpeed); - - stack.getTagCompound().setTag(tagName, tag); - } - else - { - stack.setTagCompound(new NBTTagCompound()); - - NBTTagCompound tag = stack.getTagCompound().getCompoundTag(tagName); - - tag.setFloat(digLevelSuffix + toolClass, digSpeed); - - stack.getTagCompound().setTag(tagName, tag); - } - } - - public float getDigSpeed(ItemStack stack, String toolClass) - { - if(stack.hasTagCompound()) - { - NBTTagCompound tag = stack.getTagCompound().getCompoundTag(tagName); - - return tag.getFloat(digLevelSuffix + toolClass); - } - else - { - stack.setTagCompound(new NBTTagCompound()); - - return 0.0f; - } - } - - public void setItemAttack(ItemStack stack, float damage) - { - if(stack.hasTagCompound()) - { - NBTTagCompound tag = stack.getTagCompound().getCompoundTag(tagName); - - tag.setFloat("itemAttack", Math.max(damage, 0.0f)); - - stack.stackTagCompound.setTag(tagName, tag); - } - else - { - stack.setTagCompound(new NBTTagCompound()); - - NBTTagCompound tag = stack.getTagCompound().getCompoundTag(tagName); - - tag.setFloat("itemAttack", Math.max(damage, 0.0f)); - - stack.stackTagCompound.setTag(tagName, tag); - } - } - - public float getCustomItemAttack(ItemStack stack) - { - if(stack.hasTagCompound()) - { - NBTTagCompound tag = stack.getTagCompound().getCompoundTag(tagName); - - return tag.getFloat("itemAttack"); - } - else - { - stack.setTagCompound(new NBTTagCompound()); - - return 0.0f; - } - } - - public ItemStack getContainedCrystal(ItemStack container) - { - if(container.hasTagCompound()) - { - NBTTagCompound tag = container.getTagCompound().getCompoundTag(tagName).getCompoundTag("heldItem"); - - return ItemStack.loadItemStackFromNBT(tag); - } - else - { - container.setTagCompound(new NBTTagCompound()); - - return null; - } - } - - public void setContainedCrystal(ItemStack container, ItemStack crystal) - { - if(container.hasTagCompound()) - { - NBTTagCompound compTag = container.getTagCompound().getCompoundTag(tagName); - NBTTagCompound tag = compTag.getCompoundTag("heldItem"); - - crystal.writeToNBT(tag); - - compTag.setTag("heldItem", tag); - container.getTagCompound().setTag(tagName, compTag); - } - else - { - container.setTagCompound(new NBTTagCompound()); - - NBTTagCompound compTag = container.getTagCompound().getCompoundTag(tagName); - NBTTagCompound tag = compTag.getCompoundTag("heldItem"); - - crystal.writeToNBT(tag); - - compTag.setTag("heldItem", tag); - container.getTagCompound().setTag(tagName, compTag); - } - } - - public void setDuration(ItemStack container, World world, int duration) - { - if(world.isRemote) - { - return; - }else - { - World overWorld = DimensionManager.getWorld(0); - long worldtime = overWorld.getTotalWorldTime(); - - if(container.hasTagCompound()) - { - NBTTagCompound tag = container.getTagCompound().getCompoundTag(tagName); - - tag.setLong("duration", Math.max(duration + worldtime, worldtime)); - - container.getTagCompound().setTag(tagName, tag); - } - else - { - container.setTagCompound(new NBTTagCompound()); - - NBTTagCompound tag = container.getTagCompound().getCompoundTag(tagName); - - tag.setLong("duration", Math.max(duration + worldtime, worldtime)); - - container.getTagCompound().setTag(tagName, tag); - } - } - } - - public int getDuration(ItemStack container, World world) - { - if(world.isRemote) - { - return 0; - } - else - { - World overWorld = DimensionManager.getWorld(0); - long worldtime = overWorld.getTotalWorldTime(); - - if(container.hasTagCompound()) - { - NBTTagCompound tag = container.getTagCompound().getCompoundTag(tagName); - - return (int)(tag.getLong("duration") - worldtime); - } - else - { - container.setTagCompound(new NBTTagCompound()); - - return 0; - } - } -// if(container.hasTagCompound()) -// { -// NBTTagCompound tag = container.getTagCompound().getCompoundTag(tagName); -// -// return tag.getInteger("duration"); -// } -// else -// { -// container.setTagCompound(new NBTTagCompound()); -// -// return 0; -// } - } - - public void loadParadigmIntoStack(ItemStack container, List list) - { - if(!container.hasTagCompound()) - { - container.setTagCompound(new NBTTagCompound()); - } - - NBTTagCompound tagiest = container.getTagCompound().getCompoundTag(tagName); - - NBTTagList effectList = new NBTTagList(); - - for(SpellEffect eff : list) - { - effectList.appendTag(eff.getTag()); - } - - tagiest.setTag("Effects", effectList); - - container.getTagCompound().setTag(tagName, tagiest); - } - - public SpellParadigmTool loadParadigmFromStack(ItemStack container) - { - if(!container.hasTagCompound()) - { - container.setTagCompound(new NBTTagCompound()); - } - NBTTagCompound tagiest = container.getTagCompound().getCompoundTag(tagName); - - NBTTagList tagList = tagiest.getTagList("Effects",Constants.NBT.TAG_COMPOUND); - - List spellEffectList = new LinkedList(); - for (int i = 0; i < tagList.tagCount(); i++) - { - NBTTagCompound tag = (NBTTagCompound) tagList.getCompoundTagAt(i); - - SpellEffect eff = SpellEffect.getEffectFromTag(tag); - if(eff!=null) - { - spellEffectList.add(eff); - } - } - - return SpellParadigmTool.getParadigmForEffectArray(spellEffectList); - } - - public void setSilkTouch(ItemStack stack, boolean silkTouch) - { - if(stack.hasTagCompound()) - { - NBTTagCompound tag = stack.getTagCompound().getCompoundTag(tagName); - - tag.setBoolean("silkTouch", silkTouch); - - stack.stackTagCompound.setTag(tagName, tag); - } - else - { - stack.setTagCompound(new NBTTagCompound()); - - NBTTagCompound tag = stack.getTagCompound().getCompoundTag(tagName); - - tag.setBoolean("silkTouch", silkTouch); - - stack.stackTagCompound.setTag(tagName, tag); - } - } - - public boolean getSilkTouch(ItemStack stack) - { - if(stack.hasTagCompound()) - { - NBTTagCompound tag = stack.getTagCompound().getCompoundTag(tagName); - - return tag.getBoolean("silkTouch"); - } - else - { - stack.setTagCompound(new NBTTagCompound()); - - return false; - } - } - - public void setFortuneLevel(ItemStack stack, int fortune) - { - if(stack.hasTagCompound()) - { - NBTTagCompound tag = stack.getTagCompound().getCompoundTag(tagName); - - tag.setInteger("fortuneLevel", Math.max(fortune, 0)); - - stack.stackTagCompound.setTag(tagName, tag); - } - else - { - stack.setTagCompound(new NBTTagCompound()); - - NBTTagCompound tag = stack.getTagCompound().getCompoundTag(tagName); - - tag.setInteger("fortuneLevel", Math.max(fortune, 0)); - - stack.stackTagCompound.setTag(tagName, tag); - } - } - - public int getFortuneLevel(ItemStack stack) - { - if(stack.hasTagCompound()) - { - NBTTagCompound tag = stack.getTagCompound().getCompoundTag(tagName); - - return tag.getInteger("fortuneLevel"); - } - else - { - stack.setTagCompound(new NBTTagCompound()); - - return 0; - } - } - - public List getToolListString(ItemStack container) - { - if(!container.hasTagCompound()) - { - container.setTagCompound(new NBTTagCompound()); - } - NBTTagCompound tagiest = container.getTagCompound().getCompoundTag(tagName); - - NBTTagList tagList = tagiest.getTagList("ToolTips",Constants.NBT.TAG_COMPOUND); - - List toolTipList = new LinkedList(); - for (int i = 0; i < tagList.tagCount(); i++) - { - NBTTagCompound tag = (NBTTagCompound) tagList.getCompoundTagAt(i); - - String str = tag.getString("tip"); - if(str!=null) - { - toolTipList.add(str); - } - } - - return toolTipList; - } - - public void setToolListString(ItemStack container, List toolTipString) - { - if(!container.hasTagCompound()) - { - container.setTagCompound(new NBTTagCompound()); - } - - NBTTagCompound tagiest = container.getTagCompound().getCompoundTag(tagName); - - NBTTagList stringList = new NBTTagList(); - - for(String str : toolTipString) - { - NBTTagCompound tag = new NBTTagCompound(); - tag.setString("tip", str); - - stringList.appendTag(tag); - } - - tagiest.setTag("ToolTips", stringList); - - container.getTagCompound().setTag(tagName, tagiest); - } - - public void setCritChance(ItemStack container, float chance) - { - if(container.hasTagCompound()) - { - NBTTagCompound tag = container.getTagCompound().getCompoundTag(tagName); - - tag.setFloat("critChance", Math.max(chance, 0)); - - container.stackTagCompound.setTag(tagName, tag); - } - else - { - container.setTagCompound(new NBTTagCompound()); - - NBTTagCompound tag = container.getTagCompound().getCompoundTag(tagName); - - tag.setFloat("critChance", Math.max(chance, 0)); - - container.stackTagCompound.setTag(tagName, tag); - } - } - - public float getCritChance(ItemStack container) - { - if(container.hasTagCompound()) - { - NBTTagCompound tag = container.getTagCompound().getCompoundTag(tagName); - - return tag.getFloat("critChance"); - } - else - { - container.setTagCompound(new NBTTagCompound()); - - return 0; - } - } -} \ No newline at end of file diff --git a/src-backup/main/java/WayofTime/alchemicalWizardry/common/items/thaumcraft/ItemSanguineArmour.java b/src-backup/main/java/WayofTime/alchemicalWizardry/common/items/thaumcraft/ItemSanguineArmour.java deleted file mode 100644 index d5eec374..00000000 --- a/src-backup/main/java/WayofTime/alchemicalWizardry/common/items/thaumcraft/ItemSanguineArmour.java +++ /dev/null @@ -1,186 +0,0 @@ -package WayofTime.alchemicalWizardry.common.items.thaumcraft; - -import java.util.List; - -import net.minecraft.client.renderer.texture.IIconRegister; -import net.minecraft.entity.Entity; -import net.minecraft.entity.EntityLivingBase; -import net.minecraft.entity.player.EntityPlayer; -import net.minecraft.item.ItemArmor; -import net.minecraft.item.ItemStack; -import net.minecraft.util.DamageSource; -import net.minecraft.util.IIcon; -import net.minecraft.world.World; -import net.minecraftforge.common.ISpecialArmor; -import thaumcraft.api.IGoggles; -import thaumcraft.api.IRepairable; -import thaumcraft.api.IRunicArmor; -import thaumcraft.api.IVisDiscountGear; -import thaumcraft.api.ThaumcraftApi; -import thaumcraft.api.aspects.Aspect; -import thaumcraft.api.nodes.IRevealer; -import WayofTime.alchemicalWizardry.AlchemicalWizardry; -import WayofTime.alchemicalWizardry.ModItems; -import WayofTime.alchemicalWizardry.api.items.interfaces.ArmourUpgrade; -import cpw.mods.fml.relauncher.Side; -import cpw.mods.fml.relauncher.SideOnly; - -public class ItemSanguineArmour extends ItemArmor implements ArmourUpgrade, IGoggles, IVisDiscountGear, IRevealer, IRunicArmor, IRepairable -{ - private static IIcon helmetIcon; - private static IIcon plateIcon; - private static IIcon leggingsIcon; - private static IIcon bootsIcon; - - public ItemSanguineArmour(int armorType) - { - super(AlchemicalWizardry.sanguineArmourArmourMaterial, 0, armorType); - setMaxDamage(1000); - setCreativeTab(AlchemicalWizardry.tabBloodMagic); - } - - @Override - @SideOnly(Side.CLIENT) - public void registerIcons(IIconRegister iconRegister) - { - this.itemIcon = iconRegister.registerIcon("AlchemicalWizardry:SheathedItem"); - this.helmetIcon = iconRegister.registerIcon("AlchemicalWizardry:SanguineHelmet"); - this.plateIcon = iconRegister.registerIcon("AlchemicalWizardry:BoundPlate"); - this.leggingsIcon = iconRegister.registerIcon("AlchemicalWizardry:BoundLeggings"); - this.bootsIcon = iconRegister.registerIcon("AlchemicalWizardry:BoundBoots"); - } - - @SideOnly(Side.CLIENT) - public IIcon getIconFromDamage(int par1) - { - if (this.equals(ModItems.sanguineHelmet)) - { - return this.helmetIcon; - } - - if (this.equals(ModItems.sanguineRobe)) - { - return this.plateIcon; - } - - if (this.equals(ModItems.sanguinePants)) - { - return this.leggingsIcon; - } - - if (this.equals(ModItems.sanguineBoots)) - { - return this.bootsIcon; - } - - return this.itemIcon; - } - - @Override - public String getArmorTexture(ItemStack stack, Entity entity, int slot, String type) - { - if (this == ModItems.sanguineHelmet) - { - return "alchemicalwizardry:models/armor/sanguineArmour_layer_1.png"; - } - - if (this == ModItems.sanguineRobe || this == ModItems.sanguineBoots) - { - return "alchemicalwizardry:models/armor/sanguineArmour_layer_1.png"; - } - - if (this == ModItems.sanguinePants) - { - return "alchemicalwizardry:models/armor/sanguineArmour_layer_2.png"; - } else - { - return null; - } - } - - @Override - public void addInformation(ItemStack par1ItemStack, EntityPlayer par2EntityPlayer, List par3List, boolean par4) - { - int discount = 0; - - switch(this.armorType) - { - case 0: - discount = 6; - break; - case 1: - discount = 3; - break; - case 2: - discount = 3; - break; - case 3: - discount = 2; - break; - } - - switch(this.armorType) - { - case 0: - par3List.add("A pair of goggles imbued with power"); - break; - case 1: - - case 2: - - case 3: - par3List.add("Robes imbued with forbidden power"); - } - - par3List.add("Vis discount: " + discount + "%"); - } - - @Override - public void onArmourUpdate(World world, EntityPlayer player, ItemStack thisItemStack) - { - return; - } - - @Override - public boolean isUpgrade() - { - return true; - } - - @Override - public int getEnergyForTenSeconds() - { - return 0; - } - - @Override - public boolean showNodes(ItemStack itemstack, EntityLivingBase player) - { - return true; - } - - @Override - public int getVisDiscount(ItemStack stack, EntityPlayer player, Aspect aspect) - { - switch(this.armorType) - { - case 0: return 7; - case 1: return 3; - case 2: return 2; - case 3: return 2; - } - return 0; - } - - @Override - public boolean showIngamePopups(ItemStack itemstack, EntityLivingBase player) - { - return true; - } - - @Override - public int getRunicCharge(ItemStack itemstack) { - // TODO Auto-generated method stub - return 0; - } -} \ No newline at end of file diff --git a/src-backup/main/java/WayofTime/alchemicalWizardry/common/mcmod.info b/src-backup/main/java/WayofTime/alchemicalWizardry/common/mcmod.info deleted file mode 100644 index cd89dc4c..00000000 --- a/src-backup/main/java/WayofTime/alchemicalWizardry/common/mcmod.info +++ /dev/null @@ -1,22 +0,0 @@ -[ -{ - "modid": "AWWayofTime", - "name": "Blood Magic: Alchemical Wizardry", - "description": "Gruesome? Probably. Worth it? Definately!", - "version": "0.2.1c", - "url": "", - "updateUrl": "", - "logoFile": "", - "mcversion": "1.6.2", - "authorList": [ - "WayofTime" - ], - "credits": "", - "screenshots": [ - ], - "parent": "", - "dependencies": [ - ] -} -] - diff --git a/src-backup/main/java/WayofTime/alchemicalWizardry/common/potion/PotionBoost.java b/src-backup/main/java/WayofTime/alchemicalWizardry/common/potion/PotionBoost.java deleted file mode 100644 index 132205bb..00000000 --- a/src-backup/main/java/WayofTime/alchemicalWizardry/common/potion/PotionBoost.java +++ /dev/null @@ -1,18 +0,0 @@ -package WayofTime.alchemicalWizardry.common.potion; - -import net.minecraft.potion.Potion; - -public class PotionBoost extends Potion -{ - public PotionBoost(int par1, boolean par2, int par3) - { - super(par1, par2, par3); - } - - @Override - public Potion setIconIndex(int par1, int par2) - { - super.setIconIndex(par1, par2); - return this; - } -} diff --git a/src-backup/main/java/WayofTime/alchemicalWizardry/common/potion/PotionDeaf.java b/src-backup/main/java/WayofTime/alchemicalWizardry/common/potion/PotionDeaf.java deleted file mode 100644 index fc46e77b..00000000 --- a/src-backup/main/java/WayofTime/alchemicalWizardry/common/potion/PotionDeaf.java +++ /dev/null @@ -1,18 +0,0 @@ -package WayofTime.alchemicalWizardry.common.potion; - -import net.minecraft.potion.Potion; - -public class PotionDeaf extends Potion -{ - public PotionDeaf(int par1, boolean par2, int par3) - { - super(par1, par2, par3); - } - - @Override - public Potion setIconIndex(int par1, int par2) - { - super.setIconIndex(par1, par2); - return this; - } -} diff --git a/src-backup/main/java/WayofTime/alchemicalWizardry/common/potion/PotionDrowning.java b/src-backup/main/java/WayofTime/alchemicalWizardry/common/potion/PotionDrowning.java deleted file mode 100644 index 87558f26..00000000 --- a/src-backup/main/java/WayofTime/alchemicalWizardry/common/potion/PotionDrowning.java +++ /dev/null @@ -1,18 +0,0 @@ -package WayofTime.alchemicalWizardry.common.potion; - -import net.minecraft.potion.Potion; - -public class PotionDrowning extends Potion -{ - public PotionDrowning(int par1, boolean par2, int par3) - { - super(par1, par2, par3); - } - - @Override - public Potion setIconIndex(int par1, int par2) - { - super.setIconIndex(par1, par2); - return this; - } -} diff --git a/src-backup/main/java/WayofTime/alchemicalWizardry/common/potion/PotionFeatherFall.java b/src-backup/main/java/WayofTime/alchemicalWizardry/common/potion/PotionFeatherFall.java deleted file mode 100644 index 0c35263b..00000000 --- a/src-backup/main/java/WayofTime/alchemicalWizardry/common/potion/PotionFeatherFall.java +++ /dev/null @@ -1,18 +0,0 @@ -package WayofTime.alchemicalWizardry.common.potion; - -import net.minecraft.potion.Potion; - -public class PotionFeatherFall extends Potion -{ - public PotionFeatherFall(int par1, boolean par2, int par3) - { - super(par1, par2, par3); - } - - @Override - public Potion setIconIndex(int par1, int par2) - { - super.setIconIndex(par1, par2); - return this; - } -} diff --git a/src-backup/main/java/WayofTime/alchemicalWizardry/common/potion/PotionFireFuse.java b/src-backup/main/java/WayofTime/alchemicalWizardry/common/potion/PotionFireFuse.java deleted file mode 100644 index 8fe5d527..00000000 --- a/src-backup/main/java/WayofTime/alchemicalWizardry/common/potion/PotionFireFuse.java +++ /dev/null @@ -1,18 +0,0 @@ -package WayofTime.alchemicalWizardry.common.potion; - -import net.minecraft.potion.Potion; - -public class PotionFireFuse extends Potion -{ - public PotionFireFuse(int par1, boolean par2, int par3) - { - super(par1, par2, par3); - } - - @Override - public Potion setIconIndex(int par1, int par2) - { - super.setIconIndex(par1, par2); - return this; - } -} diff --git a/src-backup/main/java/WayofTime/alchemicalWizardry/common/potion/PotionFlameCloak.java b/src-backup/main/java/WayofTime/alchemicalWizardry/common/potion/PotionFlameCloak.java deleted file mode 100644 index b885d240..00000000 --- a/src-backup/main/java/WayofTime/alchemicalWizardry/common/potion/PotionFlameCloak.java +++ /dev/null @@ -1,18 +0,0 @@ -package WayofTime.alchemicalWizardry.common.potion; - -import net.minecraft.potion.Potion; - -public class PotionFlameCloak extends Potion -{ - public PotionFlameCloak(int par1, boolean par2, int par3) - { - super(par1, par2, par3); - } - - @Override - public Potion setIconIndex(int par1, int par2) - { - super.setIconIndex(par1, par2); - return this; - } -} diff --git a/src-backup/main/java/WayofTime/alchemicalWizardry/common/potion/PotionFlight.java b/src-backup/main/java/WayofTime/alchemicalWizardry/common/potion/PotionFlight.java deleted file mode 100644 index 23e93e57..00000000 --- a/src-backup/main/java/WayofTime/alchemicalWizardry/common/potion/PotionFlight.java +++ /dev/null @@ -1,18 +0,0 @@ -package WayofTime.alchemicalWizardry.common.potion; - -import net.minecraft.potion.Potion; - -public class PotionFlight extends Potion -{ - public PotionFlight(int par1, boolean par2, int par3) - { - super(par1, par2, par3); - } - - @Override - public Potion setIconIndex(int par1, int par2) - { - super.setIconIndex(par1, par2); - return this; - } -} diff --git a/src-backup/main/java/WayofTime/alchemicalWizardry/common/potion/PotionHeavyHeart.java b/src-backup/main/java/WayofTime/alchemicalWizardry/common/potion/PotionHeavyHeart.java deleted file mode 100644 index 952fb59c..00000000 --- a/src-backup/main/java/WayofTime/alchemicalWizardry/common/potion/PotionHeavyHeart.java +++ /dev/null @@ -1,18 +0,0 @@ -package WayofTime.alchemicalWizardry.common.potion; - -import net.minecraft.potion.Potion; - -public class PotionHeavyHeart extends Potion -{ - public PotionHeavyHeart(int par1, boolean par2, int par3) - { - super(par1, par2, par3); - } - - @Override - public Potion setIconIndex(int par1, int par2) - { - super.setIconIndex(par1, par2); - return this; - } -} diff --git a/src-backup/main/java/WayofTime/alchemicalWizardry/common/potion/PotionIceCloak.java b/src-backup/main/java/WayofTime/alchemicalWizardry/common/potion/PotionIceCloak.java deleted file mode 100644 index d169b4d9..00000000 --- a/src-backup/main/java/WayofTime/alchemicalWizardry/common/potion/PotionIceCloak.java +++ /dev/null @@ -1,18 +0,0 @@ -package WayofTime.alchemicalWizardry.common.potion; - -import net.minecraft.potion.Potion; - -public class PotionIceCloak extends Potion -{ - public PotionIceCloak(int par1, boolean par2, int par3) - { - super(par1, par2, par3); - } - - @Override - public Potion setIconIndex(int par1, int par2) - { - super.setIconIndex(par1, par2); - return this; - } -} diff --git a/src-backup/main/java/WayofTime/alchemicalWizardry/common/potion/PotionInhibit.java b/src-backup/main/java/WayofTime/alchemicalWizardry/common/potion/PotionInhibit.java deleted file mode 100644 index 2214e105..00000000 --- a/src-backup/main/java/WayofTime/alchemicalWizardry/common/potion/PotionInhibit.java +++ /dev/null @@ -1,18 +0,0 @@ -package WayofTime.alchemicalWizardry.common.potion; - -import net.minecraft.potion.Potion; - -public class PotionInhibit extends Potion -{ - public PotionInhibit(int par1, boolean par2, int par3) - { - super(par1, par2, par3); - } - - @Override - public Potion setIconIndex(int par1, int par2) - { - super.setIconIndex(par1, par2); - return this; - } -} diff --git a/src-backup/main/java/WayofTime/alchemicalWizardry/common/potion/PotionPlanarBinding.java b/src-backup/main/java/WayofTime/alchemicalWizardry/common/potion/PotionPlanarBinding.java deleted file mode 100644 index 54d6cd72..00000000 --- a/src-backup/main/java/WayofTime/alchemicalWizardry/common/potion/PotionPlanarBinding.java +++ /dev/null @@ -1,18 +0,0 @@ -package WayofTime.alchemicalWizardry.common.potion; - -import net.minecraft.potion.Potion; - -public class PotionPlanarBinding extends Potion -{ - public PotionPlanarBinding(int par1, boolean par2, int par3) - { - super(par1, par2, par3); - } - - @Override - public Potion setIconIndex(int par1, int par2) - { - super.setIconIndex(par1, par2); - return this; - } -} diff --git a/src-backup/main/java/WayofTime/alchemicalWizardry/common/potion/PotionProjectileProtect.java b/src-backup/main/java/WayofTime/alchemicalWizardry/common/potion/PotionProjectileProtect.java deleted file mode 100644 index 317edd54..00000000 --- a/src-backup/main/java/WayofTime/alchemicalWizardry/common/potion/PotionProjectileProtect.java +++ /dev/null @@ -1,18 +0,0 @@ -package WayofTime.alchemicalWizardry.common.potion; - -import net.minecraft.potion.Potion; - -public class PotionProjectileProtect extends Potion -{ - public PotionProjectileProtect(int par1, boolean par2, int par3) - { - super(par1, par2, par3); - } - - @Override - public Potion setIconIndex(int par1, int par2) - { - super.setIconIndex(par1, par2); - return this; - } -} diff --git a/src-backup/main/java/WayofTime/alchemicalWizardry/common/potion/PotionReciprocation.java b/src-backup/main/java/WayofTime/alchemicalWizardry/common/potion/PotionReciprocation.java deleted file mode 100644 index ddceed0b..00000000 --- a/src-backup/main/java/WayofTime/alchemicalWizardry/common/potion/PotionReciprocation.java +++ /dev/null @@ -1,18 +0,0 @@ -package WayofTime.alchemicalWizardry.common.potion; - -import net.minecraft.potion.Potion; - -public class PotionReciprocation extends Potion -{ - public PotionReciprocation(int par1, boolean par2, int par3) - { - super(par1, par2, par3); - } - - @Override - public Potion setIconIndex(int par1, int par2) - { - super.setIconIndex(par1, par2); - return this; - } -} diff --git a/src-backup/main/java/WayofTime/alchemicalWizardry/common/potion/PotionSoulFray.java b/src-backup/main/java/WayofTime/alchemicalWizardry/common/potion/PotionSoulFray.java deleted file mode 100644 index 78febaff..00000000 --- a/src-backup/main/java/WayofTime/alchemicalWizardry/common/potion/PotionSoulFray.java +++ /dev/null @@ -1,18 +0,0 @@ -package WayofTime.alchemicalWizardry.common.potion; - -import net.minecraft.potion.Potion; - -public class PotionSoulFray extends Potion -{ - public PotionSoulFray(int par1, boolean par2, int par3) - { - super(par1, par2, par3); - } - - @Override - public Potion setIconIndex(int par1, int par2) - { - super.setIconIndex(par1, par2); - return this; - } -} diff --git a/src-backup/main/java/WayofTime/alchemicalWizardry/common/potion/PotionSoulHarden.java b/src-backup/main/java/WayofTime/alchemicalWizardry/common/potion/PotionSoulHarden.java deleted file mode 100644 index 0ac24694..00000000 --- a/src-backup/main/java/WayofTime/alchemicalWizardry/common/potion/PotionSoulHarden.java +++ /dev/null @@ -1,18 +0,0 @@ -package WayofTime.alchemicalWizardry.common.potion; - -import net.minecraft.potion.Potion; - -public class PotionSoulHarden extends Potion -{ - public PotionSoulHarden(int par1, boolean par2, int par3) - { - super(par1, par2, par3); - } - - @Override - public Potion setIconIndex(int par1, int par2) - { - super.setIconIndex(par1, par2); - return this; - } -} diff --git a/src-backup/main/java/WayofTime/alchemicalWizardry/common/renderer/AlchemyCircleRenderer.java b/src-backup/main/java/WayofTime/alchemicalWizardry/common/renderer/AlchemyCircleRenderer.java deleted file mode 100644 index eeae462b..00000000 --- a/src-backup/main/java/WayofTime/alchemicalWizardry/common/renderer/AlchemyCircleRenderer.java +++ /dev/null @@ -1,92 +0,0 @@ -package WayofTime.alchemicalWizardry.common.renderer; - -import net.minecraft.client.renderer.Tessellator; -import net.minecraft.util.MathHelper; -import net.minecraft.util.ResourceLocation; - -import org.lwjgl.opengl.GL11; - -import WayofTime.alchemicalWizardry.common.tileEntity.TEMasterStone; - -public class AlchemyCircleRenderer extends MRSRenderer -{ - private ResourceLocation resourceLocation = new ResourceLocation("alchemicalwizardry:textures/models/TransCircle.png"); - private int colourRed; - private int colourGreen; - private int colourBlue; - private int colourIntensity; - private double xOffset; - private double yOffset; - private double zOffset; - private double radius; - private double initialY; - private boolean renderWithoutReagents; - - public AlchemyCircleRenderer(ResourceLocation resource, int red, int green, int blue, int intensity, double xOff, double initialY, double yOff, double zOff, double radius, boolean renderWithoutReagents) - { - this.resourceLocation = resource; - this.colourRed = red; - this.colourGreen = green; - this.colourBlue = blue; - this.colourIntensity = intensity; - this.xOffset = xOff; - this.initialY = initialY; - this.yOffset = yOff; - this.zOffset = zOff; - this.radius = radius; - this.renderWithoutReagents = renderWithoutReagents; - } - - @Override - public void renderAt(TEMasterStone tile, double x, double y, double z) - { - if(tile.areTanksEmpty() && !renderWithoutReagents) - { - return; - } - - GL11.glPushMatrix(); - float f1 = 1.0f; - Tessellator tessellator = Tessellator.instance; - this.bindTexture(resourceLocation); - GL11.glTexParameterf(GL11.GL_TEXTURE_2D, GL11.GL_TEXTURE_WRAP_S, 10497.0F); - GL11.glTexParameterf(GL11.GL_TEXTURE_2D, GL11.GL_TEXTURE_WRAP_T, 10497.0F); - GL11.glDisable(GL11.GL_LIGHTING); - GL11.glDisable(GL11.GL_CULL_FACE); - float f2 = 0; - float f3 = -f2 * 0.2F - (float)MathHelper.floor_float(-f2 * 0.1F); - GL11.glEnable(GL11.GL_BLEND); - GL11.glBlendFunc(GL11.GL_SRC_ALPHA, GL11.GL_ONE_MINUS_SRC_ALPHA); - - GL11.glDepthMask(false); - - tessellator.startDrawingQuads(); - tessellator.setColorRGBA(colourRed, colourGreen, colourBlue, colourIntensity); - - GL11.glTranslated(x+0.5+xOffset, y+0.5+(yOffset-initialY)*(tile.runningTime/100d)+initialY, z+0.5+zOffset); - - float rotationAngle = (float) (720.0 * (System.currentTimeMillis() & 0x3FFFL) / 0x3FFFL); - - GL11.glRotatef(rotationAngle, 0F, 1F, 0F); //Rotate on planar axis - //GL11.glRotatef(30F, 0F, 0F, 1F); //Rotate vertical axis - //GL11.glRotatef(tileAltar.getWorldObj().getWorldTime()*2f, 1F, 0F, 0F); //Rotate cylindrically - - tessellator.setBrightness(240); - - double finalRadius = (radius)*(tile.runningTime/100d); - - tessellator.addVertexWithUV(-finalRadius, 0, -finalRadius, 0.0d, 0.0d); - tessellator.addVertexWithUV(finalRadius, 0, -finalRadius, 1.0d, 0.0d); - tessellator.addVertexWithUV(finalRadius, 0, finalRadius, 1.0d, 1.0d); - tessellator.addVertexWithUV(-finalRadius, 0, finalRadius, 0.0d, 1.0d); - - tessellator.draw(); - - GL11.glDepthMask(true); - - GL11.glEnable(GL11.GL_LIGHTING); - GL11.glEnable(GL11.GL_TEXTURE_2D); - GL11.glRotatef(180F, 0.0F, 0.0F, 1.0F); - GL11.glPopMatrix(); - } -} diff --git a/src-backup/main/java/WayofTime/alchemicalWizardry/common/renderer/BeamRenderer.java b/src-backup/main/java/WayofTime/alchemicalWizardry/common/renderer/BeamRenderer.java deleted file mode 100644 index 01f6d125..00000000 --- a/src-backup/main/java/WayofTime/alchemicalWizardry/common/renderer/BeamRenderer.java +++ /dev/null @@ -1,155 +0,0 @@ -package WayofTime.alchemicalWizardry.common.renderer; - -import net.minecraft.client.renderer.Tessellator; -import net.minecraft.client.renderer.texture.TextureManager; -import net.minecraft.client.renderer.tileentity.TileEntityRendererDispatcher; -import net.minecraft.util.MathHelper; -import net.minecraft.util.ResourceLocation; - -import org.lwjgl.opengl.GL11; - -import WayofTime.alchemicalWizardry.api.ColourAndCoords; - -public class BeamRenderer -{ - private static final ResourceLocation field_110629_a = new ResourceLocation("textures/entity/beacon_beam.png"); - - public int xInit; - public int yInit; - public int zInit; - - public int xFinal; - public int yFinal; - public int zFinal; - - public int colourRed; - public int colourGreen; - public int colourBlue; - public int colourIntensity; - - public double size; - - public void setInitialPosition(int x, int y, int z) - { - this.xInit = x; - this.yInit = y; - this.zInit = z; - } - - public void setColourAndFinalPosition(ColourAndCoords col) - { - this.colourRed = col.colourRed; - this.colourGreen = col.colourGreen; - this.colourBlue = col.colourBlue; - this.colourIntensity = col.colourIntensity; - - this.xFinal = col.xCoord; - this.yFinal = col.yCoord; - this.zFinal = col.zCoord; - } - - public void setSize(double size) - { - this.size = size; - } - - protected static void bindTexture(ResourceLocation p_147499_1_) - { - TextureManager texturemanager = TileEntityRendererDispatcher.instance.field_147553_e; - - if (texturemanager != null) - { - texturemanager.bindTexture(p_147499_1_); - } - } - - public void render(double d0, double d1, double d2) - { - int xDiff = this.xFinal - this.xInit; - int yDiff = this.yFinal - this.yInit; - int zDiff = this.zFinal - this.zInit; - - float planarAngle = (float)(Math.atan2(-zDiff, xDiff) * 180d / Math.PI); //Radians - float verticalAngle = (float)(Math.atan2(yDiff, Math.sqrt(xDiff*xDiff + zDiff+zDiff)) * 180d / Math.PI); - - float distance = (float) Math.sqrt(xDiff*xDiff + yDiff*yDiff + zDiff*zDiff); //Total distance - - GL11.glPushMatrix(); - float f1 = 1.0f; - Tessellator tessellator = Tessellator.instance; - BeamRenderer.bindTexture(field_110629_a); - GL11.glTexParameterf(GL11.GL_TEXTURE_2D, GL11.GL_TEXTURE_WRAP_S, 10497.0F); - GL11.glTexParameterf(GL11.GL_TEXTURE_2D, GL11.GL_TEXTURE_WRAP_T, 10497.0F); - GL11.glDisable(GL11.GL_LIGHTING); - GL11.glDisable(GL11.GL_CULL_FACE); - float f2 = 0; - float f3 = -f2 * 0.2F - (float)MathHelper.floor_float(-f2 * 0.1F); - GL11.glEnable(GL11.GL_BLEND); - GL11.glBlendFunc(GL11.GL_SRC_ALPHA, GL11.GL_ONE_MINUS_SRC_ALPHA); - - - GL11.glDepthMask(false); - - tessellator.startDrawingQuads(); - tessellator.setColorRGBA(colourRed, colourGreen, colourBlue, colourIntensity); - //tessellator.setColorOpaque(255, 255, 255); - - double inside = -(this.size/2d); - double outside = 1.0d-(0.50d - this.size/2d)-0.5d; - - double d18 = inside; - double d19 = inside; - double d20 = outside; - double d21 = inside; - double d22 = inside; - double d23 = outside; - double d24 = outside; - double d25 = outside; - double d26 = (double)(distance * f1);// + 0.2; - double d27 = 0.0D; - double d28 = 1.0D; - double d29 = (double)(-1.0F + f3); - double d30 = (double)(distance * f1) + d29; - - GL11.glTranslated(d0+0.5, d1+0.5, d2+0.5); - - GL11.glRotatef(planarAngle, 0F, 1F, 0F); //Rotate on planar axis - GL11.glRotatef(verticalAngle, 0F, 0F, 1F); //Rotate vertical axis - //GL11.glRotatef(tileAltar.getWorldObj().getWorldTime()*2f, 1F, 0F, 0F); //Rotate cylindrically - - double offset = 0; - - tessellator.setBrightness(240); - float s = 1F / 16F; -// GL11.glTranslatef(0F, s, s); -// GL11.glScalef(1F, s * 14F, s * 14F); - tessellator.addVertexWithUV(d26, d18, d19, d28, d30); - tessellator.addVertexWithUV(offset, d18, d19, d28, d29); - tessellator.addVertexWithUV(offset, d20, d21, d27, d29); - tessellator.addVertexWithUV(d26, d20, d21, d27, d30); - tessellator.addVertexWithUV(d26, d24, d25, d28, d30); - tessellator.addVertexWithUV(offset, d24, d25, d28, d29); - tessellator.addVertexWithUV(offset, d22, d23, d27, d29); - tessellator.addVertexWithUV(d26, d22, d23, d27, d30); - tessellator.addVertexWithUV(d26, d20, d21, d28, d30); - tessellator.addVertexWithUV(offset, d20, d21, d28, d29); - tessellator.addVertexWithUV(offset, d24, d25, d27, d29); - tessellator.addVertexWithUV(d26, d24, d25, d27, d30); - tessellator.addVertexWithUV(d26, d22, d23, d28, d30); - tessellator.addVertexWithUV(offset, d22, d23, d28, d29); - tessellator.addVertexWithUV(offset, d18, d19, d27, d29); - tessellator.addVertexWithUV(d26, d18, d19, d27, d30); - - //ShaderHelper.useShaderWithProps(ShaderHelper.beam, "time", (int) tileAltar.getWorldObj().getTotalWorldTime()); - tessellator.draw(); - //ShaderHelper.releaseShader(); - - GL11.glDepthMask(true); - - - GL11.glEnable(GL11.GL_LIGHTING); - GL11.glEnable(GL11.GL_TEXTURE_2D); - GL11.glRotatef(180F, 0.0F, 0.0F, 1.0F); - GL11.glPopMatrix(); - } -} diff --git a/src-backup/main/java/WayofTime/alchemicalWizardry/common/renderer/MRSRenderer.java b/src-backup/main/java/WayofTime/alchemicalWizardry/common/renderer/MRSRenderer.java deleted file mode 100644 index 4bf6de31..00000000 --- a/src-backup/main/java/WayofTime/alchemicalWizardry/common/renderer/MRSRenderer.java +++ /dev/null @@ -1,22 +0,0 @@ -package WayofTime.alchemicalWizardry.common.renderer; - -import net.minecraft.client.renderer.texture.TextureManager; -import net.minecraft.client.renderer.tileentity.TileEntityRendererDispatcher; -import net.minecraft.util.ResourceLocation; -import WayofTime.alchemicalWizardry.common.renderer.block.RenderMasterStone; -import WayofTime.alchemicalWizardry.common.tileEntity.TEMasterStone; - -public abstract class MRSRenderer -{ - public abstract void renderAt(TEMasterStone tile, double x, double y, double z); - - protected void bindTexture(ResourceLocation p_147499_1_) - { - TextureManager texturemanager = TileEntityRendererDispatcher.instance.field_147553_e; - - if (texturemanager != null) - { - texturemanager.bindTexture(p_147499_1_); - } - } -} diff --git a/src-backup/main/java/WayofTime/alchemicalWizardry/common/renderer/block/RenderAlchemicCalcinator.java b/src-backup/main/java/WayofTime/alchemicalWizardry/common/renderer/block/RenderAlchemicCalcinator.java deleted file mode 100644 index 59c70a85..00000000 --- a/src-backup/main/java/WayofTime/alchemicalWizardry/common/renderer/block/RenderAlchemicCalcinator.java +++ /dev/null @@ -1,485 +0,0 @@ -package WayofTime.alchemicalWizardry.common.renderer.block; - -import net.minecraft.client.renderer.Tessellator; -import net.minecraft.client.renderer.entity.RenderItem; -import net.minecraft.client.renderer.entity.RenderManager; -import net.minecraft.client.renderer.tileentity.TileEntitySpecialRenderer; -import net.minecraft.entity.Entity; -import net.minecraft.entity.item.EntityItem; -import net.minecraft.item.ItemBlock; -import net.minecraft.item.ItemStack; -import net.minecraft.tileentity.TileEntity; -import net.minecraft.util.MathHelper; -import net.minecraft.util.ResourceLocation; -import net.minecraftforge.common.util.ForgeDirection; - -import org.lwjgl.opengl.GL11; - -import WayofTime.alchemicalWizardry.api.alchemy.energy.Reagent; -import WayofTime.alchemicalWizardry.api.alchemy.energy.ReagentContainerInfo; -import WayofTime.alchemicalWizardry.api.alchemy.energy.ReagentStack; -import WayofTime.alchemicalWizardry.common.renderer.model.ModelAlchemicalCalcinator; -import WayofTime.alchemicalWizardry.common.tileEntity.TEAlchemicCalcinator; -import cpw.mods.fml.client.FMLClientHandler; - -public class RenderAlchemicCalcinator extends TileEntitySpecialRenderer -{ - private final RenderItem customRenderItem; - private ModelAlchemicalCalcinator modelConduit = new ModelAlchemicalCalcinator(); - - private ResourceLocation resourceLocation = new ResourceLocation("alchemicalwizardry:textures/models/Reagent.png"); - - public RenderAlchemicCalcinator() - { - customRenderItem = new RenderItem() - { - @Override - public boolean shouldBob() - { - return false; - } - }; - customRenderItem.setRenderManager(RenderManager.instance); - } - - @Override - public void renderTileEntityAt(TileEntity tileEntity, double d0, double d1, double d2, float f) - { - if (tileEntity instanceof TEAlchemicCalcinator) - { - TEAlchemicCalcinator tileAltar = (TEAlchemicCalcinator) tileEntity; - - GL11.glDisable(GL11.GL_LIGHTING); -// GL11.glDisable(GL11.GL_CULL_FACE); - /** - * Render the ghost item inside of the Altar, slowly spinning - */ - GL11.glPushMatrix(); - GL11.glTranslatef((float) d0 + 0.5F, (float) d1 + 1.5F, (float) d2 + 0.5F); - ResourceLocation test = new ResourceLocation("alchemicalwizardry:textures/models/AlchemicalCalcinator.png"); - FMLClientHandler.instance().getClient().renderEngine.bindTexture(test); - GL11.glPushMatrix(); - GL11.glRotatef(180F, 0.0F, 0.0F, 1.0F); - //GL11.glRotatef(90F, 0.0F, 0.0F, 1.0F); - //A reference to your Model file. Again, very important. - this.modelConduit.render((Entity) null, 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0625F); - //Tell it to stop rendering for both the PushMatrix's - GL11.glPopMatrix(); - GL11.glPopMatrix(); -// GL11.glEnable(GL11.GL_CULL_FACE); - GL11.glEnable(GL11.GL_LIGHTING); - - GL11.glPushMatrix(); - - if (tileAltar.getStackInSlot(1) != null) - { - float scaleFactor = getGhostItemScaleFactor(tileAltar.getStackInSlot(1)); - EntityItem ghostEntityItem = new EntityItem(tileAltar.getWorldObj()); - ghostEntityItem.hoverStart = 0.0F; - ghostEntityItem.setEntityItemStack(tileAltar.getStackInSlot(1)); - //translateGhostItemByOrientation(ghostEntityItem.getEntityItem(), d0, d1, d2, ForgeDirection.DOWN); - float displacement = 0.2F; - - if (ghostEntityItem.getEntityItem().getItem() instanceof ItemBlock) - { - GL11.glTranslatef((float) d0 + 0.5F, (float) d1 + displacement + 0.7F, (float) d2 + 0.5F); - } else - { - GL11.glTranslatef((float) d0 + 0.5F, (float) d1 + displacement + 10.4f / 16.0f, (float) d2 + 0.5F - 0.0625f*2f); - } - - //GL11.glTranslatef((float) tileAltar.xCoord + 0.5F, (float) tileAltar.yCoord + 2.7F, (float) tileAltar.zCoord + 0.5F); - GL11.glScalef(scaleFactor, scaleFactor, scaleFactor); - - if (!(ghostEntityItem.getEntityItem().getItem() instanceof ItemBlock)) - { - GL11.glRotatef(90f, 1.0f, 0.0f, 0.0F); - } - - customRenderItem.doRender(ghostEntityItem, 0, 0, 0, 0, 0); - } - - - GL11.glPopMatrix(); - GL11.glPushMatrix(); - - if (tileAltar.getStackInSlot(0) != null) - { - float scaleFactor = getGhostItemScaleFactor(tileAltar.getStackInSlot(0)); - EntityItem ghostEntityItem = new EntityItem(tileAltar.getWorldObj()); - ghostEntityItem.hoverStart = 0.0F; - ghostEntityItem.setEntityItemStack(tileAltar.getStackInSlot(0)); - //translateGhostItemByOrientation(ghostEntityItem.getEntityItem(), d0, d1, d2, ForgeDirection.DOWN); - float displacement = -0.5F; - - if (ghostEntityItem.getEntityItem().getItem() instanceof ItemBlock) - { - GL11.glTranslatef((float) d0 + 0.5F, (float) d1 + displacement + 0.7F, (float) d2 + 0.5F); - } else - { - GL11.glTranslatef((float) d0 + 0.5F, (float) d1 + displacement + 10.4f / 16.0f, (float) d2 + 0.5F - 0.0625f*2f); - } - - //GL11.glTranslatef((float) tileAltar.xCoord + 0.5F, (float) tileAltar.yCoord + 2.7F, (float) tileAltar.zCoord + 0.5F); - GL11.glScalef(scaleFactor, scaleFactor, scaleFactor); - - if (!(ghostEntityItem.getEntityItem().getItem() instanceof ItemBlock)) - { - GL11.glRotatef(90f, 1.0f, 0.0f, 0.0F); - } - - customRenderItem.doRender(ghostEntityItem, 0, 0, 0, 0, 0); - } - - GL11.glPopMatrix(); - - - ReagentContainerInfo[] info = tileAltar.getContainerInfo(ForgeDirection.UNKNOWN); - if(info.length >= 1 && info[0] != null) - { - ReagentStack reagentStack = info[0].reagent; - int capacity = info[0].capacity; - if(reagentStack != null && reagentStack.reagent != null) - { - Reagent reagent = reagentStack.reagent; - this.renderTankContents(d0, d1, d2, reagent.getColourRed(), reagent.getColourGreen(), reagent.getColourBlue(), 200 * reagentStack.amount / capacity); - } - } - - - -// for (int i = 0; i <= 1; i++) -// { -// GL11.glPushMatrix(); -// -// if (tileAltar.getStackInSlot(i) != null) -// { -// float scaleFactor = getGhostItemScaleFactor(tileAltar.getStackInSlot(i)); -// float rotationAngle = (float) (720.0 * (System.currentTimeMillis() & 0x3FFFL) / 0x3FFFL); -// EntityItem ghostEntityItem = new EntityItem(tileAltar.getWorldObj()); -// ghostEntityItem.hoverStart = 0.0F; -// ghostEntityItem.setEntityItemStack(tileAltar.getStackInSlot(i)); -// //translateGhostItemByOrientation(ghostEntityItem.getEntityItem(), d0, d1, d2, ForgeDirection.DOWN); -// float displacementX = getXDisplacementForSlot(i); -// float displacementY = getYDisplacementForSlot(i); -// float displacementZ = getZDisplacementForSlot(i); -// -// if (ghostEntityItem.getEntityItem().getItem() instanceof ItemBlock) -// { -// GL11.glTranslatef((float) d0 + 0.5F + displacementX, (float) d1 + displacementY + 0.7F, (float) d2 + 0.5F + displacementZ); -// } else -// { -// GL11.glTranslatef((float) d0 + 0.5F + displacementX, (float) d1 + displacementY + 0.6F, (float) d2 + 0.5F + displacementZ); -// } -// -// //GL11.glTranslatef((float) tileAltar.xCoord + 0.5F, (float) tileAltar.yCoord + 2.7F, (float) tileAltar.zCoord + 0.5F); -// GL11.glScalef(scaleFactor, scaleFactor, scaleFactor); -// GL11.glRotatef(rotationAngle, 0.0F, 1.0F, 0.0F); -// customRenderItem.doRender(ghostEntityItem, 0, 0, 0, 0, 0); -// } -// -// GL11.glPopMatrix(); -// } - - GL11.glEnable(GL11.GL_CULL_FACE); - GL11.glEnable(GL11.GL_LIGHTING); - } - } - - private void renderTankContents(double x, double y, double z, int colourRed, int colourGreen, int colourBlue, int colourIntensity) - { - GL11.glPushMatrix(); - float f1 = 1.0f; - Tessellator tessellator = Tessellator.instance; - this.bindTexture(resourceLocation); - GL11.glTexParameterf(GL11.GL_TEXTURE_2D, GL11.GL_TEXTURE_WRAP_S, 10497.0F); - GL11.glTexParameterf(GL11.GL_TEXTURE_2D, GL11.GL_TEXTURE_WRAP_T, 10497.0F); - GL11.glDisable(GL11.GL_LIGHTING); - GL11.glDisable(GL11.GL_CULL_FACE); - float f2 = 0; - float f3 = -f2 * 0.2F - (float)MathHelper.floor_float(-f2 * 0.1F); - GL11.glEnable(GL11.GL_BLEND); - GL11.glBlendFunc(GL11.GL_SRC_ALPHA, GL11.GL_ONE_MINUS_SRC_ALPHA); - - GL11.glDepthMask(false); - - tessellator.startDrawingQuads(); - tessellator.setColorRGBA(colourRed, colourGreen, colourBlue, colourIntensity); - - GL11.glTranslated(x+0.5, y+0.5, z+0.5); - //GL11.glRotatef(30F, 0F, 0F, 1F); //Rotate vertical axis - //GL11.glRotatef(tileAltar.getWorldObj().getWorldTime()*2f, 1F, 0F, 0F); //Rotate cylindrically - - tessellator.setBrightness(240); - - double x1 = -7d/16d; - double x2 = 7d/16d; - double y1 = 1d/16d; - double y2 = 5d/16d; - double z1 = -7d/16d; - double z2 = 7d/16d; - - double resx1 = 0.0d; - double resx2 = 0.0d; - double resy1 = 1.0d; - double resy2 = 1.0d; - - tessellator.addVertexWithUV(x1, y1, z1, resx1, resy1); - tessellator.addVertexWithUV(x2, y1, z1, resx2, resy1); - tessellator.addVertexWithUV(x2, y2, z1, resx2, resy2); - tessellator.addVertexWithUV(x1, y2, z1, resx1, resy2); - tessellator.addVertexWithUV(x1, y1, z1, resx1, resy1); - tessellator.addVertexWithUV(x1, y1, z2, resx2, resy1); - tessellator.addVertexWithUV(x1, y2, z2, resx2, resy2); - tessellator.addVertexWithUV(x1, y2, z1, resx1, resy2); - tessellator.addVertexWithUV(x1, y1, z2, resx1, resy1); - tessellator.addVertexWithUV(x2, y1, z2, resx2, resy1); - tessellator.addVertexWithUV(x2, y2, z2, resx2, resy2); - tessellator.addVertexWithUV(x1, y2, z2, resx1, resy2); - tessellator.addVertexWithUV(x2, y1, z1, resx1, resy1); - tessellator.addVertexWithUV(x2, y1, z2, resx2, resy1); - tessellator.addVertexWithUV(x2, y2, z2, resx2, resy2); - tessellator.addVertexWithUV(x2, y2, z1, resx1, resy2); - tessellator.draw(); - - GL11.glDepthMask(true); - - GL11.glEnable(GL11.GL_LIGHTING); - GL11.glEnable(GL11.GL_TEXTURE_2D); - GL11.glRotatef(180F, 0.0F, 0.0F, 1.0F); - GL11.glPopMatrix(); - } - - private float getGhostItemScaleFactor(ItemStack itemStack) - { - float scaleFactor = 1.5F; - - if (itemStack != null) - { - if (itemStack.getItem() instanceof ItemBlock) - { - switch (customRenderItem.getMiniBlockCount(itemStack,(byte)1)) - { - case 1: - return 0.90F * scaleFactor; - - case 2: - return 0.90F * scaleFactor; - - case 3: - return 0.90F * scaleFactor; - - case 4: - return 0.90F * scaleFactor; - - case 5: - return 0.80F * scaleFactor; - - default: - return 0.90F * scaleFactor; - } - } else - { - switch (customRenderItem.getMiniItemCount(itemStack,(byte)1)) - { - case 1: - return 0.65F * scaleFactor; - - case 2: - return 0.65F * scaleFactor; - - case 3: - return 0.65F * scaleFactor; - - case 4: - return 0.65F * scaleFactor; - - default: - return 0.65F * scaleFactor; - } - } - } - - return scaleFactor; - } - - private float getXDisplacementForSlot(int slot) - { - switch (slot) - { - case 0: - return 0.0f; - - case 1: - return -0.375f; - - case 2: - return -0.125f; - - case 3: - return 0.3125f; - - case 4: - return 0.3125f; - - case 5: - return -0.125f; - - default: - return 0.0f; - } - } - - private float getYDisplacementForSlot(int slot) - { - switch (slot) - { - case 0: - return 0.4f; - - case 1: - return -0.35f; - - case 6: - return 0.4f; - - default: - return -0.35f; - } - } - - private float getZDisplacementForSlot(int slot) - { - switch (slot) - { - case 0: - return 0.0f; - - case 1: - return 0.0f; - - case 2: - return 0.375f; - - case 3: - return 0.25f; - - case 4: - return -0.25f; - - case 5: - return -0.375f; - - default: - return 0.0f; - } - } - - private void translateGhostItemByOrientation(ItemStack ghostItemStack, double x, double y, double z, ForgeDirection forgeDirection) - { - if (ghostItemStack != null) - { - if (ghostItemStack.getItem() instanceof ItemBlock) - { - switch (forgeDirection) - { - case DOWN: - { - GL11.glTranslatef((float) x + 0.5F, (float) y + 2.7F, (float) z + 0.5F); - return; - } - - case UP: - { - GL11.glTranslatef((float) x + 0.5F, (float) y + 0.25F, (float) z + 0.5F); - return; - } - - case NORTH: - { - GL11.glTranslatef((float) x + 0.5F, (float) y + 0.5F, (float) z + 0.7F); - return; - } - - case SOUTH: - { - GL11.glTranslatef((float) x + 0.5F, (float) y + 0.5F, (float) z + 0.3F); - return; - } - - case EAST: - { - GL11.glTranslatef((float) x + 0.3F, (float) y + 0.5F, (float) z + 0.5F); - return; - } - - case WEST: - { - GL11.glTranslatef((float) x + 0.70F, (float) y + 0.5F, (float) z + 0.5F); - return; - } - - case UNKNOWN: - { - return; - } - - default: - { - return; - } - } - } else - { - switch (forgeDirection) - { - case DOWN: - { - GL11.glTranslatef((float) x + 0.5F, (float) y + 0.6F, (float) z + 0.5F); - return; - } - - case UP: - { - GL11.glTranslatef((float) x + 0.5F, (float) y + 0.20F, (float) z + 0.5F); - return; - } - - case NORTH: - { - GL11.glTranslatef((float) x + 0.5F, (float) y + 0.4F, (float) z + 0.7F); - return; - } - - case SOUTH: - { - GL11.glTranslatef((float) x + 0.5F, (float) y + 0.4F, (float) z + 0.3F); - return; - } - - case EAST: - { - GL11.glTranslatef((float) x + 0.3F, (float) y + 0.4F, (float) z + 0.5F); - return; - } - - case WEST: - { - GL11.glTranslatef((float) x + 0.70F, (float) y + 0.4F, (float) z + 0.5F); - return; - } - - case UNKNOWN: - { - return; - } - - default: - { - return; - } - } - } - } - } -} \ No newline at end of file diff --git a/src-backup/main/java/WayofTime/alchemicalWizardry/common/renderer/block/RenderConduit.java b/src-backup/main/java/WayofTime/alchemicalWizardry/common/renderer/block/RenderConduit.java deleted file mode 100644 index 6c93e00e..00000000 --- a/src-backup/main/java/WayofTime/alchemicalWizardry/common/renderer/block/RenderConduit.java +++ /dev/null @@ -1,43 +0,0 @@ -package WayofTime.alchemicalWizardry.common.renderer.block; - -import WayofTime.alchemicalWizardry.common.renderer.model.ModelConduit; -import WayofTime.alchemicalWizardry.common.tileEntity.TEConduit; -import cpw.mods.fml.client.FMLClientHandler; -import net.minecraft.client.renderer.tileentity.TileEntitySpecialRenderer; -import net.minecraft.entity.Entity; -import net.minecraft.tileentity.TileEntity; -import net.minecraft.util.ResourceLocation; -import org.lwjgl.opengl.GL11; - -public class RenderConduit extends TileEntitySpecialRenderer -{ - private ModelConduit modelConduit = new ModelConduit(); - - @Override - public void renderTileEntityAt(TileEntity tileEntity, double d0, double d1, double d2, float f) - { - if (tileEntity instanceof TEConduit) - { - TEConduit tileConduit = (TEConduit) tileEntity; - GL11.glDisable(GL11.GL_LIGHTING); - GL11.glDisable(GL11.GL_CULL_FACE); - /** - * Render the ghost item inside of the Altar, slowly spinning - */ - GL11.glPushMatrix(); - GL11.glTranslatef((float) d0 + 0.5F, (float) d1 + 1.5F, (float) d2 + 0.5F); - ResourceLocation test = new ResourceLocation("alchemicalwizardry:textures/models/Conduit.png"); - FMLClientHandler.instance().getClient().renderEngine.bindTexture(test); - GL11.glPushMatrix(); - GL11.glRotatef(180F, 0.0F, 0.0F, 1.0F); - //GL11.glRotatef(90F, 0.0F, 0.0F, 1.0F); - //A reference to your Model file. Again, very important. - this.modelConduit.render((Entity) null, 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0625F, tileConduit.getInputDirection(), tileConduit.getOutputDirection()); - //Tell it to stop rendering for both the PushMatrix's - GL11.glPopMatrix(); - GL11.glPopMatrix(); - GL11.glEnable(GL11.GL_CULL_FACE); - GL11.glEnable(GL11.GL_LIGHTING); - } - } -} \ No newline at end of file diff --git a/src-backup/main/java/WayofTime/alchemicalWizardry/common/renderer/block/RenderCrystalBelljar.java b/src-backup/main/java/WayofTime/alchemicalWizardry/common/renderer/block/RenderCrystalBelljar.java deleted file mode 100644 index c5d0a372..00000000 --- a/src-backup/main/java/WayofTime/alchemicalWizardry/common/renderer/block/RenderCrystalBelljar.java +++ /dev/null @@ -1,184 +0,0 @@ -package WayofTime.alchemicalWizardry.common.renderer.block; - -import net.minecraft.client.renderer.Tessellator; -import net.minecraft.client.renderer.tileentity.TileEntitySpecialRenderer; -import net.minecraft.entity.Entity; -import net.minecraft.entity.item.EntityItem; -import net.minecraft.item.ItemBlock; -import net.minecraft.item.ItemStack; -import net.minecraft.tileentity.TileEntity; -import net.minecraft.util.MathHelper; -import net.minecraft.util.ResourceLocation; -import net.minecraftforge.common.util.ForgeDirection; - -import org.lwjgl.opengl.GL11; - -import WayofTime.alchemicalWizardry.api.alchemy.energy.Reagent; -import WayofTime.alchemicalWizardry.api.alchemy.energy.ReagentContainerInfo; -import WayofTime.alchemicalWizardry.api.alchemy.energy.ReagentStack; -import WayofTime.alchemicalWizardry.common.renderer.model.ModelAlchemicalCalcinator; -import WayofTime.alchemicalWizardry.common.renderer.model.ModelCrystalBelljar; -import WayofTime.alchemicalWizardry.common.tileEntity.TEBellJar; -import cpw.mods.fml.client.FMLClientHandler; - -public class RenderCrystalBelljar extends TileEntitySpecialRenderer -{ - private ModelCrystalBelljar modelConduit = new ModelCrystalBelljar(); - - private ResourceLocation resourceLocation = new ResourceLocation("alchemicalwizardry:textures/models/Reagent.png"); - - - @Override - public void renderTileEntityAt(TileEntity tileEntity, double d0, double d1, double d2, float f) - { - if (tileEntity instanceof TEBellJar) - { - TEBellJar tileAltar = (TEBellJar) tileEntity; - - GL11.glDisable(GL11.GL_LIGHTING); -// GL11.glDisable(GL11.GL_CULL_FACE); - /** - * Render the ghost item inside of the Altar, slowly spinning - */ - GL11.glPushMatrix(); - GL11.glTranslatef((float) d0 + 0.5F, (float) d1 + 1.5F, (float) d2 + 0.5F); - ResourceLocation test = new ResourceLocation("alchemicalwizardry:textures/models/CrystalBelljar.png"); - FMLClientHandler.instance().getClient().renderEngine.bindTexture(test); - GL11.glPushMatrix(); - GL11.glRotatef(180F, 0.0F, 0.0F, 1.0F); - //GL11.glRotatef(90F, 0.0F, 0.0F, 1.0F); - //A reference to your Model file. Again, very important. - this.modelConduit.render((Entity) null, 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0625F); - //Tell it to stop rendering for both the PushMatrix's - GL11.glPopMatrix(); - GL11.glPopMatrix(); -// GL11.glEnable(GL11.GL_CULL_FACE); - GL11.glEnable(GL11.GL_LIGHTING); - - - - - ReagentContainerInfo[] info = tileAltar.getContainerInfo(ForgeDirection.UNKNOWN); - if(info.length >= 1 && info[0] != null) - { - ReagentStack reagentStack = info[0].reagent; - int capacity = info[0].capacity; - if(reagentStack != null && reagentStack.reagent != null) - { - Reagent reagent = reagentStack.reagent; - this.renderTankContents(d0, d1, d2, reagent.getColourRed(), reagent.getColourGreen(), reagent.getColourBlue(), 200 * reagentStack.amount / capacity); - } - } - -// this.renderTankContents(d0, d1, d2, 255, 0, 0, 200); - - - - -// for (int i = 0; i <= 1; i++) -// { -// GL11.glPushMatrix(); -// -// if (tileAltar.getStackInSlot(i) != null) -// { -// float scaleFactor = getGhostItemScaleFactor(tileAltar.getStackInSlot(i)); -// float rotationAngle = (float) (720.0 * (System.currentTimeMillis() & 0x3FFFL) / 0x3FFFL); -// EntityItem ghostEntityItem = new EntityItem(tileAltar.getWorldObj()); -// ghostEntityItem.hoverStart = 0.0F; -// ghostEntityItem.setEntityItemStack(tileAltar.getStackInSlot(i)); -// //translateGhostItemByOrientation(ghostEntityItem.getEntityItem(), d0, d1, d2, ForgeDirection.DOWN); -// float displacementX = getXDisplacementForSlot(i); -// float displacementY = getYDisplacementForSlot(i); -// float displacementZ = getZDisplacementForSlot(i); -// -// if (ghostEntityItem.getEntityItem().getItem() instanceof ItemBlock) -// { -// GL11.glTranslatef((float) d0 + 0.5F + displacementX, (float) d1 + displacementY + 0.7F, (float) d2 + 0.5F + displacementZ); -// } else -// { -// GL11.glTranslatef((float) d0 + 0.5F + displacementX, (float) d1 + displacementY + 0.6F, (float) d2 + 0.5F + displacementZ); -// } -// -// //GL11.glTranslatef((float) tileAltar.xCoord + 0.5F, (float) tileAltar.yCoord + 2.7F, (float) tileAltar.zCoord + 0.5F); -// GL11.glScalef(scaleFactor, scaleFactor, scaleFactor); -// GL11.glRotatef(rotationAngle, 0.0F, 1.0F, 0.0F); -// customRenderItem.doRender(ghostEntityItem, 0, 0, 0, 0, 0); -// } -// -// GL11.glPopMatrix(); -// } - - GL11.glEnable(GL11.GL_CULL_FACE); - GL11.glEnable(GL11.GL_LIGHTING); - } - } - - private void renderTankContents(double x, double y, double z, int colourRed, int colourGreen, int colourBlue, int colourIntensity) - { - GL11.glPushMatrix(); - float f1 = 1.0f; - Tessellator tessellator = Tessellator.instance; - this.bindTexture(resourceLocation); - GL11.glTexParameterf(GL11.GL_TEXTURE_2D, GL11.GL_TEXTURE_WRAP_S, 10497.0F); - GL11.glTexParameterf(GL11.GL_TEXTURE_2D, GL11.GL_TEXTURE_WRAP_T, 10497.0F); - GL11.glDisable(GL11.GL_LIGHTING); - GL11.glDisable(GL11.GL_CULL_FACE); - float f2 = 0; - float f3 = -f2 * 0.2F - (float)MathHelper.floor_float(-f2 * 0.1F); - GL11.glEnable(GL11.GL_BLEND); - GL11.glBlendFunc(GL11.GL_SRC_ALPHA, GL11.GL_ONE_MINUS_SRC_ALPHA); - - GL11.glDepthMask(false); - - tessellator.startDrawingQuads(); - tessellator.setColorRGBA(colourRed, colourGreen, colourBlue, colourIntensity); - - GL11.glTranslated(x+0.5, y+0.5, z+0.5); - //GL11.glRotatef(30F, 0F, 0F, 1F); //Rotate vertical axis - //GL11.glRotatef(tileAltar.getWorldObj().getWorldTime()*2f, 1F, 0F, 0F); //Rotate cylindrically - - tessellator.setBrightness(240); - - double x1 = -4d/16d; - double x2 = 4d/16d; - double y1 = -6d/16d; - double y2 = 4d/16d; - double z1 = -4d/16d; - double z2 = 4d/16d; - - double resx1 = 0.0d; - double resx2 = 0.0d; - double resy1 = 1.0d; - double resy2 = 1.0d; - - tessellator.addVertexWithUV(x1, y1, z1, resx1, resy1); - tessellator.addVertexWithUV(x2, y1, z1, resx2, resy1); - tessellator.addVertexWithUV(x2, y2, z1, resx2, resy2); - tessellator.addVertexWithUV(x1, y2, z1, resx1, resy2); - tessellator.addVertexWithUV(x1, y1, z1, resx1, resy1); - tessellator.addVertexWithUV(x1, y1, z2, resx2, resy1); - tessellator.addVertexWithUV(x1, y2, z2, resx2, resy2); - tessellator.addVertexWithUV(x1, y2, z1, resx1, resy2); - tessellator.addVertexWithUV(x1, y1, z2, resx1, resy1); - tessellator.addVertexWithUV(x2, y1, z2, resx2, resy1); - tessellator.addVertexWithUV(x2, y2, z2, resx2, resy2); - tessellator.addVertexWithUV(x1, y2, z2, resx1, resy2); - tessellator.addVertexWithUV(x2, y1, z1, resx1, resy1); - tessellator.addVertexWithUV(x2, y1, z2, resx2, resy1); - tessellator.addVertexWithUV(x2, y2, z2, resx2, resy2); - tessellator.addVertexWithUV(x2, y2, z1, resx1, resy2); - tessellator.addVertexWithUV(x1, y2, z1, resx1, resy1); - tessellator.addVertexWithUV(x2, y2, z1, resx2, resy1); - tessellator.addVertexWithUV(x2, y2, z2, resx2, resy2); - tessellator.addVertexWithUV(x1, y2, z2, resx1, resy2); - tessellator.draw(); - - GL11.glDepthMask(true); - - GL11.glEnable(GL11.GL_CULL_FACE); - GL11.glEnable(GL11.GL_LIGHTING); - GL11.glEnable(GL11.GL_TEXTURE_2D); - GL11.glRotatef(180F, 0.0F, 0.0F, 1.0F); - GL11.glPopMatrix(); - } -} \ No newline at end of file diff --git a/src-backup/main/java/WayofTime/alchemicalWizardry/common/renderer/block/RenderMasterStone.java b/src-backup/main/java/WayofTime/alchemicalWizardry/common/renderer/block/RenderMasterStone.java deleted file mode 100644 index 0a54d29d..00000000 --- a/src-backup/main/java/WayofTime/alchemicalWizardry/common/renderer/block/RenderMasterStone.java +++ /dev/null @@ -1,30 +0,0 @@ -package WayofTime.alchemicalWizardry.common.renderer.block; - -import org.lwjgl.opengl.GL11; - -import net.minecraft.client.renderer.Tessellator; -import net.minecraft.client.renderer.tileentity.TileEntitySpecialRenderer; -import net.minecraft.tileentity.TileEntity; -import net.minecraft.util.MathHelper; -import net.minecraft.util.ResourceLocation; -import WayofTime.alchemicalWizardry.api.rituals.Rituals; -import WayofTime.alchemicalWizardry.common.renderer.MRSRenderer; -import WayofTime.alchemicalWizardry.common.tileEntity.TEMasterStone; - -public class RenderMasterStone extends TileEntitySpecialRenderer -{ - @Override - public void renderTileEntityAt(TileEntity tileEntity, double d0, double d1, double d2, float f) - { - if (tileEntity instanceof TEMasterStone) - { - String str = ((TEMasterStone) tileEntity).getCurrentRitual(); - MRSRenderer renderer = Rituals.getRendererForKey(str); - - if(renderer != null) - { - renderer.renderAt(((TEMasterStone) tileEntity), d0, d1, d2); - } - } - } -} \ No newline at end of file diff --git a/src-backup/main/java/WayofTime/alchemicalWizardry/common/renderer/block/RenderPedestal.java b/src-backup/main/java/WayofTime/alchemicalWizardry/common/renderer/block/RenderPedestal.java deleted file mode 100644 index 47e63753..00000000 --- a/src-backup/main/java/WayofTime/alchemicalWizardry/common/renderer/block/RenderPedestal.java +++ /dev/null @@ -1,273 +0,0 @@ -package WayofTime.alchemicalWizardry.common.renderer.block; - -import net.minecraft.client.renderer.Tessellator; -import net.minecraft.client.renderer.entity.RenderItem; -import net.minecraft.client.renderer.entity.RenderManager; -import net.minecraft.client.renderer.tileentity.TileEntitySpecialRenderer; -import net.minecraft.entity.Entity; -import net.minecraft.entity.item.EntityItem; -import net.minecraft.item.ItemBlock; -import net.minecraft.item.ItemStack; -import net.minecraft.tileentity.TileEntity; -import net.minecraft.util.MathHelper; -import net.minecraft.util.ResourceLocation; -import net.minecraftforge.common.util.ForgeDirection; - -import org.lwjgl.opengl.GL11; - -import WayofTime.alchemicalWizardry.common.renderer.model.ModelPedestal; -import WayofTime.alchemicalWizardry.common.tileEntity.TEPedestal; -import cpw.mods.fml.client.FMLClientHandler; - -public class RenderPedestal extends TileEntitySpecialRenderer -{ - private ModelPedestal modelPedestal = new ModelPedestal(); - private final RenderItem customRenderItem; - - public RenderPedestal() - { - customRenderItem = new RenderItem() - { - @Override - public boolean shouldBob() - { - return false; - } - }; - customRenderItem.setRenderManager(RenderManager.instance); - } - - @Override - public void renderTileEntityAt(TileEntity tileEntity, double d0, double d1, double d2, float f) - { - if (tileEntity instanceof TEPedestal) - { - TEPedestal tileAltar = (TEPedestal) tileEntity; - GL11.glDisable(GL11.GL_LIGHTING); -// GL11.glDisable(GL11.GL_CULL_FACE); - /** - * Render the ghost item inside of the Altar, slowly spinning - */ - GL11.glPushMatrix(); - GL11.glTranslatef((float) d0 + 0.5F, (float) d1 + 1.5F, (float) d2 + 0.5F); - ResourceLocation test = new ResourceLocation("alchemicalwizardry:textures/models/Pedestal.png"); - FMLClientHandler.instance().getClient().renderEngine.bindTexture(test); - GL11.glPushMatrix(); - GL11.glRotatef(180F, 0.0F, 0.0F, 1.0F); - //A reference to your Model file. Again, very important. - this.modelPedestal.render((Entity) null, 0.0F, 0.0F, -0.1F, 0.0F, 0.0F, 0.0625F); - //Tell it to stop rendering for both the PushMatrix's - GL11.glPopMatrix(); - GL11.glPopMatrix(); - GL11.glPushMatrix(); - - if (tileAltar.getStackInSlot(0) != null) - { - float scaleFactor = getGhostItemScaleFactor(tileAltar.getStackInSlot(0)); - float rotationAngle = (float) (720.0 * (System.currentTimeMillis() & 0x3FFFL) / 0x3FFFL); - EntityItem ghostEntityItem = new EntityItem(tileAltar.getWorldObj()); - ghostEntityItem.hoverStart = 0.0F; - ghostEntityItem.setEntityItemStack(tileAltar.getStackInSlot(0)); - //translateGhostItemByOrientation(ghostEntityItem.getEntityItem(), d0, d1, d2, ForgeDirection.DOWN); - float displacement = 0.2F; - - if (ghostEntityItem.getEntityItem().getItem() instanceof ItemBlock) - { - GL11.glTranslatef((float) d0 + 0.5F, (float) d1 + displacement + 0.7F, (float) d2 + 0.5F); - } else - { - GL11.glTranslatef((float) d0 + 0.5F, (float) d1 + displacement + 0.6F, (float) d2 + 0.5F); - } - - //GL11.glTranslatef((float) tileAltar.xCoord + 0.5F, (float) tileAltar.yCoord + 2.7F, (float) tileAltar.zCoord + 0.5F); - GL11.glScalef(scaleFactor, scaleFactor, scaleFactor); - GL11.glRotatef(rotationAngle, 0.0F, 1.0F, 0.0F); - customRenderItem.doRender(ghostEntityItem, 0, 0, 0, 0, 0); - } - - GL11.glPopMatrix(); - GL11.glEnable(GL11.GL_CULL_FACE); - GL11.glEnable(GL11.GL_LIGHTING); - - - GL11.glPushMatrix(); - GL11.glDisable(GL11.GL_LIGHTING); -// GL11.glDisable(GL11.GL_CULL_FACE); - GL11.glTranslatef((float) d0 + 0.5F, (float) d1 + 1.5F, (float) d2 + 0.5F); - - FMLClientHandler.instance().getClient().renderEngine.bindTexture(test); - GL11.glPushMatrix(); - GL11.glRotatef(180F, 0.0F, 0.0F, 1.0F); -// this.modelInputMirror.render((Entity) null, 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0625F, tileSpellBlock.getInputDirection(), tileSpellBlock.getOutputDirection()); - GL11.glPopMatrix(); - - GL11.glEnable(GL11.GL_CULL_FACE); - GL11.glEnable(GL11.GL_LIGHTING); - GL11.glPopMatrix(); - - - - } - } - - private float getGhostItemScaleFactor(ItemStack itemStack) - { - float scaleFactor = 1.0F; - - if (itemStack != null) - { - if (itemStack.getItem() instanceof ItemBlock) - { - switch (customRenderItem.getMiniBlockCount(itemStack,(byte)1)) - { - case 1: - return 0.90F; - - case 2: - return 0.90F; - - case 3: - return 0.90F; - - case 4: - return 0.90F; - - case 5: - return 0.80F; - - default: - return 0.90F; - } - } else - { - switch (customRenderItem.getMiniItemCount(itemStack,(byte)1)) - { - case 1: - return 0.65F; - - case 2: - return 0.65F; - - case 3: - return 0.65F; - - case 4: - return 0.65F; - - default: - return 0.65F; - } - } - } - - return scaleFactor; - } - - private void translateGhostItemByOrientation(ItemStack ghostItemStack, double x, double y, double z, ForgeDirection forgeDirection) - { - if (ghostItemStack != null) - { - if (ghostItemStack.getItem() instanceof ItemBlock) - { - switch (forgeDirection) - { - case DOWN: - { - GL11.glTranslatef((float) x + 0.5F, (float) y + 2.7F, (float) z + 0.5F); - return; - } - - case UP: - { - GL11.glTranslatef((float) x + 0.5F, (float) y + 0.25F, (float) z + 0.5F); - return; - } - - case NORTH: - { - GL11.glTranslatef((float) x + 0.5F, (float) y + 0.5F, (float) z + 0.7F); - return; - } - - case SOUTH: - { - GL11.glTranslatef((float) x + 0.5F, (float) y + 0.5F, (float) z + 0.3F); - return; - } - - case EAST: - { - GL11.glTranslatef((float) x + 0.3F, (float) y + 0.5F, (float) z + 0.5F); - return; - } - - case WEST: - { - GL11.glTranslatef((float) x + 0.70F, (float) y + 0.5F, (float) z + 0.5F); - return; - } - - case UNKNOWN: - { - return; - } - - default: - { - return; - } - } - } else - { - switch (forgeDirection) - { - case DOWN: - { - GL11.glTranslatef((float) x + 0.5F, (float) y + 0.6F, (float) z + 0.5F); - return; - } - - case UP: - { - GL11.glTranslatef((float) x + 0.5F, (float) y + 0.20F, (float) z + 0.5F); - return; - } - - case NORTH: - { - GL11.glTranslatef((float) x + 0.5F, (float) y + 0.4F, (float) z + 0.7F); - return; - } - - case SOUTH: - { - GL11.glTranslatef((float) x + 0.5F, (float) y + 0.4F, (float) z + 0.3F); - return; - } - - case EAST: - { - GL11.glTranslatef((float) x + 0.3F, (float) y + 0.4F, (float) z + 0.5F); - return; - } - - case WEST: - { - GL11.glTranslatef((float) x + 0.70F, (float) y + 0.4F, (float) z + 0.5F); - return; - } - - case UNKNOWN: - { - return; - } - - default: - { - return; - } - } - } - } - } -} \ No newline at end of file diff --git a/src-backup/main/java/WayofTime/alchemicalWizardry/common/renderer/block/RenderPlinth.java b/src-backup/main/java/WayofTime/alchemicalWizardry/common/renderer/block/RenderPlinth.java deleted file mode 100644 index 6a233520..00000000 --- a/src-backup/main/java/WayofTime/alchemicalWizardry/common/renderer/block/RenderPlinth.java +++ /dev/null @@ -1,256 +0,0 @@ -package WayofTime.alchemicalWizardry.common.renderer.block; - -import net.minecraft.client.renderer.entity.RenderItem; -import net.minecraft.client.renderer.entity.RenderManager; -import net.minecraft.client.renderer.tileentity.TileEntitySpecialRenderer; -import net.minecraft.entity.Entity; -import net.minecraft.entity.item.EntityItem; -import net.minecraft.item.ItemBlock; -import net.minecraft.item.ItemStack; -import net.minecraft.tileentity.TileEntity; -import net.minecraft.util.ResourceLocation; -import net.minecraftforge.common.util.ForgeDirection; - -import org.lwjgl.opengl.GL11; - -import WayofTime.alchemicalWizardry.common.renderer.model.ModelPlinth; -import WayofTime.alchemicalWizardry.common.tileEntity.TEPlinth; -import cpw.mods.fml.client.FMLClientHandler; - -public class RenderPlinth extends TileEntitySpecialRenderer -{ - private ModelPlinth modelPlinth = new ModelPlinth(); - private final RenderItem customRenderItem; - - public RenderPlinth() - { - customRenderItem = new RenderItem() - { - @Override - public boolean shouldBob() - { - return false; - } - }; - customRenderItem.setRenderManager(RenderManager.instance); - } - - @Override - public void renderTileEntityAt(TileEntity tileEntity, double d0, double d1, double d2, float f) - { - if (tileEntity instanceof TEPlinth) - { - TEPlinth tileAltar = (TEPlinth) tileEntity; - GL11.glDisable(GL11.GL_LIGHTING); -// GL11.glDisable(GL11.GL_CULL_FACE); - /** - * Render the ghost item inside of the Altar, slowly spinning - */ - GL11.glPushMatrix(); - GL11.glTranslatef((float) d0 + 0.5F, (float) d1 + 1.5F, (float) d2 + 0.5F); - ResourceLocation test = new ResourceLocation("alchemicalwizardry:textures/models/Plinth.png"); - FMLClientHandler.instance().getClient().renderEngine.bindTexture(test); - GL11.glPushMatrix(); - GL11.glRotatef(180F, 0.0F, 0.0F, 1.0F); - //A reference to your Model file. Again, very important. - this.modelPlinth.render((Entity) null, 0.0F, 0.0F, -0.1F, 0.0F, 0.0F, 0.0625F); - //Tell it to stop rendering for both the PushMatrix's - GL11.glPopMatrix(); - GL11.glPopMatrix(); - GL11.glPushMatrix(); - - if (tileAltar.getStackInSlot(0) != null) - { - float scaleFactor = getGhostItemScaleFactor(tileAltar.getStackInSlot(0)); - EntityItem ghostEntityItem = new EntityItem(tileAltar.getWorldObj()); - ghostEntityItem.hoverStart = 0.0F; - ghostEntityItem.setEntityItemStack(tileAltar.getStackInSlot(0)); - //translateGhostItemByOrientation(ghostEntityItem.getEntityItem(), d0, d1, d2, ForgeDirection.DOWN); - float displacement = 0.2F; - - if (ghostEntityItem.getEntityItem().getItem() instanceof ItemBlock) - { - GL11.glTranslatef((float) d0 + 0.5F, (float) d1 + displacement + 0.7F, (float) d2 + 0.5F); - } else - { - GL11.glTranslatef((float) d0 + 0.5F, (float) d1 + displacement + 10.4f / 16.0f, (float) d2 + 0.5F - 0.1875f); - } - - //GL11.glTranslatef((float) tileAltar.xCoord + 0.5F, (float) tileAltar.yCoord + 2.7F, (float) tileAltar.zCoord + 0.5F); - GL11.glScalef(scaleFactor, scaleFactor, scaleFactor); - - if (!(ghostEntityItem.getEntityItem().getItem() instanceof ItemBlock)) - { - GL11.glRotatef(90f, 1.0f, 0.0f, 0.0F); - } - - customRenderItem.doRender(ghostEntityItem, 0, 0, 0, 0, 0); - } - - GL11.glPopMatrix(); - GL11.glEnable(GL11.GL_CULL_FACE); - GL11.glEnable(GL11.GL_LIGHTING); - } - } - - private float getGhostItemScaleFactor(ItemStack itemStack) - { - float scaleFactor = 2.0F / 0.9F; - - if (itemStack != null) - { - if (itemStack.getItem() instanceof ItemBlock) - { - switch (customRenderItem.getMiniBlockCount(itemStack, (byte) 1)) - { - case 1: - return 0.90F * scaleFactor / 2; - - case 2: - return 0.90F * scaleFactor / 2; - - case 3: - return 0.90F * scaleFactor / 2; - - case 4: - return 0.90F * scaleFactor / 2; - - case 5: - return 0.80F * scaleFactor / 2; - - default: - return 0.90F * scaleFactor / 2; - } - } else - { - switch (customRenderItem.getMiniItemCount(itemStack, (byte) 1)) - { - case 1: - return 0.65F * scaleFactor; - - case 2: - return 0.65F * scaleFactor; - - case 3: - return 0.65F * scaleFactor; - - case 4: - return 0.65F * scaleFactor; - - default: - return 0.65F * scaleFactor; - } - } - } - - return scaleFactor; - } - - private void translateGhostItemByOrientation(ItemStack ghostItemStack, double x, double y, double z, ForgeDirection forgeDirection) - { - if (ghostItemStack != null) - { - if (ghostItemStack.getItem() instanceof ItemBlock) - { - switch (forgeDirection) - { - case DOWN: - { - GL11.glTranslatef((float) x + 0.5F, (float) y + 2.7F, (float) z + 0.5F); - return; - } - - case UP: - { - GL11.glTranslatef((float) x + 0.5F, (float) y + 0.25F, (float) z + 0.5F); - return; - } - - case NORTH: - { - GL11.glTranslatef((float) x + 0.5F, (float) y + 0.5F, (float) z + 0.7F); - return; - } - - case SOUTH: - { - GL11.glTranslatef((float) x + 0.5F, (float) y + 0.5F, (float) z + 0.3F); - return; - } - - case EAST: - { - GL11.glTranslatef((float) x + 0.3F, (float) y + 0.5F, (float) z + 0.5F); - return; - } - - case WEST: - { - GL11.glTranslatef((float) x + 0.70F, (float) y + 0.5F, (float) z + 0.5F); - return; - } - - case UNKNOWN: - { - return; - } - - default: - { - return; - } - } - } else - { - switch (forgeDirection) - { - case DOWN: - { - GL11.glTranslatef((float) x + 0.5F, (float) y + 0.6F, (float) z + 0.5F); - return; - } - - case UP: - { - GL11.glTranslatef((float) x + 0.5F, (float) y + 0.20F, (float) z + 0.5F); - return; - } - - case NORTH: - { - GL11.glTranslatef((float) x + 0.5F, (float) y + 0.4F, (float) z + 0.7F); - return; - } - - case SOUTH: - { - GL11.glTranslatef((float) x + 0.5F, (float) y + 0.4F, (float) z + 0.3F); - return; - } - - case EAST: - { - GL11.glTranslatef((float) x + 0.3F, (float) y + 0.4F, (float) z + 0.5F); - return; - } - - case WEST: - { - GL11.glTranslatef((float) x + 0.70F, (float) y + 0.4F, (float) z + 0.5F); - return; - } - - case UNKNOWN: - { - return; - } - - default: - { - return; - } - } - } - } - } -} diff --git a/src-backup/main/java/WayofTime/alchemicalWizardry/common/renderer/block/RenderReagentConduit.java b/src-backup/main/java/WayofTime/alchemicalWizardry/common/renderer/block/RenderReagentConduit.java deleted file mode 100644 index 66c743d7..00000000 --- a/src-backup/main/java/WayofTime/alchemicalWizardry/common/renderer/block/RenderReagentConduit.java +++ /dev/null @@ -1,75 +0,0 @@ -package WayofTime.alchemicalWizardry.common.renderer.block; - -import net.minecraft.client.renderer.Tessellator; -import net.minecraft.client.renderer.tileentity.TileEntitySpecialRenderer; -import net.minecraft.tileentity.TileEntity; -import net.minecraft.util.MathHelper; -import net.minecraft.util.ResourceLocation; - -import org.lwjgl.opengl.GL11; - -import WayofTime.alchemicalWizardry.common.Int3; -import WayofTime.alchemicalWizardry.common.tileEntity.TEReagentConduit; - -public class RenderReagentConduit extends TileEntitySpecialRenderer -{ - private static final ResourceLocation field_110629_a = new ResourceLocation("alchemicalwizardry:textures/models/SimpleTransCircle.png"); - - @Override - public void renderTileEntityAt(TileEntity tileEntity, double d0, double d1, double d2, float f) - { - if (tileEntity instanceof TEReagentConduit) - { - int renderCount = ((TEReagentConduit)tileEntity).renderCount; - float key1 = (tileEntity.xCoord*54f - tileEntity.yCoord*38.72f + tileEntity.zCoord*10.432f); - float key2 = (tileEntity.xCoord*21.43f - tileEntity.yCoord*9.96f + tileEntity.zCoord*12.8f); - - Int3 colourMap = ((TEReagentConduit) tileEntity).getColour(); - - GL11.glPushMatrix(); - float f1 = 1.0f; - Tessellator tessellator = Tessellator.instance; - this.bindTexture(field_110629_a); - GL11.glTexParameterf(GL11.GL_TEXTURE_2D, GL11.GL_TEXTURE_WRAP_S, 10497.0F); - GL11.glTexParameterf(GL11.GL_TEXTURE_2D, GL11.GL_TEXTURE_WRAP_T, 10497.0F); - GL11.glDisable(GL11.GL_LIGHTING); - GL11.glDisable(GL11.GL_CULL_FACE); - float f2 = 0; - float f3 = -f2 * 0.2F - (float)MathHelper.floor_float(-f2 * 0.1F); - GL11.glEnable(GL11.GL_BLEND); - GL11.glBlendFunc(GL11.GL_SRC_ALPHA, GL11.GL_ONE_MINUS_SRC_ALPHA); - - - GL11.glDepthMask(false); - - tessellator.startDrawingQuads(); - tessellator.setColorRGBA(colourMap.xCoord, colourMap.yCoord, colourMap.zCoord, 200); - //tessellator.setColorOpaque(255, 255, 255); - - GL11.glTranslated(d0+0.5, d1+0.5, d2+0.5); - - GL11.glRotatef(tileEntity.getWorldObj().getWorldTime()/3.0f, 0F, 1F, 0F); //Rotate on planar axis - GL11.glRotatef(renderCount + key1, 0F, 0F, 1F); //Rotate vertical axis - GL11.glRotatef(renderCount*2f + key2, 1F, 0F, 0F); //Rotate cylindrically - - double offset = 0; - - tessellator.setBrightness(240); -// GL11.glTranslatef(0F, s, s); -// GL11.glScalef(1F, s * 14F, s * 14F); - tessellator.addVertexWithUV(-0.5d, 0, -0.5d, 0.0d, 0.0d); - tessellator.addVertexWithUV(0.5d, 0, -0.5d, 1.0d, 0.0d); - tessellator.addVertexWithUV(0.5d, 0, 0.5d, 1.0d, 1.0d); - tessellator.addVertexWithUV(-0.5d, 0, 0.5d, 0.0d, 1.0d); - - tessellator.draw(); - - GL11.glDepthMask(true); - - GL11.glEnable(GL11.GL_LIGHTING); - GL11.glEnable(GL11.GL_TEXTURE_2D); - GL11.glRotatef(180F, 0.0F, 0.0F, 1.0F); - GL11.glPopMatrix(); - } - } -} \ No newline at end of file diff --git a/src-backup/main/java/WayofTime/alchemicalWizardry/common/renderer/block/RenderSpellEffectBlock.java b/src-backup/main/java/WayofTime/alchemicalWizardry/common/renderer/block/RenderSpellEffectBlock.java deleted file mode 100644 index 644bb56b..00000000 --- a/src-backup/main/java/WayofTime/alchemicalWizardry/common/renderer/block/RenderSpellEffectBlock.java +++ /dev/null @@ -1,49 +0,0 @@ -package WayofTime.alchemicalWizardry.common.renderer.block; - -import net.minecraft.client.renderer.tileentity.TileEntitySpecialRenderer; -import net.minecraft.entity.Entity; -import net.minecraft.tileentity.TileEntity; -import net.minecraft.util.ResourceLocation; - -import org.lwjgl.opengl.GL11; - -import WayofTime.alchemicalWizardry.common.renderer.model.ModelSpellEffectBlock; -import WayofTime.alchemicalWizardry.common.tileEntity.TESpellEffectBlock; -import cpw.mods.fml.client.FMLClientHandler; - -public class RenderSpellEffectBlock extends TileEntitySpecialRenderer -{ - private ModelSpellEffectBlock modelSpellEffectBlock = new ModelSpellEffectBlock(); - - @Override - public void renderTileEntityAt(TileEntity tileEntity, double d0, double d1, double d2, float f) - { - if (tileEntity instanceof TESpellEffectBlock) - { - TESpellEffectBlock tileSpellBlock = (TESpellEffectBlock) tileEntity; - GL11.glDisable(GL11.GL_LIGHTING); -// GL11.glDisable(GL11.GL_CULL_FACE); - /** - * Render the ghost item inside of the Altar, slowly spinning - */ - GL11.glPushMatrix(); - GL11.glTranslatef((float) d0 + 0.5F, (float) d1 + 1.5F, (float) d2 + 0.5F); - ResourceLocation test = new ResourceLocation("alchemicalwizardry:textures/models/BlockSpellEffect.png"); - int meta = tileEntity.getWorldObj().getBlockMetadata(tileEntity.xCoord, tileEntity.yCoord, tileEntity.zCoord); - String resource = tileSpellBlock.getResourceLocationForMeta(meta); - test = new ResourceLocation(resource); - - FMLClientHandler.instance().getClient().renderEngine.bindTexture(test); - GL11.glPushMatrix(); - GL11.glRotatef(180F, 0.0F, 0.0F, 1.0F); - //GL11.glRotatef(90F, 0.0F, 0.0F, 1.0F); - //A reference to your Model file. Again, very important. - this.modelSpellEffectBlock.render((Entity) null, 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0625F, tileSpellBlock.getInputDirection(), tileSpellBlock.getOutputDirection()); - //Tell it to stop rendering for both the PushMatrix's - GL11.glPopMatrix(); - GL11.glPopMatrix(); - GL11.glEnable(GL11.GL_CULL_FACE); - GL11.glEnable(GL11.GL_LIGHTING); - } - } -} \ No newline at end of file diff --git a/src-backup/main/java/WayofTime/alchemicalWizardry/common/renderer/block/RenderSpellEnhancementBlock.java b/src-backup/main/java/WayofTime/alchemicalWizardry/common/renderer/block/RenderSpellEnhancementBlock.java deleted file mode 100644 index ad2b22ae..00000000 --- a/src-backup/main/java/WayofTime/alchemicalWizardry/common/renderer/block/RenderSpellEnhancementBlock.java +++ /dev/null @@ -1,49 +0,0 @@ -package WayofTime.alchemicalWizardry.common.renderer.block; - -import net.minecraft.client.renderer.tileentity.TileEntitySpecialRenderer; -import net.minecraft.entity.Entity; -import net.minecraft.tileentity.TileEntity; -import net.minecraft.util.ResourceLocation; - -import org.lwjgl.opengl.GL11; - -import WayofTime.alchemicalWizardry.common.renderer.model.ModelSpellEnhancementBlock; -import WayofTime.alchemicalWizardry.common.tileEntity.TESpellEnhancementBlock; -import cpw.mods.fml.client.FMLClientHandler; - -public class RenderSpellEnhancementBlock extends TileEntitySpecialRenderer -{ - private ModelSpellEnhancementBlock modelSpellEnhancementBlock = new ModelSpellEnhancementBlock(); - - @Override - public void renderTileEntityAt(TileEntity tileEntity, double d0, double d1, double d2, float f) - { - if (tileEntity instanceof TESpellEnhancementBlock) - { - TESpellEnhancementBlock tileSpellBlock = (TESpellEnhancementBlock) tileEntity; - GL11.glDisable(GL11.GL_LIGHTING); -// GL11.glDisable(GL11.GL_CULL_FACE); - /** - * Render the ghost item inside of the Altar, slowly spinning - */ - GL11.glPushMatrix(); - GL11.glTranslatef((float) d0 + 0.5F, (float) d1 + 1.5F, (float) d2 + 0.5F); - ResourceLocation test = new ResourceLocation("alchemicalwizardry:textures/models/BlockSpellEnhancementPower1.png"); - int meta = tileEntity.getWorldObj().getBlockMetadata(tileEntity.xCoord, tileEntity.yCoord, tileEntity.zCoord); - String resource = tileSpellBlock.getResourceLocationForMeta(meta); - test = new ResourceLocation(resource); - - FMLClientHandler.instance().getClient().renderEngine.bindTexture(test); - GL11.glPushMatrix(); - GL11.glRotatef(180F, 0.0F, 0.0F, 1.0F); - //GL11.glRotatef(90F, 0.0F, 0.0F, 1.0F); - //A reference to your Model file. Again, very important. - this.modelSpellEnhancementBlock.render((Entity) null, 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0625F, tileSpellBlock.getInputDirection(), tileSpellBlock.getOutputDirection()); - //Tell it to stop rendering for both the PushMatrix's - GL11.glPopMatrix(); - GL11.glPopMatrix(); - GL11.glEnable(GL11.GL_CULL_FACE); - GL11.glEnable(GL11.GL_LIGHTING); - } - } -} \ No newline at end of file diff --git a/src-backup/main/java/WayofTime/alchemicalWizardry/common/renderer/block/RenderSpellModifierBlock.java b/src-backup/main/java/WayofTime/alchemicalWizardry/common/renderer/block/RenderSpellModifierBlock.java deleted file mode 100644 index e61a6123..00000000 --- a/src-backup/main/java/WayofTime/alchemicalWizardry/common/renderer/block/RenderSpellModifierBlock.java +++ /dev/null @@ -1,49 +0,0 @@ -package WayofTime.alchemicalWizardry.common.renderer.block; - -import net.minecraft.client.renderer.tileentity.TileEntitySpecialRenderer; -import net.minecraft.entity.Entity; -import net.minecraft.tileentity.TileEntity; -import net.minecraft.util.ResourceLocation; - -import org.lwjgl.opengl.GL11; - -import WayofTime.alchemicalWizardry.common.renderer.model.ModelSpellModifierBlock; -import WayofTime.alchemicalWizardry.common.tileEntity.TESpellModifierBlock; -import cpw.mods.fml.client.FMLClientHandler; - -public class RenderSpellModifierBlock extends TileEntitySpecialRenderer -{ - private ModelSpellModifierBlock modelSpellModifierBlock = new ModelSpellModifierBlock(); - - @Override - public void renderTileEntityAt(TileEntity tileEntity, double d0, double d1, double d2, float f) - { - if (tileEntity instanceof TESpellModifierBlock) - { - TESpellModifierBlock tileSpellBlock = (TESpellModifierBlock) tileEntity; - GL11.glDisable(GL11.GL_LIGHTING); -// GL11.glDisable(GL11.GL_CULL_FACE); - /** - * Render the ghost item inside of the Altar, slowly spinning - */ - GL11.glPushMatrix(); - GL11.glTranslatef((float) d0 + 0.5F, (float) d1 + 1.5F, (float) d2 + 0.5F); - ResourceLocation test = new ResourceLocation("alchemicalwizardry:textures/models/BlockSpellModifier.png"); - int meta = tileEntity.getWorldObj().getBlockMetadata(tileEntity.xCoord, tileEntity.yCoord, tileEntity.zCoord); - String resource = tileSpellBlock.getResourceLocationForMeta(meta); - test = new ResourceLocation(resource); - - FMLClientHandler.instance().getClient().renderEngine.bindTexture(test); - GL11.glPushMatrix(); - GL11.glRotatef(180F, 0.0F, 0.0F, 1.0F); - //GL11.glRotatef(90F, 0.0F, 0.0F, 1.0F); - //A reference to your Model file. Again, very important. - this.modelSpellModifierBlock.render((Entity) null, 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0625F, tileSpellBlock.getInputDirection(), tileSpellBlock.getOutputDirection()); - //Tell it to stop rendering for both the PushMatrix's - GL11.glPopMatrix(); - GL11.glPopMatrix(); - GL11.glEnable(GL11.GL_CULL_FACE); - GL11.glEnable(GL11.GL_LIGHTING); - } - } -} \ No newline at end of file diff --git a/src-backup/main/java/WayofTime/alchemicalWizardry/common/renderer/block/RenderSpellParadigmBlock.java b/src-backup/main/java/WayofTime/alchemicalWizardry/common/renderer/block/RenderSpellParadigmBlock.java deleted file mode 100644 index 9b28f3fb..00000000 --- a/src-backup/main/java/WayofTime/alchemicalWizardry/common/renderer/block/RenderSpellParadigmBlock.java +++ /dev/null @@ -1,49 +0,0 @@ -package WayofTime.alchemicalWizardry.common.renderer.block; - -import net.minecraft.client.renderer.tileentity.TileEntitySpecialRenderer; -import net.minecraft.entity.Entity; -import net.minecraft.tileentity.TileEntity; -import net.minecraft.util.ResourceLocation; - -import org.lwjgl.opengl.GL11; - -import WayofTime.alchemicalWizardry.common.renderer.model.ModelSpellParadigmBlock; -import WayofTime.alchemicalWizardry.common.tileEntity.TESpellParadigmBlock; -import cpw.mods.fml.client.FMLClientHandler; - -public class RenderSpellParadigmBlock extends TileEntitySpecialRenderer -{ - private ModelSpellParadigmBlock modelSpellParadigmBlock = new ModelSpellParadigmBlock(); - - @Override - public void renderTileEntityAt(TileEntity tileEntity, double d0, double d1, double d2, float f) - { - if (tileEntity instanceof TESpellParadigmBlock) - { - TESpellParadigmBlock tileSpellBlock = (TESpellParadigmBlock) tileEntity; - GL11.glDisable(GL11.GL_LIGHTING); -// GL11.glDisable(GL11.GL_CULL_FACE); - /** - * Render the ghost item inside of the Altar, slowly spinning - */ - GL11.glPushMatrix(); - GL11.glTranslatef((float) d0 + 0.5F, (float) d1 + 1.5F, (float) d2 + 0.5F); - ResourceLocation test = new ResourceLocation("alchemicalwizardry:textures/models/BlockSpellParadigm.png"); - int meta = tileEntity.getWorldObj().getBlockMetadata(tileEntity.xCoord, tileEntity.yCoord, tileEntity.zCoord); - String resource = tileSpellBlock.getResourceLocationForMeta(meta); - test = new ResourceLocation(resource); - - FMLClientHandler.instance().getClient().renderEngine.bindTexture(test); - GL11.glPushMatrix(); - GL11.glRotatef(180F, 0.0F, 0.0F, 1.0F); - //GL11.glRotatef(90F, 0.0F, 0.0F, 1.0F); - //A reference to your Model file. Again, very important. - this.modelSpellParadigmBlock.render((Entity) null, 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0625F, tileSpellBlock.getInputDirection(), tileSpellBlock.getOutputDirection()); - //Tell it to stop rendering for both the PushMatrix's - GL11.glPopMatrix(); - GL11.glPopMatrix(); - GL11.glEnable(GL11.GL_CULL_FACE); - GL11.glEnable(GL11.GL_LIGHTING); - } - } -} \ No newline at end of file diff --git a/src-backup/main/java/WayofTime/alchemicalWizardry/common/renderer/block/RenderWritingTable.java b/src-backup/main/java/WayofTime/alchemicalWizardry/common/renderer/block/RenderWritingTable.java deleted file mode 100644 index b53c496f..00000000 --- a/src-backup/main/java/WayofTime/alchemicalWizardry/common/renderer/block/RenderWritingTable.java +++ /dev/null @@ -1,328 +0,0 @@ -package WayofTime.alchemicalWizardry.common.renderer.block; - -import net.minecraft.client.renderer.entity.RenderItem; -import net.minecraft.client.renderer.entity.RenderManager; -import net.minecraft.client.renderer.tileentity.TileEntitySpecialRenderer; -import net.minecraft.entity.Entity; -import net.minecraft.entity.item.EntityItem; -import net.minecraft.item.ItemBlock; -import net.minecraft.item.ItemStack; -import net.minecraft.tileentity.TileEntity; -import net.minecraft.util.ResourceLocation; -import net.minecraftforge.common.util.ForgeDirection; - -import org.lwjgl.opengl.GL11; - -import WayofTime.alchemicalWizardry.common.renderer.model.ModelWritingTable; -import WayofTime.alchemicalWizardry.common.tileEntity.TEWritingTable; -import cpw.mods.fml.client.FMLClientHandler; - -public class RenderWritingTable extends TileEntitySpecialRenderer -{ - private ModelWritingTable modelWritingTable = new ModelWritingTable(); - private final RenderItem customRenderItem; - - public RenderWritingTable() - { - customRenderItem = new RenderItem() - { - @Override - public boolean shouldBob() - { - return false; - } - }; - customRenderItem.setRenderManager(RenderManager.instance); - } - - @Override - public void renderTileEntityAt(TileEntity tileEntity, double d0, double d1, double d2, float f) - { - if (tileEntity instanceof TEWritingTable) - { - TEWritingTable tileAltar = (TEWritingTable) tileEntity; - GL11.glDisable(GL11.GL_LIGHTING); -// GL11.glDisable(GL11.GL_CULL_FACE); - GL11.glPushMatrix(); - GL11.glTranslatef((float) d0 + 0.5F, (float) d1 + 1.5F, (float) d2 + 0.5F); - ResourceLocation test = new ResourceLocation("alchemicalwizardry:textures/models/WritingTable.png"); - FMLClientHandler.instance().getClient().renderEngine.bindTexture(test); - GL11.glPushMatrix(); - GL11.glRotatef(180F, 0.0F, 0.0F, 1.0F); - //A reference to your Model file. Again, very important. - this.modelWritingTable.render((Entity) null, 0.0F, 0.0F, -0.1F, 0.0F, 0.0F, 0.0625F); - //Tell it to stop rendering for both the PushMatrix's - GL11.glPopMatrix(); - GL11.glPopMatrix(); - - for (int i = 1; i <= 6; i++) - { - GL11.glPushMatrix(); - - if (tileAltar.getStackInSlot(i) != null) - { - float scaleFactor = getGhostItemScaleFactor(tileAltar.getStackInSlot(i)); - float rotationAngle = (float) (720.0 * (System.currentTimeMillis() & 0x3FFFL) / 0x3FFFL); - EntityItem ghostEntityItem = new EntityItem(tileAltar.getWorldObj()); - ghostEntityItem.hoverStart = 0.0F; - ghostEntityItem.setEntityItemStack(tileAltar.getStackInSlot(i)); - //translateGhostItemByOrientation(ghostEntityItem.getEntityItem(), d0, d1, d2, ForgeDirection.DOWN); - float displacementX = getXDisplacementForSlot(i); - float displacementY = getYDisplacementForSlot(i); - float displacementZ = getZDisplacementForSlot(i); - - if (ghostEntityItem.getEntityItem().getItem() instanceof ItemBlock) - { - GL11.glTranslatef((float) d0 + 0.5F + displacementX, (float) d1 + displacementY + 0.7F, (float) d2 + 0.5F + displacementZ); - } else - { - GL11.glTranslatef((float) d0 + 0.5F + displacementX, (float) d1 + displacementY + 0.6F, (float) d2 + 0.5F + displacementZ); - } - - //GL11.glTranslatef((float) tileAltar.xCoord + 0.5F, (float) tileAltar.yCoord + 2.7F, (float) tileAltar.zCoord + 0.5F); - GL11.glScalef(scaleFactor, scaleFactor, scaleFactor); - GL11.glRotatef(rotationAngle, 0.0F, 1.0F, 0.0F); - customRenderItem.doRender(ghostEntityItem, 0, 0, 0, 0, 0); - } - - GL11.glPopMatrix(); - } - - GL11.glEnable(GL11.GL_CULL_FACE); - GL11.glEnable(GL11.GL_LIGHTING); - } - } - - private float getGhostItemScaleFactor(ItemStack itemStack) - { - float scaleFactor = 0.8F; - - if (itemStack != null) - { - if (itemStack.getItem() instanceof ItemBlock) - { - switch (customRenderItem.getMiniBlockCount(itemStack,(byte)1)) - { - case 1: - return 0.90F * scaleFactor; - - case 2: - return 0.90F * scaleFactor; - - case 3: - return 0.90F * scaleFactor; - - case 4: - return 0.90F * scaleFactor; - - case 5: - return 0.80F * scaleFactor; - - default: - return 0.90F * scaleFactor; - } - } else - { - switch (customRenderItem.getMiniItemCount(itemStack,(byte)1)) - { - case 1: - return 0.65F * scaleFactor; - - case 2: - return 0.65F * scaleFactor; - - case 3: - return 0.65F * scaleFactor; - - case 4: - return 0.65F * scaleFactor; - - default: - return 0.65F * scaleFactor; - } - } - } - - return scaleFactor; - } - - private float getXDisplacementForSlot(int slot) - { - switch (slot) - { - case 0: - return 0.0f; - - case 1: - return -0.375f; - - case 2: - return -0.125f; - - case 3: - return 0.3125f; - - case 4: - return 0.3125f; - - case 5: - return -0.125f; - - default: - return 0.0f; - } - } - - private float getYDisplacementForSlot(int slot) - { - switch (slot) - { - case 0: - return 0.4f; - - case 1: - return -0.35f; - - case 6: - return 0.4f; - - default: - return -0.35f; - } - } - - private float getZDisplacementForSlot(int slot) - { - switch (slot) - { - case 0: - return 0.0f; - - case 1: - return 0.0f; - - case 2: - return 0.375f; - - case 3: - return 0.25f; - - case 4: - return -0.25f; - - case 5: - return -0.375f; - - default: - return 0.0f; - } - } - - private void translateGhostItemByOrientation(ItemStack ghostItemStack, double x, double y, double z, ForgeDirection forgeDirection) - { - if (ghostItemStack != null) - { - if (ghostItemStack.getItem() instanceof ItemBlock) - { - switch (forgeDirection) - { - case DOWN: - { - GL11.glTranslatef((float) x + 0.5F, (float) y + 2.7F, (float) z + 0.5F); - return; - } - - case UP: - { - GL11.glTranslatef((float) x + 0.5F, (float) y + 0.25F, (float) z + 0.5F); - return; - } - - case NORTH: - { - GL11.glTranslatef((float) x + 0.5F, (float) y + 0.5F, (float) z + 0.7F); - return; - } - - case SOUTH: - { - GL11.glTranslatef((float) x + 0.5F, (float) y + 0.5F, (float) z + 0.3F); - return; - } - - case EAST: - { - GL11.glTranslatef((float) x + 0.3F, (float) y + 0.5F, (float) z + 0.5F); - return; - } - - case WEST: - { - GL11.glTranslatef((float) x + 0.70F, (float) y + 0.5F, (float) z + 0.5F); - return; - } - - case UNKNOWN: - { - return; - } - - default: - { - return; - } - } - } else - { - switch (forgeDirection) - { - case DOWN: - { - GL11.glTranslatef((float) x + 0.5F, (float) y + 0.6F, (float) z + 0.5F); - return; - } - - case UP: - { - GL11.glTranslatef((float) x + 0.5F, (float) y + 0.20F, (float) z + 0.5F); - return; - } - - case NORTH: - { - GL11.glTranslatef((float) x + 0.5F, (float) y + 0.4F, (float) z + 0.7F); - return; - } - - case SOUTH: - { - GL11.glTranslatef((float) x + 0.5F, (float) y + 0.4F, (float) z + 0.3F); - return; - } - - case EAST: - { - GL11.glTranslatef((float) x + 0.3F, (float) y + 0.4F, (float) z + 0.5F); - return; - } - - case WEST: - { - GL11.glTranslatef((float) x + 0.70F, (float) y + 0.4F, (float) z + 0.5F); - return; - } - - case UNKNOWN: - { - return; - } - - default: - { - return; - } - } - } - } - } -} \ No newline at end of file diff --git a/src-backup/main/java/WayofTime/alchemicalWizardry/common/renderer/block/ShaderHelper.java b/src-backup/main/java/WayofTime/alchemicalWizardry/common/renderer/block/ShaderHelper.java deleted file mode 100644 index 46641497..00000000 --- a/src-backup/main/java/WayofTime/alchemicalWizardry/common/renderer/block/ShaderHelper.java +++ /dev/null @@ -1,184 +0,0 @@ -/** - * This class was created by . It's distributed as - * part of the Botania Mod. Get the Source Code in github: - * https://github.com/Vazkii/Botania - * - * Botania is Open Source and distributed under a - * Creative Commons Attribution-NonCommercial-ShareAlike 3.0 License - * (http://creativecommons.org/licenses/by-nc-sa/3.0/deed.en_GB) - * - * File Created @ [Apr 9, 2014, 11:20:26 PM (GMT)] - */ -package WayofTime.alchemicalWizardry.common.renderer.block; - -import java.io.BufferedReader; -import java.io.InputStream; -import java.io.InputStreamReader; -import java.util.logging.Level; - -import org.lwjgl.opengl.ARBFragmentShader; -import org.lwjgl.opengl.ARBShaderObjects; -import org.lwjgl.opengl.ARBVertexShader; -import org.lwjgl.opengl.GL11; - -import cpw.mods.fml.common.FMLLog; - -public final class ShaderHelper { - - private static final int VERT = ARBVertexShader.GL_VERTEX_SHADER_ARB; - private static final int FRAG = ARBFragmentShader.GL_FRAGMENT_SHADER_ARB; - - public static int beam = 0; - - public static void initShaders() { -// if(!useShaders()) -// return; - - beam = createProgram(null, "/assets/alchemicalwizardry/shaders/beam.frag"); - } - - public static void useShaderWithProps(int shader, Object... props) { -// if(!useShaders()) -// return; - - ARBShaderObjects.glUseProgramObjectARB(shader); - - if(shader != 0 && props.length % 2 == 0) { - int propCount = props.length / 2; - for(int i = 0; i < propCount; i++) { - String propName = (String) props[i * 2]; - Object propVal = props[i * 2 + 1]; - - int uniform = ARBShaderObjects.glGetUniformLocationARB(shader, propName); - if(propVal instanceof Integer) - ARBShaderObjects.glUniform1iARB(uniform, (Integer) propVal); - if(propVal instanceof Float) - ARBShaderObjects.glUniform1fARB(uniform, (Float) propVal); - // Possible Vector2, Vector3 and Vector4, no need yet. - } - } - } - - public static void useShader(int shader) { - useShaderWithProps(shader); - } - - public static void releaseShader() { - useShader(0); - } - - public static boolean useShaders() { - return true;//ConfigHandler.useShaders && OpenGlHelper.shadersSupported; - } - - // Most of the code taken from the LWJGL wiki - // http://lwjgl.org/wiki/index.php?title=GLSL_Shaders_with_LWJGL - - private static int createProgram(String vert, String frag) { - int vertId = 0, fragId = 0, program = 0; - if(vert != null) - vertId = createShader(vert, VERT); - if(frag != null) - fragId = createShader(frag, FRAG); - - program = ARBShaderObjects.glCreateProgramObjectARB(); - if(program == 0) - return 0; - - if(vert != null) - ARBShaderObjects.glAttachObjectARB(program, vertId); - if(frag != null) - ARBShaderObjects.glAttachObjectARB(program, fragId); - - ARBShaderObjects.glLinkProgramARB(program); - if(ARBShaderObjects.glGetObjectParameteriARB(program, ARBShaderObjects.GL_OBJECT_LINK_STATUS_ARB) == GL11.GL_FALSE) { -// FMLLog.log(Level.WARNING, getLogInfo(program)); - return 0; - } - - ARBShaderObjects.glValidateProgramARB(program); - if (ARBShaderObjects.glGetObjectParameteriARB(program, ARBShaderObjects.GL_OBJECT_VALIDATE_STATUS_ARB) == GL11.GL_FALSE) { -// FMLLog.log(Level.WARNING, getLogInfo(program)); - return 0; - } - - return program; - } - - private static int createShader(String filename, int shaderType){ - int shader = 0; - try { - shader = ARBShaderObjects.glCreateShaderObjectARB(shaderType); - - if(shader == 0) - return 0; - - ARBShaderObjects.glShaderSourceARB(shader, readFileAsString(filename)); - ARBShaderObjects.glCompileShaderARB(shader); - - if (ARBShaderObjects.glGetObjectParameteriARB(shader, ARBShaderObjects.GL_OBJECT_COMPILE_STATUS_ARB) == GL11.GL_FALSE) - throw new RuntimeException("Error creating shader: " + getLogInfo(shader)); - - return shader; - } - catch(Exception e) { - ARBShaderObjects.glDeleteObjectARB(shader); - e.printStackTrace(); - return -1; - } - } - - private static String getLogInfo(int obj) { - return ARBShaderObjects.glGetInfoLogARB(obj, ARBShaderObjects.glGetObjectParameteriARB(obj, ARBShaderObjects.GL_OBJECT_INFO_LOG_LENGTH_ARB)); - } - - private static String readFileAsString(String filename) throws Exception { - StringBuilder source = new StringBuilder(); - InputStream in = ShaderHelper.class.getResourceAsStream(filename); - Exception exception = null; - BufferedReader reader; - - if(in == null) - return ""; - - try { - reader = new BufferedReader(new InputStreamReader(in, "UTF-8")); - - Exception innerExc= null; - try { - String line; - while((line = reader.readLine()) != null) - source.append(line).append('\n'); - } catch(Exception exc) { - exception = exc; - } finally { - try { - reader.close(); - } catch(Exception exc) { - if(innerExc == null) - innerExc = exc; - else exc.printStackTrace(); - } - } - - if(innerExc != null) - throw innerExc; - } catch(Exception exc) { - exception = exc; - } finally { - try { - in.close(); - } catch(Exception exc) { - if(exception == null) - exception = exc; - else exc.printStackTrace(); - } - - if(exception != null) - throw exception; - } - - return source.toString(); - } -} - diff --git a/src-backup/main/java/WayofTime/alchemicalWizardry/common/renderer/block/TEAltarRenderer.java b/src-backup/main/java/WayofTime/alchemicalWizardry/common/renderer/block/TEAltarRenderer.java deleted file mode 100644 index 4036f435..00000000 --- a/src-backup/main/java/WayofTime/alchemicalWizardry/common/renderer/block/TEAltarRenderer.java +++ /dev/null @@ -1,241 +0,0 @@ -package WayofTime.alchemicalWizardry.common.renderer.block; - -import net.minecraft.client.renderer.entity.RenderItem; -import net.minecraft.client.renderer.entity.RenderManager; -import net.minecraft.client.renderer.tileentity.TileEntitySpecialRenderer; -import net.minecraft.entity.item.EntityItem; -import net.minecraft.item.ItemBlock; -import net.minecraft.item.ItemStack; -import net.minecraft.tileentity.TileEntity; -import net.minecraftforge.common.util.ForgeDirection; - -import org.lwjgl.opengl.GL11; - -import WayofTime.alchemicalWizardry.common.renderer.model.ModelBloodAltar; -import WayofTime.alchemicalWizardry.common.tileEntity.TEAltar; - -public class TEAltarRenderer extends TileEntitySpecialRenderer -{ - private ModelBloodAltar modelBloodAltar = new ModelBloodAltar(); - private final RenderItem customRenderItem; - - public TEAltarRenderer() - { - customRenderItem = new RenderItem() - { - @Override - public boolean shouldBob() - { - return false; - } - }; - customRenderItem.setRenderManager(RenderManager.instance); - } - - @Override - public void renderTileEntityAt(TileEntity tileEntity, double d0, double d1, double d2, float f) - { - modelBloodAltar.renderBloodAltar((TEAltar) tileEntity, d0, d1, d2); - modelBloodAltar.renderBloodLevel((TEAltar) tileEntity, d0, d1, d2); - - if (tileEntity instanceof TEAltar) - { - TEAltar tileAltar = (TEAltar) tileEntity; - GL11.glDisable(GL11.GL_LIGHTING); -// GL11.glDisable(GL11.GL_CULL_FACE); - /** - * Render the ghost item inside of the Altar, slowly spinning - */ - GL11.glPushMatrix(); - - if (tileAltar.getStackInSlot(0) != null) - { - float scaleFactor = getGhostItemScaleFactor(tileAltar.getStackInSlot(0)); - float rotationAngle = (float) (720.0 * (System.currentTimeMillis() & 0x3FFFL) / 0x3FFFL); - EntityItem ghostEntityItem = new EntityItem(tileAltar.getWorldObj()); - ghostEntityItem.hoverStart = 0.0F; - ghostEntityItem.setEntityItemStack(tileAltar.getStackInSlot(0)); - //translateGhostItemByOrientation(ghostEntityItem.getEntityItem(), d0, d1, d2, ForgeDirection.DOWN); - float displacement = 0.2F; - - if (ghostEntityItem.getEntityItem().getItem() instanceof ItemBlock) - { - GL11.glTranslatef((float) d0 + 0.5F, (float) d1 + displacement + 0.7F, (float) d2 + 0.5F); - } else - { - GL11.glTranslatef((float) d0 + 0.5F, (float) d1 + displacement + 0.6F, (float) d2 + 0.5F); - } - - //GL11.glTranslatef((float) tileAltar.xCoord + 0.5F, (float) tileAltar.yCoord + 2.7F, (float) tileAltar.zCoord + 0.5F); - GL11.glScalef(scaleFactor, scaleFactor, scaleFactor); - GL11.glRotatef(rotationAngle, 0.0F, 1.0F, 0.0F); - customRenderItem.doRender(ghostEntityItem, 0, 0, 0, 0, 0); - } - - GL11.glPopMatrix(); - GL11.glEnable(GL11.GL_CULL_FACE); - GL11.glEnable(GL11.GL_LIGHTING); - } - } - - private float getGhostItemScaleFactor(ItemStack itemStack) - { - float scaleFactor = 1.0F; - - if (itemStack != null) - { - if (itemStack.getItem() instanceof ItemBlock) - { - switch (customRenderItem.getMiniBlockCount(itemStack,(byte)1)) - { - case 1: - return 0.90F; - - case 2: - return 0.90F; - - case 3: - return 0.90F; - - case 4: - return 0.90F; - - case 5: - return 0.80F; - - default: - return 0.90F; - } - } else - { - switch (customRenderItem.getMiniItemCount(itemStack,(byte)1)) - { - case 1: - return 0.65F; - - case 2: - return 0.65F; - - case 3: - return 0.65F; - - case 4: - return 0.65F; - - default: - return 0.65F; - } - } - } - - return scaleFactor; - } - - private void translateGhostItemByOrientation(ItemStack ghostItemStack, double x, double y, double z, ForgeDirection forgeDirection) - { - if (ghostItemStack != null) - { - if (ghostItemStack.getItem() instanceof ItemBlock) - { - switch (forgeDirection) - { - case DOWN: - { - GL11.glTranslatef((float) x + 0.5F, (float) y + 2.7F, (float) z + 0.5F); - return; - } - - case UP: - { - GL11.glTranslatef((float) x + 0.5F, (float) y + 0.25F, (float) z + 0.5F); - return; - } - - case NORTH: - { - GL11.glTranslatef((float) x + 0.5F, (float) y + 0.5F, (float) z + 0.7F); - return; - } - - case SOUTH: - { - GL11.glTranslatef((float) x + 0.5F, (float) y + 0.5F, (float) z + 0.3F); - return; - } - - case EAST: - { - GL11.glTranslatef((float) x + 0.3F, (float) y + 0.5F, (float) z + 0.5F); - return; - } - - case WEST: - { - GL11.glTranslatef((float) x + 0.70F, (float) y + 0.5F, (float) z + 0.5F); - return; - } - - case UNKNOWN: - { - return; - } - - default: - { - return; - } - } - } else - { - switch (forgeDirection) - { - case DOWN: - { - GL11.glTranslatef((float) x + 0.5F, (float) y + 0.6F, (float) z + 0.5F); - return; - } - - case UP: - { - GL11.glTranslatef((float) x + 0.5F, (float) y + 0.20F, (float) z + 0.5F); - return; - } - - case NORTH: - { - GL11.glTranslatef((float) x + 0.5F, (float) y + 0.4F, (float) z + 0.7F); - return; - } - - case SOUTH: - { - GL11.glTranslatef((float) x + 0.5F, (float) y + 0.4F, (float) z + 0.3F); - return; - } - - case EAST: - { - GL11.glTranslatef((float) x + 0.3F, (float) y + 0.4F, (float) z + 0.5F); - return; - } - - case WEST: - { - GL11.glTranslatef((float) x + 0.70F, (float) y + 0.4F, (float) z + 0.5F); - return; - } - - case UNKNOWN: - { - return; - } - - default: - { - return; - } - } - } - } - } -} diff --git a/src-backup/main/java/WayofTime/alchemicalWizardry/common/renderer/block/itemRender/TEAlchemicalCalcinatorItemRenderer.java b/src-backup/main/java/WayofTime/alchemicalWizardry/common/renderer/block/itemRender/TEAlchemicalCalcinatorItemRenderer.java deleted file mode 100644 index 87b7cb94..00000000 --- a/src-backup/main/java/WayofTime/alchemicalWizardry/common/renderer/block/itemRender/TEAlchemicalCalcinatorItemRenderer.java +++ /dev/null @@ -1,95 +0,0 @@ -package WayofTime.alchemicalWizardry.common.renderer.block.itemRender; - -import net.minecraft.block.Block; -import net.minecraft.client.renderer.RenderBlocks; -import net.minecraft.client.renderer.Tessellator; -import net.minecraft.entity.Entity; -import net.minecraft.item.ItemStack; -import net.minecraft.util.ResourceLocation; -import net.minecraftforge.client.IItemRenderer; - -import org.lwjgl.opengl.GL11; - -import WayofTime.alchemicalWizardry.ModBlocks; -import WayofTime.alchemicalWizardry.common.renderer.model.ModelAlchemicalCalcinator; -import cpw.mods.fml.client.FMLClientHandler; - -public class TEAlchemicalCalcinatorItemRenderer implements IItemRenderer -{ - private ModelAlchemicalCalcinator modelConduit = new ModelAlchemicalCalcinator(); - - private void renderConduitItem(RenderBlocks render, ItemStack item, float translateX, float translateY, float translateZ) - { - Tessellator tessellator = Tessellator.instance; - - Block block = ModBlocks.blockAlchemicCalcinator; - - GL11.glEnable(GL11.GL_BLEND); - GL11.glEnable(GL11.GL_CULL_FACE); - GL11.glBlendFunc(GL11.GL_SRC_ALPHA, GL11.GL_ONE_MINUS_SRC_ALPHA); - /** - * Render the ghost item inside of the Altar, slowly spinning - */ - GL11.glPushMatrix(); - GL11.glTranslatef((float) translateX + 0.5F, (float) translateY + 1.5F, (float) translateZ + 0.5F); - ResourceLocation test = new ResourceLocation("alchemicalwizardry:textures/models/AlchemicalCalcinator.png"); - FMLClientHandler.instance().getClient().renderEngine.bindTexture(test); - GL11.glPushMatrix(); - GL11.glRotatef(180F, 0.0F, 0.0F, 1.0F); - //GL11.glRotatef(90F, 0.0F, 0.0F, 1.0F); - //A reference to your Model file. Again, very important. - this.modelConduit.render((Entity) null, 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0625F); - //Tell it to stop rendering for both the PushMatrix's - GL11.glPopMatrix(); - GL11.glPopMatrix(); - - GL11.glDisable(GL11.GL_CULL_FACE); - GL11.glDisable(GL11.GL_BLEND); - } - - - /** - * IItemRenderer implementation * - */ - @Override - public boolean handleRenderType(ItemStack item, ItemRenderType type) { - switch (type) { - case ENTITY: - return true; - case EQUIPPED: - return true; - case EQUIPPED_FIRST_PERSON: - return true; - case INVENTORY: - return true; - default: - return false; - } - } - - - @Override - public boolean shouldUseRenderHelper(ItemRenderType type, ItemStack item, ItemRendererHelper helper) { - return true; - } - - - @Override - public void renderItem(ItemRenderType type, ItemStack item, Object... data) { - switch (type) { - case ENTITY: - renderConduitItem((RenderBlocks) data[0], item, -0.5f, -0.5f, -0.5f); - break; - case EQUIPPED: - renderConduitItem((RenderBlocks) data[0], item, -0.4f, 0.50f, 0.35f); - break; - case EQUIPPED_FIRST_PERSON: - renderConduitItem((RenderBlocks) data[0], item, -0.4f, 0.50f, 0.35f); - break; - case INVENTORY: - renderConduitItem((RenderBlocks) data[0], item, -0.5f, -0.5f, -0.5f); - break; - default: - } - } -} diff --git a/src-backup/main/java/WayofTime/alchemicalWizardry/common/renderer/block/itemRender/TEAltarItemRenderer.java b/src-backup/main/java/WayofTime/alchemicalWizardry/common/renderer/block/itemRender/TEAltarItemRenderer.java deleted file mode 100644 index 72945f5a..00000000 --- a/src-backup/main/java/WayofTime/alchemicalWizardry/common/renderer/block/itemRender/TEAltarItemRenderer.java +++ /dev/null @@ -1,81 +0,0 @@ -package WayofTime.alchemicalWizardry.common.renderer.block.itemRender; - -import WayofTime.alchemicalWizardry.common.renderer.model.ModelBloodAltar; -import cpw.mods.fml.client.FMLClientHandler; -import net.minecraft.client.renderer.RenderBlocks; -import net.minecraft.item.ItemStack; -import net.minecraft.util.ResourceLocation; -import net.minecraftforge.client.IItemRenderer; - -import org.lwjgl.opengl.GL11; - -public class TEAltarItemRenderer implements IItemRenderer -{ - private ModelBloodAltar modelBloodAltar; - - public TEAltarItemRenderer() - { - modelBloodAltar = new ModelBloodAltar(); - } - - @Override - public boolean handleRenderType(ItemStack item, ItemRenderType type) - { - // TODO Auto-generated method stub - return true; - } - - @Override - public boolean shouldUseRenderHelper(ItemRenderType type, ItemStack item, ItemRendererHelper helper) - { - // TODO Auto-generated method stub - return true; - } - - @Override - public void renderItem(ItemRenderType type, ItemStack item, Object... data) - { - float scale = 0.08f; - - // TODO Auto-generated method stub - switch (type) - { - case ENTITY: - renderBloodAltar((RenderBlocks) data[0], item, 0, 0, 0, scale); - break; - case EQUIPPED: - renderBloodAltar((RenderBlocks) data[0], item, 0, 0, 0.5f, scale); - break; - case EQUIPPED_FIRST_PERSON: - renderBloodAltar((RenderBlocks) data[0], item, +0.5f, 0.5f, +0.5f, scale); - break; - case INVENTORY: - renderBloodAltar((RenderBlocks) data[0], item, -0.5f, -0.75f, -0.5f, scale); - break; - - default: - return; - } - } - - private void renderBloodAltar(RenderBlocks render, ItemStack item, float x, float y, float z, float scale) - { - GL11.glDisable(GL11.GL_LIGHTING); - GL11.glDisable(GL11.GL_CULL_FACE); - GL11.glPushMatrix(); - // Disable Lighting Calculations - GL11.glTranslatef(x, y, z); - GL11.glScalef(scale, scale, scale); - GL11.glRotatef(180f, 0f, 1f, 0f); - //FMLClientHandler.instance().getClient().renderEngine.bindTexture("/mods/OBJTutorial/textures/models/TutBox.png"); - ResourceLocation test = new ResourceLocation("alchemicalwizardry:textures/models/altar.png"); - //FMLClientHandler.instance().getClient().renderEngine.bindTexture("/mods/alchemicalwizardry/textures/models/altar.png"); - FMLClientHandler.instance().getClient().renderEngine.bindTexture(test); - modelBloodAltar.renderBloodAltar(); - // Re-enable Lighting Calculations - GL11.glPopMatrix(); - GL11.glEnable(GL11.GL_CULL_FACE); - GL11.glEnable(GL11.GL_LIGHTING); - - } -} diff --git a/src-backup/main/java/WayofTime/alchemicalWizardry/common/renderer/block/itemRender/TEBellJarItemRenderer.java b/src-backup/main/java/WayofTime/alchemicalWizardry/common/renderer/block/itemRender/TEBellJarItemRenderer.java deleted file mode 100644 index 706d7305..00000000 --- a/src-backup/main/java/WayofTime/alchemicalWizardry/common/renderer/block/itemRender/TEBellJarItemRenderer.java +++ /dev/null @@ -1,206 +0,0 @@ -package WayofTime.alchemicalWizardry.common.renderer.block.itemRender; - -import net.minecraft.client.renderer.ItemRenderer; -import net.minecraft.client.renderer.OpenGlHelper; -import net.minecraft.client.renderer.RenderBlocks; -import net.minecraft.client.renderer.Tessellator; -import net.minecraft.entity.Entity; -import net.minecraft.item.ItemStack; -import net.minecraft.util.MathHelper; -import net.minecraft.util.ResourceLocation; -import net.minecraftforge.client.IItemRenderer; - -import org.lwjgl.opengl.GL11; - -import WayofTime.alchemicalWizardry.api.alchemy.energy.Reagent; -import WayofTime.alchemicalWizardry.api.alchemy.energy.ReagentContainerInfo; -import WayofTime.alchemicalWizardry.api.alchemy.energy.ReagentStack; -import WayofTime.alchemicalWizardry.common.renderer.model.ModelCrystalBelljar; -import WayofTime.alchemicalWizardry.common.tileEntity.TEBellJar; -import cpw.mods.fml.client.FMLClientHandler; - -public class TEBellJarItemRenderer implements IItemRenderer -{ - ItemRenderer d; - private ModelCrystalBelljar modelConduit = new ModelCrystalBelljar(); - private ResourceLocation mainResource = new ResourceLocation("alchemicalwizardry:textures/models/CrystalBelljar.png"); - private ResourceLocation resourceLocation = new ResourceLocation("alchemicalwizardry:textures/models/Reagent.png"); - - private void renderConduitItem(RenderBlocks render, ItemStack item, float translateX, float translateY, float translateZ) - { - GL11.glDepthMask(false); - Tessellator tessellator = Tessellator.instance; - - GL11.glEnable(GL11.GL_BLEND); - GL11.glEnable(GL11.GL_CULL_FACE); - GL11.glBlendFunc(GL11.GL_SRC_ALPHA, GL11.GL_ONE_MINUS_SRC_ALPHA); - - GL11.glPushMatrix(); - GL11.glTranslatef((float) translateX + 0.5F, (float) translateY + 1.5F, (float) translateZ + 0.5F); - FMLClientHandler.instance().getClient().renderEngine.bindTexture(mainResource); - GL11.glPushMatrix(); - GL11.glRotatef(180F, 0.0F, 0.0F, 1.0F); - //GL11.glRotatef(90F, 0.0F, 0.0F, 1.0F); - //A reference to your Model file. Again, very important. - this.modelConduit.renderSpecialItem((Entity) null, 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0625F, 0); - //Tell it to stop rendering for both the PushMatrix's - GL11.glPopMatrix(); - GL11.glPopMatrix(); - - GL11.glDisable(GL11.GL_CULL_FACE); - GL11.glDisable(GL11.GL_BLEND); - - GL11.glDepthMask(true); - - ReagentContainerInfo[] info = TEBellJar.getContainerInfoFromItem(item); - if(info.length >= 1 && info[0] != null) - { - ReagentStack reagentStack = info[0].reagent; - int capacity = info[0].capacity; - if(reagentStack != null && reagentStack.reagent != null) - { - Reagent reagent = reagentStack.reagent; - this.renderTankContents(translateX, translateY, translateZ, reagent.getColourRed(), reagent.getColourGreen(), reagent.getColourBlue(), 200 * reagentStack.amount / capacity); - } - } - - GL11.glDepthMask(false); - - GL11.glEnable(GL11.GL_BLEND); - GL11.glEnable(GL11.GL_CULL_FACE); - GL11.glBlendFunc(GL11.GL_SRC_ALPHA, GL11.GL_ONE_MINUS_SRC_ALPHA); - - GL11.glPushMatrix(); - GL11.glTranslatef((float) translateX + 0.5F, (float) translateY + 1.5F, (float) translateZ + 0.5F); - FMLClientHandler.instance().getClient().renderEngine.bindTexture(mainResource); - GL11.glPushMatrix(); - GL11.glRotatef(180F, 0.0F, 0.0F, 1.0F); - //GL11.glRotatef(90F, 0.0F, 0.0F, 1.0F); - //A reference to your Model file. Again, very important. - this.modelConduit.renderSpecialItem((Entity) null, 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0625F, 1); - //Tell it to stop rendering for both the PushMatrix's - GL11.glPopMatrix(); - GL11.glPopMatrix(); - - GL11.glDisable(GL11.GL_CULL_FACE); - GL11.glDisable(GL11.GL_BLEND); -// GL11.glEnable(GL11.GL_CULL_FACE); -// GL11.glEnable(GL11.GL_LIGHTING); - GL11.glDepthMask(true); - } - - private void renderTankContents(double x, double y, double z, int colourRed, int colourGreen, int colourBlue, int colourIntensity) - { - GL11.glPushMatrix(); - float f1 = 1.0f; - Tessellator tessellator = Tessellator.instance; - FMLClientHandler.instance().getClient().renderEngine.bindTexture(resourceLocation); - GL11.glTexParameterf(GL11.GL_TEXTURE_2D, GL11.GL_TEXTURE_WRAP_S, 10497.0F); - GL11.glTexParameterf(GL11.GL_TEXTURE_2D, GL11.GL_TEXTURE_WRAP_T, 10497.0F); - GL11.glDisable(GL11.GL_LIGHTING); - GL11.glDisable(GL11.GL_CULL_FACE); - GL11.glEnable(GL11.GL_TEXTURE_2D); - float f2 = 0; - float f3 = -f2 * 0.2F - (float)MathHelper.floor_float(-f2 * 0.1F); - GL11.glEnable(GL11.GL_BLEND); - GL11.glBlendFunc(GL11.GL_SRC_ALPHA, GL11.GL_ONE_MINUS_SRC_ALPHA); - - GL11.glDepthMask(false); - - tessellator.startDrawingQuads(); - tessellator.setColorRGBA(colourRed, colourGreen, colourBlue, colourIntensity); - - GL11.glTranslated(x+0.5, y+0.5, z+0.5); - //GL11.glRotatef(30F, 0F, 0F, 1F); //Rotate vertical axis - //GL11.glRotatef(tileAltar.getWorldObj().getWorldTime()*2f, 1F, 0F, 0F); //Rotate cylindrically - - tessellator.setBrightness(240); - - double x1 = -4d/16d; - double x2 = 4d/16d; - double y1 = -6d/16d; - double y2 = 4d/16d; - double z1 = -4d/16d; - double z2 = 4d/16d; - - double resx1 = 0.0d; - double resx2 = 0.0d; - double resy1 = 1.0d; - double resy2 = 1.0d; - - tessellator.addVertexWithUV(x1, y1, z1, resx1, resy1); - tessellator.addVertexWithUV(x2, y1, z1, resx2, resy1); - tessellator.addVertexWithUV(x2, y2, z1, resx2, resy2); - tessellator.addVertexWithUV(x1, y2, z1, resx1, resy2); - tessellator.addVertexWithUV(x1, y1, z1, resx1, resy1); - tessellator.addVertexWithUV(x1, y1, z2, resx2, resy1); - tessellator.addVertexWithUV(x1, y2, z2, resx2, resy2); - tessellator.addVertexWithUV(x1, y2, z1, resx1, resy2); - tessellator.addVertexWithUV(x1, y1, z2, resx1, resy1); - tessellator.addVertexWithUV(x2, y1, z2, resx2, resy1); - tessellator.addVertexWithUV(x2, y2, z2, resx2, resy2); - tessellator.addVertexWithUV(x1, y2, z2, resx1, resy2); - tessellator.addVertexWithUV(x2, y1, z1, resx1, resy1); - tessellator.addVertexWithUV(x2, y1, z2, resx2, resy1); - tessellator.addVertexWithUV(x2, y2, z2, resx2, resy2); - tessellator.addVertexWithUV(x2, y2, z1, resx1, resy2); - tessellator.addVertexWithUV(x1, y2, z1, resx1, resy1); - tessellator.addVertexWithUV(x2, y2, z1, resx2, resy1); - tessellator.addVertexWithUV(x2, y2, z2, resx2, resy2); - tessellator.addVertexWithUV(x1, y2, z2, resx1, resy2); - tessellator.draw(); - - GL11.glDepthMask(true); - - GL11.glEnable(GL11.GL_CULL_FACE); - GL11.glEnable(GL11.GL_LIGHTING); - GL11.glEnable(GL11.GL_TEXTURE_2D); - GL11.glRotatef(180F, 0.0F, 0.0F, 1.0F); - GL11.glPopMatrix(); - } - - /** - * IItemRenderer implementation * - */ - @Override - public boolean handleRenderType(ItemStack item, ItemRenderType type) { - switch (type) { - case ENTITY: - return true; - case EQUIPPED: - return true; - case EQUIPPED_FIRST_PERSON: - return true; - case INVENTORY: - return true; - default: - return false; - } - } - - - @Override - public boolean shouldUseRenderHelper(ItemRenderType type, ItemStack item, ItemRendererHelper helper) { - return true; - } - - - @Override - public void renderItem(ItemRenderType type, ItemStack item, Object... data) { - switch (type) { - case ENTITY: - renderConduitItem((RenderBlocks) data[0], item, -0.5f, -0.5f, -0.5f); - break; - case EQUIPPED: - renderConduitItem((RenderBlocks) data[0], item, -0.4f, 0.50f, 0.35f); - break; - case EQUIPPED_FIRST_PERSON: - renderConduitItem((RenderBlocks) data[0], item, -0.4f, 0.50f, 0.35f); - break; - case INVENTORY: - renderConduitItem((RenderBlocks) data[0], item, -0.5f, -0.5f, -0.5f); - break; - default: - } - } -} diff --git a/src-backup/main/java/WayofTime/alchemicalWizardry/common/renderer/block/itemRender/TEConduitItemRenderer.java b/src-backup/main/java/WayofTime/alchemicalWizardry/common/renderer/block/itemRender/TEConduitItemRenderer.java deleted file mode 100644 index 9e76b9f8..00000000 --- a/src-backup/main/java/WayofTime/alchemicalWizardry/common/renderer/block/itemRender/TEConduitItemRenderer.java +++ /dev/null @@ -1,96 +0,0 @@ -package WayofTime.alchemicalWizardry.common.renderer.block.itemRender; - -import net.minecraft.block.Block; -import net.minecraft.client.renderer.RenderBlocks; -import net.minecraft.client.renderer.Tessellator; -import net.minecraft.entity.Entity; -import net.minecraft.item.ItemStack; -import net.minecraft.util.IIcon; -import net.minecraft.util.ResourceLocation; -import net.minecraftforge.client.IItemRenderer; -import net.minecraftforge.common.util.ForgeDirection; - -import org.lwjgl.opengl.GL11; - -import WayofTime.alchemicalWizardry.ModBlocks; -import WayofTime.alchemicalWizardry.common.renderer.model.ModelConduit; -import cpw.mods.fml.client.FMLClientHandler; - -public class TEConduitItemRenderer implements IItemRenderer -{ - private ModelConduit modelConduit = new ModelConduit(); - - private void renderConduitItem(RenderBlocks render, ItemStack item, float translateX, float translateY, float translateZ) - { - Tessellator tessellator = Tessellator.instance; - - Block block = ModBlocks.blockConduit; - - GL11.glDisable(GL11.GL_LIGHTING); - GL11.glDisable(GL11.GL_CULL_FACE); - - /** - * Render the ghost item inside of the Altar, slowly spinning - */ - GL11.glPushMatrix(); - GL11.glTranslatef((float) translateX + 0.5F, (float) translateY + 1.5F, (float) translateZ + 0.5F); - ResourceLocation test = new ResourceLocation("alchemicalwizardry:textures/models/Conduit.png"); - FMLClientHandler.instance().getClient().renderEngine.bindTexture(test); - GL11.glPushMatrix(); - GL11.glRotatef(180F, 0.0F, 0.0F, 1.0F); - //GL11.glRotatef(90F, 0.0F, 0.0F, 1.0F); - //A reference to your Model file. Again, very important. - this.modelConduit.render((Entity) null, 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0625F, ForgeDirection.DOWN, ForgeDirection.UP); - //Tell it to stop rendering for both the PushMatrix's - GL11.glPopMatrix(); - GL11.glPopMatrix(); - GL11.glEnable(GL11.GL_CULL_FACE); - GL11.glEnable(GL11.GL_LIGHTING); - } - - - /** - * IItemRenderer implementation * - */ - @Override - public boolean handleRenderType(ItemStack item, ItemRenderType type) { - switch (type) { - case ENTITY: - return true; - case EQUIPPED: - return true; - case EQUIPPED_FIRST_PERSON: - return true; - case INVENTORY: - return true; - default: - return false; - } - } - - - @Override - public boolean shouldUseRenderHelper(ItemRenderType type, ItemStack item, ItemRendererHelper helper) { - return true; - } - - - @Override - public void renderItem(ItemRenderType type, ItemStack item, Object... data) { - switch (type) { - case ENTITY: - renderConduitItem((RenderBlocks) data[0], item, -0.5f, -0.5f, -0.5f); - break; - case EQUIPPED: - renderConduitItem((RenderBlocks) data[0], item, -0.4f, 0.50f, 0.35f); - break; - case EQUIPPED_FIRST_PERSON: - renderConduitItem((RenderBlocks) data[0], item, -0.4f, 0.50f, 0.35f); - break; - case INVENTORY: - renderConduitItem((RenderBlocks) data[0], item, -0.5f, -0.5f, -0.5f); - break; - default: - } - } -} \ No newline at end of file diff --git a/src-backup/main/java/WayofTime/alchemicalWizardry/common/renderer/block/itemRender/TESpellEffectBlockItemRenderer.java b/src-backup/main/java/WayofTime/alchemicalWizardry/common/renderer/block/itemRender/TESpellEffectBlockItemRenderer.java deleted file mode 100644 index 30cb938a..00000000 --- a/src-backup/main/java/WayofTime/alchemicalWizardry/common/renderer/block/itemRender/TESpellEffectBlockItemRenderer.java +++ /dev/null @@ -1,108 +0,0 @@ -package WayofTime.alchemicalWizardry.common.renderer.block.itemRender; - -import net.minecraft.block.Block; -import net.minecraft.client.renderer.RenderBlocks; -import net.minecraft.client.renderer.Tessellator; -import net.minecraft.entity.Entity; -import net.minecraft.item.ItemStack; -import net.minecraft.util.ResourceLocation; -import net.minecraftforge.client.IItemRenderer; -import net.minecraftforge.common.util.ForgeDirection; - -import org.lwjgl.opengl.GL11; - -import WayofTime.alchemicalWizardry.ModBlocks; -import WayofTime.alchemicalWizardry.common.renderer.model.ModelSpellEffectBlock; -import cpw.mods.fml.client.FMLClientHandler; - -public class TESpellEffectBlockItemRenderer implements IItemRenderer -{ - private ModelSpellEffectBlock modelSpellBlock = new ModelSpellEffectBlock(); - - private void renderConduitItem(RenderBlocks render, ItemStack item, float translateX, float translateY, float translateZ) - { - Tessellator tessellator = Tessellator.instance; - - Block block = ModBlocks.blockSpellEffect; - //Icon icon = item.getItem().getIconFromDamage(0); - - GL11.glDisable(GL11.GL_LIGHTING); - GL11.glDisable(GL11.GL_CULL_FACE); - /** - * Render the ghost item inside of the Altar, slowly spinning - */ - GL11.glPushMatrix(); - GL11.glTranslatef((float) translateX + 0.5F, (float) translateY + 1.5F, (float) translateZ + 0.5F); - ResourceLocation test = new ResourceLocation(this.getResourceLocationForMeta(item.getItemDamage())); - - FMLClientHandler.instance().getClient().renderEngine.bindTexture(test); - GL11.glPushMatrix(); - GL11.glRotatef(180F, 0.0F, 0.0F, 1.0F); - //GL11.glRotatef(90F, 0.0F, 0.0F, 1.0F); - //A reference to your Model file. Again, very important. - this.modelSpellBlock.render((Entity) null, 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0625F, ForgeDirection.DOWN, ForgeDirection.UP); - //Tell it to stop rendering for both the PushMatrix's - GL11.glPopMatrix(); - GL11.glPopMatrix(); - GL11.glEnable(GL11.GL_CULL_FACE); - GL11.glEnable(GL11.GL_LIGHTING); - } - - - /** - * IItemRenderer implementation * - */ - @Override - public boolean handleRenderType(ItemStack item, ItemRenderType type) { - switch (type) { - case ENTITY: - return true; - case EQUIPPED: - return true; - case EQUIPPED_FIRST_PERSON: - return true; - case INVENTORY: - return true; - default: - return false; - } - } - - - @Override - public boolean shouldUseRenderHelper(ItemRenderType type, ItemStack item, ItemRendererHelper helper) { - return true; - } - - - @Override - public void renderItem(ItemRenderType type, ItemStack item, Object... data) { - switch (type) { - case ENTITY: - renderConduitItem((RenderBlocks) data[0], item, -0.5f, -0.5f, -0.5f); - break; - case EQUIPPED: - renderConduitItem((RenderBlocks) data[0], item, -0.4f, 0.50f, 0.35f); - break; - case EQUIPPED_FIRST_PERSON: - renderConduitItem((RenderBlocks) data[0], item, -0.4f, 0.50f, 0.35f); - break; - case INVENTORY: - renderConduitItem((RenderBlocks) data[0], item, -0.5f, -0.5f, -0.5f); - break; - default: - } - } - - public String getResourceLocationForMeta(int meta) - { - switch(meta) - { - case 0: return "alchemicalwizardry:textures/models/SpellEffectFire.png"; - case 1: return "alchemicalwizardry:textures/models/SpellEffectIce.png"; - case 2: return "alchemicalwizardry:textures/models/SpellEffectWind.png"; - case 3: return "alchemicalwizardry:textures/models/SpellEffectEarth.png"; - } - return ""; - } -} diff --git a/src-backup/main/java/WayofTime/alchemicalWizardry/common/renderer/block/itemRender/TESpellEnhancementBlockItemRenderer.java b/src-backup/main/java/WayofTime/alchemicalWizardry/common/renderer/block/itemRender/TESpellEnhancementBlockItemRenderer.java deleted file mode 100644 index a25da6d7..00000000 --- a/src-backup/main/java/WayofTime/alchemicalWizardry/common/renderer/block/itemRender/TESpellEnhancementBlockItemRenderer.java +++ /dev/null @@ -1,114 +0,0 @@ -package WayofTime.alchemicalWizardry.common.renderer.block.itemRender; - -import net.minecraft.block.Block; -import net.minecraft.client.renderer.RenderBlocks; -import net.minecraft.client.renderer.Tessellator; -import net.minecraft.entity.Entity; -import net.minecraft.item.ItemStack; -import net.minecraft.util.ResourceLocation; -import net.minecraftforge.client.IItemRenderer; -import net.minecraftforge.common.util.ForgeDirection; - -import org.lwjgl.opengl.GL11; - -import WayofTime.alchemicalWizardry.ModBlocks; -import WayofTime.alchemicalWizardry.common.renderer.model.ModelSpellEnhancementBlock; -import cpw.mods.fml.client.FMLClientHandler; - -public class TESpellEnhancementBlockItemRenderer implements IItemRenderer -{ - private ModelSpellEnhancementBlock modelSpellBlock = new ModelSpellEnhancementBlock(); - - private void renderConduitItem(RenderBlocks render, ItemStack item, float translateX, float translateY, float translateZ) - { - Tessellator tessellator = Tessellator.instance; - - Block block = ModBlocks.blockSpellEffect; - //Icon icon = item.getItem().getIconFromDamage(0); - - GL11.glDisable(GL11.GL_LIGHTING); - GL11.glDisable(GL11.GL_CULL_FACE); - /** - * Render the ghost item inside of the Altar, slowly spinning - */ - GL11.glPushMatrix(); - GL11.glTranslatef((float) translateX + 0.5F, (float) translateY + 1.5F, (float) translateZ + 0.5F); - ResourceLocation test = new ResourceLocation(this.getResourceLocationForMeta(item.getItemDamage())); - - FMLClientHandler.instance().getClient().renderEngine.bindTexture(test); - GL11.glPushMatrix(); - GL11.glRotatef(180F, 0.0F, 0.0F, 1.0F); - //GL11.glRotatef(90F, 0.0F, 0.0F, 1.0F); - //A reference to your Model file. Again, very important. - this.modelSpellBlock.render((Entity) null, 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0625F, ForgeDirection.DOWN, ForgeDirection.UP); - //Tell it to stop rendering for both the PushMatrix's - GL11.glPopMatrix(); - GL11.glPopMatrix(); - GL11.glEnable(GL11.GL_CULL_FACE); - GL11.glEnable(GL11.GL_LIGHTING); - } - - - /** - * IItemRenderer implementation * - */ - @Override - public boolean handleRenderType(ItemStack item, ItemRenderType type) { - switch (type) { - case ENTITY: - return true; - case EQUIPPED: - return true; - case EQUIPPED_FIRST_PERSON: - return true; - case INVENTORY: - return true; - default: - return false; - } - } - - - @Override - public boolean shouldUseRenderHelper(ItemRenderType type, ItemStack item, ItemRendererHelper helper) { - return true; - } - - - @Override - public void renderItem(ItemRenderType type, ItemStack item, Object... data) { - switch (type) { - case ENTITY: - renderConduitItem((RenderBlocks) data[0], item, -0.5f, -0.5f, -0.5f); - break; - case EQUIPPED: - renderConduitItem((RenderBlocks) data[0], item, -0.4f, 0.50f, 0.35f); - break; - case EQUIPPED_FIRST_PERSON: - renderConduitItem((RenderBlocks) data[0], item, -0.4f, 0.50f, 0.35f); - break; - case INVENTORY: - renderConduitItem((RenderBlocks) data[0], item, -0.5f, -0.5f, -0.5f); - break; - default: - } - } - - public String getResourceLocationForMeta(int meta) - { - switch(meta) - { - case 0: return "alchemicalwizardry:textures/models/SpellEnhancementPower1.png"; - case 1: return "alchemicalwizardry:textures/models/SpellEnhancementPower2.png"; - case 2: return "alchemicalwizardry:textures/models/SpellEnhancementPower3.png"; - case 5: return "alchemicalwizardry:textures/models/SpellEnhancementCost1.png"; - case 6: return "alchemicalwizardry:textures/models/SpellEnhancementCost2.png"; - case 7: return "alchemicalwizardry:textures/models/SpellEnhancementCost3.png"; - case 10: return "alchemicalwizardry:textures/models/SpellEnhancementPotency1.png"; - case 11: return "alchemicalwizardry:textures/models/SpellEnhancementPotency2.png"; - case 12: return "alchemicalwizardry:textures/models/SpellEnhancementPotency3.png"; - - } - return "alchemicalwizardry:textures/models/SpellEnhancementPower1.png"; - } -} diff --git a/src-backup/main/java/WayofTime/alchemicalWizardry/common/renderer/block/itemRender/TESpellModifierBlockItemRenderer.java b/src-backup/main/java/WayofTime/alchemicalWizardry/common/renderer/block/itemRender/TESpellModifierBlockItemRenderer.java deleted file mode 100644 index c7809540..00000000 --- a/src-backup/main/java/WayofTime/alchemicalWizardry/common/renderer/block/itemRender/TESpellModifierBlockItemRenderer.java +++ /dev/null @@ -1,108 +0,0 @@ -package WayofTime.alchemicalWizardry.common.renderer.block.itemRender; - -import net.minecraft.block.Block; -import net.minecraft.client.renderer.RenderBlocks; -import net.minecraft.client.renderer.Tessellator; -import net.minecraft.entity.Entity; -import net.minecraft.item.ItemStack; -import net.minecraft.util.ResourceLocation; -import net.minecraftforge.client.IItemRenderer; -import net.minecraftforge.common.util.ForgeDirection; - -import org.lwjgl.opengl.GL11; - -import WayofTime.alchemicalWizardry.ModBlocks; -import WayofTime.alchemicalWizardry.common.renderer.model.ModelSpellModifierBlock; -import cpw.mods.fml.client.FMLClientHandler; - -public class TESpellModifierBlockItemRenderer implements IItemRenderer -{ - private ModelSpellModifierBlock modelSpellBlock = new ModelSpellModifierBlock(); - - private void renderConduitItem(RenderBlocks render, ItemStack item, float translateX, float translateY, float translateZ) - { - Tessellator tessellator = Tessellator.instance; - - Block block = ModBlocks.blockSpellEffect; - //Icon icon = item.getItem().getIconFromDamage(0); - - GL11.glDisable(GL11.GL_LIGHTING); - GL11.glDisable(GL11.GL_CULL_FACE); - /** - * Render the ghost item inside of the Altar, slowly spinning - */ - GL11.glPushMatrix(); - GL11.glTranslatef((float) translateX + 0.5F, (float) translateY + 1.5F, (float) translateZ + 0.5F); - ResourceLocation test = new ResourceLocation(this.getResourceLocationForMeta(item.getItemDamage())); - - FMLClientHandler.instance().getClient().renderEngine.bindTexture(test); - GL11.glPushMatrix(); - GL11.glRotatef(180F, 0.0F, 0.0F, 1.0F); - //GL11.glRotatef(90F, 0.0F, 0.0F, 1.0F); - //A reference to your Model file. Again, very important. - this.modelSpellBlock.render((Entity) null, 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0625F, ForgeDirection.DOWN, ForgeDirection.UP); - //Tell it to stop rendering for both the PushMatrix's - GL11.glPopMatrix(); - GL11.glPopMatrix(); - GL11.glEnable(GL11.GL_CULL_FACE); - GL11.glEnable(GL11.GL_LIGHTING); - } - - - /** - * IItemRenderer implementation * - */ - @Override - public boolean handleRenderType(ItemStack item, ItemRenderType type) { - switch (type) { - case ENTITY: - return true; - case EQUIPPED: - return true; - case EQUIPPED_FIRST_PERSON: - return true; - case INVENTORY: - return true; - default: - return false; - } - } - - - @Override - public boolean shouldUseRenderHelper(ItemRenderType type, ItemStack item, ItemRendererHelper helper) { - return true; - } - - - @Override - public void renderItem(ItemRenderType type, ItemStack item, Object... data) { - switch (type) { - case ENTITY: - renderConduitItem((RenderBlocks) data[0], item, -0.5f, -0.5f, -0.5f); - break; - case EQUIPPED: - renderConduitItem((RenderBlocks) data[0], item, -0.4f, 0.50f, 0.35f); - break; - case EQUIPPED_FIRST_PERSON: - renderConduitItem((RenderBlocks) data[0], item, -0.4f, 0.50f, 0.35f); - break; - case INVENTORY: - renderConduitItem((RenderBlocks) data[0], item, -0.5f, -0.5f, -0.5f); - break; - default: - } - } - - public String getResourceLocationForMeta(int meta) - { - switch(meta) - { - case 0: return "alchemicalwizardry:textures/models/SpellModifierDefault.png"; - case 1: return "alchemicalwizardry:textures/models/SpellModifierOffensive.png"; - case 2: return "alchemicalwizardry:textures/models/SpellModifierDefensive.png"; - case 3: return "alchemicalwizardry:textures/models/SpellModifierEnvironmental.png"; - } - return "alchemicalwizardry:textures/models/SpellModifierDefault.png"; - } -} diff --git a/src-backup/main/java/WayofTime/alchemicalWizardry/common/renderer/block/itemRender/TESpellParadigmBlockItemRenderer.java b/src-backup/main/java/WayofTime/alchemicalWizardry/common/renderer/block/itemRender/TESpellParadigmBlockItemRenderer.java deleted file mode 100644 index 848d36ae..00000000 --- a/src-backup/main/java/WayofTime/alchemicalWizardry/common/renderer/block/itemRender/TESpellParadigmBlockItemRenderer.java +++ /dev/null @@ -1,108 +0,0 @@ -package WayofTime.alchemicalWizardry.common.renderer.block.itemRender; - -import net.minecraft.block.Block; -import net.minecraft.client.renderer.RenderBlocks; -import net.minecraft.client.renderer.Tessellator; -import net.minecraft.entity.Entity; -import net.minecraft.item.ItemStack; -import net.minecraft.util.ResourceLocation; -import net.minecraftforge.client.IItemRenderer; -import net.minecraftforge.common.util.ForgeDirection; - -import org.lwjgl.opengl.GL11; - -import WayofTime.alchemicalWizardry.ModBlocks; -import WayofTime.alchemicalWizardry.common.renderer.model.ModelSpellParadigmBlock; -import cpw.mods.fml.client.FMLClientHandler; - -public class TESpellParadigmBlockItemRenderer implements IItemRenderer -{ - private ModelSpellParadigmBlock modelSpellBlock = new ModelSpellParadigmBlock(); - - private void renderConduitItem(RenderBlocks render, ItemStack item, float translateX, float translateY, float translateZ) - { - Tessellator tessellator = Tessellator.instance; - - Block block = ModBlocks.blockSpellEffect; - //Icon icon = item.getItem().getIconFromDamage(0); - - GL11.glDisable(GL11.GL_LIGHTING); - GL11.glDisable(GL11.GL_CULL_FACE); - /** - * Render the ghost item inside of the Altar, slowly spinning - */ - GL11.glPushMatrix(); - GL11.glTranslatef((float) translateX + 0.5F, (float) translateY + 1.5F, (float) translateZ + 0.5F); - ResourceLocation test = new ResourceLocation(this.getResourceLocationForMeta(item.getItemDamage())); - - FMLClientHandler.instance().getClient().renderEngine.bindTexture(test); - GL11.glPushMatrix(); - GL11.glRotatef(180F, 0.0F, 0.0F, 1.0F); - //GL11.glRotatef(90F, 0.0F, 0.0F, 1.0F); - //A reference to your Model file. Again, very important. - this.modelSpellBlock.render((Entity) null, 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0625F, ForgeDirection.DOWN, ForgeDirection.UP); - //Tell it to stop rendering for both the PushMatrix's - GL11.glPopMatrix(); - GL11.glPopMatrix(); - GL11.glEnable(GL11.GL_CULL_FACE); - GL11.glEnable(GL11.GL_LIGHTING); - } - - - /** - * IItemRenderer implementation * - */ - @Override - public boolean handleRenderType(ItemStack item, ItemRenderType type) { - switch (type) { - case ENTITY: - return true; - case EQUIPPED: - return true; - case EQUIPPED_FIRST_PERSON: - return true; - case INVENTORY: - return true; - default: - return false; - } - } - - - @Override - public boolean shouldUseRenderHelper(ItemRenderType type, ItemStack item, ItemRendererHelper helper) { - return true; - } - - - @Override - public void renderItem(ItemRenderType type, ItemStack item, Object... data) { - switch (type) { - case ENTITY: - renderConduitItem((RenderBlocks) data[0], item, -0.5f, -0.5f, -0.5f); - break; - case EQUIPPED: - renderConduitItem((RenderBlocks) data[0], item, -0.4f, 0.50f, 0.35f); - break; - case EQUIPPED_FIRST_PERSON: - renderConduitItem((RenderBlocks) data[0], item, -0.4f, 0.50f, 0.35f); - break; - case INVENTORY: - renderConduitItem((RenderBlocks) data[0], item, -0.5f, -0.5f, -0.5f); - break; - default: - } - } - - public String getResourceLocationForMeta(int meta) - { - switch(meta) - { - case 0: return "alchemicalwizardry:textures/models/SpellParadigmProjectile.png"; - case 1: return "alchemicalwizardry:textures/models/SpellParadigmSelf.png"; - case 2: return "alchemicalwizardry:textures/models/SpellParadigmMelee.png"; - case 3: return "alchemicalwizardry:textures/models/SpellParadigmTool.png"; - } - return "alchemicalwizardry:textures/models/SpellParadigmProjectile.png"; - } -} diff --git a/src-backup/main/java/WayofTime/alchemicalWizardry/common/renderer/block/itemRender/TEWritingTableItemRenderer.java b/src-backup/main/java/WayofTime/alchemicalWizardry/common/renderer/block/itemRender/TEWritingTableItemRenderer.java deleted file mode 100644 index 9705879c..00000000 --- a/src-backup/main/java/WayofTime/alchemicalWizardry/common/renderer/block/itemRender/TEWritingTableItemRenderer.java +++ /dev/null @@ -1,82 +0,0 @@ -package WayofTime.alchemicalWizardry.common.renderer.block.itemRender; - -import WayofTime.alchemicalWizardry.common.renderer.model.ModelWritingTable; -import cpw.mods.fml.client.FMLClientHandler; -import net.minecraft.entity.Entity; -import net.minecraft.item.ItemStack; -import net.minecraft.util.ResourceLocation; -import net.minecraftforge.client.IItemRenderer; -import org.lwjgl.opengl.GL11; - -public class TEWritingTableItemRenderer implements IItemRenderer -{ - private ModelWritingTable modelBloodAltar; - - public TEWritingTableItemRenderer() - { - modelBloodAltar = new ModelWritingTable(); - } - - @Override - public boolean handleRenderType(ItemStack item, ItemRenderType type) - { - // TODO Auto-generated method stub - return true; - } - - @Override - public boolean shouldUseRenderHelper(ItemRenderType type, ItemStack item, ItemRendererHelper helper) - { - // TODO Auto-generated method stub - return true; - } - - @Override - public void renderItem(ItemRenderType type, ItemStack item, Object... data) - { - float scale = 0.08f; - - // TODO Auto-generated method stub - switch (type) - { - case ENTITY: - { - renderBloodAltar(0f, 0f, 0f, scale); - return; - } - - case EQUIPPED: - { - renderBloodAltar(0f, 0f, 0f, scale); - return; - } - - case INVENTORY: - { - renderBloodAltar(0f, -0.25f, 0f, scale); - return; - } - - default: - return; - } - } - - private void renderBloodAltar(float x, float y, float z, float scale) - { - GL11.glPushMatrix(); - // Disable Lighting Calculations - GL11.glDisable(GL11.GL_LIGHTING); - GL11.glTranslatef(x, y, z); - GL11.glScalef(scale, scale, scale); - GL11.glRotatef(180f, 0f, 1f, 0f); - //FMLClientHandler.instance().getClient().renderEngine.bindTexture("/mods/OBJTutorial/textures/models/TutBox.png"); - ResourceLocation test = new ResourceLocation("alchemicalwizardry:textures/models/WritingTable.png"); - //FMLClientHandler.instance().getClient().renderEngine.bindTexture("/mods/alchemicalwizardry/textures/models/altar.png"); - FMLClientHandler.instance().getClient().renderEngine.bindTexture(test); - modelBloodAltar.render((Entity) null, 0, 0, 0, 0, 0, 0); - // Re-enable Lighting Calculations - GL11.glEnable(GL11.GL_LIGHTING); - GL11.glPopMatrix(); - } -} \ No newline at end of file diff --git a/src-backup/main/java/WayofTime/alchemicalWizardry/common/renderer/mob/RenderBileDemon.java b/src-backup/main/java/WayofTime/alchemicalWizardry/common/renderer/mob/RenderBileDemon.java deleted file mode 100644 index b09c6ca7..00000000 --- a/src-backup/main/java/WayofTime/alchemicalWizardry/common/renderer/mob/RenderBileDemon.java +++ /dev/null @@ -1,27 +0,0 @@ -package WayofTime.alchemicalWizardry.common.renderer.mob; - -import WayofTime.alchemicalWizardry.common.entity.mob.EntityBileDemon; -import net.minecraft.client.model.ModelBase; -import net.minecraft.client.renderer.entity.RenderLiving; -import net.minecraft.entity.Entity; -import net.minecraft.util.ResourceLocation; - -public class RenderBileDemon extends RenderLiving -{ - private static final ResourceLocation field_110833_a = new ResourceLocation("alchemicalwizardry", "textures/models/BileDemon.png"); //refers to:YourMod/modelsTextureFile/optionalFile/yourTexture.png - - public RenderBileDemon(ModelBase par1ModelBase, float par2) - { - super(par1ModelBase, par2); - } - - public ResourceLocation func_110832_a(EntityBileDemon par1EntityBileDemon) - { - return field_110833_a; - } - - public ResourceLocation getEntityTexture(Entity par1Entity) - { - return this.func_110832_a((EntityBileDemon) par1Entity); - } -} \ No newline at end of file diff --git a/src-backup/main/java/WayofTime/alchemicalWizardry/common/renderer/mob/RenderBoulderFist.java b/src-backup/main/java/WayofTime/alchemicalWizardry/common/renderer/mob/RenderBoulderFist.java deleted file mode 100644 index 6db35edd..00000000 --- a/src-backup/main/java/WayofTime/alchemicalWizardry/common/renderer/mob/RenderBoulderFist.java +++ /dev/null @@ -1,27 +0,0 @@ -package WayofTime.alchemicalWizardry.common.renderer.mob; - -import WayofTime.alchemicalWizardry.common.entity.mob.EntityBoulderFist; -import net.minecraft.client.model.ModelBase; -import net.minecraft.client.renderer.entity.RenderLiving; -import net.minecraft.entity.Entity; -import net.minecraft.util.ResourceLocation; - -public class RenderBoulderFist extends RenderLiving -{ - private static final ResourceLocation field_110833_a = new ResourceLocation("alchemicalwizardry", "textures/models/BoulderFist.png"); //refers to:YourMod/modelsTextureFile/optionalFile/yourTexture.png - - public RenderBoulderFist(ModelBase par1ModelBase, float par2) - { - super(par1ModelBase, par2); - } - - public ResourceLocation func_110832_a(EntityBoulderFist par1EntityBoulderFist) - { - return field_110833_a; - } - - public ResourceLocation getEntityTexture(Entity par1Entity) - { - return this.func_110832_a((EntityBoulderFist) par1Entity); - } -} diff --git a/src-backup/main/java/WayofTime/alchemicalWizardry/common/renderer/mob/RenderElemental.java b/src-backup/main/java/WayofTime/alchemicalWizardry/common/renderer/mob/RenderElemental.java deleted file mode 100644 index 485adc3a..00000000 --- a/src-backup/main/java/WayofTime/alchemicalWizardry/common/renderer/mob/RenderElemental.java +++ /dev/null @@ -1,63 +0,0 @@ -package WayofTime.alchemicalWizardry.common.renderer.mob; - -import WayofTime.alchemicalWizardry.common.EntityAirElemental; -import WayofTime.alchemicalWizardry.common.entity.mob.*; -import net.minecraft.client.model.ModelBase; -import net.minecraft.client.renderer.entity.RenderLiving; -import net.minecraft.entity.Entity; -import net.minecraft.util.ResourceLocation; - -public class RenderElemental extends RenderLiving -{ - private static final ResourceLocation airBeacon = new ResourceLocation("alchemicalwizardry", "textures/models/AirFloatingBeacon.png"); //refers to:YourMod/modelsTextureFile/optionalFile/yourTexture.png - private static final ResourceLocation waterBeacon = new ResourceLocation("alchemicalwizardry", "textures/models/WaterFloatingBeacon.png"); - private static final ResourceLocation earthBeacon = new ResourceLocation("alchemicalwizardry", "textures/models/EarthFloatingBeacon.png"); - private static final ResourceLocation fireBeacon = new ResourceLocation("alchemicalwizardry", "textures/models/FireFloatingBeacon.png"); - private static final ResourceLocation shadeBeacon = new ResourceLocation("alchemicalwizardry", "textures/models/DarkFloatingBeacon.png"); - private static final ResourceLocation holyBeacon = new ResourceLocation("alchemicalwizardry", "textures/models/HolyFloatingBeacon.png"); - - public RenderElemental(ModelBase par1ModelBase, float par2) - { - super(par1ModelBase, par2); - } - - public ResourceLocation func_110832_a(EntityElemental par1EntityElemental) - { - if (par1EntityElemental instanceof EntityAirElemental) - { - return airBeacon; - } - - if (par1EntityElemental instanceof EntityWaterElemental) - { - return waterBeacon; - } - - if (par1EntityElemental instanceof EntityEarthElemental) - { - return earthBeacon; - } - - if (par1EntityElemental instanceof EntityFireElemental) - { - return fireBeacon; - } - - if (par1EntityElemental instanceof EntityShadeElemental) - { - return shadeBeacon; - } - - if (par1EntityElemental instanceof EntityHolyElemental) - { - return holyBeacon; - } - - return airBeacon; - } - - public ResourceLocation getEntityTexture(Entity par1Entity) - { - return this.func_110832_a((EntityElemental) par1Entity); - } -} \ No newline at end of file diff --git a/src-backup/main/java/WayofTime/alchemicalWizardry/common/renderer/mob/RenderFallenAngel.java b/src-backup/main/java/WayofTime/alchemicalWizardry/common/renderer/mob/RenderFallenAngel.java deleted file mode 100644 index 28a18eaa..00000000 --- a/src-backup/main/java/WayofTime/alchemicalWizardry/common/renderer/mob/RenderFallenAngel.java +++ /dev/null @@ -1,30 +0,0 @@ -package WayofTime.alchemicalWizardry.common.renderer.mob; - -import WayofTime.alchemicalWizardry.common.entity.mob.EntityFallenAngel; -import cpw.mods.fml.relauncher.Side; -import cpw.mods.fml.relauncher.SideOnly; -import net.minecraft.client.model.ModelBase; -import net.minecraft.client.renderer.entity.RenderLiving; -import net.minecraft.entity.Entity; -import net.minecraft.util.ResourceLocation; - -@SideOnly(Side.CLIENT) -public class RenderFallenAngel extends RenderLiving -{ - private static final ResourceLocation field_110833_a = new ResourceLocation("alchemicalwizardry", "textures/models/WingedAngel.png"); //refers to:YourMod/modelsTextureFile/optionalFile/yourTexture.png - - public RenderFallenAngel(ModelBase par1ModelBase, float par2) - { - super(par1ModelBase, par2); - } - - public ResourceLocation func_110832_a(EntityFallenAngel par1EntityFallenAngel) - { - return field_110833_a; - } - - public ResourceLocation getEntityTexture(Entity par1Entity) - { - return this.func_110832_a((EntityFallenAngel) par1Entity); - } -} diff --git a/src-backup/main/java/WayofTime/alchemicalWizardry/common/renderer/mob/RenderIceDemon.java b/src-backup/main/java/WayofTime/alchemicalWizardry/common/renderer/mob/RenderIceDemon.java deleted file mode 100644 index e7dd7219..00000000 --- a/src-backup/main/java/WayofTime/alchemicalWizardry/common/renderer/mob/RenderIceDemon.java +++ /dev/null @@ -1,27 +0,0 @@ -package WayofTime.alchemicalWizardry.common.renderer.mob; - -import WayofTime.alchemicalWizardry.common.entity.mob.EntityIceDemon; -import net.minecraft.client.model.ModelBase; -import net.minecraft.client.renderer.entity.RenderLiving; -import net.minecraft.entity.Entity; -import net.minecraft.util.ResourceLocation; - -public class RenderIceDemon extends RenderLiving -{ - private static final ResourceLocation field_110833_a = new ResourceLocation("alchemicalwizardry", "textures/models/IceDemon.png"); //refers to:YourMod/modelsTextureFile/optionalFile/yourTexture.png - - public RenderIceDemon(ModelBase par1ModelBase, float par2) - { - super(par1ModelBase, par2); - } - - public ResourceLocation func_110832_a(EntityIceDemon par1EntityIceDemon) - { - return field_110833_a; - } - - public ResourceLocation getEntityTexture(Entity par1Entity) - { - return this.func_110832_a((EntityIceDemon) par1Entity); - } -} diff --git a/src-backup/main/java/WayofTime/alchemicalWizardry/common/renderer/mob/RenderLowerGuardian.java b/src-backup/main/java/WayofTime/alchemicalWizardry/common/renderer/mob/RenderLowerGuardian.java deleted file mode 100644 index 4eeaa4d3..00000000 --- a/src-backup/main/java/WayofTime/alchemicalWizardry/common/renderer/mob/RenderLowerGuardian.java +++ /dev/null @@ -1,27 +0,0 @@ -package WayofTime.alchemicalWizardry.common.renderer.mob; - -import WayofTime.alchemicalWizardry.common.entity.mob.EntityLowerGuardian; -import net.minecraft.client.model.ModelBase; -import net.minecraft.client.renderer.entity.RenderLiving; -import net.minecraft.entity.Entity; -import net.minecraft.util.ResourceLocation; - -public class RenderLowerGuardian extends RenderLiving -{ - private static final ResourceLocation field_110833_a = new ResourceLocation("alchemicalwizardry", "textures/models/LowerGuardian.png"); //refers to:YourMod/modelsTextureFile/optionalFile/yourTexture.png - - public RenderLowerGuardian(ModelBase par1ModelBase, float par2) - { - super(par1ModelBase, par2); - } - - public ResourceLocation func_110832_a(EntityLowerGuardian par1EntityLowerGuardian) - { - return field_110833_a; - } - - public ResourceLocation getEntityTexture(Entity par1Entity) - { - return this.func_110832_a((EntityLowerGuardian) par1Entity); - } -} diff --git a/src-backup/main/java/WayofTime/alchemicalWizardry/common/renderer/mob/RenderShade.java b/src-backup/main/java/WayofTime/alchemicalWizardry/common/renderer/mob/RenderShade.java deleted file mode 100644 index 38868202..00000000 --- a/src-backup/main/java/WayofTime/alchemicalWizardry/common/renderer/mob/RenderShade.java +++ /dev/null @@ -1,27 +0,0 @@ -package WayofTime.alchemicalWizardry.common.renderer.mob; - -import WayofTime.alchemicalWizardry.common.entity.mob.EntityShade; -import net.minecraft.client.model.ModelBase; -import net.minecraft.client.renderer.entity.RenderLiving; -import net.minecraft.entity.Entity; -import net.minecraft.util.ResourceLocation; - -public class RenderShade extends RenderLiving -{ - private static final ResourceLocation field_110833_a = new ResourceLocation("alchemicalwizardry", "textures/models/ShadeMob.png"); //refers to:YourMod/modelsTextureFile/optionalFile/yourTexture.png - - public RenderShade(ModelBase par1ModelBase, float par2) - { - super(par1ModelBase, par2); - } - - public ResourceLocation func_110832_a(EntityShade par1EntityShade) - { - return field_110833_a; - } - - public ResourceLocation getEntityTexture(Entity par1Entity) - { - return this.func_110832_a((EntityShade) par1Entity); - } -} \ No newline at end of file diff --git a/src-backup/main/java/WayofTime/alchemicalWizardry/common/renderer/mob/RenderSmallEarthGolem.java b/src-backup/main/java/WayofTime/alchemicalWizardry/common/renderer/mob/RenderSmallEarthGolem.java deleted file mode 100644 index 16772df4..00000000 --- a/src-backup/main/java/WayofTime/alchemicalWizardry/common/renderer/mob/RenderSmallEarthGolem.java +++ /dev/null @@ -1,27 +0,0 @@ -package WayofTime.alchemicalWizardry.common.renderer.mob; - -import WayofTime.alchemicalWizardry.common.entity.mob.EntitySmallEarthGolem; -import net.minecraft.client.model.ModelBase; -import net.minecraft.client.renderer.entity.RenderLiving; -import net.minecraft.entity.Entity; -import net.minecraft.util.ResourceLocation; - -public class RenderSmallEarthGolem extends RenderLiving -{ - private static final ResourceLocation field_110833_a = new ResourceLocation("alchemicalwizardry", "textures/models/SmallEarthGolem.png"); //refers to:YourMod/modelsTextureFile/optionalFile/yourTexture.png - - public RenderSmallEarthGolem(ModelBase par1ModelBase, float par2) - { - super(par1ModelBase, par2); - } - - public ResourceLocation func_110832_a(EntitySmallEarthGolem par1EntitySmallEarthGolem) - { - return field_110833_a; - } - - public ResourceLocation getEntityTexture(Entity par1Entity) - { - return this.func_110832_a((EntitySmallEarthGolem) par1Entity); - } -} diff --git a/src-backup/main/java/WayofTime/alchemicalWizardry/common/renderer/mob/RenderWingedFireDemon.java b/src-backup/main/java/WayofTime/alchemicalWizardry/common/renderer/mob/RenderWingedFireDemon.java deleted file mode 100644 index 826f7832..00000000 --- a/src-backup/main/java/WayofTime/alchemicalWizardry/common/renderer/mob/RenderWingedFireDemon.java +++ /dev/null @@ -1,27 +0,0 @@ -package WayofTime.alchemicalWizardry.common.renderer.mob; - -import WayofTime.alchemicalWizardry.common.entity.mob.EntityWingedFireDemon; -import net.minecraft.client.model.ModelBase; -import net.minecraft.client.renderer.entity.RenderLiving; -import net.minecraft.entity.Entity; -import net.minecraft.util.ResourceLocation; - -public class RenderWingedFireDemon extends RenderLiving -{ - private static final ResourceLocation field_110833_a = new ResourceLocation("alchemicalwizardry", "textures/models/WingedFireDemon.png"); //refers to:YourMod/modelsTextureFile/optionalFile/yourTexture.png - - public RenderWingedFireDemon(ModelBase par1ModelBase, float par2) - { - super(par1ModelBase, par2); - } - - public ResourceLocation func_110832_a(EntityWingedFireDemon par1EntityWingedFireDemon) - { - return field_110833_a; - } - - public ResourceLocation getEntityTexture(Entity par1Entity) - { - return this.func_110832_a((EntityWingedFireDemon) par1Entity); - } -} diff --git a/src-backup/main/java/WayofTime/alchemicalWizardry/common/renderer/model/ModelAlchemicalCalcinator.java b/src-backup/main/java/WayofTime/alchemicalWizardry/common/renderer/model/ModelAlchemicalCalcinator.java deleted file mode 100644 index 499d34c5..00000000 --- a/src-backup/main/java/WayofTime/alchemicalWizardry/common/renderer/model/ModelAlchemicalCalcinator.java +++ /dev/null @@ -1,140 +0,0 @@ -package WayofTime.alchemicalWizardry.common.renderer.model; - -import net.minecraft.client.model.ModelBase; -import net.minecraft.client.model.ModelRenderer; -import net.minecraft.entity.Entity; - -public class ModelAlchemicalCalcinator extends ModelBase -{ - //fields - ModelRenderer top1; - ModelRenderer top2; - ModelRenderer top3; - ModelRenderer top4; - ModelRenderer tank; - ModelRenderer centreCollumn; - ModelRenderer furnaceShape; - ModelRenderer glassWindow; - ModelRenderer Shape1; - ModelRenderer Shape2; - ModelRenderer Shape3; - ModelRenderer Shape4; - ModelRenderer Shape5; - - public ModelAlchemicalCalcinator() - { - textureWidth = 128; - textureHeight = 128; - - top1 = new ModelRenderer(this, 0, 34); - top1.addBox(4F, -8F, -8F, 4, 3, 16); - top1.setRotationPoint(0F, 16F, 0F); - top1.setTextureSize(128, 128); - top1.mirror = true; - setRotation(top1, 0F, 0F, 0F); - top2 = new ModelRenderer(this, 41, 34); - top2.addBox(-8F, -8F, -8F, 4, 3, 16); - top2.setRotationPoint(0F, 16F, 0F); - top2.setTextureSize(128, 128); - top2.mirror = true; - setRotation(top2, 0F, 0F, 0F); - top3 = new ModelRenderer(this, 25, 55); - top3.addBox(-4F, -8F, 4F, 8, 3, 4); - top3.setRotationPoint(0F, 16F, 0F); - top3.setTextureSize(128, 128); - top3.mirror = true; - setRotation(top3, 0F, 0F, 0F); - top4 = new ModelRenderer(this, 0, 55); - top4.addBox(-4F, -8F, -8F, 8, 3, 4); - top4.setRotationPoint(0F, 16F, 0F); - top4.setTextureSize(128, 128); - top4.mirror = true; - setRotation(top4, 0F, 0F, 0F); - tank = new ModelRenderer(this, 0, 0); - tank.addBox(-8F, -5F, -8F, 16, 4, 16); - tank.setRotationPoint(0F, 16F, 0F); - tank.setTextureSize(128, 128); - tank.mirror = true; - setRotation(tank, 0F, 0F, 0F); - centreCollumn = new ModelRenderer(this, 0, 21); - centreCollumn.addBox(-4F, -5F, -4F, 8, 4, 8); - centreCollumn.setRotationPoint(0F, 16F, 0F); - centreCollumn.setTextureSize(128, 128); - centreCollumn.mirror = true; - setRotation(centreCollumn, 0F, 0F, 0F); - furnaceShape = new ModelRenderer(this, 0, 63); - furnaceShape.addBox(-8F, -1F, -8F, 16, 5, 16); - furnaceShape.setRotationPoint(0F, 16F, 0F); - furnaceShape.setTextureSize(128, 128); - furnaceShape.mirror = true; - setRotation(furnaceShape, 0F, 0F, 0F); - glassWindow = new ModelRenderer(this, 0, 85); - glassWindow.addBox(-4F, -8F, -4F, 8, 0, 8); - glassWindow.setRotationPoint(0F, 16F, 0F); - glassWindow.setTextureSize(128, 128); - glassWindow.mirror = true; - setRotation(glassWindow, 0F, 0F, 0F); - Shape1 = new ModelRenderer(this, 0, 94); - Shape1.addBox(-8F, 4F, -8F, 4, 4, 4); - Shape1.setRotationPoint(0F, 16F, 0F); - Shape1.setTextureSize(128, 128); - Shape1.mirror = true; - setRotation(Shape1, 0F, 0F, 0F); - Shape2 = new ModelRenderer(this, 0, 103); - Shape2.addBox(-4F, 6F, -4F, 8, 1, 8); - Shape2.setRotationPoint(0F, 16F, 0F); - Shape2.setTextureSize(128, 128); - Shape2.mirror = true; - setRotation(Shape2, 0F, 0F, 0F); - Shape3 = new ModelRenderer(this, 0, 94); - Shape3.addBox(4F, 4F, -8F, 4, 4, 4); - Shape3.setRotationPoint(0F, 16F, 0F); - Shape3.setTextureSize(128, 128); - Shape3.mirror = true; - setRotation(Shape3, 0F, 0F, 0F); - Shape4 = new ModelRenderer(this, 0, 94); - Shape4.addBox(-8F, 4F, 4F, 4, 4, 4); - Shape4.setRotationPoint(0F, 16F, 0F); - Shape4.setTextureSize(128, 128); - Shape4.mirror = true; - setRotation(Shape4, 0F, 0F, 0F); - Shape5 = new ModelRenderer(this, 0, 94); - Shape5.addBox(4F, 4F, 4F, 4, 4, 4); - Shape5.setRotationPoint(0F, 16F, 0F); - Shape5.setTextureSize(128, 128); - Shape5.mirror = true; - setRotation(Shape5, 0F, 0F, 0F); - } - - 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); - top1.render(f5); - top2.render(f5); - top3.render(f5); - top4.render(f5); - tank.render(f5); - centreCollumn.render(f5); - furnaceShape.render(f5); - glassWindow.render(f5); - Shape1.render(f5); - Shape2.render(f5); - Shape3.render(f5); - Shape4.render(f5); - Shape5.render(f5); - } - - private void setRotation(ModelRenderer model, float x, float y, float z) - { - model.rotateAngleX = x; - model.rotateAngleY = y; - model.rotateAngleZ = z; - } - - public void setRotationAngles(float f, float f1, float f2, float f3, float f4, float f5, Entity entity) - { - super.setRotationAngles(f, f1, f2, f3, f4, f5, entity); - } - -} diff --git a/src-backup/main/java/WayofTime/alchemicalWizardry/common/renderer/model/ModelBileDemon.java b/src-backup/main/java/WayofTime/alchemicalWizardry/common/renderer/model/ModelBileDemon.java deleted file mode 100644 index e09db58e..00000000 --- a/src-backup/main/java/WayofTime/alchemicalWizardry/common/renderer/model/ModelBileDemon.java +++ /dev/null @@ -1,181 +0,0 @@ -package WayofTime.alchemicalWizardry.common.renderer.model; - -import net.minecraft.client.model.ModelBase; -import net.minecraft.client.model.ModelRenderer; -import net.minecraft.entity.Entity; -import net.minecraft.util.MathHelper; -import org.lwjgl.opengl.GL11; - -public class ModelBileDemon extends ModelBase -{ - //fields - ModelRenderer belly; - ModelRenderer chest; - ModelRenderer head; - ModelRenderer nose; - ModelRenderer leftHorn; - ModelRenderer leftArmSpacer; - ModelRenderer leftArm; - ModelRenderer leftChain; - ModelRenderer leftBall; - ModelRenderer rightHorn; - ModelRenderer rightChain; - ModelRenderer rightBall; - ModelRenderer rightArmSpacer; - ModelRenderer rightArm; - - public ModelBileDemon() - { - textureWidth = 128; - textureHeight = 64; - belly = new ModelRenderer(this, 0, 31); - belly.addBox(-8F, -1F, -10F, 16, 15, 18); - belly.setRotationPoint(0F, 10F, 0F); - belly.setTextureSize(128, 64); - belly.mirror = true; - setRotation(belly, 0F, 0F, 0F); - chest = new ModelRenderer(this, 70, 46); - chest.addBox(-7F, -4F, -6F, 14, 4, 14); - chest.setRotationPoint(0F, 10F, 0F); - chest.setTextureSize(128, 64); - chest.mirror = true; - setRotation(chest, -0.1115358F, 0F, 0F); - head = new ModelRenderer(this, 0, 0); - head.addBox(-4F, -8F, -4F, 8, 8, 8); - head.setRotationPoint(0F, 6F, 3F); - head.setTextureSize(128, 64); - head.mirror = true; - setRotation(head, 0F, 0F, 0F); - nose = new ModelRenderer(this, 0, 0); - nose.addBox(-1F, -4F, -5F, 2, 1, 1); - nose.setRotationPoint(0F, 6F, 3F); - nose.setTextureSize(128, 64); - nose.mirror = true; - setRotation(nose, 0F, 0F, 0F); - leftHorn = new ModelRenderer(this, 93, 1); - leftHorn.addBox(4F, -7F, 0F, 16, 1, 1); - leftHorn.setRotationPoint(0F, 6F, 3F); - leftHorn.setTextureSize(128, 64); - leftHorn.mirror = true; - setRotation(leftHorn, 0F, 0F, 0F); - leftArmSpacer = new ModelRenderer(this, 80, 1); - leftArmSpacer.addBox(0F, -2F, -2F, 1, 4, 4); - leftArmSpacer.setRotationPoint(7F, 8F, 3F); - leftArmSpacer.setTextureSize(128, 64); - leftArmSpacer.mirror = true; - setRotation(leftArmSpacer, 0F, 0F, 0F); - leftArm = new ModelRenderer(this, 62, 1); - leftArm.addBox(1F, -2F, -2F, 4, 18, 4); - leftArm.setRotationPoint(7F, 8F, 3F); - leftArm.setTextureSize(128, 64); - leftArm.mirror = true; - setRotation(leftArm, 0F, 0F, 0F); - leftChain = new ModelRenderer(this, 95, 5); - leftChain.addBox(17F, -6F, 0F, 1, 6, 1); - leftChain.setRotationPoint(0F, 6F, 3F); - leftChain.setTextureSize(128, 64); - leftChain.mirror = true; - setRotation(leftChain, 0F, 0F, 0F); - leftBall = new ModelRenderer(this, 107, 4); - leftBall.addBox(15F, 0F, -2F, 5, 5, 5); - leftBall.setRotationPoint(0F, 6F, 3F); - leftBall.setTextureSize(128, 64); - leftBall.mirror = true; - setRotation(leftBall, 0F, 0F, 0F); - rightHorn = new ModelRenderer(this, 93, 1); - rightHorn.mirror = true; - rightHorn.addBox(-20F, -7F, 0F, 16, 1, 1); - rightHorn.setRotationPoint(0F, 6F, 3F); - rightHorn.setTextureSize(128, 64); - rightHorn.mirror = true; - setRotation(rightHorn, 0F, 0F, 0F); - rightHorn.mirror = false; - rightChain = new ModelRenderer(this, 95, 5); - rightChain.mirror = true; - rightChain.addBox(-18F, -6F, 0F, 1, 6, 1); - rightChain.setRotationPoint(0F, 6F, 3F); - rightChain.setTextureSize(128, 64); - rightChain.mirror = true; - setRotation(rightChain, 0F, 0F, 0F); - rightChain.mirror = false; - rightBall = new ModelRenderer(this, 107, 4); - rightBall.mirror = true; - rightBall.addBox(-20F, 0F, -2F, 5, 5, 5); - rightBall.setRotationPoint(0F, 6F, 3F); - rightBall.setTextureSize(128, 64); - rightBall.mirror = true; - setRotation(rightBall, 0F, 0F, 0F); - rightBall.mirror = false; - rightArmSpacer = new ModelRenderer(this, 80, 1); - rightArmSpacer.mirror = true; - rightArmSpacer.addBox(-1F, -2F, -2F, 1, 4, 4); - rightArmSpacer.setRotationPoint(-7F, 8F, 3F); - rightArmSpacer.setTextureSize(128, 64); - rightArmSpacer.mirror = true; - setRotation(rightArmSpacer, 0F, 0F, 0F); - rightArmSpacer.mirror = false; - rightArm = new ModelRenderer(this, 62, 1); - rightArm.mirror = true; - rightArm.addBox(-5F, -2F, -2F, 4, 18, 4); - rightArm.setRotationPoint(-7F, 8F, 3F); - rightArm.setTextureSize(128, 64); - rightArm.mirror = true; - setRotation(rightArm, 0F, 0F, 0F); - rightArm.mirror = false; - } - - 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); - float scale = 1.3f; - GL11.glScalef(scale, scale, scale); - GL11.glTranslatef(0.0f, -(6.0f / 16.0f), 0.0f); - belly.render(f5); - chest.render(f5); - head.render(f5); - nose.render(f5); - leftHorn.render(f5); - leftArmSpacer.render(f5); - leftArm.render(f5); - leftChain.render(f5); - leftBall.render(f5); - rightHorn.render(f5); - rightChain.render(f5); - rightBall.render(f5); - rightArmSpacer.render(f5); - rightArm.render(f5); - } - - private void setRotation(ModelRenderer model, float x, float y, float z) - { - model.rotateAngleX = x; - model.rotateAngleY = y; - model.rotateAngleZ = z; - } - - public void setRotationAngles(float f, float f1, float f2, float f3, float f4, float f5, Entity entity) - { - super.setRotationAngles(f, f1, f2, f3, f4, f5, entity); - this.head.rotateAngleX = f4 / (180F / (float) Math.PI); - this.head.rotateAngleY = f3 / (180F / (float) Math.PI); - this.rightArm.rotateAngleX = MathHelper.cos(f * 0.3662F + (float) Math.PI) * 1.0F * f1; - this.leftArm.rotateAngleX = MathHelper.cos(f * 0.3662F) * 1.0F * f1; - this.rightArmSpacer.rotateAngleX = MathHelper.cos(f * 0.3662F + (float) Math.PI) * 1.0F * f1; - this.leftArmSpacer.rotateAngleX = MathHelper.cos(f * 0.3662F) * 1.0F * f1; - this.leftBall.rotateAngleX = this.head.rotateAngleX; - this.leftBall.rotateAngleY = this.head.rotateAngleY; - this.rightBall.rotateAngleX = this.head.rotateAngleX; - this.rightBall.rotateAngleY = this.head.rotateAngleY; - this.leftChain.rotateAngleX = this.head.rotateAngleX; - this.leftChain.rotateAngleY = this.head.rotateAngleY; - this.rightChain.rotateAngleX = this.head.rotateAngleX; - this.rightChain.rotateAngleY = this.head.rotateAngleY; - this.leftHorn.rotateAngleX = this.head.rotateAngleX; - this.leftHorn.rotateAngleY = this.head.rotateAngleY; - this.rightHorn.rotateAngleX = this.head.rotateAngleX; - this.rightHorn.rotateAngleY = this.head.rotateAngleY; - this.nose.rotateAngleX = this.head.rotateAngleX; - this.nose.rotateAngleY = this.head.rotateAngleY; - } -} \ No newline at end of file diff --git a/src-backup/main/java/WayofTime/alchemicalWizardry/common/renderer/model/ModelBloodAltar.java b/src-backup/main/java/WayofTime/alchemicalWizardry/common/renderer/model/ModelBloodAltar.java deleted file mode 100644 index eba407bb..00000000 --- a/src-backup/main/java/WayofTime/alchemicalWizardry/common/renderer/model/ModelBloodAltar.java +++ /dev/null @@ -1,72 +0,0 @@ -package WayofTime.alchemicalWizardry.common.renderer.model; - -import net.minecraft.client.model.ModelBase; -import net.minecraft.util.ResourceLocation; -import net.minecraftforge.client.model.AdvancedModelLoader; -import net.minecraftforge.client.model.IModelCustom; - -import org.lwjgl.opengl.GL11; - -import WayofTime.alchemicalWizardry.common.tileEntity.TEAltar; -import cpw.mods.fml.client.FMLClientHandler; - -public class ModelBloodAltar extends ModelBase -{ - private IModelCustom modelBloodAltar; - private IModelCustom modelBloodLevel; //TODO - - public ModelBloodAltar() - { - modelBloodAltar = AdvancedModelLoader.loadModel(new ResourceLocation("alchemicalwizardry:models/bloodaltar-fixeUV.obj")); - modelBloodLevel = AdvancedModelLoader.loadModel(new ResourceLocation("alchemicalwizardry:models/bloodlevel.obj")); - } - - public void renderBloodAltar() - { - modelBloodAltar.renderAll(); - } - - public void renderBloodLevel() - { - modelBloodLevel.renderAll(); - } - - public void renderBloodAltar(TEAltar altar, double x, double y, double z) - { - float scale = 0.1f; - // Push a blank matrix onto the stack - GL11.glPushMatrix(); - // Move the object into the correct position on the block (because the OBJ's origin is the center of the object) - GL11.glTranslatef((float) x + 0.5f, (float) y, (float) z + 0.5f); - // Scale our object to about half-size in all directions (the OBJ file is a little large) - GL11.glScalef(scale, scale, scale); - // Bind the texture, so that OpenGL properly textures our block. - ResourceLocation test = new ResourceLocation("alchemicalwizardry:textures/models/altar.png"); - //FMLClientHandler.instance().getClient().renderEngine.bindTexture("/mods/alchemicalwizardry/textures/models/altar.png"); - FMLClientHandler.instance().getClient().renderEngine.bindTexture(test); - // Render the object, using modelTutBox.renderAll(); - this.renderBloodAltar(); - // Pop this matrix from the stack. - GL11.glPopMatrix(); - } - - public void renderBloodLevel(TEAltar altar, double x, double y, double z) - { - float scale = 0.1f; - // Push a blank matrix onto the stack - GL11.glPushMatrix(); - float level = altar.getFluidAmount(); - // Move the object into the correct position on the block (because the OBJ's origin is the center of the object) - GL11.glTranslatef((float) x + 0.5f, (float) y + 0.6499f + 0.12f * (level / altar.getCapacity()), (float) z + 0.5f); - // Scale our object to about half-size in all directions (the OBJ file is a little large) - GL11.glScalef(scale, scale, scale); - // Bind the texture, so that OpenGL properly textures our block. - ResourceLocation test = new ResourceLocation("alchemicalwizardry:textures/models/blood.png"); - //FMLClientHandler.instance().getClient().renderEngine.bindTexture("/mods/alchemicalwizardry/textures/models/altar.png"); - FMLClientHandler.instance().getClient().renderEngine.bindTexture(test); - // Render the object, using modelTutBox.renderAll(); - this.renderBloodLevel(); - // Pop this matrix from the stack. - GL11.glPopMatrix(); - } -} diff --git a/src-backup/main/java/WayofTime/alchemicalWizardry/common/renderer/model/ModelBoulderFist.java b/src-backup/main/java/WayofTime/alchemicalWizardry/common/renderer/model/ModelBoulderFist.java deleted file mode 100644 index a2cebd46..00000000 --- a/src-backup/main/java/WayofTime/alchemicalWizardry/common/renderer/model/ModelBoulderFist.java +++ /dev/null @@ -1,153 +0,0 @@ -package WayofTime.alchemicalWizardry.common.renderer.model; - -import net.minecraft.client.model.ModelBase; -import net.minecraft.client.model.ModelRenderer; -import net.minecraft.entity.Entity; -import net.minecraft.util.MathHelper; - -public class ModelBoulderFist extends ModelBase -{ - //fields - ModelRenderer leftFist; - ModelRenderer leftArm; - ModelRenderer body; - ModelRenderer leftLeg1; - ModelRenderer leftLeg2; - ModelRenderer leftFoot; - ModelRenderer rightFist; - ModelRenderer rightArm; - ModelRenderer rightLeg1; - ModelRenderer rightLeg2; - ModelRenderer rightFoot; - ModelRenderer head; - - public ModelBoulderFist() - { - textureWidth = 64; - textureHeight = 64; - leftFist = new ModelRenderer(this, 33, 52); - leftFist.addBox(-1F, 12F, -3F, 6, 6, 6); - leftFist.setRotationPoint(5F, 6F, -6F); - leftFist.setTextureSize(64, 64); - leftFist.mirror = true; - setRotation(leftFist, 0F, 0F, 0F); - leftArm = new ModelRenderer(this, 48, 33); - leftArm.addBox(0F, -2F, -2F, 4, 14, 4); - leftArm.setRotationPoint(5F, 6F, -6F); - leftArm.setTextureSize(64, 64); - leftArm.mirror = true; - setRotation(leftArm, 0F, 0F, 0F); - body = new ModelRenderer(this, 0, 40); - body.addBox(-5F, -2F, -3F, 10, 18, 6); - body.setRotationPoint(0F, 6F, -6F); - body.setTextureSize(64, 64); - body.mirror = true; - setRotation(body, 1.22173F, 0F, 0F); - leftLeg1 = new ModelRenderer(this, 0, 25); - leftLeg1.addBox(0F, -1F, -1F, 4, 6, 2); - leftLeg1.setRotationPoint(5F, 11F, 7F); - leftLeg1.setTextureSize(64, 64); - leftLeg1.mirror = true; - setRotation(leftLeg1, -((float) Math.PI / 4F), 0F, 0F); - leftLeg2 = new ModelRenderer(this, 1, 25); - leftLeg2.addBox(0F, 5F, -1F, 4, 2, 12); - leftLeg2.setRotationPoint(5F, 11F, 7F); - leftLeg2.setTextureSize(64, 64); - leftLeg2.mirror = true; - setRotation(leftLeg2, -((float) Math.PI / 4F), 0F, 0F); - leftFoot = new ModelRenderer(this, 22, 25); - leftFoot.addBox(0F, 11F, -1F, 4, 2, 5); - leftFoot.setRotationPoint(5F, 11F, 7F); - leftFoot.setTextureSize(64, 64); - leftFoot.mirror = true; - setRotation(leftFoot, 0F, 0F, 0F); - rightFist = new ModelRenderer(this, 33, 52); - rightFist.mirror = true; - rightFist.addBox(-5F, 12F, -3F, 6, 6, 6); - rightFist.setRotationPoint(-5F, 6F, -6F); - rightFist.setTextureSize(64, 64); - rightFist.mirror = true; - setRotation(rightFist, 0F, 0F, 0F); - rightFist.mirror = false; - rightArm = new ModelRenderer(this, 48, 33); - rightArm.mirror = true; - rightArm.addBox(-4F, -2F, -2F, 4, 14, 4); - rightArm.setRotationPoint(-5F, 6F, -6F); - rightArm.setTextureSize(64, 64); - rightArm.mirror = true; - setRotation(rightArm, 0F, 0F, 0F); - rightArm.mirror = false; - rightLeg1 = new ModelRenderer(this, 0, 25); - rightLeg1.mirror = true; - rightLeg1.addBox(-4F, -1F, -1F, 4, 6, 2); - rightLeg1.setRotationPoint(-5F, 11F, 7F); - rightLeg1.setTextureSize(64, 64); - rightLeg1.mirror = true; - setRotation(rightLeg1, -((float) Math.PI / 4F), 0F, 0F); - rightLeg1.mirror = false; - rightLeg2 = new ModelRenderer(this, 1, 25); - rightLeg2.mirror = true; - rightLeg2.addBox(-4F, 5F, -1F, 4, 2, 12); - rightLeg2.setRotationPoint(-5F, 11F, 7F); - rightLeg2.setTextureSize(64, 64); - rightLeg2.mirror = true; - setRotation(rightLeg2, -((float) Math.PI / 4F), 0F, 0F); - rightLeg2.mirror = false; - rightFoot = new ModelRenderer(this, 22, 25); - rightFoot.mirror = true; - rightFoot.addBox(-4F, 11F, -1F, 4, 2, 5); - rightFoot.setRotationPoint(-5F, 11F, 7F); - rightFoot.setTextureSize(64, 64); - rightFoot.mirror = true; - setRotation(rightFoot, 0F, 0F, 0F); - rightFoot.mirror = false; - head = new ModelRenderer(this, 0, 0); - head.addBox(-3F, -5F, -5F, 6, 6, 6); - head.setRotationPoint(0F, 5F, -7F); - head.setTextureSize(64, 64); - head.mirror = true; - setRotation(head, 0F, 0F, 0F); - } - - 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); - leftFist.render(f5); - leftArm.render(f5); - body.render(f5); - leftLeg1.render(f5); - leftLeg2.render(f5); - leftFoot.render(f5); - rightFist.render(f5); - rightArm.render(f5); - rightLeg1.render(f5); - rightLeg2.render(f5); - rightFoot.render(f5); - head.render(f5); - } - - private void setRotation(ModelRenderer model, float x, float y, float z) - { - model.rotateAngleX = x; - model.rotateAngleY = y; - model.rotateAngleZ = z; - } - - public void setRotationAngles(float f, float f1, float f2, float f3, float f4, float f5, Entity entity) - { - super.setRotationAngles(f, f1, f2, f3, f4, f5, entity); - this.head.rotateAngleX = f4 / (180F / (float) Math.PI); - this.head.rotateAngleY = f3 / (180F / (float) Math.PI); - this.leftFoot.rotateAngleX = MathHelper.cos(f * 0.6662F) * 0.8F * f1; - this.rightFoot.rotateAngleX = MathHelper.cos(f * 0.6662F + (float) Math.PI) * 0.8F * f1; - this.leftLeg1.rotateAngleX = leftFoot.rotateAngleX - ((float) Math.PI / 4F); - this.rightLeg1.rotateAngleX = rightFoot.rotateAngleX - ((float) Math.PI / 4F); - this.leftLeg2.rotateAngleX = leftFoot.rotateAngleX - ((float) Math.PI / 4F); - this.rightLeg2.rotateAngleX = rightFoot.rotateAngleX - ((float) Math.PI / 4F); - this.rightArm.rotateAngleX = MathHelper.cos(f * 0.6662F + (float) Math.PI) * 0.9f * f1; - this.leftArm.rotateAngleX = MathHelper.cos(f * 0.6662F) * 0.9f * f1; - this.leftFist.rotateAngleX = leftArm.rotateAngleX; - this.rightFist.rotateAngleX = rightArm.rotateAngleX; - } -} \ No newline at end of file diff --git a/src-backup/main/java/WayofTime/alchemicalWizardry/common/renderer/model/ModelConduit.java b/src-backup/main/java/WayofTime/alchemicalWizardry/common/renderer/model/ModelConduit.java deleted file mode 100644 index a6a510c4..00000000 --- a/src-backup/main/java/WayofTime/alchemicalWizardry/common/renderer/model/ModelConduit.java +++ /dev/null @@ -1,287 +0,0 @@ -package WayofTime.alchemicalWizardry.common.renderer.model; - -//Date: 11/26/2013 1:57:16 PM -//Template version 1.1 -//Java generated by Techne -//Keep in mind that you still need to fill in some blanks -//- ZeuX - -import net.minecraft.client.model.ModelBase; -import net.minecraft.client.model.ModelRenderer; -import net.minecraft.entity.Entity; -import net.minecraftforge.common.util.ForgeDirection; - -public class ModelConduit extends ModelBase -{ - //fields - ModelRenderer curvedInput; - ModelRenderer curvedOutput; - ModelRenderer straightBar1; - ModelRenderer curvedBar1; - ModelRenderer spacer1; - ModelRenderer straightBar2; - ModelRenderer curvedBar2; - ModelRenderer spacer2; - ModelRenderer straightBar3; - ModelRenderer curvedBar3; - ModelRenderer straightBar4; - ModelRenderer curvedBar4; - ModelRenderer spacer3; - ModelRenderer spacer4; - ModelRenderer spacer5; - ModelRenderer spacer6; - ModelRenderer spacer7; - ModelRenderer spacer8; - - public ModelConduit() - { - textureWidth = 64; - textureHeight = 32; - curvedInput = new ModelRenderer(this, 0, 0); - curvedInput.addBox(-2F, -2F, -8F, 4, 4, 10); - curvedInput.setRotationPoint(0F, 16F, 0F); - curvedInput.setTextureSize(64, 32); - curvedInput.mirror = true; - setRotation(curvedInput, 0F, 0F, 0F); - curvedOutput = new ModelRenderer(this, 18, 0); - curvedOutput.addBox(2F, -2F, -2F, 6, 4, 4); - curvedOutput.setRotationPoint(0F, 16F, 0F); - curvedOutput.setTextureSize(64, 32); - curvedOutput.mirror = true; - setRotation(curvedOutput, 0F, 0F, 0F); - straightBar1 = new ModelRenderer(this, 0, 17); - straightBar1.addBox(-5F, 3F, -8F, 2, 2, 13); - straightBar1.setRotationPoint(0F, 16F, 0F); - straightBar1.setTextureSize(64, 32); - straightBar1.mirror = true; - setRotation(straightBar1, 0F, 0F, 0F); - curvedBar1 = new ModelRenderer(this, 29, 10); - curvedBar1.addBox(-5F, 3F, 3F, 13, 2, 2); - curvedBar1.setRotationPoint(0F, 16F, 0F); - curvedBar1.setTextureSize(64, 32); - curvedBar1.mirror = true; - setRotation(curvedBar1, 0F, 0F, 0F); - spacer1 = new ModelRenderer(this, 40, 0); - spacer1.addBox(-5.5F, 2.5F, 2.5F, 3, 3, 3); - spacer1.setRotationPoint(0F, 16F, 0F); - spacer1.setTextureSize(64, 32); - spacer1.mirror = true; - setRotation(spacer1, 0F, 0F, 0F); - straightBar2 = new ModelRenderer(this, 0, 17); - straightBar2.addBox(-5F, -5F, -8F, 2, 2, 13); - straightBar2.setRotationPoint(0F, 16F, 0F); - straightBar2.setTextureSize(64, 32); - straightBar2.mirror = true; - setRotation(straightBar2, 0F, 0F, 0F); - curvedBar2 = new ModelRenderer(this, 29, 10); - curvedBar2.addBox(-5F, -5F, 3F, 13, 2, 2); - curvedBar2.setRotationPoint(0F, 16F, 0F); - curvedBar2.setTextureSize(64, 32); - curvedBar2.mirror = true; - setRotation(curvedBar2, 0F, 0F, 0F); - spacer2 = new ModelRenderer(this, 40, 0); - spacer2.addBox(-5.5F, -5.5F, 2.5F, 3, 3, 3); - spacer2.setRotationPoint(0F, 16F, 0F); - spacer2.setTextureSize(64, 32); - spacer2.mirror = true; - setRotation(spacer2, 0F, 0F, 0F); - straightBar3 = new ModelRenderer(this, 0, 17); - straightBar3.addBox(3F, 3F, -8F, 2, 2, 13); - straightBar3.setRotationPoint(0F, 16F, 0F); - straightBar3.setTextureSize(64, 32); - straightBar3.mirror = true; - setRotation(straightBar3, 0F, 0F, 0F); - curvedBar3 = new ModelRenderer(this, 29, 10); - curvedBar3.addBox(-5F, 3F, -5F, 13, 2, 2); - curvedBar3.setRotationPoint(0F, 16F, 0F); - curvedBar3.setTextureSize(64, 32); - curvedBar3.mirror = true; - setRotation(curvedBar3, 0F, 0F, 0F); - straightBar4 = new ModelRenderer(this, 0, 17); - straightBar4.addBox(3F, -5F, -8F, 2, 2, 13); - straightBar4.setRotationPoint(0F, 16F, 0F); - straightBar4.setTextureSize(64, 32); - straightBar4.mirror = true; - setRotation(straightBar4, 0F, 0F, 0F); - curvedBar4 = new ModelRenderer(this, 29, 10); - curvedBar4.addBox(-5F, -5F, -5F, 13, 2, 2); - curvedBar4.setRotationPoint(0F, 16F, 0F); - curvedBar4.setTextureSize(64, 32); - curvedBar4.mirror = true; - setRotation(curvedBar4, 0F, 0F, 0F); - spacer3 = new ModelRenderer(this, 40, 0); - spacer3.addBox(2.5F, 2.5F, 2.5F, 3, 3, 3); - spacer3.setRotationPoint(0F, 16F, 0F); - spacer3.setTextureSize(64, 32); - spacer3.mirror = true; - setRotation(spacer3, 0F, 0F, 0F); - spacer4 = new ModelRenderer(this, 40, 0); - spacer4.addBox(2.5F, 2.5F, -5.5F, 3, 3, 3); - spacer4.setRotationPoint(0F, 16F, 0F); - spacer4.setTextureSize(64, 32); - spacer4.mirror = true; - setRotation(spacer4, 0F, 0F, 0F); - spacer5 = new ModelRenderer(this, 40, 0); - spacer5.addBox(-5.5F, 2.5F, -5.484F, 3, 3, 3); - spacer5.setRotationPoint(0F, 16F, 0F); - spacer5.setTextureSize(64, 32); - spacer5.mirror = true; - setRotation(spacer5, 0F, 0F, 0F); - spacer6 = new ModelRenderer(this, 40, 0); - spacer6.addBox(2.5F, -5.5F, 2.5F, 3, 3, 3); - spacer6.setRotationPoint(0F, 16F, 0F); - spacer6.setTextureSize(64, 32); - spacer6.mirror = true; - setRotation(spacer6, 0F, 0F, 0F); - spacer7 = new ModelRenderer(this, 40, 0); - spacer7.addBox(2.5F, -5.5F, -5.5F, 3, 3, 3); - spacer7.setRotationPoint(0F, 16F, 0F); - spacer7.setTextureSize(64, 32); - spacer7.mirror = true; - setRotation(spacer7, 0F, 0F, 0F); - spacer8 = new ModelRenderer(this, 40, 0); - spacer8.addBox(-5.5F, -5.5F, -5.5F, 3, 3, 3); - spacer8.setRotationPoint(0F, 16F, 0F); - spacer8.setTextureSize(64, 32); - spacer8.mirror = true; - setRotation(spacer8, 0F, 0F, 0F); - } - - public void render(Entity entity, float f, float f1, float f2, float f3, float f4, float f5, ForgeDirection input, ForgeDirection output) - { - super.render(entity, f, f1, f2, f3, f4, f5); - setRotationAngles(f, f1, f2, f3, f4, f5, entity); - float xInputRot = 0.0f; - float yInputRot = 0.0f; - float zInputRot = 0.0f; - float xOutputRot = 0.0f; - float yOutputRot = 0.0f; - float zOutputRot = 0.0f; - - switch (input) - { - case NORTH: - xInputRot = 0.0f; - yInputRot = 0.0f; - zInputRot = 0.0f; - break; - - case EAST: - xInputRot = 0.0f; - yInputRot = (float) (0.5f * Math.PI); - zInputRot = 0.0f; - break; - - case SOUTH: - xInputRot = 0.0f; - yInputRot = (float) (1.0f * Math.PI); - zInputRot = 0.0f; - break; - - case WEST: - xInputRot = 0.0f; - yInputRot = (float) (-0.5f * Math.PI); - zInputRot = 0.0f; - break; - - case UP: - xInputRot = (float) (-0.5f * Math.PI); - yInputRot = 0.0f; - zInputRot = 0.0f; - break; - - case DOWN: - xInputRot = (float) (0.5f * Math.PI); - yInputRot = 0.0f; - zInputRot = 0.0f; - break; - - default: - break; - } - - switch (output) - { - case NORTH: - xOutputRot = 0.0f; - yOutputRot = (float) (0.5f * Math.PI); - zOutputRot = 0.0f; - break; - - case EAST: - xOutputRot = 0.0f; - yOutputRot = (float) (1.0f * Math.PI); - zOutputRot = 0.0f; - break; - - case SOUTH: - xOutputRot = 0.0f; - yOutputRot = (float) (-0.5f * Math.PI); - zOutputRot = 0.0f; - break; - - case WEST: - xOutputRot = 0.0f; - yOutputRot = 0.0f; - zOutputRot = 0.0f; - break; - - case UP: - xOutputRot = 0.0f; - yOutputRot = 0.0f; - zOutputRot = (float) (-0.5f * Math.PI); - break; - - case DOWN: - xOutputRot = 0.0f; - yOutputRot = 0.0f; - zOutputRot = (float) (0.5f * Math.PI); - break; - - default: - break; - } - - this.setRotation(curvedInput, xInputRot, yInputRot, zInputRot); - this.setRotation(curvedOutput, xOutputRot, yOutputRot, zOutputRot); - this.setRotation(straightBar1, xInputRot, yInputRot, zInputRot); - this.setRotation(curvedBar1, xOutputRot, yOutputRot, zOutputRot); - this.setRotation(straightBar2, xInputRot, yInputRot, zInputRot); - this.setRotation(curvedBar2, xOutputRot, yOutputRot, zOutputRot); - this.setRotation(straightBar3, xInputRot, yInputRot, zInputRot); - this.setRotation(curvedBar3, xOutputRot, yOutputRot, zOutputRot); - this.setRotation(straightBar4, xInputRot, yInputRot, zInputRot); - this.setRotation(curvedBar4, xOutputRot, yOutputRot, zOutputRot); - curvedInput.render(f5); - curvedOutput.render(f5); - //setRotation(curvedOutput,0F,-(float)(Math.PI/2),0F); - straightBar1.render(f5); - curvedBar1.render(f5); - spacer1.render(f5); - straightBar2.render(f5); - curvedBar2.render(f5); - spacer2.render(f5); - straightBar3.render(f5); - curvedBar3.render(f5); - straightBar4.render(f5); - curvedBar4.render(f5); - spacer3.render(f5); - spacer4.render(f5); - spacer5.render(f5); - spacer6.render(f5); - spacer7.render(f5); - spacer8.render(f5); - } - - private void setRotation(ModelRenderer model, float x, float y, float z) - { - model.rotateAngleX = x; - model.rotateAngleY = y; - model.rotateAngleZ = z; - } - - public void setRotationAngles(float f, float f1, float f2, float f3, float f4, float f5, Entity entity) - { - super.setRotationAngles(f, f1, f2, f3, f4, f5, entity); - } -} diff --git a/src-backup/main/java/WayofTime/alchemicalWizardry/common/renderer/model/ModelCrystalBelljar.java b/src-backup/main/java/WayofTime/alchemicalWizardry/common/renderer/model/ModelCrystalBelljar.java deleted file mode 100644 index ce6f7d52..00000000 --- a/src-backup/main/java/WayofTime/alchemicalWizardry/common/renderer/model/ModelCrystalBelljar.java +++ /dev/null @@ -1,119 +0,0 @@ -package WayofTime.alchemicalWizardry.common.renderer.model; - -import net.minecraft.client.model.ModelBase; -import net.minecraft.client.model.ModelRenderer; -import net.minecraft.entity.Entity; - -public class ModelCrystalBelljar extends ModelBase -{ - //fields - ModelRenderer handle1; - ModelRenderer handle2; - ModelRenderer jar1; - ModelRenderer woodBottom; - ModelRenderer jar2; - ModelRenderer jar3; - ModelRenderer jar4; - ModelRenderer jar5; - - public ModelCrystalBelljar() - { - textureWidth = 128; - textureHeight = 64; - - handle1 = new ModelRenderer(this, 0, 17); - handle1.addBox(-2F, -7F, -2F, 4, 1, 4); - handle1.setRotationPoint(0F, 16F, 0F); - handle1.setTextureSize(128, 64); - handle1.mirror = true; - setRotation(handle1, 0F, 0F, 0F); - handle2 = new ModelRenderer(this, 0, 23); - handle2.addBox(-1F, -6F, -1F, 2, 1, 2); - handle2.setRotationPoint(0F, 16F, 0F); - handle2.setTextureSize(128, 64); - handle2.mirror = true; - setRotation(handle2, 0F, 0F, 0F); - jar1 = new ModelRenderer(this, 0, 27); - jar1.addBox(-4F, -5F, -4F, 8, 1, 8); - jar1.setRotationPoint(0F, 16F, 0F); - jar1.setTextureSize(128, 64); - jar1.mirror = true; - setRotation(jar1, 0F, 0F, 0F); - woodBottom = new ModelRenderer(this, 0, 0); - woodBottom.addBox(-7F, 6F, -7F, 14, 2, 14); - woodBottom.setRotationPoint(0F, 16F, 0F); - woodBottom.setTextureSize(128, 64); - woodBottom.mirror = true; - setRotation(woodBottom, 0F, 0F, 0F); - jar2 = new ModelRenderer(this, 0, 38); - jar2.addBox(-5F, -4F, 4F, 10, 10, 1); - jar2.setRotationPoint(0F, 16F, 0F); - jar2.setTextureSize(128, 64); - jar2.mirror = true; - setRotation(jar2, 0F, 0F, 0F); - jar3 = new ModelRenderer(this, 46, 38); - jar3.addBox(4F, -4F, -4F, 1, 10, 8); - jar3.setRotationPoint(0F, 16F, 0F); - jar3.setTextureSize(128, 64); - jar3.mirror = true; - setRotation(jar3, 0F, 0F, 0F); - jar4 = new ModelRenderer(this, 23, 38); - jar4.addBox(-5F, -4F, -5F, 10, 10, 1); - jar4.setRotationPoint(0F, 16F, 0F); - jar4.setTextureSize(128, 64); - jar4.mirror = true; - setRotation(jar4, 0F, 0F, 0F); - jar5 = new ModelRenderer(this, 65, 38); - jar5.addBox(-5F, -4F, -4F, 1, 10, 8); - jar5.setRotationPoint(0F, 16F, 0F); - jar5.setTextureSize(128, 64); - jar5.mirror = true; - setRotation(jar5, 0F, 0F, 0F); - } - - 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); - handle1.render(f5); - handle2.render(f5); - jar1.render(f5); - woodBottom.render(f5); - jar2.render(f5); - jar3.render(f5); - jar4.render(f5); - jar5.render(f5); - } - - public void renderSpecialItem(Entity entity, float f, float f1, float f2, float f3, float f4, float f5, int part) - { - super.render(entity, f, f1, f2, f3, f4, f5); - setRotationAngles(f, f1, f2, f3, f4, f5, entity); - if(part == 0) - { - woodBottom.render(f5); - }else - { - handle1.render(f5); - handle2.render(f5); - jar1.render(f5); - jar2.render(f5); - jar3.render(f5); - jar4.render(f5); - jar5.render(f5); - } - } - - private void setRotation(ModelRenderer model, float x, float y, float z) - { - model.rotateAngleX = x; - model.rotateAngleY = y; - model.rotateAngleZ = z; - } - - public void setRotationAngles(float f, float f1, float f2, float f3, float f4, float f5, Entity entity) - { - super.setRotationAngles(f, f1, f2, f3, f4, f5, entity); - } - -} diff --git a/src-backup/main/java/WayofTime/alchemicalWizardry/common/renderer/model/ModelElemental.java b/src-backup/main/java/WayofTime/alchemicalWizardry/common/renderer/model/ModelElemental.java deleted file mode 100644 index 25cb2814..00000000 --- a/src-backup/main/java/WayofTime/alchemicalWizardry/common/renderer/model/ModelElemental.java +++ /dev/null @@ -1,81 +0,0 @@ -package WayofTime.alchemicalWizardry.common.renderer.model; - -import net.minecraft.client.model.ModelBase; -import net.minecraft.client.model.ModelRenderer; -import net.minecraft.entity.Entity; -import net.minecraft.entity.monster.EntityBlaze; -import net.minecraft.world.World; - -public class ModelElemental extends ModelBase -{ - //fields - ModelRenderer body; - ModelRenderer Shape2; - ModelRenderer Shape1; - ModelRenderer Shape3; - - public ModelElemental() - { - textureWidth = 64; - textureHeight = 32; - body = new ModelRenderer(this, 33, 0); - body.addBox(-3F, -3F, -3F, 6, 6, 6); - body.setRotationPoint(0F, 14F, 0F); - body.setTextureSize(64, 32); - body.mirror = true; - setRotation(body, 0F, 0F, 0F); - Shape2 = new ModelRenderer(this, 0, 0); - Shape2.addBox(-4F, -4F, -4F, 8, 8, 8); - Shape2.setRotationPoint(0F, 14F, 0F); - Shape2.setTextureSize(64, 32); - Shape2.mirror = true; - setRotation(Shape2, ((float) Math.PI / 4F), ((float) Math.PI / 4F), 0F); - Shape1 = new ModelRenderer(this, 0, 0); - Shape1.addBox(-4F, -4F, -4F, 8, 8, 8); - Shape1.setRotationPoint(0F, 14F, 0F); - Shape1.setTextureSize(64, 32); - Shape1.mirror = true; - setRotation(Shape1, 0F, ((float) Math.PI / 4F), ((float) Math.PI / 4F)); - Shape3 = new ModelRenderer(this, 0, 0); - Shape3.addBox(-4F, -4F, -4F, 8, 8, 8); - Shape3.setRotationPoint(0F, 14F, 0F); - Shape3.setTextureSize(64, 32); - Shape3.mirror = true; - setRotation(Shape3, ((float) Math.PI / 4F), 0F, ((float) Math.PI / 4F)); - } - - 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); - body.render(f5); - Shape2.render(f5); - Shape1.render(f5); - Shape3.render(f5); - } - - private void setRotation(ModelRenderer model, float x, float y, float z) - { - model.rotateAngleX = x; - model.rotateAngleY = y; - model.rotateAngleZ = z; - } - - public void setRotationAngles(float f, float f1, float f2, float f3, float f4, float f5, Entity entity) - { - super.setRotationAngles(f, f1, f2, f3, f4, f5, entity); - World world = entity.worldObj; - - if (world == null) - { - return; - } - - int ratio = 20; - float rot = (entity.worldObj.getWorldTime() % ratio) / ratio; - Shape1.rotateAngleX = f / 5; - Shape2.rotateAngleZ = f / 5; - Shape3.rotateAngleY = f / 5; - EntityBlaze d; - } -} diff --git a/src-backup/main/java/WayofTime/alchemicalWizardry/common/renderer/model/ModelEnergyBazookaMainProjectile.java b/src-backup/main/java/WayofTime/alchemicalWizardry/common/renderer/model/ModelEnergyBazookaMainProjectile.java deleted file mode 100644 index de8e7e6b..00000000 --- a/src-backup/main/java/WayofTime/alchemicalWizardry/common/renderer/model/ModelEnergyBazookaMainProjectile.java +++ /dev/null @@ -1,122 +0,0 @@ -package WayofTime.alchemicalWizardry.common.renderer.model; - -import net.minecraft.client.model.ModelBase; -import net.minecraft.client.model.ModelRenderer; -import net.minecraft.entity.Entity; - -public class ModelEnergyBazookaMainProjectile extends ModelBase -{ - //fields - ModelRenderer thirdWarHead; - ModelRenderer firstWarHead; - ModelRenderer secondWarHead; - ModelRenderer support1; - ModelRenderer mainBody; - ModelRenderer support2; - ModelRenderer support3; - ModelRenderer support4; - ModelRenderer base1; - ModelRenderer base2; - ModelRenderer base3; - - public ModelEnergyBazookaMainProjectile() - { - textureWidth = 64; - textureHeight = 32; - thirdWarHead = new ModelRenderer(this, 43, 0); - thirdWarHead.addBox(-1F, -1F, -9F, 2, 2, 1); - thirdWarHead.setRotationPoint(0F, 0F, 0F); - thirdWarHead.setTextureSize(64, 32); - thirdWarHead.mirror = true; - setRotation(thirdWarHead, 0F, 0F, 0F); - firstWarHead = new ModelRenderer(this, 52, 0); - firstWarHead.addBox(-2F, -2F, -8F, 4, 4, 2); - firstWarHead.setRotationPoint(0F, 0F, 0F); - firstWarHead.setTextureSize(64, 32); - firstWarHead.mirror = true; - setRotation(firstWarHead, 0F, 0F, 0F); - secondWarHead = new ModelRenderer(this, 48, 8); - secondWarHead.addBox(-3F, -3F, -6F, 6, 6, 2); - secondWarHead.setRotationPoint(0F, 0F, 0F); - secondWarHead.setTextureSize(64, 32); - secondWarHead.mirror = true; - setRotation(secondWarHead, 0F, 0F, 0F); - support1 = new ModelRenderer(this, 0, 0); - support1.addBox(2F, 2F, -4F, 1, 1, 9); - support1.setRotationPoint(0F, 0F, 0F); - support1.setTextureSize(64, 32); - support1.mirror = true; - setRotation(support1, 0F, 0F, 0F); - mainBody = new ModelRenderer(this, 0, 19); - mainBody.addBox(-2F, -2F, -4F, 4, 4, 9); - mainBody.setRotationPoint(0F, 0F, 0F); - mainBody.setTextureSize(64, 32); - mainBody.mirror = true; - setRotation(mainBody, 0F, 0F, 0F); - support2 = new ModelRenderer(this, 0, 0); - support2.addBox(-3F, 2F, -4F, 1, 1, 9); - support2.setRotationPoint(0F, 0F, 0F); - support2.setTextureSize(64, 32); - support2.mirror = true; - setRotation(support2, 0F, 0F, 0F); - support3 = new ModelRenderer(this, 0, 0); - support3.addBox(-3F, -3F, -4F, 1, 1, 9); - support3.setRotationPoint(0F, 0F, 0F); - support3.setTextureSize(64, 32); - support3.mirror = true; - setRotation(support3, 0F, 0F, 0F); - support4 = new ModelRenderer(this, 0, 0); - support4.addBox(2F, -3F, -4F, 1, 1, 9); - support4.setRotationPoint(0F, 0F, 0F); - support4.setTextureSize(64, 32); - support4.mirror = true; - setRotation(support4, 0F, 0F, 0F); - base1 = new ModelRenderer(this, 28, 0); - base1.addBox(-3F, -3F, 5F, 6, 6, 1); - base1.setRotationPoint(0F, 0F, 0F); - base1.setTextureSize(64, 32); - base1.mirror = true; - setRotation(base1, 0F, 0F, 0F); - base2 = new ModelRenderer(this, 28, 9); - base2.addBox(-2F, -2F, 6F, 4, 4, 1); - base2.setRotationPoint(0F, 0F, 0F); - base2.setTextureSize(64, 32); - base2.mirror = true; - setRotation(base2, 0F, 0F, 0F); - base3 = new ModelRenderer(this, 28, 15); - base3.addBox(-3F, -3F, 7F, 6, 6, 1); - base3.setRotationPoint(0F, 0F, 0F); - base3.setTextureSize(64, 32); - base3.mirror = true; - setRotation(base3, 0F, 0F, 0F); - } - - 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); - thirdWarHead.render(f5); - firstWarHead.render(f5); - secondWarHead.render(f5); - support1.render(f5); - mainBody.render(f5); - support2.render(f5); - support3.render(f5); - support4.render(f5); - base1.render(f5); - base2.render(f5); - base3.render(f5); - } - - private void setRotation(ModelRenderer model, float x, float y, float z) - { - model.rotateAngleX = x; - model.rotateAngleY = y; - model.rotateAngleZ = z; - } - - public void setRotationAngles(float f, float f1, float f2, float f3, float f4, float f5, Entity entity) - { - super.setRotationAngles(f, f1, f2, f3, f4, f5, entity); - } -} \ No newline at end of file diff --git a/src-backup/main/java/WayofTime/alchemicalWizardry/common/renderer/model/ModelFallenAngel.java b/src-backup/main/java/WayofTime/alchemicalWizardry/common/renderer/model/ModelFallenAngel.java deleted file mode 100644 index aacef80d..00000000 --- a/src-backup/main/java/WayofTime/alchemicalWizardry/common/renderer/model/ModelFallenAngel.java +++ /dev/null @@ -1,113 +0,0 @@ -package WayofTime.alchemicalWizardry.common.renderer.model; - -import net.minecraft.client.model.ModelBase; -import net.minecraft.client.model.ModelRenderer; -import net.minecraft.entity.Entity; -import net.minecraft.util.MathHelper; - -public class ModelFallenAngel extends ModelBase -{ - //fields - ModelRenderer leftWing; - ModelRenderer rightWing; - ModelRenderer head; - ModelRenderer body; - ModelRenderer rightarm; - ModelRenderer leftarm; - ModelRenderer rightleg; - ModelRenderer leftleg; - - public ModelFallenAngel() - { - textureWidth = 64; - textureHeight = 32; - leftWing = new ModelRenderer(this, 33, 8); - leftWing.mirror = true; - leftWing.addBox(0F, 0F, 0F, 10, 7, 0); - leftWing.setRotationPoint(0F, 1F, 2F); - leftWing.setTextureSize(64, 32); - leftWing.mirror = true; - setRotation(leftWing, 0F, 0F, 0F); - rightWing = new ModelRenderer(this, 33, 8); - rightWing.addBox(-10F, 0F, 0F, 10, 7, 0); - rightWing.setRotationPoint(0F, 1F, 2F); - rightWing.setTextureSize(64, 32); - rightWing.mirror = true; - setRotation(rightWing, 0F, 0F, 0F); - rightWing.mirror = false; - head = new ModelRenderer(this, 0, 0); - head.addBox(-4F, -8F, -4F, 8, 8, 8); - head.setRotationPoint(0F, 0F, 0F); - head.setTextureSize(64, 32); - head.mirror = true; - setRotation(head, 0F, 0F, 0F); - body = new ModelRenderer(this, 16, 16); - body.addBox(-4F, 0F, -2F, 8, 12, 4); - body.setRotationPoint(0F, 0F, 0F); - body.setTextureSize(64, 32); - body.mirror = true; - setRotation(body, 0F, 0F, 0F); - rightarm = new ModelRenderer(this, 40, 16); - rightarm.addBox(-3F, -2F, -2F, 4, 12, 4); - rightarm.setRotationPoint(-5F, 2F, 0F); - rightarm.setTextureSize(64, 32); - rightarm.mirror = true; - setRotation(rightarm, 0F, 0F, 0F); - rightarm.mirror = false; - leftarm = new ModelRenderer(this, 40, 16); - leftarm.mirror = true; - leftarm.addBox(-1F, -2F, -2F, 4, 12, 4); - leftarm.setRotationPoint(5F, 2F, 0F); - leftarm.setTextureSize(64, 32); - leftarm.mirror = true; - setRotation(leftarm, 0F, 0F, 0F); - rightleg = new ModelRenderer(this, 0, 16); - rightleg.addBox(-2F, 0F, -2F, 4, 12, 4); - rightleg.setRotationPoint(-2F, 12F, 0F); - rightleg.setTextureSize(64, 32); - rightleg.mirror = true; - setRotation(rightleg, 0F, 0F, 0F); - rightleg.mirror = false; - leftleg = new ModelRenderer(this, 0, 16); - leftleg.mirror = true; - leftleg.addBox(-2F, 0F, -2F, 4, 12, 4); - leftleg.setRotationPoint(2F, 12F, 0F); - leftleg.setTextureSize(64, 32); - leftleg.mirror = true; - setRotation(leftleg, 0F, 0F, 0F); - } - - 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); - leftWing.render(f5); - rightWing.render(f5); - head.render(f5); - body.render(f5); - rightarm.render(f5); - leftarm.render(f5); - rightleg.render(f5); - leftleg.render(f5); - } - - private void setRotation(ModelRenderer model, float x, float y, float z) - { - model.rotateAngleX = x; - model.rotateAngleY = y; - model.rotateAngleZ = z; - } - - public void setRotationAngles(float f, float f1, float f2, float f3, float f4, float f5, Entity entity) - { - super.setRotationAngles(f, f1, f2, f3, f4, f5, entity); - this.head.rotateAngleX = f4 / (180F / (float) Math.PI); - this.head.rotateAngleY = f3 / (180F / (float) Math.PI); - this.leftleg.rotateAngleX = MathHelper.cos(f * 0.6662F) * 1.4F * f1; - this.rightleg.rotateAngleX = MathHelper.cos(f * 0.6662F + (float) Math.PI) * 1.4F * f1; - this.rightarm.rotateAngleX = MathHelper.cos(f * 0.6662F + (float) Math.PI) * 1.4F * f1; - this.leftarm.rotateAngleX = MathHelper.cos(f * 0.6662F) * 1.4F * f1; - this.rightWing.rotateAngleY = MathHelper.cos(0.1662F); - this.leftWing.rotateAngleY = MathHelper.cos(0.1662F + (float) Math.PI); - } -} diff --git a/src-backup/main/java/WayofTime/alchemicalWizardry/common/renderer/model/ModelIceDemon.java b/src-backup/main/java/WayofTime/alchemicalWizardry/common/renderer/model/ModelIceDemon.java deleted file mode 100644 index 9c6d3c32..00000000 --- a/src-backup/main/java/WayofTime/alchemicalWizardry/common/renderer/model/ModelIceDemon.java +++ /dev/null @@ -1,197 +0,0 @@ -package WayofTime.alchemicalWizardry.common.renderer.model; - -import net.minecraft.client.model.ModelBase; -import net.minecraft.client.model.ModelRenderer; -import net.minecraft.entity.Entity; -import net.minecraft.util.MathHelper; - -public class ModelIceDemon extends ModelBase -{ - //fields - ModelRenderer head; - ModelRenderer leftHorn; - ModelRenderer rightHorn; - ModelRenderer body; - ModelRenderer leftArm; - ModelRenderer leftWrist; - ModelRenderer leftIcicle1; - ModelRenderer leftIcicle2; - ModelRenderer leftIcicle3; - ModelRenderer leftLeg; - ModelRenderer rightArm; - ModelRenderer rightWrist; - ModelRenderer rightIcicle1; - ModelRenderer rightIcicle2; - ModelRenderer rightIcicle3; - ModelRenderer rightLeg; - ModelRenderer Shape1; - - public ModelIceDemon() - { - textureWidth = 64; - textureHeight = 64; - head = new ModelRenderer(this, 40, 0); - head.addBox(-3F, -8F, -3F, 6, 8, 6); - head.setRotationPoint(0F, -3F, 0F); - head.setTextureSize(64, 64); - head.mirror = true; - setRotation(head, 0F, 0F, 0F); - leftHorn = new ModelRenderer(this, 0, 0); - leftHorn.addBox(3F, -7F, 2F, 1, 1, 10); - leftHorn.setRotationPoint(0F, -3F, 0F); - leftHorn.setTextureSize(64, 64); - leftHorn.mirror = true; - setRotation(leftHorn, 0.4363323F, 0F, 0F); - rightHorn = new ModelRenderer(this, 0, 0); - rightHorn.mirror = true; - rightHorn.addBox(-4F, -7F, 2F, 1, 1, 10); - rightHorn.setRotationPoint(0F, -3F, 0F); - rightHorn.setTextureSize(64, 64); - rightHorn.mirror = true; - setRotation(rightHorn, 0.4363323F, 0F, 0F); - rightHorn.mirror = false; - body = new ModelRenderer(this, 40, 15); - body.addBox(-4F, 0F, -2F, 8, 13, 4); - body.setRotationPoint(0F, -3F, 0F); - body.setTextureSize(64, 64); - body.mirror = true; - setRotation(body, 0F, 0F, 0F); - leftArm = new ModelRenderer(this, 0, 48); - leftArm.addBox(0F, -2F, -2F, 4, 12, 4); - leftArm.setRotationPoint(4F, -1F, 0F); - leftArm.setTextureSize(64, 64); - leftArm.mirror = true; - setRotation(leftArm, 0F, 0F, 0F); - leftWrist = new ModelRenderer(this, 32, 57); - leftWrist.addBox(0F, 6F, -2.5F, 5, 2, 5); - leftWrist.setRotationPoint(4F, -1F, 0F); - leftWrist.setTextureSize(64, 64); - leftWrist.mirror = true; - setRotation(leftWrist, 0F, 0F, 0F); - leftIcicle1 = new ModelRenderer(this, 0, 0); - leftIcicle1.addBox(4.9F, 0F, -0.5F, 1, 6, 1); - leftIcicle1.setRotationPoint(4F, -1F, 0F); - leftIcicle1.setTextureSize(64, 64); - leftIcicle1.mirror = true; - setRotation(leftIcicle1, 0F, 0F, 0.1396263F); - leftIcicle2 = new ModelRenderer(this, 0, 0); - leftIcicle2.addBox(5F, 0F, 0F, 1, 6, 1); - leftIcicle2.setRotationPoint(4F, -1F, 0F); - leftIcicle2.setTextureSize(64, 64); - leftIcicle2.mirror = true; - setRotation(leftIcicle2, 0F, 0.5585054F, 0.1919862F); - leftIcicle3 = new ModelRenderer(this, 0, 0); - leftIcicle3.addBox(5F, 0F, -1F, 1, 6, 1); - leftIcicle3.setRotationPoint(4F, -1F, 0F); - leftIcicle3.setTextureSize(64, 64); - leftIcicle3.mirror = true; - setRotation(leftIcicle3, 0F, -0.5585054F, 0.1919862F); - leftLeg = new ModelRenderer(this, 16, 46); - leftLeg.addBox(-2F, 0F, -2F, 4, 14, 4); - leftLeg.setRotationPoint(2F, 10F, 0F); - leftLeg.setTextureSize(64, 64); - leftLeg.mirror = true; - setRotation(leftLeg, 0F, 0F, 0F); - rightArm = new ModelRenderer(this, 0, 48); - rightArm.mirror = true; - rightArm.addBox(-4F, -2F, -2F, 4, 12, 4); - rightArm.setRotationPoint(-4F, -1F, 0F); - rightArm.setTextureSize(64, 64); - rightArm.mirror = true; - setRotation(rightArm, 0F, 0F, 0F); - rightArm.mirror = false; - rightWrist = new ModelRenderer(this, 32, 57); - rightWrist.mirror = true; - rightWrist.addBox(-5F, 6F, -2.5F, 5, 2, 5); - rightWrist.setRotationPoint(-4F, -1F, 0F); - rightWrist.setTextureSize(64, 64); - rightWrist.mirror = true; - setRotation(rightWrist, 0F, 0F, 0F); - rightWrist.mirror = false; - rightIcicle1 = new ModelRenderer(this, 0, 0); - rightIcicle1.addBox(-5.9F, 0F, -0.5F, 1, 6, 1); - rightIcicle1.setRotationPoint(-4F, -1F, 0F); - rightIcicle1.setTextureSize(64, 64); - rightIcicle1.mirror = true; - setRotation(rightIcicle1, 0F, 0F, -0.1396263F); - rightIcicle2 = new ModelRenderer(this, 0, 0); - rightIcicle2.addBox(-6F, 0F, 0F, 1, 6, 1); - rightIcicle2.setRotationPoint(-4F, -1F, 0F); - rightIcicle2.setTextureSize(64, 64); - rightIcicle2.mirror = true; - setRotation(rightIcicle2, 0F, -0.5585054F, -0.1919862F); - rightIcicle3 = new ModelRenderer(this, 0, 0); - rightIcicle3.addBox(-6F, 0F, -1F, 1, 6, 1); - rightIcicle3.setRotationPoint(-4F, -1F, 0F); - rightIcicle3.setTextureSize(64, 64); - rightIcicle3.mirror = true; - setRotation(rightIcicle3, 0F, 0.5585054F, -0.1919862F); - rightLeg = new ModelRenderer(this, 16, 46); - rightLeg.mirror = true; - rightLeg.addBox(-2F, 0F, -2F, 4, 14, 4); - rightLeg.setRotationPoint(-2F, 10F, 0F); - rightLeg.setTextureSize(64, 64); - rightLeg.mirror = true; - setRotation(rightLeg, 0F, 0F, 0F); - rightLeg.mirror = false; - Shape1 = new ModelRenderer(this, 0, 12); - Shape1.addBox(-0.5F, 0F, -0.5F, 1, 10, 1); - Shape1.setRotationPoint(0F, 8F, 1.5F); - Shape1.setTextureSize(64, 64); - Shape1.mirror = true; - setRotation(Shape1, 0.5948578F, 0F, 0F); - } - - 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); - head.render(f5); - leftHorn.render(f5); - rightHorn.render(f5); - body.render(f5); - leftArm.render(f5); - leftWrist.render(f5); - leftIcicle1.render(f5); - leftIcicle2.render(f5); - leftIcicle3.render(f5); - leftLeg.render(f5); - rightArm.render(f5); - rightWrist.render(f5); - rightIcicle1.render(f5); - rightIcicle2.render(f5); - rightIcicle3.render(f5); - rightLeg.render(f5); - Shape1.render(f5); - } - - private void setRotation(ModelRenderer model, float x, float y, float z) - { - model.rotateAngleX = x; - model.rotateAngleY = y; - model.rotateAngleZ = z; - } - - public void setRotationAngles(float f, float f1, float f2, float f3, float f4, float f5, Entity entity) - { - super.setRotationAngles(f, f1, f2, f3, f4, f5, entity); - this.head.rotateAngleX = f4 / (180F / (float) Math.PI); - this.head.rotateAngleY = f3 / (180F / (float) Math.PI); - this.leftLeg.rotateAngleX = MathHelper.cos(f * 0.6662F) * 1.4F * f1; - this.rightLeg.rotateAngleX = MathHelper.cos(f * 0.6662F + (float) Math.PI) * 1.4F * f1; - this.rightArm.rotateAngleX = MathHelper.cos(f * 0.6662F + (float) Math.PI) * 1.4F * f1; - this.leftArm.rotateAngleX = MathHelper.cos(f * 0.6662F) * 1.4F * f1; - this.leftHorn.rotateAngleX = head.rotateAngleX + 0.4363323F; - this.leftHorn.rotateAngleY = head.rotateAngleY; - this.rightHorn.rotateAngleX = head.rotateAngleX + 0.4363323F; - this.rightHorn.rotateAngleY = head.rotateAngleY; - this.rightIcicle1.rotateAngleX = rightArm.rotateAngleX; - this.rightIcicle2.rotateAngleX = rightArm.rotateAngleX; - this.rightIcicle3.rotateAngleX = rightArm.rotateAngleX; - this.leftIcicle1.rotateAngleX = leftArm.rotateAngleX; - this.leftIcicle2.rotateAngleX = leftArm.rotateAngleX; - this.leftIcicle3.rotateAngleX = leftArm.rotateAngleX; - this.rightWrist.rotateAngleX = rightArm.rotateAngleX; - this.leftWrist.rotateAngleX = leftArm.rotateAngleX; - } -} diff --git a/src-backup/main/java/WayofTime/alchemicalWizardry/common/renderer/model/ModelLowerGuardian.java b/src-backup/main/java/WayofTime/alchemicalWizardry/common/renderer/model/ModelLowerGuardian.java deleted file mode 100644 index 61d7b85d..00000000 --- a/src-backup/main/java/WayofTime/alchemicalWizardry/common/renderer/model/ModelLowerGuardian.java +++ /dev/null @@ -1,207 +0,0 @@ -package WayofTime.alchemicalWizardry.common.renderer.model; - -import WayofTime.alchemicalWizardry.common.entity.mob.EntityLowerGuardian; -import net.minecraft.client.model.ModelBase; -import net.minecraft.client.model.ModelRenderer; -import net.minecraft.entity.Entity; -import net.minecraft.entity.EntityLivingBase; -import net.minecraft.util.MathHelper; - -public class ModelLowerGuardian extends ModelBase -{ - //fields - ModelRenderer Body; - ModelRenderer Torso; - ModelRenderer Head; - ModelRenderer leftArm; - ModelRenderer rightArm; - ModelRenderer leftLeg; - ModelRenderer leftFoot; - ModelRenderer rightLeg; - ModelRenderer rightFoot; - ModelRenderer leftHorn; - ModelRenderer hornAppendage1; - ModelRenderer hornAppendage2; - ModelRenderer rightHorn; - ModelRenderer hornAppendage3; - ModelRenderer hornAppendage4; - - public ModelLowerGuardian() - { - textureWidth = 64; - textureHeight = 64; - Body = new ModelRenderer(this, 0, 0); - Body.addBox(-8F, -7F, -4F, 16, 14, 8); - Body.setRotationPoint(0F, -3F, 0F); - Body.setTextureSize(64, 64); - Body.mirror = true; - setRotation(Body, 0F, 0F, 0F); - Torso = new ModelRenderer(this, 0, 25); - Torso.addBox(-4F, 0F, -3F, 8, 4, 6); - Torso.setRotationPoint(0F, 4F, 0F); - Torso.setTextureSize(64, 64); - Torso.mirror = true; - setRotation(Torso, 0F, 0F, 0F); - Head = new ModelRenderer(this, 29, 25); - Head.addBox(-4F, -8F, -4F, 8, 8, 8); - Head.setRotationPoint(0F, -10F, 0F); - Head.setTextureSize(64, 64); - Head.mirror = true; - setRotation(Head, 0F, 0F, 0F); - leftArm = new ModelRenderer(this, 17, 42); - leftArm.addBox(0F, -2F, -2F, 4, 18, 4); - leftArm.setRotationPoint(8F, -8F, 0F); - leftArm.setTextureSize(64, 64); - leftArm.mirror = true; - setRotation(leftArm, 0F, 0F, 0F); - rightArm = new ModelRenderer(this, 17, 42); - rightArm.mirror = true; - rightArm.addBox(-4F, -2F, -2F, 4, 18, 4); - rightArm.setRotationPoint(-8F, -8F, 0F); - rightArm.setTextureSize(64, 64); - rightArm.mirror = true; - setRotation(rightArm, 0F, 0F, 0F); - rightArm.mirror = false; - leftLeg = new ModelRenderer(this, 0, 42); - leftLeg.addBox(0F, -2F, -2F, 4, 17, 4); - leftLeg.setRotationPoint(4F, 6F, 0F); - leftLeg.setTextureSize(64, 64); - leftLeg.mirror = true; - setRotation(leftLeg, 0F, 0F, 0F); - leftFoot = new ModelRenderer(this, 34, 42); - leftFoot.addBox(0F, 15F, -6F, 4, 3, 8); - leftFoot.setRotationPoint(4F, 6F, 0F); - leftFoot.setTextureSize(64, 64); - leftFoot.mirror = true; - setRotation(leftFoot, 0F, 0F, 0F); - rightLeg = new ModelRenderer(this, 0, 42); - rightLeg.mirror = true; - rightLeg.addBox(-4F, -2F, -2F, 4, 17, 4); - rightLeg.setRotationPoint(-4F, 6F, 0F); - rightLeg.setTextureSize(64, 64); - rightLeg.mirror = true; - setRotation(rightLeg, 0F, 0F, 0F); - rightLeg.mirror = false; - rightFoot = new ModelRenderer(this, 34, 42); - rightFoot.mirror = true; - rightFoot.addBox(-4F, 15F, -6F, 4, 3, 8); - rightFoot.setRotationPoint(-4F, 6F, 0F); - rightFoot.setTextureSize(64, 64); - rightFoot.mirror = true; - setRotation(rightFoot, 0F, 0F, 0F); - rightFoot.mirror = false; - leftHorn = new ModelRenderer(this, 0, 0); - leftHorn.addBox(4F, -11F, 0F, 1, 6, 1); - leftHorn.setRotationPoint(0F, -10F, 0F); - leftHorn.setTextureSize(64, 64); - leftHorn.mirror = true; - setRotation(leftHorn, 0F, 0F, 0F); - hornAppendage1 = new ModelRenderer(this, 0, 0); - hornAppendage1.addBox(4F, -7F, -1F, 1, 1, 1); - hornAppendage1.setRotationPoint(0F, -10F, 0F); - hornAppendage1.setTextureSize(64, 64); - hornAppendage1.mirror = true; - setRotation(hornAppendage1, 0F, 0F, 0F); - hornAppendage2 = new ModelRenderer(this, 0, 0); - hornAppendage2.addBox(4F, -6F, 1F, 1, 1, 1); - hornAppendage2.setRotationPoint(0F, -10F, 0F); - hornAppendage2.setTextureSize(64, 64); - hornAppendage2.mirror = true; - setRotation(hornAppendage2, 0F, 0F, 0F); - rightHorn = new ModelRenderer(this, 0, 0); - rightHorn.mirror = true; - rightHorn.addBox(-5F, -11F, 0F, 1, 6, 1); - rightHorn.setRotationPoint(0F, -10F, 0F); - rightHorn.setTextureSize(64, 64); - rightHorn.mirror = true; - setRotation(rightHorn, 0F, 0F, 0F); - rightHorn.mirror = false; - hornAppendage3 = new ModelRenderer(this, 0, 0); - hornAppendage3.mirror = true; - hornAppendage3.addBox(-5F, -7F, -1F, 1, 1, 1); - hornAppendage3.setRotationPoint(0F, -10F, 0F); - hornAppendage3.setTextureSize(64, 64); - hornAppendage3.mirror = true; - setRotation(hornAppendage3, 0F, 0F, 0F); - hornAppendage3.mirror = false; - hornAppendage4 = new ModelRenderer(this, 0, 0); - hornAppendage4.mirror = true; - hornAppendage4.addBox(-5F, -6F, 1F, 1, 1, 1); - hornAppendage4.setRotationPoint(0F, -10F, 0F); - hornAppendage4.setTextureSize(64, 64); - hornAppendage4.mirror = true; - setRotation(hornAppendage4, 0F, 0F, 0F); - hornAppendage4.mirror = false; - } - - 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); - Body.render(f5); - Torso.render(f5); - Head.render(f5); - leftArm.render(f5); - rightArm.render(f5); - leftLeg.render(f5); - leftFoot.render(f5); - rightLeg.render(f5); - rightFoot.render(f5); - leftHorn.render(f5); - hornAppendage1.render(f5); - hornAppendage2.render(f5); - rightHorn.render(f5); - hornAppendage3.render(f5); - hornAppendage4.render(f5); - } - - private void setRotation(ModelRenderer model, float x, float y, float z) - { - model.rotateAngleX = x; - model.rotateAngleY = y; - model.rotateAngleZ = z; - } - - public void setLivingAnimations(EntityLivingBase par1EntityLivingBase, float par2, float par3, float par4) - { - EntityLowerGuardian entityLowerGuardian = (EntityLowerGuardian) par1EntityLivingBase; - int i = entityLowerGuardian.getAttackTimer(); - - if (i > 0) - { - this.rightLeg.rotateAngleX = -2.0F + 1.5F * this.func_78172_a((float) i - par4, 10.0F); - this.rightFoot.rotateAngleX = -2.0F + 1.5F * this.func_78172_a((float) i - par4, 10.0F); - //this.ironGolemLeftArm.rotateAngleX = -2.0F + 1.5F * this.func_78172_a((float)i - par4, 10.0F); - } - } - - private float func_78172_a(float par1, float par2) - { - return (Math.abs(par1 % par2 - par2 * 0.5F) - par2 * 0.25F) / (par2 * 0.25F); - } - - public void setRotationAngles(float f, float f1, float f2, float f3, float f4, float f5, Entity entity) - { - super.setRotationAngles(f, f1, f2, f3, f4, f5, entity); - this.Head.rotateAngleX = f4 / (180F / (float) Math.PI); - this.Head.rotateAngleY = f3 / (180F / (float) Math.PI); - this.leftLeg.rotateAngleX = MathHelper.cos(f * 0.3662F) * 1.0F * f1; - this.rightLeg.rotateAngleX = MathHelper.cos(f * 0.3662F + (float) Math.PI) * 1.0F * f1; - this.leftFoot.rotateAngleX = MathHelper.cos(f * 0.3662F) * 1.0F * f1; - this.rightFoot.rotateAngleX = MathHelper.cos(f * 0.3662F + (float) Math.PI) * 1.0F * f1; - this.rightArm.rotateAngleX = MathHelper.cos(f * 0.3662F + (float) Math.PI) * 1.0F * f1; - this.leftArm.rotateAngleX = MathHelper.cos(f * 0.3662F) * 1.0F * f1; - this.hornAppendage1.rotateAngleX = this.Head.rotateAngleX; - this.hornAppendage1.rotateAngleY = this.Head.rotateAngleY; - this.hornAppendage2.rotateAngleX = this.Head.rotateAngleX; - this.hornAppendage2.rotateAngleY = this.Head.rotateAngleY; - this.hornAppendage3.rotateAngleX = this.Head.rotateAngleX; - this.hornAppendage3.rotateAngleY = this.Head.rotateAngleY; - this.hornAppendage4.rotateAngleX = this.Head.rotateAngleX; - this.hornAppendage4.rotateAngleY = this.Head.rotateAngleY; - this.leftHorn.rotateAngleX = this.Head.rotateAngleX; - this.leftHorn.rotateAngleY = this.Head.rotateAngleY; - this.rightHorn.rotateAngleX = this.Head.rotateAngleX; - this.rightHorn.rotateAngleY = this.Head.rotateAngleY; - } -} diff --git a/src-backup/main/java/WayofTime/alchemicalWizardry/common/renderer/model/ModelMeteor.java b/src-backup/main/java/WayofTime/alchemicalWizardry/common/renderer/model/ModelMeteor.java deleted file mode 100644 index 26a94989..00000000 --- a/src-backup/main/java/WayofTime/alchemicalWizardry/common/renderer/model/ModelMeteor.java +++ /dev/null @@ -1,90 +0,0 @@ -package WayofTime.alchemicalWizardry.common.renderer.model; - -import net.minecraft.client.model.ModelBase; -import net.minecraft.client.model.ModelRenderer; -import net.minecraft.entity.Entity; - -public class ModelMeteor extends ModelBase -{ - //fields - ModelRenderer Shape1; - ModelRenderer Shape2; - ModelRenderer Shape3; - ModelRenderer Shape4; - ModelRenderer Shape5; - ModelRenderer Shape6; - ModelRenderer Shape7; - - public ModelMeteor() - { - textureWidth = 64; - textureHeight = 64; - Shape1 = new ModelRenderer(this, 0, 0); - Shape1.addBox(-8F, -8F, -8F, 16, 16, 16); - Shape1.setRotationPoint(0F, 0F, 0F); - Shape1.setTextureSize(64, 64); - Shape1.mirror = true; - setRotation(Shape1, 0F, 0F, 0F); - Shape2 = new ModelRenderer(this, 0, 32); - Shape2.addBox(3F, -10F, -1F, 12, 12, 12); - Shape2.setRotationPoint(0F, 0F, 0F); - Shape2.setTextureSize(64, 64); - Shape2.mirror = true; - setRotation(Shape2, 0F, 0F, 0F); - Shape3 = new ModelRenderer(this, 0, 32); - Shape3.addBox(0F, 0F, -10F, 12, 12, 12); - Shape3.setRotationPoint(0F, 0F, 0F); - Shape3.setTextureSize(64, 64); - Shape3.mirror = true; - setRotation(Shape3, 0F, 0F, 0F); - Shape4 = new ModelRenderer(this, 0, 32); - Shape4.addBox(1F, 2F, 2F, 12, 12, 12); - Shape4.setRotationPoint(0F, 0F, 0F); - Shape4.setTextureSize(64, 64); - Shape4.mirror = true; - setRotation(Shape4, 0F, 0F, 0F); - Shape5 = new ModelRenderer(this, 0, 32); - Shape5.addBox(-12F, -5F, 0F, 12, 12, 12); - Shape5.setRotationPoint(0F, 0F, 0F); - Shape5.setTextureSize(64, 64); - Shape5.mirror = true; - setRotation(Shape5, 0F, 0F, 0F); - Shape6 = new ModelRenderer(this, 0, 32); - Shape6.addBox(-13F, -2F, -11F, 12, 12, 12); - Shape6.setRotationPoint(0F, 0F, 0F); - Shape6.setTextureSize(64, 64); - Shape6.mirror = true; - setRotation(Shape6, 0F, 0F, 0F); - Shape7 = new ModelRenderer(this, 0, 32); - Shape7.addBox(-6F, -14F, -9F, 12, 12, 12); - Shape7.setRotationPoint(0F, 0F, 0F); - Shape7.setTextureSize(64, 64); - Shape7.mirror = true; - setRotation(Shape7, 0F, 0F, 0F); - } - - 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); - Shape1.render(f5); - Shape2.render(f5); - Shape3.render(f5); - Shape4.render(f5); - Shape5.render(f5); - Shape6.render(f5); - Shape7.render(f5); - } - - private void setRotation(ModelRenderer model, float x, float y, float z) - { - model.rotateAngleX = x; - model.rotateAngleY = y; - model.rotateAngleZ = z; - } - - public void setRotationAngles(float f, float f1, float f2, float f3, float f4, float f5, Entity entity) - { - super.setRotationAngles(f, f1, f2, f3, f4, f5, entity); - } -} diff --git a/src-backup/main/java/WayofTime/alchemicalWizardry/common/renderer/model/ModelOmegaArmour.java b/src-backup/main/java/WayofTime/alchemicalWizardry/common/renderer/model/ModelOmegaArmour.java deleted file mode 100644 index f583149e..00000000 --- a/src-backup/main/java/WayofTime/alchemicalWizardry/common/renderer/model/ModelOmegaArmour.java +++ /dev/null @@ -1,899 +0,0 @@ -package WayofTime.alchemicalWizardry.common.renderer.model; - -import net.minecraft.client.model.ModelBiped; -import net.minecraft.client.model.ModelRenderer; -import net.minecraft.entity.Entity; - -public class ModelOmegaArmour extends ModelBiped -{ -// ModelRenderer head; -// ModelRenderer body; -// ModelRenderer rightarm; -// ModelRenderer leftarm; -// ModelRenderer rightleg; -// ModelRenderer leftleg; - ModelRenderer leftFacePlate; - ModelRenderer rightFacePlate; - ModelRenderer facePlate1; - ModelRenderer facePlate2; - ModelRenderer facePlate3; - ModelRenderer leftWingPlate1; - ModelRenderer leftWingPlate2; - ModelRenderer rightWingPlate1; - ModelRenderer rightWingPlate2; - ModelRenderer topPlate1; - ModelRenderer topPlate2; - ModelRenderer topPlate3; - ModelRenderer backPlate1; - ModelRenderer backPlate2; - ModelRenderer backPlate3; - ModelRenderer backPlate4; - ModelRenderer backPlate5; - ModelRenderer backPlate6; - ModelRenderer eyePlate; - ModelRenderer rightArmMain; - ModelRenderer rightKnucklePlate; - ModelRenderer rightKnuckleBrace; - ModelRenderer rightKnuckle1; - ModelRenderer rightKnuckle2; - ModelRenderer rightKnuckle3; - ModelRenderer rightKnuckle4; - ModelRenderer rightKnuckle5; - ModelRenderer rightKnuckle6; - ModelRenderer rightShoulder1; - ModelRenderer rightShoulder2; - ModelRenderer rightShoulder3; - ModelRenderer mainPlate; - ModelRenderer chestPlate1; - ModelRenderer chestPlate2; - ModelRenderer chestPlate3; - ModelRenderer chestPlate4; - ModelRenderer chestPlate5; - ModelRenderer chestPlate6; - ModelRenderer belt; - ModelRenderer leftArmMain; - ModelRenderer leftKnucklePlate; - ModelRenderer leftKnuckleBrace; - ModelRenderer leftKnuckle1; - ModelRenderer leftKnuckle2; - ModelRenderer leftKnuckle3; - ModelRenderer leftKnuckle4; - ModelRenderer leftKnuckle5; - ModelRenderer leftKnuckle6; - ModelRenderer leftShoulder1; - ModelRenderer leftShoulder2; - ModelRenderer leftShoulder3; - ModelRenderer leftBootBottom; - ModelRenderer leftBootPlate; - ModelRenderer leftBootBrace; - ModelRenderer leftBootWing1; - ModelRenderer leftBootWing2; - ModelRenderer rightBootBottom; - ModelRenderer rightBootPlate; - ModelRenderer rightBootBrace; - ModelRenderer rightBootWing1; - ModelRenderer rightBootWing2; - ModelRenderer leftLegSidePlate; - ModelRenderer leftLegMain; - ModelRenderer leftLegPlate1; - ModelRenderer leftLegPlate2; - ModelRenderer leftLegPlate3; - ModelRenderer leftLegPlate4; - ModelRenderer rightLegSidePlate; - ModelRenderer rightLegMain; - ModelRenderer rightLegPlate1; - ModelRenderer rightLegPlate2; - ModelRenderer rightLegPlate3; - ModelRenderer rightLegPlate4; - - public ModelOmegaArmour(float f, boolean addHelmet, boolean addChestPiece, boolean addLeggings, boolean addBoots) - { - super(f, 0.0f, 128, 128); - textureWidth = 128; - textureHeight = 128; - -// boolean addHelmet = true; -// boolean addChestPiece = true; -// boolean addLeggings = true; -// boolean addBoots = true; - - /* Duplicate player model */ - { -// head = new ModelRenderer(this, 0, 0); -// head.addBox(-4F, -8F, -4F, 8, 8, 8); -// head.setRotationPoint(0F, 0F, 0F); -// head.setTextureSize(128, 128); -// head.mirror = true; -// setRotation(head, 0F, 0F, 0F); -// body = new ModelRenderer(this, 16, 16); -// body.addBox(-4F, 0F, -2F, 8, 12, 4); -// body.setRotationPoint(0F, 0F, 0F); -// body.setTextureSize(128, 128); -// body.mirror = true; -// setRotation(body, 0F, 0F, 0F); -// rightarm = new ModelRenderer(this, 40, 16); -// rightarm.addBox(-3F, -2F, -2F, 4, 12, 4); -// rightarm.setRotationPoint(0F, 0F, 0F); -// rightarm.setTextureSize(128, 128); -// rightarm.mirror = true; -// setRotation(rightarm, 0F, 0F, 0F); -// leftarm = new ModelRenderer(this, 40, 16); -// leftarm.addBox(-1F, -2F, -2F, 4, 12, 4); -// leftarm.setRotationPoint(0F, 0F, 0F); -// leftarm.setTextureSize(128, 128); -// leftarm.mirror = true; -// setRotation(leftarm, 0F, 0F, 0F); -// rightleg = new ModelRenderer(this, 0, 16); -// rightleg.addBox(-2F, 0F, -2F, 4, 12, 4); -// rightleg.setRotationPoint(-2F, 12F, 0F); -// rightleg.setTextureSize(128, 128); -// rightleg.mirror = true; -// setRotation(rightleg, 0F, 0F, 0F); -// leftleg = new ModelRenderer(this, 0, 16); -// leftleg.addBox(-2F, 0F, -2F, 4, 12, 4); -// leftleg.setRotationPoint(2F, 12F, 0F); -// leftleg.setTextureSize(128, 128); -// leftleg.mirror = true; -// setRotation(leftleg, 0F, 0F, 0F); - } - - /* Helmet */ - { - leftFacePlate = new ModelRenderer(this, 66, 52); - leftFacePlate.addBox(-2F, -5F, -5F, 5, 4, 1); - leftFacePlate.setRotationPoint(0F, 0F, 0F); - leftFacePlate.setTextureSize(128, 128); - leftFacePlate.mirror = true; - setRotation(leftFacePlate, 0.296706F, -0.3490659F, -0.0872665F); - - rightFacePlate = new ModelRenderer(this, 66, 52); - rightFacePlate.mirror = true; - rightFacePlate.addBox(-3F, -5F, -5F, 5, 4, 1); - rightFacePlate.setRotationPoint(0F, 0F, 0F); - rightFacePlate.setTextureSize(128, 128); - rightFacePlate.mirror = true; - setRotation(rightFacePlate, 0.296706F, 0.3490659F, 0.0872665F); - rightFacePlate.mirror = false; - - facePlate1 = new ModelRenderer(this, 79, 52); - facePlate1.addBox(-5F, -8F, -5F, 10, 3, 1); - facePlate1.setRotationPoint(0F, 0F, 0F); - facePlate1.setTextureSize(128, 128); - facePlate1.mirror = true; - setRotation(facePlate1, 0F, 0F, 0F); - - facePlate2 = new ModelRenderer(this, 79, 57); - facePlate2.addBox(-1F, -5F, -5F, 2, 1, 1); - facePlate2.setRotationPoint(0F, 0F, 0F); - facePlate2.setTextureSize(128, 128); - facePlate2.mirror = true; - setRotation(facePlate2, 0F, 0F, 0F); - - facePlate3 = new ModelRenderer(this, 79, 60); - facePlate3.addBox(-3F, -4F, -5F, 6, 1, 1); - facePlate3.setRotationPoint(0F, 0F, 0F); - facePlate3.setTextureSize(128, 128); - facePlate3.mirror = true; - setRotation(facePlate3, 0F, 0F, 0F); - - leftWingPlate1 = new ModelRenderer(this, 66, 58); - leftWingPlate1.addBox(5F, -5F, -2.5F, 1, 5, 8); - leftWingPlate1.setRotationPoint(0F, 0F, 0F); - leftWingPlate1.setTextureSize(128, 128); - leftWingPlate1.mirror = true; - setRotation(leftWingPlate1, 0.2617994F, 0.1745329F, 0F); - - leftWingPlate2 = new ModelRenderer(this, 66, 72); - leftWingPlate2.addBox(5F, -8F, -2F, 1, 3, 10); - leftWingPlate2.setRotationPoint(0F, 0F, 0F); - leftWingPlate2.setTextureSize(128, 128); - leftWingPlate2.mirror = true; - setRotation(leftWingPlate2, 0.2617994F, 0.1745329F, 0F); - - rightWingPlate1 = new ModelRenderer(this, 66, 58); - rightWingPlate1.mirror = true; - rightWingPlate1.addBox(-6F, -5F, -2.5F, 1, 5, 8); - rightWingPlate1.setRotationPoint(0F, 0F, 0F); - rightWingPlate1.setTextureSize(128, 128); - rightWingPlate1.mirror = true; - setRotation(rightWingPlate1, 0.2617994F, -0.1745329F, 0F); - rightWingPlate1.mirror = false; - - rightWingPlate2 = new ModelRenderer(this, 66, 72); - rightWingPlate2.mirror = true; - rightWingPlate2.addBox(-6F, -8F, -2F, 1, 3, 10); - rightWingPlate2.setRotationPoint(0F, 0F, 0F); - rightWingPlate2.setTextureSize(128, 128); - rightWingPlate2.mirror = true; - setRotation(rightWingPlate2, 0.2617994F, -0.1745329F, 0F); - rightWingPlate2.mirror = false; - - topPlate1 = new ModelRenderer(this, 79, 72); - topPlate1.addBox(-5F, -9F, -0.5F, 10, 1, 5); - topPlate1.setRotationPoint(0F, 0F, 0F); - topPlate1.setTextureSize(128, 128); - topPlate1.mirror = true; - setRotation(topPlate1, 0.4363323F, 0F, 0F); - - topPlate2 = new ModelRenderer(this, 79, 72); - topPlate2.addBox(-5F, -8F, 1.5F, 10, 1, 5); - topPlate2.setRotationPoint(0F, 0F, 0F); - topPlate2.setTextureSize(128, 128); - topPlate2.mirror = true; - setRotation(topPlate2, 0.4363323F, 0F, 0F); - - topPlate3 = new ModelRenderer(this, 79, 72); - topPlate3.addBox(-5F, -7F, 3.5F, 10, 1, 5); - topPlate3.setRotationPoint(0F, 0F, 0F); - topPlate3.setTextureSize(128, 128); - topPlate3.mirror = true; - setRotation(topPlate3, 0.4363323F, 0F, 0F); - - backPlate1 = new ModelRenderer(this, 66, 86); - backPlate1.mirror = true; - backPlate1.addBox(-4.5F, -7F, 6F, 6, 4, 1); - backPlate1.setRotationPoint(0F, 0F, 0F); - backPlate1.setTextureSize(128, 128); - backPlate1.mirror = true; - setRotation(backPlate1, 0.2617994F, -0.2617994F, 0F); - backPlate1.mirror = false; - - backPlate2 = new ModelRenderer(this, 66, 86); - backPlate2.mirror = true; - backPlate2.addBox(-4.5F, -6.5F, 6F, 6, 4, 1); - backPlate2.setRotationPoint(0F, 2F, 0F); - backPlate2.setTextureSize(128, 128); - backPlate2.mirror = true; - setRotation(backPlate2, 0.2617994F, -0.2617994F, 0F); - backPlate2.mirror = false; - - backPlate3 = new ModelRenderer(this, 66, 86); - backPlate3.mirror = true; - backPlate3.addBox(-4.5F, -6F, 6F, 6, 4, 1); - backPlate3.setRotationPoint(0F, 4F, 0F); - backPlate3.setTextureSize(128, 128); - backPlate3.mirror = true; - setRotation(backPlate3, 0.2617994F, -0.2617994F, 0F); - backPlate3.mirror = false; - - backPlate4 = new ModelRenderer(this, 66, 86); - backPlate4.addBox(-1.5F, -7F, 6F, 6, 4, 1); - backPlate4.setRotationPoint(0F, 0F, 0F); - backPlate4.setTextureSize(128, 128); - backPlate4.mirror = true; - setRotation(backPlate4, 0.2617994F, 0.2617994F, 0F); - - backPlate5 = new ModelRenderer(this, 66, 86); - backPlate5.addBox(-1.5F, -7F, 6F, 6, 4, 1); - backPlate5.setRotationPoint(0F, 2.5F, 0F); - backPlate5.setTextureSize(128, 128); - backPlate5.mirror = true; - setRotation(backPlate5, 0.2617994F, 0.2617994F, 0F); - - backPlate6 = new ModelRenderer(this, 66, 86); - backPlate6.addBox(-1.5F, -7F, 6F, 6, 4, 1); - backPlate6.setRotationPoint(0F, 5F, 0F); - backPlate6.setTextureSize(128, 128); - backPlate6.mirror = true; - setRotation(backPlate6, 0.2617994F, 0.2617994F, 0F); - - eyePlate = new ModelRenderer(this, 63, 38); - eyePlate.addBox(-4F, -5F, -4.5F, 8, 2, 1); - eyePlate.setRotationPoint(0F, 0F, 0F); - eyePlate.setTextureSize(128, 128); - eyePlate.mirror = true; - setRotation(eyePlate, 0F, 0F, 0F); - } - - /* Right arm */ - { - rightArmMain = new ModelRenderer(this, 0, 33); - rightArmMain.mirror = true; - rightArmMain.addBox(-3.5F, -2.5F, -2.5F, 5, 11, 5); - rightArmMain.setRotationPoint(0F, 0F, 0F); - rightArmMain.setTextureSize(128, 128); - rightArmMain.mirror = true; - setRotation(rightArmMain, 0F, 0F, 0F); - - rightKnucklePlate = new ModelRenderer(this, 0, 50); - rightKnucklePlate.addBox(-4F, 4F, -1.5F, 1, 5, 3); - rightKnucklePlate.setRotationPoint(0F, 0F, 0F); - rightKnucklePlate.setTextureSize(128, 128); - rightKnucklePlate.mirror = true; - setRotation(rightKnucklePlate, 0F, 0F, 0F); - - rightKnuckleBrace = new ModelRenderer(this, 9, 50); - rightKnuckleBrace.mirror = true; - rightKnuckleBrace.addBox(-4F, 3F, -3F, 2, 1, 6); - rightKnuckleBrace.setRotationPoint(0F, 0F, 0F); - rightKnuckleBrace.setTextureSize(128, 128); - setRotation(rightKnuckleBrace, 0F, 0F, 0F); - - rightKnuckle1 = new ModelRenderer(this, 0, 59); - rightKnuckle1.mirror = true; - rightKnuckle1.addBox(-4F, 7F, -2.5F, 1, 6, 1); - rightKnuckle1.setRotationPoint(0F, 0F, 0F); - rightKnuckle1.setTextureSize(128, 128); - setRotation(rightKnuckle1, 0F, 0F, 0F); - - rightKnuckle2 = new ModelRenderer(this, 5, 59); - rightKnuckle2.mirror = true; - rightKnuckle2.addBox(-3F, 11F, -2.5F, 1, 3, 1); - rightKnuckle2.setRotationPoint(0F, 0F, 0F); - rightKnuckle2.setTextureSize(128, 128); - setRotation(rightKnuckle2, 0F, 0F, 0F); - - rightKnuckle3 = new ModelRenderer(this, 0, 59); - rightKnuckle3.mirror = true; - rightKnuckle3.addBox(-4.5F, 8F, -0.5F, 1, 6, 1); - rightKnuckle3.setRotationPoint(0F, 0F, 0F); - rightKnuckle3.setTextureSize(128, 128); - setRotation(rightKnuckle3, 0F, 0F, 0F); - - rightKnuckle4 = new ModelRenderer(this, 5, 59); - rightKnuckle4.mirror = true; - rightKnuckle4.addBox(-3.5F, 12F, -0.5F, 1, 3, 1); - rightKnuckle4.setRotationPoint(0F, 0F, 0F); - rightKnuckle4.setTextureSize(128, 128); - setRotation(rightKnuckle4, 0F, 0F, 0F); - - rightKnuckle5 = new ModelRenderer(this, 0, 59); - rightKnuckle5.mirror = true; - rightKnuckle5.addBox(-4F, 7F, 1.5F, 1, 6, 1); - rightKnuckle5.setRotationPoint(0F, 0F, 0F); - rightKnuckle5.setTextureSize(128, 128); - setRotation(rightKnuckle5, 0F, 0F, 0F); - - rightKnuckle6 = new ModelRenderer(this, 5, 59); - rightKnuckle6.mirror = true; - rightKnuckle6.addBox(-3F, 11F, 1.5F, 1, 3, 1); - rightKnuckle6.setRotationPoint(0F, 0F, 0F); - rightKnuckle6.setTextureSize(128, 128); - setRotation(rightKnuckle6, 0F, 0F, 0F); - - rightShoulder1 = new ModelRenderer(this, 10, 59); - rightShoulder1.mirror = true; - rightShoulder1.addBox(-5F, -3F, -4F, 1, 4, 8); - rightShoulder1.setRotationPoint(0F, 0F, 0F); - rightShoulder1.setTextureSize(128, 128); - setRotation(rightShoulder1, 0F, 0F, 0.6981317F); - - rightShoulder2 = new ModelRenderer(this, 10, 59); - rightShoulder2.mirror = true; - rightShoulder2.addBox(-4F, -1.5F, -4F, 1, 4, 8); - rightShoulder2.setRotationPoint(0F, 0F, 0F); - rightShoulder2.setTextureSize(128, 128); - setRotation(rightShoulder2, 0F, 0F, 0.6981317F); - - rightShoulder3 = new ModelRenderer(this, 10, 59); - rightShoulder3.mirror = true; - rightShoulder3.addBox(-3F, 0F, -4F, 1, 4, 8); - rightShoulder3.setRotationPoint(0F, 0F, 0F); - rightShoulder3.setTextureSize(128, 128); - setRotation(rightShoulder3, 0F, 0F, 0.6981317F); - } - - /* Chest piece main body */ - { - mainPlate = new ModelRenderer(this, 31, 33); - mainPlate.addBox(-4.5F, -0.5F, -3F, 9, 12, 6); - mainPlate.setRotationPoint(0F, 0F, 0F); - mainPlate.setTextureSize(128, 128); - mainPlate.mirror = true; - setRotation(mainPlate, 0F, 0F, 0F); - - chestPlate1 = new ModelRenderer(this, 63, 33); - chestPlate1.addBox(-1.5F, 3F, -4.5F, 6, 2, 1); - chestPlate1.setRotationPoint(0F, -3F, -1F); - chestPlate1.setTextureSize(128, 128); - setRotation(chestPlate1, 0.3490659F, 0F, -0.2617994F); - - chestPlate2 = new ModelRenderer(this, 63, 33); - chestPlate2.addBox(-1.5F, 3F, -4.5F, 6, 2, 1); - chestPlate2.setRotationPoint(0F, -1.5F, -1F); - chestPlate2.setTextureSize(128, 128); - setRotation(chestPlate2, 0.3490659F, 0F, -0.2617994F); - - chestPlate3 = new ModelRenderer(this, 63, 33); - chestPlate3.addBox(-1.5F, 3F, -4.5F, 6, 2, 1); - chestPlate3.setRotationPoint(0F, 0F, -1F); - chestPlate3.setTextureSize(128, 128); - setRotation(chestPlate3, 0.3490659F, 0F, -0.2617994F); - - chestPlate4 = new ModelRenderer(this, 63, 33); - chestPlate4.mirror = true; - chestPlate4.addBox(-4.5F, 3F, -4.5F, 6, 2, 1); - chestPlate4.setRotationPoint(0F, -3F, -1F); - chestPlate4.setTextureSize(128, 128); - setRotation(chestPlate4, 0.3490659F, 0F, 0.2617994F); - - chestPlate5 = new ModelRenderer(this, 63, 33); - chestPlate5.mirror = true; - chestPlate5.addBox(-4.5F, 3F, -4.5F, 6, 2, 1); - chestPlate5.setRotationPoint(0F, -1.5F, -1F); - chestPlate5.setTextureSize(128, 128); - setRotation(chestPlate5, 0.3490659F, 0F, 0.2617994F); - - chestPlate6 = new ModelRenderer(this, 63, 33); - chestPlate6.mirror = true; - chestPlate6.addBox(-4.5F, 3F, -4.5F, 6, 2, 1); - chestPlate6.setRotationPoint(0F, 0F, -1F); - chestPlate6.setTextureSize(128, 128); - setRotation(chestPlate6, 0.3490659F, 0F, 0.2617994F); - } - - /* Left arm */ - { - leftArmMain = new ModelRenderer(this, 0, 33); - leftArmMain.addBox(-1.5F, -2.533333F, -2.5F, 5, 11, 5); - leftArmMain.setRotationPoint(0F, 0F, 0F); - leftArmMain.setTextureSize(128, 128); - leftArmMain.mirror = true; - setRotation(leftArmMain, 0F, 0F, 0F); - - leftKnucklePlate = new ModelRenderer(this, 0, 50); - leftKnucklePlate.addBox(3F, 4F, -1.5F, 1, 5, 3); - leftKnucklePlate.setRotationPoint(0F, 0F, 0F); - leftKnucklePlate.setTextureSize(128, 128); - leftKnucklePlate.mirror = true; - setRotation(leftKnucklePlate, 0F, 0F, 0F); - - leftKnuckleBrace = new ModelRenderer(this, 9, 50); - leftKnuckleBrace.addBox(2F, 3F, -3F, 2, 1, 6); - leftKnuckleBrace.setRotationPoint(0F, 0F, 0F); - leftKnuckleBrace.setTextureSize(128, 128); - leftKnuckleBrace.mirror = true; - setRotation(leftKnuckleBrace, 0F, 0F, 0F); - - leftKnuckle1 = new ModelRenderer(this, 0, 59); - leftKnuckle1.addBox(3F, 7F, -2.5F, 1, 6, 1); - leftKnuckle1.setRotationPoint(0F, 0F, 0F); - leftKnuckle1.setTextureSize(128, 128); - leftKnuckle1.mirror = true; - setRotation(leftKnuckle1, 0F, 0F, 0F); - - leftKnuckle2 = new ModelRenderer(this, 5, 59); - leftKnuckle2.addBox(2F, 11F, -2.5F, 1, 3, 1); - leftKnuckle2.setRotationPoint(0F, 0F, 0F); - leftKnuckle2.setTextureSize(128, 128); - leftKnuckle2.mirror = true; - setRotation(leftKnuckle2, 0F, 0F, 0F); - - leftKnuckle3 = new ModelRenderer(this, 0, 59); - leftKnuckle3.addBox(3.5F, 8F, -0.5F, 1, 6, 1); - leftKnuckle3.setRotationPoint(0F, 0F, 0F); - leftKnuckle3.setTextureSize(128, 128); - leftKnuckle3.mirror = true; - setRotation(leftKnuckle3, 0F, 0F, 0F); - - leftKnuckle4 = new ModelRenderer(this, 5, 59); - leftKnuckle4.addBox(2.5F, 12F, -0.5F, 1, 3, 1); - leftKnuckle4.setRotationPoint(0F, 0F, 0F); - leftKnuckle4.setTextureSize(128, 128); - leftKnuckle4.mirror = true; - setRotation(leftKnuckle4, 0F, 0F, 0F); - - leftKnuckle5 = new ModelRenderer(this, 0, 59); - leftKnuckle5.addBox(3F, 7F, 1.5F, 1, 6, 1); - leftKnuckle5.setRotationPoint(0F, 0F, 0F); - leftKnuckle5.setTextureSize(128, 128); - leftKnuckle5.mirror = true; - setRotation(leftKnuckle5, 0F, 0F, 0F); - - leftKnuckle6 = new ModelRenderer(this, 5, 59); - leftKnuckle6.addBox(2F, 11F, 1.5F, 1, 3, 1); - leftKnuckle6.setRotationPoint(0F, 0F, 0F); - leftKnuckle6.setTextureSize(128, 128); - leftKnuckle6.mirror = true; - setRotation(leftKnuckle6, 0F, 0F, 0F); - - leftShoulder1 = new ModelRenderer(this, 10, 59); - leftShoulder1.addBox(4F, -3F, -4F, 1, 4, 8); - leftShoulder1.setRotationPoint(0F, 0F, 0F); - leftShoulder1.setTextureSize(128, 128); - leftShoulder1.mirror = true; - setRotation(leftShoulder1, 0F, 0F, -0.6981317F); - - leftShoulder2 = new ModelRenderer(this, 10, 59); - leftShoulder2.addBox(3F, -1.5F, -4F, 1, 4, 8); - leftShoulder2.setRotationPoint(0F, 0F, 0F); - leftShoulder2.setTextureSize(128, 128); - leftShoulder2.mirror = true; - setRotation(leftShoulder2, 0F, 0F, -0.6981317F); - - leftShoulder3 = new ModelRenderer(this, 10, 59); - leftShoulder3.addBox(2F, 0F, -4F, 1, 4, 8); - leftShoulder3.setRotationPoint(0F, 0F, 0F); - leftShoulder3.setTextureSize(128, 128); - leftShoulder3.mirror = true; - setRotation(leftShoulder3, 0F, 0F, -0.6981317F); - } - - /* Left boot */ - { - leftBootBottom = new ModelRenderer(this, 0, 84); - leftBootBottom.addBox(-2.5F, 9.5F, -5.5F, 6, 3, 8); - leftBootBottom.setRotationPoint(0F, 0F, 0F); - leftBootBottom.setTextureSize(128, 128); - leftBootBottom.mirror = true; - setRotation(leftBootBottom, 0F, 0F, 0F); - - leftBootPlate = new ModelRenderer(this, 0, 96); - leftBootPlate.addBox(-2F, 6F, 6F, 5, 3, 1); - leftBootPlate.setRotationPoint(0F, 0F, 0F); - leftBootPlate.setTextureSize(128, 128); - leftBootPlate.mirror = true; - setRotation(leftBootPlate, -1.151917F, 0F, 0F); - - leftBootBrace = new ModelRenderer(this, 0, 72); - leftBootBrace.addBox(-2F, 7F, -3F, 5, 3, 6); - leftBootBrace.setRotationPoint(0F, 0F, 0F); - leftBootBrace.setTextureSize(128, 128); - leftBootBrace.mirror = true; - setRotation(leftBootBrace, 0F, 0F, 0F); - - leftBootWing1 = new ModelRenderer(this, 13, 96); - leftBootWing1.addBox(3F, 7F, -4F, 1, 1, 7); - leftBootWing1.setRotationPoint(0F, 0F, 0F); - leftBootWing1.setTextureSize(128, 128); - leftBootWing1.mirror = true; - setRotation(leftBootWing1, 0.2617994F, 0.1745329F, 0F); - - leftBootWing2 = new ModelRenderer(this, 13, 96); - leftBootWing2.addBox(3F, 8F, -5F, 1, 1, 7); - leftBootWing2.setRotationPoint(0F, 0F, 0F); - leftBootWing2.setTextureSize(128, 128); - leftBootWing2.mirror = true; - setRotation(leftBootWing2, 0.2617994F, 0.1745329F, 0F); - } - - - /* Right boot */ - { - rightBootBottom = new ModelRenderer(this, 0, 84); - rightBootBottom.mirror = true; - rightBootBottom.addBox(-3.5F, 9.5F, -5.5F, 6, 3, 8); - rightBootBottom.setRotationPoint(0F, 0F, 0F); - rightBootBottom.setTextureSize(128, 128); - setRotation(rightBootBottom, 0F, 0F, 0F); - - rightBootPlate = new ModelRenderer(this, 0, 96); - rightBootPlate.mirror = true; - rightBootPlate.addBox(-3F, 6F, 6F, 5, 3, 1); - rightBootPlate.setRotationPoint(0F, 0F, 0F); - rightBootPlate.setTextureSize(128, 128); - setRotation(rightBootPlate, -1.151917F, 0F, 0F); - - rightBootBrace = new ModelRenderer(this, 0, 72); - rightBootBrace.mirror = true; - rightBootBrace.addBox(-3F, 7F, -3F, 5, 3, 6); - rightBootBrace.setRotationPoint(0F, 0F, 0F); - rightBootBrace.setTextureSize(128, 128); - setRotation(rightBootBrace, 0F, 0F, 0F); - - rightBootWing1 = new ModelRenderer(this, 13, 96); - rightBootWing1.mirror = true; - rightBootWing1.addBox(-4F, 7F, -4F, 1, 1, 7); - rightBootWing1.setRotationPoint(0F, 0F, 0F); - rightBootWing1.setTextureSize(128, 128); - setRotation(rightBootWing1, 0.2617994F, -0.1745329F, 0F); - - rightBootWing2 = new ModelRenderer(this, 13, 96); - rightBootWing2.mirror = true; - rightBootWing2.addBox(-4F, 8F, -5F, 1, 1, 7); - rightBootWing2.setRotationPoint(0F, 0F, 0F); - rightBootWing2.setTextureSize(128, 128); - setRotation(rightBootWing2, 0.2617994F, -0.1745329F, 0F); - } - - /* Main legs */ - { - belt = new ModelRenderer(this, 31, 52); - belt.addBox(-5F, 9.5F, -3.5F, 10, 2, 7); - belt.setRotationPoint(0F, 0F, 0F); - belt.setTextureSize(128, 128); - belt.mirror = true; - setRotation(belt, 0F, 0F, 0F); - } - - /* Left leg */ - { - leftLegSidePlate = new ModelRenderer(this, 40, 93); - leftLegSidePlate.addBox(-0.5F, 12F, -3F, 1, 6, 6); - leftLegSidePlate.setRotationPoint(-2F, -12F, 0F); - leftLegSidePlate.setTextureSize(128, 128); - leftLegSidePlate.mirror = true; - setRotation(leftLegSidePlate, 0F, 0F, -0.3490659F); - - leftLegMain = new ModelRenderer(this, 40, 93); - leftLegMain.addBox(-0.5F, 11F, -2.5F, 5, 9, 5); - leftLegMain.setRotationPoint(-2F, -12F, 0F); - leftLegMain.setTextureSize(128, 128); - leftLegMain.mirror = true; - setRotation(leftLegMain, 0F, 0F, 0F); - - leftLegPlate1 = new ModelRenderer(this, 46, 71); - leftLegPlate1.addBox(-2.5F, 11F, -3F, 2, 6, 1); - leftLegPlate1.setRotationPoint(-2F, -12F, 0F); - leftLegPlate1.setTextureSize(128, 128); - leftLegPlate1.mirror = true; - setRotation(leftLegPlate1, 0F, 0F, -0.3490659F); - - leftLegPlate2 = new ModelRenderer(this, 46, 71); - leftLegPlate2.addBox(-2.5F, 11F, 2F, 2, 6, 1); - leftLegPlate2.setRotationPoint(-2F, -12F, 0F); - leftLegPlate2.setTextureSize(128, 128); - leftLegPlate2.mirror = true; - setRotation(leftLegPlate2, 0F, 0F, -0.3490659F); - - leftLegPlate3 = new ModelRenderer(this, 31, 62); - leftLegPlate3.addBox(0F, 11.9F, -1F, 4, 7, 1); - leftLegPlate3.setRotationPoint(-2F, -12F, 0F); - leftLegPlate3.setTextureSize(128, 128); - leftLegPlate3.mirror = true; - setRotation(leftLegPlate3, -0.1745329F, 0F, 0F); - - leftLegPlate4 = new ModelRenderer(this, 42, 62); - leftLegPlate4.addBox(0F, 11.9F, 0F, 4, 7, 1); - leftLegPlate4.setRotationPoint(-2F, -12F, 0F); - leftLegPlate4.setTextureSize(128, 128); - leftLegPlate4.mirror = true; - setRotation(leftLegPlate4, 0.1745329F, 0F, 0F); - } - - /* Right leg */ - { - rightLegSidePlate = new ModelRenderer(this, 31, 71); - rightLegSidePlate.mirror = true; - rightLegSidePlate.addBox(-0.5F, 12F, -3F, 1, 6, 6); - rightLegSidePlate.setRotationPoint(2F, -12F, 0F); - rightLegSidePlate.setTextureSize(128, 128); - setRotation(rightLegSidePlate, 0F, 0F, 0.3490659F); - - rightLegMain = new ModelRenderer(this, 40, 93); - rightLegMain.mirror = true; - rightLegMain.addBox(-4.5F, 11F, -2.5F, 5, 9, 5); - rightLegMain.setRotationPoint(2F, -12F, 0F); - rightLegMain.setTextureSize(128, 128); - setRotation(rightLegMain, 0F, 0F, 0F); - - rightLegPlate1 = new ModelRenderer(this, 46, 71); - rightLegPlate1.mirror = true; - rightLegPlate1.addBox(0.5F, 11F, -3F, 2, 6, 1); - rightLegPlate1.setRotationPoint(2F, -12F, 0F); - rightLegPlate1.setTextureSize(128, 128); - setRotation(rightLegPlate1, 0F, 0F, 0.3490659F); - - rightLegPlate2 = new ModelRenderer(this, 46, 71); - rightLegPlate2.mirror = true; - rightLegPlate2.addBox(0.5F, 11F, 2F, 2, 6, 1); - rightLegPlate2.setRotationPoint(2F, -12F, 0F); - rightLegPlate2.setTextureSize(128, 128); - setRotation(rightLegPlate2, 0F, 0F, 0.3490659F); - - rightLegPlate3 = new ModelRenderer(this, 31, 62); - rightLegPlate3.mirror = true; - rightLegPlate3.addBox(-4F, 11.9F, -1F, 4, 7, 1); - rightLegPlate3.setRotationPoint(2F, -12F, 0F); - rightLegPlate3.setTextureSize(128, 128); - setRotation(rightLegPlate3, -0.1745329F, 0F, 0F); - - rightLegPlate4 = new ModelRenderer(this, 42, 62); - rightLegPlate4.mirror = true; - rightLegPlate4.addBox(-4F, 11.9F, 0F, 4, 7, 1); - rightLegPlate4.setRotationPoint(2F, -12F, 0F); - rightLegPlate4.setTextureSize(128, 128); - setRotation(rightLegPlate4, 0.1745329F, 0F, 0F); - } - - this.bipedHead.cubeList.clear(); - this.bipedHeadwear.cubeList.clear(); - if(addHelmet) - { - this.bipedHead.addChild(this.leftFacePlate); - this.bipedHead.addChild(this.rightFacePlate); - this.bipedHead.addChild(this.facePlate1); - this.bipedHead.addChild(this.facePlate2); - this.bipedHead.addChild(this.facePlate3); - this.bipedHead.addChild(this.leftWingPlate1); - this.bipedHead.addChild(this.leftWingPlate2); - this.bipedHead.addChild(this.rightWingPlate1); - this.bipedHead.addChild(this.rightWingPlate2); - this.bipedHead.addChild(this.topPlate1); - this.bipedHead.addChild(this.topPlate2); - this.bipedHead.addChild(this.topPlate3); - this.bipedHead.addChild(this.backPlate1); - this.bipedHead.addChild(this.backPlate2); - this.bipedHead.addChild(this.backPlate3); - this.bipedHead.addChild(this.backPlate4); - this.bipedHead.addChild(this.backPlate5); - this.bipedHead.addChild(this.backPlate6); - this.bipedHead.addChild(this.eyePlate); - } - - this.bipedBody.cubeList.clear(); - if(addChestPiece) - { - this.bipedBody.addChild(this.chestPlate1); - this.bipedBody.addChild(this.chestPlate2); - this.bipedBody.addChild(this.chestPlate3); - this.bipedBody.addChild(this.chestPlate4); - this.bipedBody.addChild(this.chestPlate5); - this.bipedBody.addChild(this.chestPlate6); - this.bipedBody.addChild(this.mainPlate); - } - if(addLeggings) - { - this.bipedBody.addChild(this.belt); - } - - this.bipedRightArm.cubeList.clear(); - if(addChestPiece) - { - this.bipedRightArm.addChild(rightArmMain); - this.bipedRightArm.addChild(this.rightKnucklePlate); - this.bipedRightArm.addChild(this.rightKnuckleBrace); - this.bipedRightArm.addChild(this.rightKnuckle1); - this.bipedRightArm.addChild(this.rightKnuckle2); - this.bipedRightArm.addChild(this.rightKnuckle3); - this.bipedRightArm.addChild(this.rightKnuckle4); - this.bipedRightArm.addChild(this.rightKnuckle5); - this.bipedRightArm.addChild(this.rightKnuckle6); - this.bipedRightArm.addChild(this.rightArmMain); - this.bipedRightArm.addChild(this.rightShoulder1); - this.bipedRightArm.addChild(this.rightShoulder2); - this.bipedRightArm.addChild(this.rightShoulder3); - } - - this.bipedLeftArm.cubeList.clear(); - if(addChestPiece) - { - this.bipedLeftArm.addChild(leftArmMain); - this.bipedLeftArm.addChild(this.leftKnucklePlate); - this.bipedLeftArm.addChild(this.leftKnuckleBrace); - this.bipedLeftArm.addChild(this.leftKnuckle1); - this.bipedLeftArm.addChild(this.leftKnuckle2); - this.bipedLeftArm.addChild(this.leftKnuckle3); - this.bipedLeftArm.addChild(this.leftKnuckle4); - this.bipedLeftArm.addChild(this.leftKnuckle5); - this.bipedLeftArm.addChild(this.leftKnuckle6); - this.bipedLeftArm.addChild(this.leftArmMain); - this.bipedLeftArm.addChild(this.leftShoulder1); - this.bipedLeftArm.addChild(this.leftShoulder2); - this.bipedLeftArm.addChild(this.leftShoulder3); - } - - this.bipedLeftLeg.cubeList.clear(); - if(addBoots) - { - this.bipedLeftLeg.addChild(this.leftBootBottom); - this.bipedLeftLeg.addChild(this.leftBootBrace); - this.bipedLeftLeg.addChild(this.leftBootPlate); - this.bipedLeftLeg.addChild(this.leftBootWing1); - this.bipedLeftLeg.addChild(this.leftBootWing2); - } - if(addLeggings) - { - this.bipedLeftLeg.addChild(this.leftLegMain); - this.bipedLeftLeg.addChild(this.leftLegSidePlate); - this.bipedLeftLeg.addChild(this.leftLegPlate1); - this.bipedLeftLeg.addChild(this.leftLegPlate2); - this.bipedLeftLeg.addChild(this.leftLegPlate3); - this.bipedLeftLeg.addChild(this.leftLegPlate4); - } - - this.bipedRightLeg.cubeList.clear(); - if(addBoots) - { - this.bipedRightLeg.addChild(this.rightBootBottom); - this.bipedRightLeg.addChild(this.rightBootBrace); - this.bipedRightLeg.addChild(this.rightBootPlate); - this.bipedRightLeg.addChild(this.rightBootWing1); - this.bipedRightLeg.addChild(this.rightBootWing2); - } - if(addLeggings) - { - this.bipedRightLeg.addChild(this.rightLegMain); - this.bipedRightLeg.addChild(this.rightLegSidePlate); - this.bipedRightLeg.addChild(this.rightLegPlate1); - this.bipedRightLeg.addChild(this.rightLegPlate2); - this.bipedRightLeg.addChild(this.rightLegPlate3); - this.bipedRightLeg.addChild(this.rightLegPlate4); - } - } - - 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); - - this.bipedHead.render(f5); - this.bipedBody.render(f5); - this.bipedLeftArm.render(f5); - this.bipedRightArm.render(f5); - this.bipedLeftLeg.render(f5); - this.bipedRightLeg.render(f5); - -// head.render(f5); -// body.render(f5); -// rightarm.render(f5); -// leftarm.render(f5); -// rightleg.render(f5); -// leftleg.render(f5); -// rightArmMain.render(f5); -// rightKnucklePlate.render(f5); -// rightKnuckleBrace.render(f5); -// rightKnuckle1.render(f5); -// rightKnuckle2.render(f5); -// rightKnuckle3.render(f5); -// rightKnuckle4.render(f5); -// rightKnuckle5.render(f5); -// rightKnuckle6.render(f5); -// rightShoulder1.render(f5); -// rightShoulder2.render(f5); -// rightShoulder3.render(f5); -// mainPlate.render(f5); -// chestPlate1.render(f5); -// chestPlate2.render(f5); -// chestPlate3.render(f5); -// chestPlate4.render(f5); -// chestPlate5.render(f5); -// chestPlate6.render(f5); -// belt.render(f5); -// leftArmMain.render(f5); -// leftKnucklePlate.render(f5); -// leftKnuckleBrace.render(f5); -// leftKnuckle1.render(f5); -// leftKnuckle2.render(f5); -// leftKnuckle3.render(f5); -// leftKnuckle4.render(f5); -// leftKnuckle5.render(f5); -// leftKnuckle6.render(f5); -// leftShoulder1.render(f5); -// leftShoulder2.render(f5); -// leftShoulder3.render(f5); -// leftBootBottom.render(f5); -// leftBootPlate.render(f5); -// leftBootBrace.render(f5); -// leftBootWing1.render(f5); -// leftBootWing2.render(f5); -// rightBootBottom.render(f5); -// rightBootPlate.render(f5); -// rightBootBrace.render(f5); -// rightBootWing1.render(f5); -// rightBootWing2.render(f5); -// -// { -// leftLegSidePlate.render(f5); -// leftLegMain.render(f5); -// leftLegPlate1.render(f5); -// leftLegPlate2.render(f5); -// leftLegPlate3.render(f5); -// leftLegPlate4.render(f5); -// } -// -// { -// rightLegSidePlate.render(f5); -// rightLegMain.render(f5); -// rightLegPlate1.render(f5); -// rightLegPlate2.render(f5); -// rightLegPlate3.render(f5); -// rightLegPlate4.render(f5); -// } - } - - private void setRotation(ModelRenderer model, float x, float y, float z) - { - model.rotateAngleX = x; - model.rotateAngleY = y; - model.rotateAngleZ = z; - } - - public void setRotationAngles(float f, float f1, float f2, float f3, float f4, float f5, Entity entity) - { - super.setRotationAngles(f, f1, f2, f3, f4, f5, entity); - } -} diff --git a/src-backup/main/java/WayofTime/alchemicalWizardry/common/renderer/model/ModelPedestal.java b/src-backup/main/java/WayofTime/alchemicalWizardry/common/renderer/model/ModelPedestal.java deleted file mode 100644 index 753df6a5..00000000 --- a/src-backup/main/java/WayofTime/alchemicalWizardry/common/renderer/model/ModelPedestal.java +++ /dev/null @@ -1,58 +0,0 @@ -package WayofTime.alchemicalWizardry.common.renderer.model; - -import net.minecraft.client.model.ModelBase; -import net.minecraft.client.model.ModelRenderer; -import net.minecraft.entity.Entity; - -public class ModelPedestal extends ModelBase -{ - //fields - ModelRenderer base; - ModelRenderer top; - ModelRenderer middle; - - public ModelPedestal() - { - textureWidth = 64; - textureHeight = 32; - base = new ModelRenderer(this, 0, 0); - base.addBox(0F, 0F, 0F, 10, 1, 10); - base.setRotationPoint(-5F, 23F, -5F); - base.setTextureSize(64, 32); - base.mirror = true; - setRotation(base, 0F, 0F, 0F); - top = new ModelRenderer(this, 0, 19); - top.addBox(0F, 0F, 0F, 6, 1, 6); - top.setRotationPoint(-3F, 14F, -3F); - top.setTextureSize(64, 32); - top.mirror = true; - setRotation(top, 0F, 0F, 0F); - middle = new ModelRenderer(this, 50, 0); - middle.addBox(0F, 0F, 0F, 2, 8, 2); - middle.setRotationPoint(-1F, 15F, -1F); - middle.setTextureSize(64, 32); - middle.mirror = true; - setRotation(middle, 0F, 0F, 0F); - } - - 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); - base.render(f5); - top.render(f5); - middle.render(f5); - } - - private void setRotation(ModelRenderer model, float x, float y, float z) - { - model.rotateAngleX = x; - model.rotateAngleY = y; - model.rotateAngleZ = z; - } - - public void setRotationAngles(float f, float f1, float f2, float f3, float f4, float f5, Entity entity) - { - super.setRotationAngles(f, f1, f2, f3, f4, f5, entity); - } -} diff --git a/src-backup/main/java/WayofTime/alchemicalWizardry/common/renderer/model/ModelPlinth.java b/src-backup/main/java/WayofTime/alchemicalWizardry/common/renderer/model/ModelPlinth.java deleted file mode 100644 index f4190b5d..00000000 --- a/src-backup/main/java/WayofTime/alchemicalWizardry/common/renderer/model/ModelPlinth.java +++ /dev/null @@ -1,90 +0,0 @@ -package WayofTime.alchemicalWizardry.common.renderer.model; - -import net.minecraft.client.model.ModelBase; -import net.minecraft.client.model.ModelRenderer; -import net.minecraft.entity.Entity; - -public class ModelPlinth extends ModelBase -{ - //fields - ModelRenderer base; - ModelRenderer table; - ModelRenderer pillar; - ModelRenderer edge1; - ModelRenderer edge2; - ModelRenderer edge3; - ModelRenderer edge4; - - public ModelPlinth() - { - textureWidth = 64; - textureHeight = 64; - base = new ModelRenderer(this, 0, 16); - base.addBox(0F, 0F, 0F, 10, 2, 10); - base.setRotationPoint(-5F, 22F, -5F); - base.setTextureSize(64, 64); - base.mirror = true; - setRotation(base, 0F, 0F, 0F); - table = new ModelRenderer(this, 0, 0); - table.addBox(0F, 0F, 0F, 14, 1, 14); - table.setRotationPoint(-7F, 11F, -7F); - table.setTextureSize(64, 64); - table.mirror = true; - setRotation(table, 0F, 0F, 0F); - pillar = new ModelRenderer(this, 0, 32); - pillar.addBox(0F, 0F, 0F, 6, 10, 6); - pillar.setRotationPoint(-3F, 12F, -3F); - pillar.setTextureSize(64, 64); - pillar.mirror = true; - setRotation(pillar, 0F, 0F, 0F); - edge1 = new ModelRenderer(this, 0, 29); - edge1.addBox(0F, 0F, 0F, 14, 1, 1); - edge1.setRotationPoint(-7F, 10F, 6F); - edge1.setTextureSize(64, 64); - edge1.mirror = true; - setRotation(edge1, 0F, 0F, 0F); - edge2 = new ModelRenderer(this, 0, 29); - edge2.addBox(0F, 0F, 0F, 14, 1, 1); - edge2.setRotationPoint(-7F, 10F, -7F); - edge2.setTextureSize(64, 64); - edge2.mirror = true; - setRotation(edge2, 0F, 0F, 0F); - edge3 = new ModelRenderer(this, 25, 32); - edge3.addBox(0F, 0F, 0F, 1, 1, 12); - edge3.setRotationPoint(-7F, 10F, -6F); - edge3.setTextureSize(64, 64); - edge3.mirror = true; - setRotation(edge3, 0F, 0F, 0F); - edge4 = new ModelRenderer(this, 25, 32); - edge4.addBox(0F, 0F, 0F, 1, 1, 12); - edge4.setRotationPoint(6F, 10F, -6F); - edge4.setTextureSize(64, 64); - edge4.mirror = true; - setRotation(edge4, 0F, 0F, 0F); - } - - 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); - base.render(f5); - table.render(f5); - pillar.render(f5); - edge1.render(f5); - edge2.render(f5); - edge3.render(f5); - edge4.render(f5); - } - - private void setRotation(ModelRenderer model, float x, float y, float z) - { - model.rotateAngleX = x; - model.rotateAngleY = y; - model.rotateAngleZ = z; - } - - public void setRotationAngles(float f, float f1, float f2, float f3, float f4, float f5, Entity entity) - { - super.setRotationAngles(f, f1, f2, f3, f4, f5, entity); - } -} diff --git a/src-backup/main/java/WayofTime/alchemicalWizardry/common/renderer/model/ModelShade.java b/src-backup/main/java/WayofTime/alchemicalWizardry/common/renderer/model/ModelShade.java deleted file mode 100644 index 8a7f2632..00000000 --- a/src-backup/main/java/WayofTime/alchemicalWizardry/common/renderer/model/ModelShade.java +++ /dev/null @@ -1,86 +0,0 @@ -package WayofTime.alchemicalWizardry.common.renderer.model; - -import net.minecraft.client.model.ModelBase; -import net.minecraft.client.model.ModelRenderer; -import net.minecraft.entity.Entity; - -public class ModelShade extends ModelBase -{ - //fields - ModelRenderer body; - ModelRenderer tail1; - ModelRenderer leftArm; - ModelRenderer rightArm; - ModelRenderer tail2; - ModelRenderer head; - - public ModelShade() - { - textureWidth = 64; - textureHeight = 64; - body = new ModelRenderer(this, 0, 45); - body.addBox(-6F, 0F, -3F, 12, 12, 6); - body.setRotationPoint(0F, -4F, 0F); - body.setTextureSize(64, 64); - body.mirror = true; - setRotation(body, 0F, 0F, 0F); - tail1 = new ModelRenderer(this, 37, 43); - tail1.addBox(-2F, 1F, -2F, 4, 6, 4); - tail1.setRotationPoint(0F, 8F, 0F); - tail1.setTextureSize(64, 64); - tail1.mirror = true; - setRotation(tail1, 0.122173F, 0F, 0F); - leftArm = new ModelRenderer(this, 0, 0); - leftArm.addBox(0F, -4F, -2F, 4, 20, 4); - leftArm.setRotationPoint(6F, -2F, 0F); - leftArm.setTextureSize(64, 64); - leftArm.mirror = true; - setRotation(leftArm, 0F, 0F, 0F); - rightArm = new ModelRenderer(this, 0, 0); - rightArm.mirror = true; - rightArm.addBox(-4F, -4F, -2F, 4, 20, 4); - rightArm.setRotationPoint(-6F, -2F, 0F); - rightArm.setTextureSize(64, 64); - rightArm.mirror = true; - setRotation(rightArm, 0F, 0F, 0F); - rightArm.mirror = false; - tail2 = new ModelRenderer(this, 37, 54); - tail2.addBox(-1.5F, 6F, -3F, 3, 6, 3); - tail2.setRotationPoint(0F, 8F, 0F); - tail2.setTextureSize(64, 64); - tail2.mirror = true; - setRotation(tail2, 0.4363323F, 0F, 0F); - head = new ModelRenderer(this, 17, 0); - head.addBox(-4F, -8F, -4F, 8, 8, 8); - head.setRotationPoint(0F, -4F, -1F); - head.setTextureSize(64, 64); - head.mirror = true; - setRotation(head, 0F, 0F, 0F); - } - - 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); - body.render(f5); - tail1.render(f5); - leftArm.render(f5); - rightArm.render(f5); - tail2.render(f5); - head.render(f5); - } - - private void setRotation(ModelRenderer model, float x, float y, float z) - { - model.rotateAngleX = x; - model.rotateAngleY = y; - model.rotateAngleZ = z; - } - - public void setRotationAngles(float f, float f1, float f2, float f3, float f4, float f5, Entity entity) - { - super.setRotationAngles(f, f1, f2, f3, f4, f5, entity); - this.head.rotateAngleX = f4 / (180F / (float) Math.PI); - this.head.rotateAngleY = f3 / (180F / (float) Math.PI); - } -} diff --git a/src-backup/main/java/WayofTime/alchemicalWizardry/common/renderer/model/ModelSmallEarthGolem.java b/src-backup/main/java/WayofTime/alchemicalWizardry/common/renderer/model/ModelSmallEarthGolem.java deleted file mode 100644 index 45a232de..00000000 --- a/src-backup/main/java/WayofTime/alchemicalWizardry/common/renderer/model/ModelSmallEarthGolem.java +++ /dev/null @@ -1,127 +0,0 @@ -package WayofTime.alchemicalWizardry.common.renderer.model; - -import net.minecraft.client.model.ModelBase; -import net.minecraft.client.model.ModelRenderer; -import net.minecraft.entity.Entity; -import net.minecraft.util.MathHelper; - -public class ModelSmallEarthGolem extends ModelBase -{ - //fields - ModelRenderer leftLeg; - ModelRenderer rightLeg; - ModelRenderer body; - ModelRenderer head; - ModelRenderer chest1; - ModelRenderer chest2; - ModelRenderer chest3; - ModelRenderer leftArm; - ModelRenderer rightArm; - ModelRenderer back1; - - public ModelSmallEarthGolem() - { - textureWidth = 32; - textureHeight = 32; - leftLeg = new ModelRenderer(this, 13, 0); - leftLeg.addBox(-1F, 0F, -1F, 2, 5, 2); - leftLeg.setRotationPoint(1F, 19F, 0F); - leftLeg.setTextureSize(32, 32); - leftLeg.mirror = true; - setRotation(leftLeg, 0F, 0F, 0F); - rightLeg = new ModelRenderer(this, 13, 0); - rightLeg.mirror = true; - rightLeg.addBox(-1F, 0F, -1F, 2, 5, 2); - rightLeg.setRotationPoint(-1F, 19F, 0F); - rightLeg.setTextureSize(32, 32); - rightLeg.mirror = true; - setRotation(rightLeg, 0F, 0F, 0F); - rightLeg.mirror = false; - body = new ModelRenderer(this, 0, 7); - body.addBox(-2F, 0F, -1F, 4, 5, 2); - body.setRotationPoint(0F, 14F, 0F); - body.setTextureSize(32, 32); - body.mirror = true; - setRotation(body, 0F, 0F, 0F); - head = new ModelRenderer(this, 0, 0); - head.addBox(-1.5F, -3F, -2F, 3, 3, 3); - head.setRotationPoint(0F, 14F, 0F); - head.setTextureSize(32, 32); - head.mirror = true; - setRotation(head, 0F, 0F, 0F); - chest1 = new ModelRenderer(this, 22, 0); - chest1.addBox(-1F, 0.5F, -2F, 2, 3, 1); - chest1.setRotationPoint(0F, 14F, 0F); - chest1.setTextureSize(32, 32); - chest1.mirror = true; - setRotation(chest1, 0F, 0F, 0F); - chest2 = new ModelRenderer(this, 22, 5); - chest2.addBox(1F, 1.5F, -2F, 1, 1, 1); - chest2.setRotationPoint(0F, 14F, 0F); - chest2.setTextureSize(32, 32); - chest2.mirror = true; - setRotation(chest2, 0F, 0F, 0F); - chest3 = new ModelRenderer(this, 22, 5); - chest3.mirror = true; - chest3.addBox(-2F, 1.5F, -2F, 1, 1, 1); - chest3.setRotationPoint(0F, 14F, 0F); - chest3.setTextureSize(32, 32); - chest3.mirror = true; - setRotation(chest3, 0F, 0F, 0F); - chest3.mirror = false; - leftArm = new ModelRenderer(this, 13, 7); - leftArm.addBox(0F, -1F, -1F, 2, 5, 2); - leftArm.setRotationPoint(2F, 15F, 0F); - leftArm.setTextureSize(32, 32); - leftArm.mirror = true; - setRotation(leftArm, 0F, 0F, 0F); - rightArm = new ModelRenderer(this, 13, 7); - rightArm.mirror = true; - rightArm.addBox(-2F, -1F, -1F, 2, 5, 2); - rightArm.setRotationPoint(-2F, 15F, 0F); - rightArm.setTextureSize(32, 32); - rightArm.mirror = true; - setRotation(rightArm, 0F, 0F, 0F); - rightArm.mirror = false; - back1 = new ModelRenderer(this, 22, 8); - back1.addBox(-1.5F, 1.5F, 1F, 3, 1, 1); - back1.setRotationPoint(0F, 14F, 0F); - back1.setTextureSize(32, 32); - back1.mirror = true; - setRotation(back1, 0F, 0F, 0F); - } - - 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); - leftLeg.render(f5); - rightLeg.render(f5); - body.render(f5); - head.render(f5); - chest1.render(f5); - chest2.render(f5); - chest3.render(f5); - leftArm.render(f5); - rightArm.render(f5); - back1.render(f5); - } - - private void setRotation(ModelRenderer model, float x, float y, float z) - { - model.rotateAngleX = x; - model.rotateAngleY = y; - model.rotateAngleZ = z; - } - - public void setRotationAngles(float f, float f1, float f2, float f3, float f4, float f5, Entity entity) - { - super.setRotationAngles(f, f1, f2, f3, f4, f5, entity); - this.head.rotateAngleX = f4 / (180F / (float) Math.PI); - this.head.rotateAngleY = f3 / (180F / (float) Math.PI); - this.leftLeg.rotateAngleX = MathHelper.cos(f * 0.6662F) * 1.4F * f1; - this.rightLeg.rotateAngleX = MathHelper.cos(f * 0.6662F + (float) Math.PI) * 1.4F * f1; - this.rightArm.rotateAngleX = MathHelper.cos(f * 0.6662F + (float) Math.PI) * 1.4F * f1; - this.leftArm.rotateAngleX = MathHelper.cos(f * 0.6662F) * 1.4F * f1; - } -} \ No newline at end of file diff --git a/src-backup/main/java/WayofTime/alchemicalWizardry/common/renderer/model/ModelSpellEffectBlock.java b/src-backup/main/java/WayofTime/alchemicalWizardry/common/renderer/model/ModelSpellEffectBlock.java deleted file mode 100644 index 61110926..00000000 --- a/src-backup/main/java/WayofTime/alchemicalWizardry/common/renderer/model/ModelSpellEffectBlock.java +++ /dev/null @@ -1,332 +0,0 @@ -package WayofTime.alchemicalWizardry.common.renderer.model; - -import net.minecraft.client.model.ModelBase; -import net.minecraft.client.model.ModelRenderer; -import net.minecraft.entity.Entity; -import net.minecraftforge.common.util.ForgeDirection; - -public class ModelSpellEffectBlock extends ModelBase -{ - //fields - ModelRenderer core; - ModelRenderer frame1; - ModelRenderer frame2; - ModelRenderer frame3; - ModelRenderer frame4; - ModelRenderer frame5; - ModelRenderer frame6; - ModelRenderer frame7; - ModelRenderer frame8; - ModelRenderer frame9; - ModelRenderer frame10; - ModelRenderer frame11; - ModelRenderer frame12; - ModelRenderer inputSpacer1; - ModelRenderer inputFace; - ModelRenderer inputSpacer2; - ModelRenderer inputSpacer3; - ModelRenderer inputSpacer4; - ModelRenderer outputFace; - ModelRenderer outputPlug; - ModelRenderer outputSpacer1; - ModelRenderer outputSpacer2; - ModelRenderer outputSpacer3; - ModelRenderer outputSpacer4; - - public ModelSpellEffectBlock() - { - textureWidth = 64; - textureHeight = 64; - - core = new ModelRenderer(this, 0, 0); - core.addBox(-3F, -3F, -3F, 6, 6, 6); - core.setRotationPoint(0F, 16F, 0F); - core.setTextureSize(64, 64); - core.mirror = true; - setRotation(core, 0F, 0F, 0F); - frame1 = new ModelRenderer(this, 16, 18); - frame1.addBox(3F, -3F, -5F, 2, 6, 2); - frame1.setRotationPoint(0F, 16F, 0F); - frame1.setTextureSize(64, 64); - frame1.mirror = true; - setRotation(frame1, 0F, 0F, 0F); - frame2 = new ModelRenderer(this, 0, 18); - frame2.addBox(-5F, -3F, -5F, 2, 6, 2); - frame2.setRotationPoint(0F, 16F, 0F); - frame2.setTextureSize(64, 64); - frame2.mirror = true; - setRotation(frame2, 0F, 0F, 0F); - frame3 = new ModelRenderer(this, 0, 13); - frame3.addBox(-5F, -5F, -5F, 10, 2, 2); - frame3.setRotationPoint(0F, 16F, 0F); - frame3.setTextureSize(64, 64); - frame3.mirror = true; - setRotation(frame3, 0F, 0F, 0F); - frame4 = new ModelRenderer(this, 0, 27); - frame4.addBox(-5F, 3F, -5F, 10, 2, 2); - frame4.setRotationPoint(0F, 16F, 0F); - frame4.setTextureSize(64, 64); - frame4.mirror = true; - setRotation(frame4, 0F, 0F, 0F); - frame5 = new ModelRenderer(this, 0, 34); - frame5.addBox(-5F, -5F, 3F, 10, 2, 2); - frame5.setRotationPoint(0F, 16F, 0F); - frame5.setTextureSize(64, 64); - frame5.mirror = true; - setRotation(frame5, 0F, 0F, 0F); - frame6 = new ModelRenderer(this, 0, 48); - frame6.addBox(-5F, 3F, 3F, 10, 2, 2); - frame6.setRotationPoint(0F, 16F, 0F); - frame6.setTextureSize(64, 64); - frame6.mirror = true; - setRotation(frame6, 0F, 0F, 0F); - frame7 = new ModelRenderer(this, 16, 39); - frame7.addBox(-5F, -3F, 3F, 2, 6, 2); - frame7.setRotationPoint(0F, 16F, 0F); - frame7.setTextureSize(64, 64); - frame7.mirror = true; - setRotation(frame7, 0F, 0F, 0F); - frame8 = new ModelRenderer(this, 0, 39); - frame8.addBox(3F, -3F, 3F, 2, 6, 2); - frame8.setRotationPoint(0F, 16F, 0F); - frame8.setTextureSize(64, 64); - frame8.mirror = true; - setRotation(frame8, 0F, 0F, 0F); - frame9 = new ModelRenderer(this, 25, 9); - frame9.addBox(-5F, 3F, -3F, 2, 2, 6); - frame9.setRotationPoint(0F, 16F, 0F); - frame9.setTextureSize(64, 64); - frame9.mirror = true; - setRotation(frame9, 0F, 0F, 0F); - frame10 = new ModelRenderer(this, 25, 0); - frame10.addBox(-5F, -5F, -3F, 2, 2, 6); - frame10.setRotationPoint(0F, 16F, 0F); - frame10.setTextureSize(64, 64); - frame10.mirror = true; - setRotation(frame10, 0F, 0F, 0F); - frame11 = new ModelRenderer(this, 42, 0); - frame11.addBox(3F, -5F, -3F, 2, 2, 6); - frame11.setRotationPoint(0F, 16F, 0F); - frame11.setTextureSize(64, 64); - frame11.mirror = true; - setRotation(frame11, 0F, 0F, 0F); - frame12 = new ModelRenderer(this, 42, 9); - frame12.addBox(3F, 3F, -3F, 2, 2, 6); - frame12.setRotationPoint(0F, 16F, 0F); - frame12.setTextureSize(64, 64); - frame12.mirror = true; - setRotation(frame12, 0F, 0F, 0F); - inputSpacer1 = new ModelRenderer(this, 25, 27); - inputSpacer1.addBox(3F, -5F, -8F, 2, 2, 3); - inputSpacer1.setRotationPoint(0F, 16F, 0F); - inputSpacer1.setTextureSize(64, 64); - inputSpacer1.mirror = true; - setRotation(inputSpacer1, 0F, 0F, 0F); - inputFace = new ModelRenderer(this, 38, 27); - inputFace.addBox(-2F, -2F, -8F, 4, 4, 5); - inputFace.setRotationPoint(0F, 16F, 0F); - inputFace.setTextureSize(64, 64); - inputFace.mirror = true; - setRotation(inputFace, 0F, 0F, 0F); - inputSpacer2 = new ModelRenderer(this, 25, 27); - inputSpacer2.addBox(-5F, -5F, -8F, 2, 2, 3); - inputSpacer2.setRotationPoint(0F, 16F, 0F); - inputSpacer2.setTextureSize(64, 64); - inputSpacer2.mirror = true; - setRotation(inputSpacer2, 0F, 0F, 0F); - inputSpacer3 = new ModelRenderer(this, 25, 27); - inputSpacer3.addBox(3F, 3F, -8F, 2, 2, 3); - inputSpacer3.setRotationPoint(0F, 16F, 0F); - inputSpacer3.setTextureSize(64, 64); - inputSpacer3.mirror = true; - setRotation(inputSpacer3, 0F, 0F, 0F); - inputSpacer4 = new ModelRenderer(this, 25, 27); - inputSpacer4.addBox(-5F, 3F, -8F, 2, 2, 3); - inputSpacer4.setRotationPoint(0F, 16F, 0F); - inputSpacer4.setTextureSize(64, 64); - inputSpacer4.mirror = true; - setRotation(inputSpacer4, 0F, 0F, 0F); - outputFace = new ModelRenderer(this, 38, 37); - outputFace.addBox(6F, -2F, -2F, 2, 4, 4); - outputFace.setRotationPoint(0F, 16F, 0F); - outputFace.setTextureSize(64, 64); - outputFace.mirror = true; - setRotation(outputFace, 0F, 0F, 0F); - outputPlug = new ModelRenderer(this, 36, 48); - outputPlug.addBox(3F, -3F, -3F, 2, 6, 6); - outputPlug.setRotationPoint(0F, 16F, 0F); - outputPlug.setTextureSize(64, 64); - outputPlug.mirror = true; - setRotation(outputPlug, 0F, 0F, 0F); - outputSpacer1 = new ModelRenderer(this, 25, 48); - outputSpacer1.addBox(5F, -5F, -5F, 3, 2, 2); - outputSpacer1.setRotationPoint(0F, 16F, 0F); - outputSpacer1.setTextureSize(64, 64); - outputSpacer1.mirror = true; - setRotation(outputSpacer1, 0F, 0F, 0F); - outputSpacer2 = new ModelRenderer(this, 25, 48); - outputSpacer2.addBox(5F, -5F, 3F, 3, 2, 2); - outputSpacer2.setRotationPoint(0F, 16F, 0F); - outputSpacer2.setTextureSize(64, 64); - outputSpacer2.mirror = true; - setRotation(outputSpacer2, 0F, 0F, 0F); - outputSpacer3 = new ModelRenderer(this, 25, 48); - outputSpacer3.addBox(5F, 3F, -5F, 3, 2, 2); - outputSpacer3.setRotationPoint(0F, 16F, 0F); - outputSpacer3.setTextureSize(64, 64); - outputSpacer3.mirror = true; - setRotation(outputSpacer3, 0F, 0F, 0F); - outputSpacer4 = new ModelRenderer(this, 25, 48); - outputSpacer4.addBox(5F, 3F, 3F, 3, 2, 2); - outputSpacer4.setRotationPoint(0F, 16F, 0F); - outputSpacer4.setTextureSize(64, 64); - outputSpacer4.mirror = true; - setRotation(outputSpacer4, 0F, 0F, 0F); - } - - public void render(Entity entity, float f, float f1, float f2, float f3, float f4, float f5, ForgeDirection input, ForgeDirection output) - { - super.render(entity, f, f1, f2, f3, f4, f5); - setRotationAngles(f, f1, f2, f3, f4, f5, entity); - float xInputRot = 0.0f; - float yInputRot = 0.0f; - float zInputRot = 0.0f; - float xOutputRot = 0.0f; - float yOutputRot = 0.0f; - float zOutputRot = 0.0f; - - switch (input) - { - case NORTH: - xInputRot = 0.0f; - yInputRot = 0.0f; - zInputRot = 0.0f; - break; - - case EAST: - xInputRot = 0.0f; - yInputRot = (float) (0.5f * Math.PI); - zInputRot = 0.0f; - break; - - case SOUTH: - xInputRot = 0.0f; - yInputRot = (float) (1.0f * Math.PI); - zInputRot = 0.0f; - break; - - case WEST: - xInputRot = 0.0f; - yInputRot = (float) (-0.5f * Math.PI); - zInputRot = 0.0f; - break; - - case UP: - xInputRot = (float) (-0.5f * Math.PI); - yInputRot = 0.0f; - zInputRot = 0.0f; - break; - - case DOWN: - xInputRot = (float) (0.5f * Math.PI); - yInputRot = 0.0f; - zInputRot = 0.0f; - break; - - default: - break; - } - - switch (output) - { - case NORTH: - xOutputRot = 0.0f; - yOutputRot = (float) (0.5f * Math.PI); - zOutputRot = 0.0f; - break; - - case EAST: - xOutputRot = 0.0f; - yOutputRot = (float) (1.0f * Math.PI); - zOutputRot = 0.0f; - break; - - case SOUTH: - xOutputRot = 0.0f; - yOutputRot = (float) (-0.5f * Math.PI); - zOutputRot = 0.0f; - break; - - case WEST: - xOutputRot = 0.0f; - yOutputRot = 0.0f; - zOutputRot = 0.0f; - break; - - case UP: - xOutputRot = 0.0f; - yOutputRot = 0.0f; - zOutputRot = (float) (-0.5f * Math.PI); - break; - - case DOWN: - xOutputRot = 0.0f; - yOutputRot = 0.0f; - zOutputRot = (float) (0.5f * Math.PI); - break; - - default: - break; - } - - this.setRotation(inputFace, xInputRot, yInputRot, zInputRot); - this.setRotation(outputFace, xOutputRot, yOutputRot, zOutputRot); - this.setRotation(inputSpacer1, xInputRot, yInputRot, zInputRot); - this.setRotation(inputSpacer2, xInputRot, yInputRot, zInputRot); - this.setRotation(inputSpacer3, xInputRot, yInputRot, zInputRot); - this.setRotation(inputSpacer4, xInputRot, yInputRot, zInputRot); - this.setRotation(outputPlug, xOutputRot, yOutputRot, zOutputRot); - this.setRotation(outputSpacer1, xOutputRot, yOutputRot, zOutputRot); - this.setRotation(outputSpacer2, xOutputRot, yOutputRot, zOutputRot); - this.setRotation(outputSpacer3, xOutputRot, yOutputRot, zOutputRot); - this.setRotation(outputSpacer4, xOutputRot, yOutputRot, zOutputRot); - - core.render(f5); - frame1.render(f5); - frame2.render(f5); - frame3.render(f5); - frame4.render(f5); - frame5.render(f5); - frame6.render(f5); - frame7.render(f5); - frame8.render(f5); - frame9.render(f5); - frame10.render(f5); - frame11.render(f5); - frame12.render(f5); - inputSpacer1.render(f5); - inputFace.render(f5); - inputSpacer2.render(f5); - inputSpacer3.render(f5); - inputSpacer4.render(f5); - outputFace.render(f5); - outputPlug.render(f5); - outputSpacer1.render(f5); - outputSpacer2.render(f5); - outputSpacer3.render(f5); - outputSpacer4.render(f5); - } - - private void setRotation(ModelRenderer model, float x, float y, float z) - { - model.rotateAngleX = x; - model.rotateAngleY = y; - model.rotateAngleZ = z; - } - - public void setRotationAngles(float f, float f1, float f2, float f3, float f4, float f5, Entity entity) - { - super.setRotationAngles(f, f1, f2, f3, f4, f5, entity); - } - -} diff --git a/src-backup/main/java/WayofTime/alchemicalWizardry/common/renderer/model/ModelSpellEnhancementBlock.java b/src-backup/main/java/WayofTime/alchemicalWizardry/common/renderer/model/ModelSpellEnhancementBlock.java deleted file mode 100644 index f56dca24..00000000 --- a/src-backup/main/java/WayofTime/alchemicalWizardry/common/renderer/model/ModelSpellEnhancementBlock.java +++ /dev/null @@ -1,334 +0,0 @@ -package WayofTime.alchemicalWizardry.common.renderer.model; - -import net.minecraft.client.model.ModelBase; -import net.minecraft.client.model.ModelRenderer; -import net.minecraft.entity.Entity; -import net.minecraftforge.common.util.ForgeDirection; - - -public class ModelSpellEnhancementBlock extends ModelBase -{ - //fields - ModelRenderer core; - ModelRenderer frame1; - ModelRenderer frame2; - ModelRenderer frame3; - ModelRenderer frame4; - ModelRenderer frame5; - ModelRenderer frame6; - ModelRenderer frame7; - ModelRenderer frame8; - ModelRenderer frame9; - ModelRenderer frame10; - ModelRenderer frame11; - ModelRenderer frame12; - ModelRenderer outputMain; - ModelRenderer inputMain; - ModelRenderer output1; - ModelRenderer output2; - ModelRenderer output3; - ModelRenderer output4; - ModelRenderer input1; - ModelRenderer input2; - ModelRenderer input3; - ModelRenderer input4; - ModelRenderer outputSecond; - - public ModelSpellEnhancementBlock() - { - textureWidth = 128; - textureHeight = 64; - - core = new ModelRenderer(this, 0, 0); - core.addBox(-3F, -3F, -3F, 6, 6, 6); - core.setRotationPoint(0F, 16F, 0F); - core.setTextureSize(128, 64); - core.mirror = true; - setRotation(core, 0F, 0F, 0F); - frame1 = new ModelRenderer(this, 0, 32); - frame1.addBox(-7F, 5F, -7F, 14, 2, 2); - frame1.setRotationPoint(0F, 16F, 0F); - frame1.setTextureSize(128, 64); - frame1.mirror = true; - setRotation(frame1, 0F, 0F, 0F); - frame2 = new ModelRenderer(this, 24, 19); - frame2.addBox(5F, -5F, -7F, 2, 10, 2); - frame2.setRotationPoint(0F, 16F, 0F); - frame2.setTextureSize(128, 64); - frame2.mirror = true; - setRotation(frame2, 0F, 0F, 0F); - frame3 = new ModelRenderer(this, 0, 19); - frame3.addBox(-7F, -5F, -7F, 2, 10, 2); - frame3.setRotationPoint(0F, 16F, 0F); - frame3.setTextureSize(128, 64); - frame3.mirror = true; - setRotation(frame3, 0F, 0F, 0F); - frame4 = new ModelRenderer(this, 0, 14); - frame4.addBox(-7F, -7F, -7F, 14, 2, 2); - frame4.setRotationPoint(0F, 16F, 0F); - frame4.setTextureSize(128, 64); - frame4.mirror = true; - setRotation(frame4, 0F, 0F, 0F); - frame5 = new ModelRenderer(this, 0, 57); - frame5.addBox(-7F, 5F, 5F, 14, 2, 2); - frame5.setRotationPoint(0F, 16F, 0F); - frame5.setTextureSize(128, 64); - frame5.mirror = true; - setRotation(frame5, 0F, 0F, 0F); - frame6 = new ModelRenderer(this, 0, 44); - frame6.addBox(5F, -5F, 5F, 2, 10, 2); - frame6.setRotationPoint(0F, 16F, 0F); - frame6.setTextureSize(128, 64); - frame6.mirror = true; - setRotation(frame6, 0F, 0F, 0F); - frame7 = new ModelRenderer(this, 24, 44); - frame7.addBox(-7F, -5F, 5F, 2, 10, 2); - frame7.setRotationPoint(0F, 16F, 0F); - frame7.setTextureSize(128, 64); - frame7.mirror = true; - setRotation(frame7, 0F, 0F, 0F); - frame8 = new ModelRenderer(this, 0, 39); - frame8.addBox(-7F, -7F, 5F, 14, 2, 2); - frame8.setRotationPoint(0F, 16F, 0F); - frame8.setTextureSize(128, 64); - frame8.mirror = true; - setRotation(frame8, 0F, 0F, 0F); - frame9 = new ModelRenderer(this, 66, 14); - frame9.addBox(5F, 5F, -5F, 2, 2, 10); - frame9.setRotationPoint(0F, 16F, 0F); - frame9.setTextureSize(128, 64); - frame9.mirror = true; - setRotation(frame9, 0F, 0F, 0F); - frame10 = new ModelRenderer(this, 40, 14); - frame10.addBox(-7F, 5F, -5F, 2, 2, 10); - frame10.setRotationPoint(0F, 16F, 0F); - frame10.setTextureSize(128, 64); - frame10.mirror = true; - setRotation(frame10, 0F, 0F, 0F); - frame11 = new ModelRenderer(this, 66, 0); - frame11.addBox(5F, -7F, -5F, 2, 2, 10); - frame11.setRotationPoint(0F, 16F, 0F); - frame11.setTextureSize(128, 64); - frame11.mirror = true; - setRotation(frame11, 0F, 0F, 0F); - frame12 = new ModelRenderer(this, 40, 0); - frame12.addBox(-7F, -7F, -5F, 2, 2, 10); - frame12.setRotationPoint(0F, 16F, 0F); - frame12.setTextureSize(128, 64); - frame12.mirror = true; - setRotation(frame12, 0F, 0F, 0F); - outputMain = new ModelRenderer(this, 78, 36); - outputMain.addBox(6F, -2F, -2F, 2, 4, 4); - outputMain.setRotationPoint(0F, 16F, 0F); - outputMain.setTextureSize(128, 64); - outputMain.mirror = true; - setRotation(outputMain, 0F, 0F, 0F); - inputMain = new ModelRenderer(this, 40, 36); - inputMain.addBox(-2F, -2F, -8F, 4, 4, 5); - inputMain.setRotationPoint(0F, 16F, 0F); - inputMain.setTextureSize(128, 64); - inputMain.mirror = true; - setRotation(inputMain, 0F, 0F, 0F); - output1 = new ModelRenderer(this, 80, 30); - output1.addBox(5F, -5F, -5F, 3, 2, 2); - output1.setRotationPoint(0F, 16F, 0F); - output1.setTextureSize(128, 64); - output1.mirror = true; - setRotation(output1, 0F, 0F, 0F); - output2 = new ModelRenderer(this, 80, 30); - output2.addBox(5F, -5F, 3F, 3, 2, 2); - output2.setRotationPoint(0F, 16F, 0F); - output2.setTextureSize(128, 64); - output2.mirror = true; - setRotation(output2, 0F, 0F, 0F); - output3 = new ModelRenderer(this, 80, 30); - output3.addBox(5F, 3F, -5F, 3, 2, 2); - output3.setRotationPoint(0F, 16F, 0F); - output3.setTextureSize(128, 64); - output3.mirror = true; - setRotation(output3, 0F, 0F, 0F); - output4 = new ModelRenderer(this, 80, 30); - output4.addBox(5F, 3F, 3F, 3, 2, 2); - output4.setRotationPoint(0F, 16F, 0F); - output4.setTextureSize(128, 64); - output4.mirror = true; - setRotation(output4, 0F, 0F, 0F); - input1 = new ModelRenderer(this, 40, 27); - input1.addBox(3F, -5F, -8F, 2, 2, 5); - input1.setRotationPoint(0F, 16F, 0F); - input1.setTextureSize(128, 64); - input1.mirror = true; - setRotation(input1, 0F, 0F, 0F); - input2 = new ModelRenderer(this, 40, 27); - input2.addBox(-5F, -5F, -8F, 2, 2, 5); - input2.setRotationPoint(0F, 16F, 0F); - input2.setTextureSize(128, 64); - input2.mirror = true; - setRotation(input2, 0F, 0F, 0F); - input3 = new ModelRenderer(this, 40, 27); - input3.addBox(3F, 3F, -8F, 2, 2, 5); - input3.setRotationPoint(0F, 16F, 0F); - input3.setTextureSize(128, 64); - input3.mirror = true; - setRotation(input3, 0F, 0F, 0F); - input4 = new ModelRenderer(this, 40, 27); - input4.addBox(-5F, 3F, -8F, 2, 2, 5); - input4.setRotationPoint(0F, 16F, 0F); - input4.setTextureSize(128, 64); - input4.mirror = true; - setRotation(input4, 0F, 0F, 0F); - outputSecond = new ModelRenderer(this, 78, 47); - outputSecond.addBox(4F, -3F, -3F, 1, 6, 6); - outputSecond.setRotationPoint(0F, 16F, 0F); - outputSecond.setTextureSize(128, 64); - outputSecond.mirror = true; - setRotation(outputSecond, 0F, 0F, 0F); - } - - public void render(Entity entity, float f, float f1, float f2, float f3, float f4, float f5, ForgeDirection input, ForgeDirection output) - { - super.render(entity, f, f1, f2, f3, f4, f5); - setRotationAngles(f, f1, f2, f3, f4, f5, entity); - - float xInputRot = 0.0f; - float yInputRot = 0.0f; - float zInputRot = 0.0f; - float xOutputRot = 0.0f; - float yOutputRot = 0.0f; - float zOutputRot = 0.0f; - - switch (input) - { - case NORTH: - xInputRot = 0.0f; - yInputRot = 0.0f; - zInputRot = 0.0f; - break; - - case EAST: - xInputRot = 0.0f; - yInputRot = (float) (0.5f * Math.PI); - zInputRot = 0.0f; - break; - - case SOUTH: - xInputRot = 0.0f; - yInputRot = (float) (1.0f * Math.PI); - zInputRot = 0.0f; - break; - - case WEST: - xInputRot = 0.0f; - yInputRot = (float) (-0.5f * Math.PI); - zInputRot = 0.0f; - break; - - case UP: - xInputRot = (float) (-0.5f * Math.PI); - yInputRot = 0.0f; - zInputRot = 0.0f; - break; - - case DOWN: - xInputRot = (float) (0.5f * Math.PI); - yInputRot = 0.0f; - zInputRot = 0.0f; - break; - - default: - break; - } - - switch (output) - { - case NORTH: - xOutputRot = 0.0f; - yOutputRot = (float) (0.5f * Math.PI); - zOutputRot = 0.0f; - break; - - case EAST: - xOutputRot = 0.0f; - yOutputRot = (float) (1.0f * Math.PI); - zOutputRot = 0.0f; - break; - - case SOUTH: - xOutputRot = 0.0f; - yOutputRot = (float) (-0.5f * Math.PI); - zOutputRot = 0.0f; - break; - - case WEST: - xOutputRot = 0.0f; - yOutputRot = 0.0f; - zOutputRot = 0.0f; - break; - - case UP: - xOutputRot = 0.0f; - yOutputRot = 0.0f; - zOutputRot = (float) (-0.5f * Math.PI); - break; - - case DOWN: - xOutputRot = 0.0f; - yOutputRot = 0.0f; - zOutputRot = (float) (0.5f * Math.PI); - break; - - default: - break; - } - - this.setRotation(inputMain, xInputRot, yInputRot, zInputRot); - this.setRotation(outputMain, xOutputRot, yOutputRot, zOutputRot); - this.setRotation(input1, xInputRot, yInputRot, zInputRot); - this.setRotation(input2, xInputRot, yInputRot, zInputRot); - this.setRotation(input3, xInputRot, yInputRot, zInputRot); - this.setRotation(input4, xInputRot, yInputRot, zInputRot); - this.setRotation(outputSecond, xOutputRot, yOutputRot, zOutputRot); - this.setRotation(output1, xOutputRot, yOutputRot, zOutputRot); - this.setRotation(output2, xOutputRot, yOutputRot, zOutputRot); - this.setRotation(output3, xOutputRot, yOutputRot, zOutputRot); - this.setRotation(output4, xOutputRot, yOutputRot, zOutputRot); - - core.render(f5); - frame1.render(f5); - frame2.render(f5); - frame3.render(f5); - frame4.render(f5); - frame5.render(f5); - frame6.render(f5); - frame7.render(f5); - frame8.render(f5); - frame9.render(f5); - frame10.render(f5); - frame11.render(f5); - frame12.render(f5); - outputMain.render(f5); - inputMain.render(f5); - output1.render(f5); - output2.render(f5); - output3.render(f5); - output4.render(f5); - input1.render(f5); - input2.render(f5); - input3.render(f5); - input4.render(f5); - outputSecond.render(f5); - } - - private void setRotation(ModelRenderer model, float x, float y, float z) - { - model.rotateAngleX = x; - model.rotateAngleY = y; - model.rotateAngleZ = z; - } - - public void setRotationAngles(float f, float f1, float f2, float f3, float f4, float f5, Entity entity) - { - super.setRotationAngles(f, f1, f2, f3, f4, f5, entity); - } - -} diff --git a/src-backup/main/java/WayofTime/alchemicalWizardry/common/renderer/model/ModelSpellModifierBlock.java b/src-backup/main/java/WayofTime/alchemicalWizardry/common/renderer/model/ModelSpellModifierBlock.java deleted file mode 100644 index 3ceed7e9..00000000 --- a/src-backup/main/java/WayofTime/alchemicalWizardry/common/renderer/model/ModelSpellModifierBlock.java +++ /dev/null @@ -1,303 +0,0 @@ -package WayofTime.alchemicalWizardry.common.renderer.model; - -import net.minecraft.client.model.ModelBase; -import net.minecraft.client.model.ModelRenderer; -import net.minecraft.entity.Entity; -import net.minecraftforge.common.util.ForgeDirection; - -public class ModelSpellModifierBlock extends ModelBase -{ - //fields - ModelRenderer core; - ModelRenderer inputMain; - ModelRenderer Shape2; - ModelRenderer Shape3; - ModelRenderer Shape4; - ModelRenderer Shape5; - ModelRenderer Shape6; - ModelRenderer Shape7; - ModelRenderer Shape8; - ModelRenderer Shape9; - ModelRenderer outputMain; - ModelRenderer Shape11; - ModelRenderer Shape12; - ModelRenderer Shape13; - ModelRenderer Shape14; - ModelRenderer output1; - ModelRenderer output2; - ModelRenderer output3; - ModelRenderer output4; - - public ModelSpellModifierBlock() - { - textureWidth = 64; - textureHeight = 64; - - core = new ModelRenderer(this, 0, 0); - core.addBox(-3F, -3F, -3F, 6, 6, 6); - core.setRotationPoint(0F, 16F, 0F); - core.setTextureSize(64, 64); - core.mirror = true; - setRotation(core, 0F, 0F, 0F); - inputMain = new ModelRenderer(this, 25, 18); - inputMain.addBox(-2F, -2F, -8F, 4, 4, 1); - inputMain.setRotationPoint(0F, 16F, 0F); - inputMain.setTextureSize(64, 64); - inputMain.mirror = true; - setRotation(inputMain, 0F, 0F, 0F); - Shape2 = new ModelRenderer(this, 0, 13); - Shape2.addBox(-5F, -5F, -8F, 10, 2, 2); - Shape2.setRotationPoint(0F, 16F, 0F); - Shape2.setTextureSize(64, 64); - Shape2.mirror = true; - setRotation(Shape2, 0F, 0F, 0F); - Shape3 = new ModelRenderer(this, 0, 27); - Shape3.addBox(-5F, 3F, -8F, 10, 2, 2); - Shape3.setRotationPoint(0F, 16F, 0F); - Shape3.setTextureSize(64, 64); - Shape3.mirror = true; - setRotation(Shape3, 0F, 0F, 0F); - Shape4 = new ModelRenderer(this, 16, 18); - Shape4.addBox(3F, -3F, -8F, 2, 6, 2); - Shape4.setRotationPoint(0F, 16F, 0F); - Shape4.setTextureSize(64, 64); - Shape4.mirror = true; - setRotation(Shape4, 0F, 0F, 0F); - Shape5 = new ModelRenderer(this, 0, 18); - Shape5.addBox(-5F, -3F, -8F, 2, 6, 2); - Shape5.setRotationPoint(0F, 16F, 0F); - Shape5.setTextureSize(64, 64); - Shape5.mirror = true; - setRotation(Shape5, 0F, 0F, 0F); - Shape6 = new ModelRenderer(this, 0, 32); - Shape6.addBox(-1F, -6F, -7F, 2, 1, 5); - Shape6.setRotationPoint(0F, 16F, 0F); - Shape6.setTextureSize(64, 64); - Shape6.mirror = true; - setRotation(Shape6, 0F, 0F, 0F); - Shape7 = new ModelRenderer(this, 15, 32); - Shape7.addBox(-2F, -6F, -2F, 4, 1, 4); - Shape7.setRotationPoint(0F, 16F, 0F); - Shape7.setTextureSize(64, 64); - Shape7.mirror = true; - setRotation(Shape7, 0F, 0F, 0F); - Shape8 = new ModelRenderer(this, 15, 39); - Shape8.addBox(-2F, 5F, -2F, 4, 1, 4); - Shape8.setRotationPoint(0F, 16F, 0F); - Shape8.setTextureSize(64, 64); - Shape8.mirror = true; - setRotation(Shape8, 0F, 0F, 0F); - Shape9 = new ModelRenderer(this, 0, 39); - Shape9.addBox(-1F, 5F, -7F, 2, 1, 5); - Shape9.setRotationPoint(0F, 16F, 0F); - Shape9.setTextureSize(64, 64); - Shape9.mirror = true; - setRotation(Shape9, 0F, 0F, 0F); - outputMain = new ModelRenderer(this, 51, 23); - outputMain.addBox(7F, -2F, -2F, 1, 4, 4); - outputMain.setRotationPoint(0F, 16F, 0F); - outputMain.setTextureSize(64, 64); - outputMain.mirror = true; - setRotation(outputMain, 0F, 0F, 0F); - Shape11 = new ModelRenderer(this, 13, 46); - Shape11.addBox(5F, -2F, -2F, 1, 4, 4); - Shape11.setRotationPoint(0F, 16F, 0F); - Shape11.setTextureSize(64, 64); - Shape11.mirror = true; - setRotation(Shape11, 0F, 0F, 0F); - Shape12 = new ModelRenderer(this, 0, 46); - Shape12.addBox(5F, -1F, -7F, 1, 2, 5); - Shape12.setRotationPoint(0F, 16F, 0F); - Shape12.setTextureSize(64, 64); - Shape12.mirror = true; - setRotation(Shape12, 0F, 0F, 0F); - Shape13 = new ModelRenderer(this, 0, 56); - Shape13.addBox(-6F, -1F, -7F, 1, 2, 5); - Shape13.setRotationPoint(0F, 16F, 0F); - Shape13.setTextureSize(64, 64); - Shape13.mirror = true; - setRotation(Shape13, 0F, 0F, 0F); - Shape14 = new ModelRenderer(this, 13, 56); - Shape14.addBox(-6F, -2F, -2F, 1, 4, 4); - Shape14.setRotationPoint(0F, 16F, 0F); - Shape14.setTextureSize(64, 64); - Shape14.mirror = true; - setRotation(Shape14, 0F, 0F, 0F); - output1 = new ModelRenderer(this, 51, 18); - output1.addBox(5F, -5F, -5F, 3, 2, 2); - output1.setRotationPoint(0F, 16F, 0F); - output1.setTextureSize(64, 64); - output1.mirror = true; - setRotation(output1, 0F, 0F, 0F); - output2 = new ModelRenderer(this, 51, 18); - output2.addBox(5F, -5F, 3F, 3, 2, 2); - output2.setRotationPoint(0F, 16F, 0F); - output2.setTextureSize(64, 64); - output2.mirror = true; - setRotation(output2, 0F, 0F, 0F); - output3 = new ModelRenderer(this, 51, 18); - output3.addBox(5F, 3F, -5F, 3, 2, 2); - output3.setRotationPoint(0F, 16F, 0F); - output3.setTextureSize(64, 64); - output3.mirror = true; - setRotation(output3, 0F, 0F, 0F); - output4 = new ModelRenderer(this, 51, 18); - output4.addBox(5F, 3F, 3F, 3, 2, 2); - output4.setRotationPoint(0F, 16F, 0F); - output4.setTextureSize(64, 64); - output4.mirror = true; - setRotation(output4, 0F, 0F, 0F); - } - - public void render(Entity entity, float f, float f1, float f2, float f3, float f4, float f5, ForgeDirection input, ForgeDirection output) - { - super.render(entity, f, f1, f2, f3, f4, f5); - setRotationAngles(f, f1, f2, f3, f4, f5, entity); - - float xInputRot = 0.0f; - float yInputRot = 0.0f; - float zInputRot = 0.0f; - float xOutputRot = 0.0f; - float yOutputRot = 0.0f; - float zOutputRot = 0.0f; - - switch (input) - { - case NORTH: - xInputRot = 0.0f; - yInputRot = 0.0f; - zInputRot = 0.0f; - break; - - case EAST: - xInputRot = 0.0f; - yInputRot = (float) (0.5f * Math.PI); - zInputRot = 0.0f; - break; - - case SOUTH: - xInputRot = 0.0f; - yInputRot = (float) (1.0f * Math.PI); - zInputRot = 0.0f; - break; - - case WEST: - xInputRot = 0.0f; - yInputRot = (float) (-0.5f * Math.PI); - zInputRot = 0.0f; - break; - - case UP: - xInputRot = (float) (-0.5f * Math.PI); - yInputRot = 0.0f; - zInputRot = 0.0f; - break; - - case DOWN: - xInputRot = (float) (0.5f * Math.PI); - yInputRot = 0.0f; - zInputRot = 0.0f; - break; - - default: - break; - } - - switch (output) - { - case NORTH: - xOutputRot = 0.0f; - yOutputRot = (float) (0.5f * Math.PI); - zOutputRot = 0.0f; - break; - - case EAST: - xOutputRot = 0.0f; - yOutputRot = (float) (1.0f * Math.PI); - zOutputRot = 0.0f; - break; - - case SOUTH: - xOutputRot = 0.0f; - yOutputRot = (float) (-0.5f * Math.PI); - zOutputRot = 0.0f; - break; - - case WEST: - xOutputRot = 0.0f; - yOutputRot = 0.0f; - zOutputRot = 0.0f; - break; - - case UP: - xOutputRot = 0.0f; - yOutputRot = 0.0f; - zOutputRot = (float) (-0.5f * Math.PI); - break; - - case DOWN: - xOutputRot = 0.0f; - yOutputRot = 0.0f; - zOutputRot = (float) (0.5f * Math.PI); - break; - - default: - break; - } - - this.setRotation(inputMain, xInputRot, yInputRot, zInputRot); - this.setRotation(Shape2, xInputRot, yInputRot, zInputRot); - this.setRotation(Shape3, xInputRot, yInputRot, zInputRot); - this.setRotation(Shape4, xInputRot, yInputRot, zInputRot); - this.setRotation(Shape5, xInputRot, yInputRot, zInputRot); - this.setRotation(Shape6, xInputRot, yInputRot, zInputRot); - this.setRotation(Shape7, xInputRot, yInputRot, zInputRot); - this.setRotation(Shape8, xInputRot, yInputRot, zInputRot); - this.setRotation(Shape9, xInputRot, yInputRot, zInputRot); - this.setRotation(Shape12, xInputRot, yInputRot, zInputRot); - this.setRotation(Shape11, xInputRot, yInputRot, zInputRot); - this.setRotation(Shape13, xInputRot, yInputRot, zInputRot); - this.setRotation(Shape14, xInputRot, yInputRot, zInputRot); - - this.setRotation(outputMain, xOutputRot, yOutputRot, zOutputRot); - this.setRotation(output1, xOutputRot, yOutputRot, zOutputRot); - this.setRotation(output2, xOutputRot, yOutputRot, zOutputRot); - this.setRotation(output3, xOutputRot, yOutputRot, zOutputRot); - this.setRotation(output4, xOutputRot, yOutputRot, zOutputRot); - - - core.render(f5); - inputMain.render(f5); - Shape2.render(f5); - Shape3.render(f5); - Shape4.render(f5); - Shape5.render(f5); - Shape6.render(f5); - Shape7.render(f5); - Shape8.render(f5); - Shape9.render(f5); - outputMain.render(f5); - Shape11.render(f5); - Shape12.render(f5); - Shape13.render(f5); - Shape14.render(f5); - output1.render(f5); - output2.render(f5); - output3.render(f5); - output4.render(f5); - } - - private void setRotation(ModelRenderer model, float x, float y, float z) - { - model.rotateAngleX = x; - model.rotateAngleY = y; - model.rotateAngleZ = z; - } - - public void setRotationAngles(float f, float f1, float f2, float f3, float f4, float f5, Entity entity) - { - super.setRotationAngles(f, f1, f2, f3, f4, f5, entity); - } - -} - diff --git a/src-backup/main/java/WayofTime/alchemicalWizardry/common/renderer/model/ModelSpellParadigmBlock.java b/src-backup/main/java/WayofTime/alchemicalWizardry/common/renderer/model/ModelSpellParadigmBlock.java deleted file mode 100644 index da48b87d..00000000 --- a/src-backup/main/java/WayofTime/alchemicalWizardry/common/renderer/model/ModelSpellParadigmBlock.java +++ /dev/null @@ -1,234 +0,0 @@ -package WayofTime.alchemicalWizardry.common.renderer.model; - -//Date: 07/03/2014 9:30:25 PM -//Template version 1.1 -//Java generated by Techne -//Keep in mind that you still need to fill in some blanks -//- ZeuX - - - -import net.minecraft.client.model.ModelBase; -import net.minecraft.client.model.ModelRenderer; -import net.minecraft.entity.Entity; -import net.minecraftforge.common.util.ForgeDirection; - -public class ModelSpellParadigmBlock extends ModelBase -{ -//fields - ModelRenderer core; - ModelRenderer outputMain; - ModelRenderer output1; - ModelRenderer output2; - ModelRenderer output3; - ModelRenderer output4; - ModelRenderer Shape1; - ModelRenderer Shape2; - ModelRenderer Shape3; - ModelRenderer Shape4; - ModelRenderer Shape5; - -public ModelSpellParadigmBlock() -{ - textureWidth = 64; - textureHeight = 64; - - core = new ModelRenderer(this, 0, 0); - core.addBox(-3F, -3F, -3F, 6, 6, 6); - core.setRotationPoint(0F, 16F, 0F); - core.setTextureSize(64, 64); - core.mirror = true; - setRotation(core, 0F, 0F, 0F); - outputMain = new ModelRenderer(this, 0, 13); - outputMain.addBox(6F, -2F, -2F, 2, 4, 4); - outputMain.setRotationPoint(0F, 16F, 0F); - outputMain.setTextureSize(64, 64); - outputMain.mirror = true; - setRotation(outputMain, 0F, 0F, 0F); - output1 = new ModelRenderer(this, 0, 22); - output1.addBox(5F, -5F, -5F, 3, 2, 2); - output1.setRotationPoint(0F, 16F, 0F); - output1.setTextureSize(64, 64); - output1.mirror = true; - setRotation(output1, 0F, 0F, 0F); - output2 = new ModelRenderer(this, 0, 22); - output2.addBox(5F, -5F, 3F, 3, 2, 2); - output2.setRotationPoint(0F, 16F, 0F); - output2.setTextureSize(64, 64); - output2.mirror = true; - setRotation(output2, 0F, 0F, 0F); - output3 = new ModelRenderer(this, 0, 22); - output3.addBox(5F, 3F, -5F, 3, 2, 2); - output3.setRotationPoint(0F, 16F, 0F); - output3.setTextureSize(64, 64); - output3.mirror = true; - setRotation(output3, 0F, 0F, 0F); - output4 = new ModelRenderer(this, 0, 22); - output4.addBox(5F, 3F, 3F, 3, 2, 2); - output4.setRotationPoint(0F, 16F, 0F); - output4.setTextureSize(64, 64); - output4.mirror = true; - setRotation(output4, 0F, 0F, 0F); - Shape1 = new ModelRenderer(this, 0, 28); - Shape1.addBox(-5F, -5F, -1F, 10, 1, 2); - Shape1.setRotationPoint(0F, 16F, 0F); - Shape1.setTextureSize(64, 64); - Shape1.mirror = true; - setRotation(Shape1, 0F, 0F, 0F); - Shape2 = new ModelRenderer(this, 25, 28); - Shape2.addBox(-5F, -4F, -4F, 1, 8, 8); - Shape2.setRotationPoint(0F, 16F, 0F); - Shape2.setTextureSize(64, 64); - Shape2.mirror = true; - setRotation(Shape2, 0F, 0F, 0F); - Shape3 = new ModelRenderer(this, 0, 33); - Shape3.addBox(-5F, 4F, -1F, 10, 1, 2); - Shape3.setRotationPoint(0F, 16F, 0F); - Shape3.setTextureSize(64, 64); - Shape3.mirror = true; - setRotation(Shape3, 0F, 0F, 0F); - Shape4 = new ModelRenderer(this, 0, 38); - Shape4.addBox(-5F, -1F, -5F, 10, 2, 1); - Shape4.setRotationPoint(0F, 16F, 0F); - Shape4.setTextureSize(64, 64); - Shape4.mirror = true; - setRotation(Shape4, 0F, 0F, 0F); - Shape5 = new ModelRenderer(this, 0, 43); - Shape5.addBox(-5F, -1F, 4F, 10, 2, 1); - Shape5.setRotationPoint(0F, 16F, 0F); - Shape5.setTextureSize(64, 64); - Shape5.mirror = true; - setRotation(Shape5, 0F, 0F, 0F); -} - -public void render(Entity entity, float f, float f1, float f2, float f3, float f4, float f5, ForgeDirection input, ForgeDirection output) -{ - super.render(entity, f, f1, f2, f3, f4, f5); - setRotationAngles(f, f1, f2, f3, f4, f5, entity); - float xInputRot = 0.0f; - float yInputRot = 0.0f; - float zInputRot = 0.0f; - float xOutputRot = 0.0f; - float yOutputRot = 0.0f; - float zOutputRot = 0.0f; - - switch (input) - { - case NORTH: - xInputRot = 0.0f; - yInputRot = 0.0f; - zInputRot = 0.0f; - break; - - case EAST: - xInputRot = 0.0f; - yInputRot = (float) (0.5f * Math.PI); - zInputRot = 0.0f; - break; - - case SOUTH: - xInputRot = 0.0f; - yInputRot = (float) (1.0f * Math.PI); - zInputRot = 0.0f; - break; - - case WEST: - xInputRot = 0.0f; - yInputRot = (float) (-0.5f * Math.PI); - zInputRot = 0.0f; - break; - - case UP: - xInputRot = (float) (-0.5f * Math.PI); - yInputRot = 0.0f; - zInputRot = 0.0f; - break; - - case DOWN: - xInputRot = (float) (0.5f * Math.PI); - yInputRot = 0.0f; - zInputRot = 0.0f; - break; - - default: - break; - } - - switch (output) - { - case NORTH: - xOutputRot = 0.0f; - yOutputRot = (float) (0.5f * Math.PI); - zOutputRot = 0.0f; - break; - - case EAST: - xOutputRot = 0.0f; - yOutputRot = (float) (1.0f * Math.PI); - zOutputRot = 0.0f; - break; - - case SOUTH: - xOutputRot = 0.0f; - yOutputRot = (float) (-0.5f * Math.PI); - zOutputRot = 0.0f; - break; - - case WEST: - xOutputRot = 0.0f; - yOutputRot = 0.0f; - zOutputRot = 0.0f; - break; - - case UP: - xOutputRot = 0.0f; - yOutputRot = 0.0f; - zOutputRot = (float) (-0.5f * Math.PI); - break; - - case DOWN: - xOutputRot = 0.0f; - yOutputRot = 0.0f; - zOutputRot = (float) (0.5f * Math.PI); - break; - - default: - break; - } - - this.setRotation(outputMain, xOutputRot, yOutputRot, zOutputRot); - this.setRotation(output1, xOutputRot, yOutputRot, zOutputRot); - this.setRotation(output2, xOutputRot, yOutputRot, zOutputRot); - this.setRotation(output3, xOutputRot, yOutputRot, zOutputRot); - this.setRotation(output4, xOutputRot, yOutputRot, zOutputRot); - this.setRotation(Shape1, xOutputRot, yOutputRot, zOutputRot); - this.setRotation(Shape2, xOutputRot, yOutputRot, zOutputRot); - this.setRotation(Shape3, xOutputRot, yOutputRot, zOutputRot); - this.setRotation(Shape4, xOutputRot, yOutputRot, zOutputRot); - this.setRotation(Shape5, xOutputRot, yOutputRot, zOutputRot); - core.render(f5); - outputMain.render(f5); - output1.render(f5); - output2.render(f5); - output3.render(f5); - output4.render(f5); - Shape1.render(f5); - Shape2.render(f5); - Shape3.render(f5); - Shape4.render(f5); - Shape5.render(f5); -} - -private void setRotation(ModelRenderer model, float x, float y, float z) -{ - model.rotateAngleX = x; - model.rotateAngleY = y; - model.rotateAngleZ = z; -} - -public void setRotationAngles(float f, float f1, float f2, float f3, float f4, float f5, Entity entity) -{ - super.setRotationAngles(f, f1, f2, f3, f4, f5, entity); -} - -} diff --git a/src-backup/main/java/WayofTime/alchemicalWizardry/common/renderer/model/ModelWingedFireDemon.java b/src-backup/main/java/WayofTime/alchemicalWizardry/common/renderer/model/ModelWingedFireDemon.java deleted file mode 100644 index 07164ffd..00000000 --- a/src-backup/main/java/WayofTime/alchemicalWizardry/common/renderer/model/ModelWingedFireDemon.java +++ /dev/null @@ -1,203 +0,0 @@ -package WayofTime.alchemicalWizardry.common.renderer.model; - -import net.minecraft.client.model.ModelBase; -import net.minecraft.client.model.ModelRenderer; -import net.minecraft.entity.Entity; -import net.minecraft.util.MathHelper; - -public class ModelWingedFireDemon extends ModelBase -{ - //fields - ModelRenderer leftLegPlate; - ModelRenderer leftLeg; - ModelRenderer codPiece; - ModelRenderer rightLegPlate; - ModelRenderer rightLeg; - ModelRenderer body; - ModelRenderer leftShoulder; - ModelRenderer leftArm; - ModelRenderer head; - ModelRenderer rightShoulder; - ModelRenderer rightArm; - ModelRenderer leftWing; - ModelRenderer rightWing; - ModelRenderer leftHorn1; - ModelRenderer rightHorn1; - ModelRenderer leftHorn2; - ModelRenderer rightHorn2; - - public ModelWingedFireDemon() - { - textureWidth = 64; - textureHeight = 64; - leftLegPlate = new ModelRenderer(this, 40, 36); - leftLegPlate.addBox(0F, -3F, -3F, 6, 6, 6); - leftLegPlate.setRotationPoint(2F, 5F, 0F); - leftLegPlate.setTextureSize(64, 64); - leftLegPlate.mirror = true; - setRotation(leftLegPlate, 0F, 0F, 0F); - leftLeg = new ModelRenderer(this, 48, 16); - leftLeg.addBox(1F, 3F, -2F, 4, 16, 4); - leftLeg.setRotationPoint(2F, 5F, 0F); - leftLeg.setTextureSize(64, 64); - leftLeg.mirror = true; - setRotation(leftLeg, 0F, 0F, 0F); - codPiece = new ModelRenderer(this, 48, 0); - codPiece.addBox(-2F, 0F, -2F, 4, 6, 4); - codPiece.setRotationPoint(0F, 1F, 0F); - codPiece.setTextureSize(64, 64); - codPiece.mirror = true; - setRotation(codPiece, 0F, 0F, 0F); - rightLegPlate = new ModelRenderer(this, 40, 36); - rightLegPlate.mirror = true; - rightLegPlate.addBox(-6F, -3F, -3F, 6, 6, 6); - rightLegPlate.setRotationPoint(-2F, 5F, 0F); - rightLegPlate.setTextureSize(64, 64); - rightLegPlate.mirror = true; - setRotation(rightLegPlate, 0F, 0F, 0F); - rightLegPlate.mirror = false; - rightLeg = new ModelRenderer(this, 48, 16); - rightLeg.mirror = true; - rightLeg.addBox(-5F, 3F, -2F, 4, 16, 4); - rightLeg.setRotationPoint(-2F, 5F, 0F); - rightLeg.setTextureSize(64, 64); - rightLeg.mirror = true; - setRotation(rightLeg, 0F, 0F, 0F); - rightLeg.mirror = false; - body = new ModelRenderer(this, 0, 44); - body.addBox(-5F, -14F, -3F, 10, 14, 6); - body.setRotationPoint(0F, 1F, 0F); - body.setTextureSize(64, 64); - body.mirror = true; - setRotation(body, 0F, 0F, 0F); - leftShoulder = new ModelRenderer(this, 0, 29); - leftShoulder.addBox(0F, -5F, -4F, 8, 7, 8); - leftShoulder.setRotationPoint(5F, -10F, 0F); - leftShoulder.setTextureSize(64, 64); - leftShoulder.mirror = true; - setRotation(leftShoulder, 0F, 0F, 0F); - leftArm = new ModelRenderer(this, 32, 0); - leftArm.addBox(3F, 2F, -2F, 4, 12, 4); - leftArm.setRotationPoint(5F, -10F, 0F); - leftArm.setTextureSize(64, 64); - leftArm.mirror = true; - setRotation(leftArm, 0F, 0F, 0F); - head = new ModelRenderer(this, 32, 48); - head.addBox(-4F, -7F, -4F, 8, 8, 8); - head.setRotationPoint(0F, -14F, -1F); - head.setTextureSize(64, 64); - head.mirror = true; - setRotation(head, 0F, 0F, 0F); - rightShoulder = new ModelRenderer(this, 0, 29); - rightShoulder.mirror = true; - rightShoulder.mirror = true; - rightShoulder.addBox(-8F, -5F, -4F, 8, 7, 8); - rightShoulder.setRotationPoint(-5F, -10F, 0F); - rightShoulder.setTextureSize(64, 64); - rightShoulder.mirror = true; - setRotation(rightShoulder, 0F, 0F, 0F); - rightShoulder.mirror = false; - rightArm = new ModelRenderer(this, 32, 0); - rightArm.mirror = true; - rightArm.mirror = true; - rightArm.addBox(-7F, 2F, -2F, 4, 12, 4); - rightArm.setRotationPoint(-5F, -10F, 0F); - rightArm.setTextureSize(64, 64); - rightArm.mirror = true; - setRotation(rightArm, 0F, 0F, 0F); - rightArm.mirror = false; - leftWing = new ModelRenderer(this, 0, 0); - leftWing.addBox(0F, -2F, 0F, 16, 12, 0); - leftWing.setRotationPoint(0F, -11F, 3F); - leftWing.setTextureSize(64, 64); - leftWing.mirror = true; - setRotation(leftWing, 0F, -0.5061455F, 0F); - rightWing = new ModelRenderer(this, 0, 0); - rightWing.mirror = true; - rightWing.addBox(-16F, -2F, 0F, 16, 12, 0); - rightWing.setRotationPoint(0F, -11F, 3F); - rightWing.setTextureSize(64, 64); - rightWing.mirror = true; - setRotation(rightWing, 0F, 0.5061455F, 0F); - rightWing.mirror = false; - leftHorn1 = new ModelRenderer(this, 0, 12); - leftHorn1.addBox(4F, -9F, -1F, 1, 5, 1); - leftHorn1.setRotationPoint(0F, -14F, -1F); - leftHorn1.setTextureSize(64, 64); - leftHorn1.mirror = true; - setRotation(leftHorn1, 0F, 0F, 0F); - rightHorn1 = new ModelRenderer(this, 0, 12); - rightHorn1.mirror = true; - rightHorn1.addBox(-5F, -9F, -1F, 1, 5, 1); - rightHorn1.setRotationPoint(0F, -14F, -1F); - rightHorn1.setTextureSize(64, 64); - rightHorn1.mirror = true; - setRotation(rightHorn1, 0F, 0F, 0F); - rightHorn1.mirror = false; - leftHorn2 = new ModelRenderer(this, 4, 12); - leftHorn2.addBox(4F, -10F, 0F, 1, 5, 1); - leftHorn2.setRotationPoint(0F, -14F, -1F); - leftHorn2.setTextureSize(64, 64); - leftHorn2.mirror = true; - setRotation(leftHorn2, 0F, 0F, 0F); - rightHorn2 = new ModelRenderer(this, 4, 12); - rightHorn2.mirror = true; - rightHorn2.addBox(-5F, -10F, 0F, 1, 5, 1); - rightHorn2.setRotationPoint(0F, -14F, -1F); - rightHorn2.setTextureSize(64, 64); - rightHorn2.mirror = true; - setRotation(rightHorn2, 0F, 0F, 0F); - rightHorn2.mirror = false; - } - - 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); - leftLegPlate.render(f5); - leftLeg.render(f5); - codPiece.render(f5); - rightLegPlate.render(f5); - rightLeg.render(f5); - body.render(f5); - leftShoulder.render(f5); - leftArm.render(f5); - head.render(f5); - rightShoulder.render(f5); - rightArm.render(f5); - leftWing.render(f5); - rightWing.render(f5); - leftHorn1.render(f5); - rightHorn1.render(f5); - leftHorn2.render(f5); - rightHorn2.render(f5); - } - - private void setRotation(ModelRenderer model, float x, float y, float z) - { - model.rotateAngleX = x; - model.rotateAngleY = y; - model.rotateAngleZ = z; - } - - public void setRotationAngles(float f, float f1, float f2, float f3, float f4, float f5, Entity entity) - { - super.setRotationAngles(f, f1, f2, f3, f4, f5, entity); - this.head.rotateAngleX = f4 / (180F / (float) Math.PI); - this.head.rotateAngleY = f3 / (180F / (float) Math.PI); - this.leftHorn1.rotateAngleX = head.rotateAngleX; - this.leftHorn1.rotateAngleY = head.rotateAngleY; - this.leftHorn2.rotateAngleX = head.rotateAngleX; - this.leftHorn2.rotateAngleY = head.rotateAngleY; - this.rightHorn1.rotateAngleX = head.rotateAngleX; - this.rightHorn1.rotateAngleY = head.rotateAngleY; - this.rightHorn2.rotateAngleX = head.rotateAngleX; - this.rightHorn2.rotateAngleY = head.rotateAngleY; - this.leftLeg.rotateAngleX = MathHelper.cos(f * 0.6662F) * 1.4F * f1; - this.rightLeg.rotateAngleX = MathHelper.cos(f * 0.6662F + (float) Math.PI) * 1.0F * f1; - this.rightArm.rotateAngleX = MathHelper.cos(f * 0.6662F + (float) Math.PI) * 1.0F * f1; - this.leftArm.rotateAngleX = MathHelper.cos(f * 0.6662F) * 1.4F * f1; - this.leftShoulder.rotateAngleX = this.leftArm.rotateAngleX; - this.rightShoulder.rotateAngleX = this.rightArm.rotateAngleX; - } -} \ No newline at end of file diff --git a/src-backup/main/java/WayofTime/alchemicalWizardry/common/renderer/model/ModelWritingTable.java b/src-backup/main/java/WayofTime/alchemicalWizardry/common/renderer/model/ModelWritingTable.java deleted file mode 100644 index 15dede34..00000000 --- a/src-backup/main/java/WayofTime/alchemicalWizardry/common/renderer/model/ModelWritingTable.java +++ /dev/null @@ -1,138 +0,0 @@ -package WayofTime.alchemicalWizardry.common.renderer.model; - -import net.minecraft.client.model.ModelBase; -import net.minecraft.client.model.ModelRenderer; -import net.minecraft.entity.Entity; - -public class ModelWritingTable extends ModelBase -{ - //fields - ModelRenderer base; - ModelRenderer support; - ModelRenderer appendage1; - ModelRenderer appendage2; - ModelRenderer appendage3; - ModelRenderer appendage4; - ModelRenderer appendage5; - ModelRenderer outputPad; - ModelRenderer input1; - ModelRenderer input5; - ModelRenderer input4; - ModelRenderer input3; - ModelRenderer Shape1; - - public ModelWritingTable() - { - textureWidth = 64; - textureHeight = 64; - base = new ModelRenderer(this, 0, 0); - base.addBox(0F, 0F, 0F, 16, 2, 16); - base.setRotationPoint(-8F, 22F, -8F); - base.setTextureSize(64, 32); - base.mirror = true; - setRotation(base, 0F, 0F, 0F); - support = new ModelRenderer(this, 0, 0); - support.addBox(0F, 0F, 0F, 2, 12, 2); - support.setRotationPoint(-1F, 10F, -1F); - support.setTextureSize(64, 32); - support.mirror = true; - setRotation(support, 0F, 0F, 0F); - appendage1 = new ModelRenderer(this, 48, 0); - appendage1.addBox(1F, 0F, 0F, 7, 11, 0); - appendage1.setRotationPoint(0F, 10F, 0F); - appendage1.setTextureSize(64, 32); - appendage1.mirror = true; - setRotation(appendage1, 0F, 0F, 0F); - appendage2 = new ModelRenderer(this, 48, 0); - appendage2.addBox(1F, 0F, 0F, 7, 11, 0); - appendage2.setRotationPoint(0F, 10F, 0F); - appendage2.setTextureSize(64, 32); - appendage2.mirror = true; - setRotation(appendage2, 0F, ((float) Math.PI * 2F / 5F), 0F); - appendage3 = new ModelRenderer(this, 48, 0); - appendage3.addBox(1F, 0F, 0F, 7, 11, 0); - appendage3.setRotationPoint(0F, 10F, 0F); - appendage3.setTextureSize(64, 32); - appendage3.mirror = true; - setRotation(appendage3, 0F, 2.513274F, 0F); - appendage4 = new ModelRenderer(this, 48, 0); - appendage4.addBox(1F, 0F, 0F, 7, 11, 0); - appendage4.setRotationPoint(0F, 10F, 0F); - appendage4.setTextureSize(64, 32); - appendage4.mirror = true; - setRotation(appendage4, 0F, -2.513274F, 0F); - appendage5 = new ModelRenderer(this, 48, 0); - appendage5.addBox(1F, 0F, 0F, 7, 11, 0); - appendage5.setRotationPoint(0F, 10F, 0F); - appendage5.setTextureSize(64, 32); - appendage5.mirror = true; - setRotation(appendage5, 0F, -((float) Math.PI * 2F / 5F), 0F); - outputPad = new ModelRenderer(this, 0, 20); - outputPad.addBox(0F, 0F, 0F, 4, 1, 4); - outputPad.setRotationPoint(-2F, 9F, -2F); - outputPad.setTextureSize(64, 64); - outputPad.mirror = true; - setRotation(outputPad, 0F, 0F, 0F); - input1 = new ModelRenderer(this, 0, 20); - input1.addBox(4F, 0F, -2F, 4, 1, 4); - input1.setRotationPoint(0F, 21F, 0F); - input1.setTextureSize(64, 64); - input1.mirror = true; - setRotation(input1, 0F, 0F, 0F); - input5 = new ModelRenderer(this, 0, 20); - input5.addBox(0F, 0F, 0F, 4, 1, 4); - input5.setRotationPoint(0F, 21F, -8F); - input5.setTextureSize(64, 64); - input5.mirror = true; - setRotation(input5, 0F, 0F, 0F); - input4 = new ModelRenderer(this, 0, 20); - input4.addBox(-7F, 0F, -6F, 4, 1, 4); - input4.setRotationPoint(0F, 21F, 0F); - input4.setTextureSize(64, 64); - input4.mirror = true; - setRotation(input4, 0F, 0F, 0F); - input3 = new ModelRenderer(this, 0, 20); - input3.addBox(-7F, 0F, 2F, 4, 1, 4); - input3.setRotationPoint(0F, 21F, 0F); - input3.setTextureSize(64, 64); - input3.mirror = true; - setRotation(input3, 0F, 0F, 0F); - Shape1 = new ModelRenderer(this, 0, 20); - Shape1.addBox(0F, 0F, 4F, 4, 1, 4); - Shape1.setRotationPoint(0F, 21F, 0F); - Shape1.setTextureSize(64, 64); - Shape1.mirror = true; - setRotation(Shape1, 0F, 0F, 0F); - } - - 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); - base.render(f5); - support.render(f5); - appendage1.render(f5); - appendage2.render(f5); - appendage3.render(f5); - appendage4.render(f5); - appendage5.render(f5); - outputPad.render(f5); - input1.render(f5); - input5.render(f5); - input4.render(f5); - input3.render(f5); - Shape1.render(f5); - } - - private void setRotation(ModelRenderer model, float x, float y, float z) - { - model.rotateAngleX = x; - model.rotateAngleY = y; - model.rotateAngleZ = z; - } - - public void setRotationAngles(float f, float f1, float f2, float f3, float f4, float f5, Entity entity) - { - super.setRotationAngles(f, f1, f2, f3, f4, f5, entity); - } -} diff --git a/src-backup/main/java/WayofTime/alchemicalWizardry/common/renderer/projectile/RenderEnergyBazookaMainProjectile.java b/src-backup/main/java/WayofTime/alchemicalWizardry/common/renderer/projectile/RenderEnergyBazookaMainProjectile.java deleted file mode 100644 index 57df9912..00000000 --- a/src-backup/main/java/WayofTime/alchemicalWizardry/common/renderer/projectile/RenderEnergyBazookaMainProjectile.java +++ /dev/null @@ -1,39 +0,0 @@ -package WayofTime.alchemicalWizardry.common.renderer.projectile; - -import WayofTime.alchemicalWizardry.common.renderer.model.ModelEnergyBazookaMainProjectile; -import net.minecraft.client.model.ModelBase; -import net.minecraft.client.renderer.entity.Render; -import net.minecraft.entity.Entity; -import net.minecraft.util.ResourceLocation; -import org.lwjgl.opengl.GL11; -import org.lwjgl.opengl.GL12; - -public class RenderEnergyBazookaMainProjectile extends Render -{ - public ModelBase model = new ModelEnergyBazookaMainProjectile(); - private static final ResourceLocation field_110833_a = new ResourceLocation("alchemicalwizardry", "textures/models/EnergyBazookaMainProjectile.png"); //refers to:YourMod/modelsTextureFile/optionalFile/yourTexture.png - private float scale = 1.0f; - - @Override - public void doRender(Entity entity, double d0, double d1, double d2, float f, float f1) - { - GL11.glPushMatrix(); - GL11.glTranslatef((float) d0, (float) d1, (float) d2); - GL11.glEnable(GL12.GL_RESCALE_NORMAL); - GL11.glScalef(scale, scale, scale); - this.bindTexture(this.getEntityTexture(entity)); - GL11.glRotatef(entity.prevRotationYaw + (entity.rotationYaw - entity.prevRotationYaw) * f1, 0.0F, 1.0F, 0.0F); - GL11.glRotatef(180.0f - entity.prevRotationPitch + (entity.rotationPitch - entity.prevRotationPitch) * f1, 1.0F, 0.0F, 0.0f); - model.render(entity, 0, (float) d0, (float) d1, (float) d2, f, f1); - //GL11.glRotatef(entity.getRotationYawHead(), 0.0F, 1.0F, 0.0F); - GL11.glDisable(GL12.GL_RESCALE_NORMAL); - GL11.glPopMatrix(); - } - - @Override - protected ResourceLocation getEntityTexture(Entity entity) - { - // TODO Auto-generated method stub - return field_110833_a; - } -} diff --git a/src-backup/main/java/WayofTime/alchemicalWizardry/common/renderer/projectile/RenderEnergyBlastProjectile.java b/src-backup/main/java/WayofTime/alchemicalWizardry/common/renderer/projectile/RenderEnergyBlastProjectile.java deleted file mode 100644 index 5e988929..00000000 --- a/src-backup/main/java/WayofTime/alchemicalWizardry/common/renderer/projectile/RenderEnergyBlastProjectile.java +++ /dev/null @@ -1,101 +0,0 @@ -package WayofTime.alchemicalWizardry.common.renderer.projectile; - -import net.minecraft.client.renderer.Tessellator; -import net.minecraft.client.renderer.entity.Render; -import net.minecraft.entity.Entity; -import net.minecraft.entity.IProjectile; -import net.minecraft.util.ResourceLocation; - -import org.lwjgl.opengl.GL11; -import org.lwjgl.opengl.GL12; - -import WayofTime.alchemicalWizardry.common.entity.projectile.ExplosionProjectile; -import WayofTime.alchemicalWizardry.common.entity.projectile.FireProjectile; -import WayofTime.alchemicalWizardry.common.entity.projectile.HolyProjectile; -import WayofTime.alchemicalWizardry.common.entity.projectile.IceProjectile; -import WayofTime.alchemicalWizardry.common.entity.projectile.LightningBoltProjectile; -import WayofTime.alchemicalWizardry.common.entity.projectile.MudProjectile; -import WayofTime.alchemicalWizardry.common.entity.projectile.WaterProjectile; -import WayofTime.alchemicalWizardry.common.entity.projectile.WindGustProjectile; -import cpw.mods.fml.relauncher.Side; -import cpw.mods.fml.relauncher.SideOnly; - -@SideOnly(Side.CLIENT) -public class RenderEnergyBlastProjectile extends Render -{ - public void doRenderEnergyBlastProjectile(Entity entityShot, double par2, double par4, double par6, float par8, float par9) - { - GL11.glPushMatrix(); - GL11.glTranslatef((float) par2, (float) par4, (float) par6); - GL11.glEnable(GL12.GL_RESCALE_NORMAL); - GL11.glScalef(0.1F, 0.1F, 0.1F); - this.bindTexture(this.getEntityTexture(entityShot)); - Tessellator var12 = Tessellator.instance; - GL11.glRotatef(180.0F - renderManager.playerViewY, 0.0F, 1.0F, 0.0F); - GL11.glRotatef(-renderManager.playerViewX, 1.0F, 0.0F, 0.0F); - var12.startDrawingQuads(); - var12.setNormal(0.0F, 1.0F, 0.0F); - var12.addVertexWithUV(-0.5F, -0.25F, 0.0D, 0, 1); - var12.addVertexWithUV(0.5F, -0.25F, 0.0D, 1, 1); - var12.addVertexWithUV(0.5F, 0.75F, 0.0D, 1, 0); - var12.addVertexWithUV(-0.5F, 0.75F, 0.0D, 0, 0); - var12.draw(); - GL11.glDisable(GL12.GL_RESCALE_NORMAL); - GL11.glPopMatrix(); - } - - @Override - public void doRender(Entity par1Entity, double par2, double par4, double par6, float par8, float par9) - { - if (par1Entity instanceof IProjectile) - { - this.doRenderEnergyBlastProjectile(par1Entity, par2, par4, par6, par8, par9); - } - } - - @Override - protected ResourceLocation getEntityTexture(Entity entity) - { - if (entity instanceof IceProjectile) - { - return new ResourceLocation("alchemicalwizardry", "textures/entities/iceProjectile.png"); - } - - if (entity instanceof FireProjectile) - { - return new ResourceLocation("alchemicalwizardry", "textures/entities/fireProjectile.png"); - } - - if (entity instanceof ExplosionProjectile) - { - return new ResourceLocation("alchemicalwizardry", "textures/entities/explosionProjectile.png"); - } - - if (entity instanceof HolyProjectile) - { - return new ResourceLocation("alchemicalwizardry", "textures/entities/holyProjectile.png"); - } - - if (entity instanceof WindGustProjectile) - { - return new ResourceLocation("alchemicalwizardry", "textures/entities/windGustProjectile.png"); - } - - if (entity instanceof LightningBoltProjectile) - { - return new ResourceLocation("alchemicalwizardry", "textures/entities/lightningProjectile.png"); - } - - if (entity instanceof WaterProjectile) - { - return new ResourceLocation("alchemicalwizardry", "textures/entities/waterProjectile.png"); - } - - if (entity instanceof MudProjectile) - { - return new ResourceLocation("alchemicalwizardry", "textures/entities/mudProjectile.png"); - } - - return new ResourceLocation("alchemicalwizardry", "textures/entities/energyBlastProjectile.png"); - } -} diff --git a/src-backup/main/java/WayofTime/alchemicalWizardry/common/renderer/projectile/RenderFireProjectile.java b/src-backup/main/java/WayofTime/alchemicalWizardry/common/renderer/projectile/RenderFireProjectile.java deleted file mode 100644 index cda739fe..00000000 --- a/src-backup/main/java/WayofTime/alchemicalWizardry/common/renderer/projectile/RenderFireProjectile.java +++ /dev/null @@ -1,41 +0,0 @@ -package WayofTime.alchemicalWizardry.common.renderer.projectile; - -import cpw.mods.fml.relauncher.Side; -import cpw.mods.fml.relauncher.SideOnly; - -@SideOnly(Side.CLIENT) -public class RenderFireProjectile -{ -// public void doRenderProjectile(FireProjectile entityShot, double par2, double par4, double par6, float par8, float par9) -// { -// GL11.glPushMatrix(); -// GL11.glTranslatef((float)par2, (float)par4, (float)par6); -// GL11.glEnable(GL12.GL_RESCALE_NORMAL); -// GL11.glScalef(0.1F, 0.1F, 0.1F); -// this.func_110776_a(this.func_110775_a(entityShot)); -// Tessellator var12 = Tessellator.instance; -// GL11.glRotatef(180.0F - renderManager.playerViewY, 0.0F, 1.0F, 0.0F); -// GL11.glRotatef(-renderManager.playerViewX, 1.0F, 0.0F, 0.0F); -// var12.startDrawingQuads(); -// var12.setNormal(0.0F, 1.0F, 0.0F); -// var12.addVertexWithUV(-0.5F, -0.25F, 0.0D, 0, 1); -// var12.addVertexWithUV(0.5F, -0.25F, 0.0D, 1, 1); -// var12.addVertexWithUV(0.5F, 0.75F, 0.0D, 1, 0); -// var12.addVertexWithUV(-0.5F, 0.75F, 0.0D, 0, 0); -// var12.draw(); -// GL11.glDisable(GL12.GL_RESCALE_NORMAL); -// GL11.glPopMatrix(); -// } -// -// @Override -// public void doRender(Entity par1Entity, double par2, double par4, double par6, float par8, float par9) -// { -// this.doRenderProjectile((FireProjectile)par1Entity, par2, par4, par6, par8, par9); -// } -// -// @Override -// protected ResourceLocation func_110775_a(Entity entity) -// { -// return new ResourceLocation("alchemicalwizardry:/textures/entities/fireProjectile.png"); -// } -} diff --git a/src-backup/main/java/WayofTime/alchemicalWizardry/common/renderer/projectile/RenderMeteor.java b/src-backup/main/java/WayofTime/alchemicalWizardry/common/renderer/projectile/RenderMeteor.java deleted file mode 100644 index c39dcb11..00000000 --- a/src-backup/main/java/WayofTime/alchemicalWizardry/common/renderer/projectile/RenderMeteor.java +++ /dev/null @@ -1,39 +0,0 @@ -package WayofTime.alchemicalWizardry.common.renderer.projectile; - -import WayofTime.alchemicalWizardry.common.renderer.model.ModelMeteor; -import net.minecraft.client.model.ModelBase; -import net.minecraft.client.renderer.entity.Render; -import net.minecraft.entity.Entity; -import net.minecraft.util.ResourceLocation; -import org.lwjgl.opengl.GL11; -import org.lwjgl.opengl.GL12; - -public class RenderMeteor extends Render -{ - public ModelBase model = new ModelMeteor(); - private static final ResourceLocation field_110833_a = new ResourceLocation("alchemicalwizardry", "textures/models/Meteor.png"); //refers to:YourMod/modelsTextureFile/optionalFile/yourTexture.png - private float scale = 1.0f; - - @Override - public void doRender(Entity entity, double d0, double d1, double d2, float f, float f1) - { - GL11.glPushMatrix(); - GL11.glTranslatef((float) d0, (float) d1, (float) d2); - GL11.glEnable(GL12.GL_RESCALE_NORMAL); - GL11.glScalef(scale, scale, scale); - this.bindTexture(this.getEntityTexture(entity)); - GL11.glRotatef(entity.prevRotationYaw + (entity.rotationYaw - entity.prevRotationYaw) * f1, 0.0F, 1.0F, 0.0F); - GL11.glRotatef(180.0f - entity.prevRotationPitch + (entity.rotationPitch - entity.prevRotationPitch) * f1, 1.0F, 0.0F, 0.0f); - model.render(entity, 0, (float) d0, (float) d1, (float) d2, f, f1); - //GL11.glRotatef(entity.getRotationYawHead(), 0.0F, 1.0F, 0.0F); - GL11.glDisable(GL12.GL_RESCALE_NORMAL); - GL11.glPopMatrix(); - } - - @Override - protected ResourceLocation getEntityTexture(Entity entity) - { - // TODO Auto-generated method stub - return field_110833_a; - } -} diff --git a/src-backup/main/java/WayofTime/alchemicalWizardry/common/rituals/RitualEffectAnimalGrowth.java b/src-backup/main/java/WayofTime/alchemicalWizardry/common/rituals/RitualEffectAnimalGrowth.java deleted file mode 100644 index ed0e7130..00000000 --- a/src-backup/main/java/WayofTime/alchemicalWizardry/common/rituals/RitualEffectAnimalGrowth.java +++ /dev/null @@ -1,163 +0,0 @@ -package WayofTime.alchemicalWizardry.common.rituals; - -import java.util.ArrayList; -import java.util.Iterator; -import java.util.List; - -import net.minecraft.entity.EntityAgeable; -import net.minecraft.entity.passive.EntityAnimal; -import net.minecraft.entity.player.EntityPlayer; -import net.minecraft.inventory.IInventory; -import net.minecraft.item.ItemStack; -import net.minecraft.potion.Potion; -import net.minecraft.potion.PotionEffect; -import net.minecraft.server.MinecraftServer; -import net.minecraft.tileentity.TileEntity; -import net.minecraft.util.AxisAlignedBB; -import net.minecraft.world.World; -import WayofTime.alchemicalWizardry.api.alchemy.energy.ReagentRegistry; -import WayofTime.alchemicalWizardry.api.rituals.IMasterRitualStone; -import WayofTime.alchemicalWizardry.api.rituals.RitualComponent; -import WayofTime.alchemicalWizardry.api.rituals.RitualEffect; -import WayofTime.alchemicalWizardry.api.soulNetwork.LifeEssenceNetwork; -import WayofTime.alchemicalWizardry.api.soulNetwork.SoulNetworkHandler; -import WayofTime.alchemicalWizardry.common.spell.complex.effect.SpellHelper; - -public class RitualEffectAnimalGrowth extends RitualEffect -{ - public static final int breedingCost = 50; - public static final int reductusDrain = 1; - public static final int virtusDrain = 10; - - @Override - public void performEffect(IMasterRitualStone ritualStone) - { - String owner = ritualStone.getOwner(); - - int currentEssence = SoulNetworkHandler.getCurrentEssence(owner); - World world = ritualStone.getWorld(); - int x = ritualStone.getXCoord(); - int y = ritualStone.getYCoord(); - int z = ritualStone.getZCoord(); - - if (world.getWorldTime() % 20 != 0) - { - return; - } - - double range = 2; - - AxisAlignedBB axisalignedbb = AxisAlignedBB.getBoundingBox((double) x, (double) y + 1, (double) z, (double) (x + 1), (double) (y + 3), (double) (z + 1)).expand(range, 0, range); - List list = world.getEntitiesWithinAABB(EntityAgeable.class, axisalignedbb); - - int entityCount = 0; - boolean flag = false; - - if (currentEssence < this.getCostPerRefresh() * list.size()) - { - SoulNetworkHandler.causeNauseaToPlayer(owner); - } else - { - boolean hasReductus = this.canDrainReagent(ritualStone, ReagentRegistry.reductusReagent, reductusDrain, false); - - for(EntityAgeable entity : list) - { - if (entity.getGrowingAge() < 0) - { - entity.addGrowth(5); - entityCount++; - }else - { - hasReductus = hasReductus && this.canDrainReagent(ritualStone, ReagentRegistry.reductusReagent, reductusDrain, false); - if(hasReductus && entity instanceof EntityAnimal && entity.getGrowingAge() > 0) - { - EntityAnimal animal = (EntityAnimal)entity; - entity.setGrowingAge(Math.max(0, animal.getGrowingAge() - 20*2)); - this.canDrainReagent(ritualStone, ReagentRegistry.reductusReagent, reductusDrain, true); - entityCount++; - } - } - } - - SoulNetworkHandler.syphonFromNetwork(owner, this.getCostPerRefresh() * entityCount); - } - - boolean hasVirtus = this.canDrainReagent(ritualStone, ReagentRegistry.virtusReagent, virtusDrain, false); - - if(hasVirtus && SoulNetworkHandler.canSyphonFromOnlyNetwork(owner, breedingCost)) - { - List animalList = world.getEntitiesWithinAABB(EntityAnimal.class, axisalignedbb); - TileEntity tile = world.getTileEntity(x, y+1, z); - IInventory inventory = null; - if(tile instanceof IInventory) - { - inventory = (IInventory)tile; - }else - { - tile = world.getTileEntity(x, y-1, z); - if(tile instanceof IInventory) - { - inventory = (IInventory)tile; - } - } - - if(inventory != null) - { - for(EntityAnimal entityAnimal : animalList) - { - if(entityAnimal.isInLove() || entityAnimal.isChild() || entityAnimal.getGrowingAge() > 0) - { - continue; - } - - hasVirtus = hasVirtus && this.canDrainReagent(ritualStone, ReagentRegistry.virtusReagent, virtusDrain, false); - boolean hasLP = SoulNetworkHandler.canSyphonFromOnlyNetwork(owner, breedingCost); - - for(int i=0; i getRitualComponentList() - { - ArrayList animalGrowthRitual = new ArrayList(); - animalGrowthRitual.add(new RitualComponent(0, 0, 2, RitualComponent.DUSK)); - animalGrowthRitual.add(new RitualComponent(2, 0, 0, RitualComponent.DUSK)); - animalGrowthRitual.add(new RitualComponent(0, 0, -2, RitualComponent.DUSK)); - animalGrowthRitual.add(new RitualComponent(-2, 0, 0, RitualComponent.DUSK)); - animalGrowthRitual.add(new RitualComponent(0, 0, 1, RitualComponent.WATER)); - animalGrowthRitual.add(new RitualComponent(1, 0, 0, RitualComponent.WATER)); - animalGrowthRitual.add(new RitualComponent(0, 0, -1, RitualComponent.WATER)); - animalGrowthRitual.add(new RitualComponent(-1, 0, 0, RitualComponent.WATER)); - animalGrowthRitual.add(new RitualComponent(1, 0, 2, RitualComponent.EARTH)); - animalGrowthRitual.add(new RitualComponent(-1, 0, 2, RitualComponent.EARTH)); - animalGrowthRitual.add(new RitualComponent(1, 0, -2, RitualComponent.EARTH)); - animalGrowthRitual.add(new RitualComponent(-1, 0, -2, RitualComponent.EARTH)); - animalGrowthRitual.add(new RitualComponent(2, 0, 1, RitualComponent.AIR)); - animalGrowthRitual.add(new RitualComponent(2, 0, -1, RitualComponent.AIR)); - animalGrowthRitual.add(new RitualComponent(-2, 0, 1, RitualComponent.AIR)); - animalGrowthRitual.add(new RitualComponent(-2, 0, -1, RitualComponent.AIR)); - return animalGrowthRitual; - } -} diff --git a/src-backup/main/java/WayofTime/alchemicalWizardry/common/rituals/RitualEffectApiaryOverclock.java b/src-backup/main/java/WayofTime/alchemicalWizardry/common/rituals/RitualEffectApiaryOverclock.java deleted file mode 100644 index 58977230..00000000 --- a/src-backup/main/java/WayofTime/alchemicalWizardry/common/rituals/RitualEffectApiaryOverclock.java +++ /dev/null @@ -1,100 +0,0 @@ -package WayofTime.alchemicalWizardry.common.rituals; - -import java.util.ArrayList; -import java.util.List; - -import net.minecraft.entity.player.EntityPlayer; -import net.minecraft.potion.Potion; -import net.minecraft.potion.PotionEffect; -import net.minecraft.server.MinecraftServer; -import net.minecraft.world.World; -import WayofTime.alchemicalWizardry.api.rituals.IMasterRitualStone; -import WayofTime.alchemicalWizardry.api.rituals.RitualComponent; -import WayofTime.alchemicalWizardry.api.rituals.RitualEffect; -import WayofTime.alchemicalWizardry.api.soulNetwork.LifeEssenceNetwork; -import WayofTime.alchemicalWizardry.common.spell.complex.effect.SpellHelper; - -public class RitualEffectApiaryOverclock extends RitualEffect -{ - @Override - public void performEffect(IMasterRitualStone ritualStone) - { - String owner = ritualStone.getOwner(); - World worldSave = MinecraftServer.getServer().worldServers[0]; - LifeEssenceNetwork data = (LifeEssenceNetwork) worldSave.loadItemData(LifeEssenceNetwork.class, owner); - - if (data == null) - { - data = new LifeEssenceNetwork(owner); - worldSave.setItemData(owner, data); - } - - int currentEssence = data.currentEssence; - World world = ritualStone.getWorld(); - int x = ritualStone.getXCoord(); - int y = ritualStone.getYCoord(); - int z = ritualStone.getZCoord(); - - - if (currentEssence < this.getCostPerRefresh()) - { - EntityPlayer entityOwner = SpellHelper.getPlayerForUsername(owner); - - if (entityOwner == null) - { - return; - } - - entityOwner.addPotionEffect(new PotionEffect(Potion.confusion.id, 80)); - } else - { -// TileEntity tile = world.getTileEntity(x, y+1, z); -// -// try{ -// if(tile instanceof IBeeHousing && tile.getClass().getName().contains("Apiary")) -// { -// for (int i = 0; i < 10; i++) -// { -// PacketDispatcher.sendPacketToAllPlayers(TEAltar.getParticlePacket(x, y+1, z, (short) 3)); -// } -// -// for(int i=0; i<9; i++) -// { -// tile.updateEntity(); -// } -// -// data.currentEssence = currentEssence - this.getCostPerRefresh(); -// data.markDirty(); -// } -// }catch (Exception e) -// { -// -// } - - - } - - } - - @Override - public int getCostPerRefresh() - { - // TODO Auto-generated method stub - return 10; - } - - @Override - public List getRitualComponentList() - { - ArrayList apiaryRitual = new ArrayList(); - apiaryRitual.add(new RitualComponent(1,0,0, RitualComponent.DUSK)); - apiaryRitual.add(new RitualComponent(1,0,1, RitualComponent.DUSK)); - apiaryRitual.add(new RitualComponent(1,0,-1, RitualComponent.DUSK)); - apiaryRitual.add(new RitualComponent(-1,0,-1, RitualComponent.DUSK)); - apiaryRitual.add(new RitualComponent(-1,0,1, RitualComponent.DUSK)); - apiaryRitual.add(new RitualComponent(-1,0,0, RitualComponent.DUSK)); - apiaryRitual.add(new RitualComponent(0,0,-1, RitualComponent.DUSK)); - apiaryRitual.add(new RitualComponent(0,0,1, RitualComponent.DUSK)); - return apiaryRitual; - } -} diff --git a/src-backup/main/java/WayofTime/alchemicalWizardry/common/rituals/RitualEffectAutoAlchemy.java b/src-backup/main/java/WayofTime/alchemicalWizardry/common/rituals/RitualEffectAutoAlchemy.java deleted file mode 100644 index 29d8cd4a..00000000 --- a/src-backup/main/java/WayofTime/alchemicalWizardry/common/rituals/RitualEffectAutoAlchemy.java +++ /dev/null @@ -1,432 +0,0 @@ -package WayofTime.alchemicalWizardry.common.rituals; - -import java.util.ArrayList; -import java.util.List; - -import net.minecraft.entity.player.EntityPlayer; -import net.minecraft.inventory.IInventory; -import net.minecraft.item.ItemStack; -import net.minecraft.potion.Potion; -import net.minecraft.potion.PotionEffect; -import net.minecraft.server.MinecraftServer; -import net.minecraft.tileentity.TileEntity; -import net.minecraft.world.World; -import net.minecraftforge.oredict.OreDictionary; -import WayofTime.alchemicalWizardry.api.alchemy.AlchemyRecipeRegistry; -import WayofTime.alchemicalWizardry.api.alchemy.energy.ReagentRegistry; -import WayofTime.alchemicalWizardry.api.rituals.IMasterRitualStone; -import WayofTime.alchemicalWizardry.api.rituals.RitualComponent; -import WayofTime.alchemicalWizardry.api.rituals.RitualEffect; -import WayofTime.alchemicalWizardry.api.soulNetwork.LifeEssenceNetwork; -import WayofTime.alchemicalWizardry.api.soulNetwork.SoulNetworkHandler; -import WayofTime.alchemicalWizardry.common.spell.complex.effect.SpellHelper; -import WayofTime.alchemicalWizardry.common.tileEntity.TEAltar; -import WayofTime.alchemicalWizardry.common.tileEntity.TEWritingTable; - -public class RitualEffectAutoAlchemy extends RitualEffect -{ - public static final boolean fillToOne = true; - - public static final int potentiaDrain = 2; - - @Override - public void performEffect(IMasterRitualStone ritualStone) - { - String owner = ritualStone.getOwner(); - - int currentEssence = SoulNetworkHandler.getCurrentEssence(owner); - World world = ritualStone.getWorld(); - int x = ritualStone.getXCoord(); - int y = ritualStone.getYCoord(); - int z = ritualStone.getZCoord(); - - if (currentEssence < this.getCostPerRefresh()*6) - { - SoulNetworkHandler.causeNauseaToPlayer(owner); - } else - { - boolean hasPotentia = this.canDrainReagent(ritualStone, ReagentRegistry.potentiaReagent, potentiaDrain, false); - - int flag = 0; - - TileEntity topEntity = world.getTileEntity(x, y+1, z); - if(!(topEntity instanceof TEAltar)) - { - return; - } - - TEAltar tileAltar = (TEAltar)topEntity; - ItemStack targetStack = tileAltar.getStackInSlot(0); - if(targetStack == null) - { - return; - } - - ItemStack[] recipe = AlchemyRecipeRegistry.getRecipeForItemStack(targetStack); - if(recipe!=null) - { - TEWritingTable alchemyEntity; - IInventory outputInv = null; - IInventory inputInv1 = null; - IInventory inputInv2 = null; - - TileEntity northEntity = world.getTileEntity(x,y,z-1); - TileEntity southEntity = world.getTileEntity(x,y,z+1); - TileEntity eastEntity = world.getTileEntity(x+1,y,z); - TileEntity westEntity = world.getTileEntity(x-1,y,z); - - if(northEntity instanceof TEWritingTable) - { - alchemyEntity = (TEWritingTable)northEntity; - if(southEntity instanceof IInventory && !(southEntity instanceof TEWritingTable)) - { - outputInv = (IInventory)southEntity; - } - if(eastEntity instanceof IInventory && !(eastEntity instanceof TEWritingTable)) - { - inputInv1 = (IInventory)eastEntity; - } - if(westEntity instanceof IInventory && !(westEntity instanceof TEWritingTable)) - { - inputInv2 = (IInventory)westEntity; - } - }else if(southEntity instanceof TEWritingTable) - { - alchemyEntity = (TEWritingTable)southEntity; - if(northEntity instanceof IInventory && !(northEntity instanceof TEWritingTable)) - { - outputInv = (IInventory)northEntity; - } - if(eastEntity instanceof IInventory && !(eastEntity instanceof TEWritingTable)) - { - inputInv1 = (IInventory)eastEntity; - } - if(westEntity instanceof IInventory && !(westEntity instanceof TEWritingTable)) - { - inputInv2 = (IInventory)westEntity; - } - }else if(eastEntity instanceof TEWritingTable) - { - alchemyEntity = (TEWritingTable)eastEntity; - if(westEntity instanceof IInventory && !(westEntity instanceof TEWritingTable)) - { - outputInv = (IInventory)westEntity; - } - if(northEntity instanceof IInventory && !(northEntity instanceof TEWritingTable)) - { - inputInv1 = (IInventory)northEntity; - } - if(southEntity instanceof IInventory && !(southEntity instanceof TEWritingTable)) - { - inputInv2 = (IInventory)southEntity; - } - }else if(westEntity instanceof TEWritingTable) - { - alchemyEntity = (TEWritingTable)westEntity; - if(eastEntity instanceof IInventory && !(eastEntity instanceof TEWritingTable)) - { - outputInv = (IInventory)eastEntity; - } - if(northEntity instanceof IInventory && !(northEntity instanceof TEWritingTable)) - { - inputInv1 = (IInventory)northEntity; - } - if(southEntity instanceof IInventory && !(southEntity instanceof TEWritingTable)) - { - inputInv2 = (IInventory)southEntity; - } - }else - { - return; - } - - if(alchemyEntity != null && hasPotentia) - { - alchemyEntity.setAccelerationTime(5); - if(alchemyEntity.isWorking()) - { - this.canDrainReagent(ritualStone, ReagentRegistry.potentiaReagent, potentiaDrain, true); - } - } - - if(outputInv!=null) - { - ItemStack outputStack = alchemyEntity.getStackInSlot(6); - if(outputStack!=null) - { - for(int i=0; i=(fillToOne ? 1 : alchStack.getMaxStackSize()))) - { - continue; - } - - for(int j=0;j=(fillToOne ? 1 : alchStack.getMaxStackSize()))) - { - continue; - } - - for(int j=0;j0) - { - world.markBlockForUpdate(x, y, z+1); - world.markBlockForUpdate(x, y, z-1); - world.markBlockForUpdate(x+1, y, z); - world.markBlockForUpdate(x-1, y, z); - SoulNetworkHandler.syphonFromNetwork(owner, this.getCostPerRefresh()*flag); - } - } - } - - @Override - public int getCostPerRefresh() - { - return 10; - } - - @Override - public List getRitualComponentList() - { - ArrayList autoAlchemyRitual = new ArrayList(); - autoAlchemyRitual.add(new RitualComponent(1,0,1, RitualComponent.DUSK)); - autoAlchemyRitual.add(new RitualComponent(1,0,-1, RitualComponent.DUSK)); - autoAlchemyRitual.add(new RitualComponent(-1,0,-1, RitualComponent.DUSK)); - autoAlchemyRitual.add(new RitualComponent(-1,0,1, RitualComponent.DUSK)); - autoAlchemyRitual.add(new RitualComponent(2,0,2, RitualComponent.WATER)); - autoAlchemyRitual.add(new RitualComponent(2,0,-2, RitualComponent.WATER)); - autoAlchemyRitual.add(new RitualComponent(-2,0,-2, RitualComponent.WATER)); - autoAlchemyRitual.add(new RitualComponent(-2,0,2, RitualComponent.WATER)); - autoAlchemyRitual.add(new RitualComponent(-3,0,-2, RitualComponent.FIRE)); - autoAlchemyRitual.add(new RitualComponent(-2,0,-3, RitualComponent.FIRE)); - autoAlchemyRitual.add(new RitualComponent(-3,0,2, RitualComponent.FIRE)); - autoAlchemyRitual.add(new RitualComponent(-2,0,3, RitualComponent.FIRE)); - autoAlchemyRitual.add(new RitualComponent(3,0,-2, RitualComponent.FIRE)); - autoAlchemyRitual.add(new RitualComponent(2,0,-3, RitualComponent.FIRE)); - autoAlchemyRitual.add(new RitualComponent(3,0,2, RitualComponent.FIRE)); - autoAlchemyRitual.add(new RitualComponent(2,0,3, RitualComponent.FIRE)); - return autoAlchemyRitual; - } - - public boolean areItemStacksEqualWithWildcard(ItemStack recipeStack, ItemStack comparedStack) - { - return recipeStack.isItemEqual(comparedStack) || (recipeStack.getItemDamage() == OreDictionary.WILDCARD_VALUE && recipeStack.getItem() == comparedStack.getItem()); - } -} diff --git a/src-backup/main/java/WayofTime/alchemicalWizardry/common/rituals/RitualEffectBiomeChanger.java b/src-backup/main/java/WayofTime/alchemicalWizardry/common/rituals/RitualEffectBiomeChanger.java deleted file mode 100644 index bf3da6b7..00000000 --- a/src-backup/main/java/WayofTime/alchemicalWizardry/common/rituals/RitualEffectBiomeChanger.java +++ /dev/null @@ -1,440 +0,0 @@ -package WayofTime.alchemicalWizardry.common.rituals; - -import java.util.ArrayList; -import java.util.List; - -import net.minecraft.block.Block; -import net.minecraft.entity.effect.EntityLightningBolt; -import net.minecraft.entity.player.EntityPlayer; -import net.minecraft.init.Blocks; -import net.minecraft.init.Items; -import net.minecraft.item.Item; -import net.minecraft.item.ItemBlock; -import net.minecraft.item.ItemStack; -import net.minecraft.potion.Potion; -import net.minecraft.potion.PotionEffect; -import net.minecraft.server.MinecraftServer; -import net.minecraft.tileentity.TileEntity; -import net.minecraft.world.World; -import net.minecraft.world.biome.BiomeGenBase; -import net.minecraft.world.chunk.Chunk; -import WayofTime.alchemicalWizardry.ModBlocks; -import WayofTime.alchemicalWizardry.api.rituals.IMasterRitualStone; -import WayofTime.alchemicalWizardry.api.rituals.RitualComponent; -import WayofTime.alchemicalWizardry.api.rituals.RitualEffect; -import WayofTime.alchemicalWizardry.api.soulNetwork.LifeEssenceNetwork; -import WayofTime.alchemicalWizardry.api.soulNetwork.SoulNetworkHandler; -import WayofTime.alchemicalWizardry.common.spell.complex.effect.SpellHelper; -import WayofTime.alchemicalWizardry.common.tileEntity.TEPlinth; - -public class RitualEffectBiomeChanger extends RitualEffect -{ - @Override - public void performEffect(IMasterRitualStone ritualStone) - { - String owner = ritualStone.getOwner(); - - int cooldown = ritualStone.getCooldown(); - World world = ritualStone.getWorld(); - int x = ritualStone.getXCoord(); - int y = ritualStone.getYCoord(); - int z = ritualStone.getZCoord(); - if (cooldown > 0) - { - ritualStone.setCooldown(cooldown - 1); - - if (world.rand.nextInt(15) == 0) - { - world.addWeatherEffect(new EntityLightningBolt(world, x - 1 + world.rand.nextInt(3), y + 1, z - 1 + world.rand.nextInt(3))); - } - - return; - } - - int currentEssence = SoulNetworkHandler.getCurrentEssence(owner); - - - int range = 10; - - if (currentEssence < this.getCostPerRefresh()) - { - EntityPlayer entityOwner = SpellHelper.getPlayerForUsername(owner); - - if (entityOwner == null) - { - return; - } - - entityOwner.addPotionEffect(new PotionEffect(Potion.confusion.id, 80)); - } else - { - boolean[][] boolList = new boolean[range * 2 + 1][range * 2 + 1]; - - for (int i = 0; i < 2 * range + 1; i++) - { - for (int j = 0; j < 2 * range + 1; j++) - { - boolList[i][j] = false; - } - } - - boolList[range][range] = true; - boolean isReady = false; - - while (!isReady) - { - isReady = true; - - for (int i = 0; i < 2 * range + 1; i++) - { - for (int j = 0; j < 2 * range + 1; j++) - { - if (boolList[i][j]) - { - if (i - 1 >= 0 && !boolList[i - 1][j]) - { - Block block = world.getBlock(x - range + i - 1, y + 1, z - range + j); - - if (!ModBlocks.largeBloodStoneBrick.equals(block) && !ModBlocks.bloodStoneBrick.equals(block)) - { - boolList[i - 1][j] = true; - isReady = false; - } - } - - if (j - 1 >= 0 && !boolList[i][j - 1]) - { - Block block = world.getBlock(x - range + i, y + 1, z - range + j - 1); - - if (!ModBlocks.largeBloodStoneBrick.equals(block) && !ModBlocks.bloodStoneBrick.equals(block)) - { - boolList[i][j - 1] = true; - isReady = false; - } - } - - if (i + 1 <= 2 * range && !boolList[i + 1][j]) - { - Block block = world.getBlock(x - range + i + 1, y + 1, z - range + j); - - if (!ModBlocks.largeBloodStoneBrick.equals(block) && !ModBlocks.bloodStoneBrick.equals(block)) - { - boolList[i + 1][j] = true; - isReady = false; - } - } - - if (j + 1 <= 2 * range && !boolList[i][j + 1]) - { - Block block = world.getBlock(x - range + i, y + 1, z - range + j + 1); - - if (!ModBlocks.largeBloodStoneBrick.equals(block) && !ModBlocks.bloodStoneBrick.equals(block)) - { - boolList[i][j + 1] = true; - isReady = false; - } - } - } - } - } - } - - float temperature = 0.5f; - float humidity = 0.5f; - float acceptableRange = 0.1f; - - for (int i = -1; i <= 1; i++) - { - for (int j = -1; j <= 1; j++) - { - if (i == 0 && j == 0) - { - continue; - } - - boolean isItemConsumed = false; - TileEntity tileEntity = world.getTileEntity(x + i, y, z + j); - - if (!(tileEntity instanceof TEPlinth)) - { - continue; - } - - TEPlinth tilePlinth = (TEPlinth) tileEntity; - ItemStack itemStack = tilePlinth.getStackInSlot(0); - - if (itemStack != null) - { - Item itemTest = itemStack.getItem(); - - if (itemTest != null) - { - if (itemTest instanceof ItemBlock) - { - Block item = ((ItemBlock)itemTest).field_150939_a; - if (item == (Blocks.sand)) - { - humidity -= 0.1f; - isItemConsumed = true; - } else if (item == (Blocks.lapis_block)) - { - humidity += 0.4f; - isItemConsumed = true; - } else if (item == (Blocks.sand)) - { - humidity -= 0.1f; - isItemConsumed = true; - } else if (item == (Blocks.sandstone)) - { - humidity -= 0.2f; - isItemConsumed = true; - } else if (item == (Blocks.netherrack)) - { - humidity -= 0.4f; - isItemConsumed = true; - } else if (item == (Blocks.coal_block)) - { - temperature += 0.2f; - isItemConsumed = true; - } else if (item == (Blocks.ice)) - { - temperature -= 0.4f; - isItemConsumed = true; - } else if (item == (Blocks.snow)) - { - temperature -= 0.2f; - isItemConsumed = true; - } - } else if (itemTest.equals(Items.dye) && itemStack.getItemDamage() == 4) - { - humidity += 0.1f; - isItemConsumed = true; - } else if (itemTest.equals(Items.lava_bucket)) - { - temperature += 0.4f; - isItemConsumed = true; - } else if (itemTest.equals(Items.water_bucket)) - { - humidity += 0.2f; - isItemConsumed = true; - } else if (itemTest.equals(Items.coal)) - { - temperature += 0.1f; - isItemConsumed = true; - } else if (itemTest.equals(Items.snowball)) - { - temperature -= 0.1f; - isItemConsumed = true; - } - } - } - - if (isItemConsumed) - { - tilePlinth.setInventorySlotContents(0, null); - world.markBlockForUpdate(x + i, y, z + j); - world.addWeatherEffect(new EntityLightningBolt(world, x + i, y + 1, z + j)); - } - } - } - - boolean wantsSnow = false; - boolean wantsRain = true; - int biomeID = 1; - BiomeGenBase[] biomeList = BiomeGenBase.getBiomeGenArray(); - int iteration = 0; - - for (BiomeGenBase biome : biomeList) - { - if (biome == null) - { - continue; - } - - float temp = biome.temperature; - float rainfall = biome.rainfall; - temperature = Math.min(2.0f, Math.max(0.0f, temperature)); - humidity = Math.min(2.0f, Math.max(0.0f, humidity)); - - if (Math.abs(rainfall - humidity) < acceptableRange && Math.abs(temperature - temp) < acceptableRange) - { - //if(biome.getEnableSnow()==wantsSnow) - { - biomeID = iteration; - break; - } - } - - iteration++; - } - - for (int i = 0; i < 2 * range + 1; i++) - { - for (int j = 0; j < 2 * range + 1; j++) - { - //Testing of traversal of boolean matrix - if (boolList[i][j]) - { - Chunk chunk = world.getChunkFromBlockCoords(x - range + i, z - range + j); - byte[] byteArray = chunk.getBiomeArray(); - int moduX = (x - range + i) % 16; - int moduZ = (z - range + j) % 16; - - if (moduX < 0) - { - moduX = moduX + 16; - } - - if (moduZ < 0) - { - moduZ = moduZ + 16; - } - - byteArray[moduZ * 16 + moduX] = (byte) biomeID; - chunk.setBiomeArray(byteArray); - //world.setBlock(x-range+i, y+1, z-range+j, Block.blockClay); - } - } - } - - SoulNetworkHandler.syphonFromNetwork(owner, this.getCostPerRefresh()); - ritualStone.setActive(false); - } - } - - @Override - public int getCostPerRefresh() - { - // TODO Auto-generated method stub - return 0; - } - - @Override - public int getInitialCooldown() - { - return 200; - } - - @Override - public List getRitualComponentList() - { - ArrayList biomeChangerRitual = new ArrayList(); - biomeChangerRitual.add(new RitualComponent(1, 0, -2, RitualComponent.AIR)); - biomeChangerRitual.add(new RitualComponent(1, 0, -3, RitualComponent.AIR)); - biomeChangerRitual.add(new RitualComponent(2, 0, -1, RitualComponent.AIR)); - biomeChangerRitual.add(new RitualComponent(3, 0, -1, RitualComponent.AIR)); - biomeChangerRitual.add(new RitualComponent(1, 0, 2, RitualComponent.AIR)); - biomeChangerRitual.add(new RitualComponent(1, 0, 3, RitualComponent.AIR)); - biomeChangerRitual.add(new RitualComponent(2, 0, 1, RitualComponent.AIR)); - biomeChangerRitual.add(new RitualComponent(3, 0, 1, RitualComponent.AIR)); - biomeChangerRitual.add(new RitualComponent(-1, 0, -2, RitualComponent.AIR)); - biomeChangerRitual.add(new RitualComponent(-1, 0, -3, RitualComponent.AIR)); - biomeChangerRitual.add(new RitualComponent(-2, 0, -1, RitualComponent.AIR)); - biomeChangerRitual.add(new RitualComponent(-3, 0, -1, RitualComponent.AIR)); - biomeChangerRitual.add(new RitualComponent(-1, 0, 2, RitualComponent.AIR)); - biomeChangerRitual.add(new RitualComponent(-1, 0, 3, RitualComponent.AIR)); - biomeChangerRitual.add(new RitualComponent(-2, 0, 1, RitualComponent.AIR)); - biomeChangerRitual.add(new RitualComponent(-3, 0, 1, RitualComponent.AIR)); - biomeChangerRitual.add(new RitualComponent(3, 0, -3, RitualComponent.EARTH)); - biomeChangerRitual.add(new RitualComponent(3, 0, -4, RitualComponent.EARTH)); - biomeChangerRitual.add(new RitualComponent(4, 0, -3, RitualComponent.EARTH)); - biomeChangerRitual.add(new RitualComponent(4, 0, -5, RitualComponent.FIRE)); - biomeChangerRitual.add(new RitualComponent(5, 0, -4, RitualComponent.FIRE)); - biomeChangerRitual.add(new RitualComponent(3, 0, 3, RitualComponent.EARTH)); - biomeChangerRitual.add(new RitualComponent(3, 0, 4, RitualComponent.EARTH)); - biomeChangerRitual.add(new RitualComponent(4, 0, 3, RitualComponent.EARTH)); - biomeChangerRitual.add(new RitualComponent(4, 0, 5, RitualComponent.FIRE)); - biomeChangerRitual.add(new RitualComponent(5, 0, 4, RitualComponent.FIRE)); - biomeChangerRitual.add(new RitualComponent(-3, 0, 3, RitualComponent.EARTH)); - biomeChangerRitual.add(new RitualComponent(-3, 0, 4, RitualComponent.EARTH)); - biomeChangerRitual.add(new RitualComponent(-4, 0, 3, RitualComponent.EARTH)); - biomeChangerRitual.add(new RitualComponent(-4, 0, 5, RitualComponent.FIRE)); - biomeChangerRitual.add(new RitualComponent(-5, 0, 4, RitualComponent.FIRE)); - biomeChangerRitual.add(new RitualComponent(-3, 0, -3, RitualComponent.EARTH)); - biomeChangerRitual.add(new RitualComponent(-3, 0, -4, RitualComponent.EARTH)); - biomeChangerRitual.add(new RitualComponent(-4, 0, -3, RitualComponent.EARTH)); - biomeChangerRitual.add(new RitualComponent(-4, 0, -5, RitualComponent.FIRE)); - biomeChangerRitual.add(new RitualComponent(-5, 0, -4, RitualComponent.FIRE)); - biomeChangerRitual.add(new RitualComponent(0, 0, -5, RitualComponent.WATER)); - biomeChangerRitual.add(new RitualComponent(-1, 0, -6, RitualComponent.WATER)); - biomeChangerRitual.add(new RitualComponent(1, 0, -6, RitualComponent.WATER)); - biomeChangerRitual.add(new RitualComponent(-1, 0, -8, RitualComponent.BLANK)); - biomeChangerRitual.add(new RitualComponent(0, 0, -8, RitualComponent.BLANK)); - biomeChangerRitual.add(new RitualComponent(1, 0, -8, RitualComponent.BLANK)); - biomeChangerRitual.add(new RitualComponent(-1, 0, -10, RitualComponent.DUSK)); - biomeChangerRitual.add(new RitualComponent(0, 0, -10, RitualComponent.DUSK)); - biomeChangerRitual.add(new RitualComponent(1, 0, -10, RitualComponent.DUSK)); - biomeChangerRitual.add(new RitualComponent(0, 0, 5, RitualComponent.WATER)); - biomeChangerRitual.add(new RitualComponent(-1, 0, 6, RitualComponent.WATER)); - biomeChangerRitual.add(new RitualComponent(1, 0, 6, RitualComponent.WATER)); - biomeChangerRitual.add(new RitualComponent(-1, 0, 8, RitualComponent.BLANK)); - biomeChangerRitual.add(new RitualComponent(0, 0, 8, RitualComponent.BLANK)); - biomeChangerRitual.add(new RitualComponent(1, 0, 8, RitualComponent.BLANK)); - biomeChangerRitual.add(new RitualComponent(-1, 0, 10, RitualComponent.DUSK)); - biomeChangerRitual.add(new RitualComponent(0, 0, 10, RitualComponent.DUSK)); - biomeChangerRitual.add(new RitualComponent(1, 0, 10, RitualComponent.DUSK)); - biomeChangerRitual.add(new RitualComponent(-5, 0, 0, RitualComponent.WATER)); - biomeChangerRitual.add(new RitualComponent(-6, 0, -1, RitualComponent.WATER)); - biomeChangerRitual.add(new RitualComponent(-6, 0, 1, RitualComponent.WATER)); - biomeChangerRitual.add(new RitualComponent(-8, 0, -1, RitualComponent.BLANK)); - biomeChangerRitual.add(new RitualComponent(-8, 0, 0, RitualComponent.BLANK)); - biomeChangerRitual.add(new RitualComponent(-8, 0, 1, RitualComponent.BLANK)); - biomeChangerRitual.add(new RitualComponent(-10, 0, -1, RitualComponent.DUSK)); - biomeChangerRitual.add(new RitualComponent(-10, 0, 0, RitualComponent.DUSK)); - biomeChangerRitual.add(new RitualComponent(-10, 0, 1, RitualComponent.DUSK)); - biomeChangerRitual.add(new RitualComponent(5, 0, 0, RitualComponent.WATER)); - biomeChangerRitual.add(new RitualComponent(6, 0, -1, RitualComponent.WATER)); - biomeChangerRitual.add(new RitualComponent(6, 0, 1, RitualComponent.WATER)); - biomeChangerRitual.add(new RitualComponent(8, 0, -1, RitualComponent.BLANK)); - biomeChangerRitual.add(new RitualComponent(8, 0, 0, RitualComponent.BLANK)); - biomeChangerRitual.add(new RitualComponent(8, 0, 1, RitualComponent.BLANK)); - biomeChangerRitual.add(new RitualComponent(10, 0, -1, RitualComponent.DUSK)); - biomeChangerRitual.add(new RitualComponent(10, 0, 0, RitualComponent.DUSK)); - biomeChangerRitual.add(new RitualComponent(10, 0, 1, RitualComponent.DUSK)); - biomeChangerRitual.add(new RitualComponent(6, 0, -6, RitualComponent.AIR)); - biomeChangerRitual.add(new RitualComponent(6, 0, -7, RitualComponent.AIR)); - biomeChangerRitual.add(new RitualComponent(7, 0, -6, RitualComponent.AIR)); - biomeChangerRitual.add(new RitualComponent(7, 0, -5, RitualComponent.EARTH)); - biomeChangerRitual.add(new RitualComponent(5, 0, -7, RitualComponent.EARTH)); - biomeChangerRitual.add(new RitualComponent(8, 0, -5, RitualComponent.DUSK)); - biomeChangerRitual.add(new RitualComponent(8, 0, -4, RitualComponent.EARTH)); - biomeChangerRitual.add(new RitualComponent(9, 0, -4, RitualComponent.EARTH)); - biomeChangerRitual.add(new RitualComponent(5, 0, -8, RitualComponent.DUSK)); - biomeChangerRitual.add(new RitualComponent(4, 0, -8, RitualComponent.EARTH)); - biomeChangerRitual.add(new RitualComponent(4, 0, -9, RitualComponent.EARTH)); - biomeChangerRitual.add(new RitualComponent(-6, 0, 6, RitualComponent.AIR)); - biomeChangerRitual.add(new RitualComponent(-6, 0, 7, RitualComponent.AIR)); - biomeChangerRitual.add(new RitualComponent(-7, 0, 6, RitualComponent.AIR)); - biomeChangerRitual.add(new RitualComponent(-7, 0, 5, RitualComponent.EARTH)); - biomeChangerRitual.add(new RitualComponent(-5, 0, 7, RitualComponent.EARTH)); - biomeChangerRitual.add(new RitualComponent(-8, 0, 5, RitualComponent.DUSK)); - biomeChangerRitual.add(new RitualComponent(-8, 0, 4, RitualComponent.EARTH)); - biomeChangerRitual.add(new RitualComponent(-9, 0, 4, RitualComponent.EARTH)); - biomeChangerRitual.add(new RitualComponent(-5, 0, 8, RitualComponent.DUSK)); - biomeChangerRitual.add(new RitualComponent(-4, 0, 8, RitualComponent.EARTH)); - biomeChangerRitual.add(new RitualComponent(-4, 0, 9, RitualComponent.EARTH)); - biomeChangerRitual.add(new RitualComponent(6, 0, 6, RitualComponent.FIRE)); - biomeChangerRitual.add(new RitualComponent(6, 0, 7, RitualComponent.FIRE)); - biomeChangerRitual.add(new RitualComponent(7, 0, 6, RitualComponent.FIRE)); - biomeChangerRitual.add(new RitualComponent(7, 0, 5, RitualComponent.WATER)); - biomeChangerRitual.add(new RitualComponent(5, 0, 7, RitualComponent.WATER)); - biomeChangerRitual.add(new RitualComponent(8, 0, 5, RitualComponent.DUSK)); - biomeChangerRitual.add(new RitualComponent(8, 0, 4, RitualComponent.WATER)); - biomeChangerRitual.add(new RitualComponent(9, 0, 4, RitualComponent.WATER)); - biomeChangerRitual.add(new RitualComponent(5, 0, 8, RitualComponent.DUSK)); - biomeChangerRitual.add(new RitualComponent(4, 0, 8, RitualComponent.WATER)); - biomeChangerRitual.add(new RitualComponent(4, 0, 9, RitualComponent.WATER)); - biomeChangerRitual.add(new RitualComponent(-6, 0, -6, RitualComponent.FIRE)); - biomeChangerRitual.add(new RitualComponent(-6, 0, -7, RitualComponent.FIRE)); - biomeChangerRitual.add(new RitualComponent(-7, 0, -6, RitualComponent.FIRE)); - biomeChangerRitual.add(new RitualComponent(-7, 0, -5, RitualComponent.WATER)); - biomeChangerRitual.add(new RitualComponent(-5, 0, -7, RitualComponent.WATER)); - biomeChangerRitual.add(new RitualComponent(-8, 0, -5, RitualComponent.DUSK)); - biomeChangerRitual.add(new RitualComponent(-8, 0, -4, RitualComponent.WATER)); - biomeChangerRitual.add(new RitualComponent(-9, 0, -4, RitualComponent.WATER)); - biomeChangerRitual.add(new RitualComponent(-5, 0, -8, RitualComponent.DUSK)); - biomeChangerRitual.add(new RitualComponent(-4, 0, -8, RitualComponent.WATER)); - biomeChangerRitual.add(new RitualComponent(-4, 0, -9, RitualComponent.WATER)); - return biomeChangerRitual; - } -} diff --git a/src-backup/main/java/WayofTime/alchemicalWizardry/common/rituals/RitualEffectContainment.java b/src-backup/main/java/WayofTime/alchemicalWizardry/common/rituals/RitualEffectContainment.java deleted file mode 100644 index 99b04e9a..00000000 --- a/src-backup/main/java/WayofTime/alchemicalWizardry/common/rituals/RitualEffectContainment.java +++ /dev/null @@ -1,133 +0,0 @@ -package WayofTime.alchemicalWizardry.common.rituals; - -import java.util.ArrayList; -import java.util.List; - -import net.minecraft.entity.Entity; -import net.minecraft.entity.EntityLivingBase; -import net.minecraft.entity.monster.EntityCreeper; -import net.minecraft.entity.player.EntityPlayer; -import net.minecraft.potion.PotionEffect; -import net.minecraft.server.MinecraftServer; -import net.minecraft.world.World; -import WayofTime.alchemicalWizardry.AlchemicalWizardry; -import WayofTime.alchemicalWizardry.api.alchemy.energy.ReagentRegistry; -import WayofTime.alchemicalWizardry.api.rituals.IMasterRitualStone; -import WayofTime.alchemicalWizardry.api.rituals.RitualComponent; -import WayofTime.alchemicalWizardry.api.rituals.RitualEffect; -import WayofTime.alchemicalWizardry.api.soulNetwork.LifeEssenceNetwork; -import WayofTime.alchemicalWizardry.api.soulNetwork.SoulNetworkHandler; -import WayofTime.alchemicalWizardry.common.spell.complex.effect.SpellHelper; -import cpw.mods.fml.relauncher.ReflectionHelper; - -public class RitualEffectContainment extends RitualEffect -{ - public static final String[] TIME_SINCE_IGNITED = new String[] { "timeSinceIgnited", "field_70833_d", "bq" }; - public static final int crepitousDrain = 1; - public static final int terraeDrain = 3; - public static final int magicalesDrain = 10; - - @Override - public void performEffect(IMasterRitualStone ritualStone) - { - String owner = ritualStone.getOwner(); - - int currentEssence = SoulNetworkHandler.getCurrentEssence(owner); - World world = ritualStone.getWorld(); - int x = ritualStone.getXCoord(); - int y = ritualStone.getYCoord(); - int z = ritualStone.getZCoord(); - - if (currentEssence < this.getCostPerRefresh()) - { - SoulNetworkHandler.causeNauseaToPlayer(owner); - } else - { - int d0 = 5; - List entityList = SpellHelper.getEntitiesInRange(world, x+0.5, y+0.5, z+0.5, d0, d0); - boolean flag = false; - boolean hasCrepitous = this.canDrainReagent(ritualStone, ReagentRegistry.crepitousReagent, crepitousDrain, false); - boolean hasTerrae = this.canDrainReagent(ritualStone, ReagentRegistry.terraeReagent, terraeDrain, false); - boolean hasMagicales = this.canDrainReagent(ritualStone, ReagentRegistry.magicalesReagent, magicalesDrain, false); - - for(Entity entity : entityList) - { - if(!(entity instanceof EntityLivingBase)) - { - continue; - } - - EntityLivingBase livingEntity = (EntityLivingBase)entity; - - if (livingEntity instanceof EntityPlayer) - { - continue; - } - - - double xDif = livingEntity.posX - (x + 0.5); - double yDif = livingEntity.posY - (y + 3); - double zDif = livingEntity.posZ - (z + 0.5); - livingEntity.motionX = -0.05 * xDif; - livingEntity.motionY = -0.05 * yDif; - livingEntity.motionZ = -0.05 * zDif; - flag = true; - - livingEntity.fallDistance = 0; - - if(hasMagicales && this.canDrainReagent(ritualStone, ReagentRegistry.magicalesReagent, magicalesDrain, false)) - { - if(!livingEntity.isPotionActive(AlchemicalWizardry.customPotionPlanarBinding)) - { - livingEntity.addPotionEffect(new PotionEffect(AlchemicalWizardry.customPotionPlanarBinding.id,100,0)); - this.canDrainReagent(ritualStone, ReagentRegistry.magicalesReagent, magicalesDrain, true); - } - } - - if(hasCrepitous && this.canDrainReagent(ritualStone, ReagentRegistry.crepitousReagent, crepitousDrain, false)) - { - if(entity instanceof EntityCreeper) - { - ReflectionHelper.setPrivateValue(EntityCreeper.class, (EntityCreeper) entity, 2, TIME_SINCE_IGNITED); - ((EntityCreeper)entity).setAttackTarget(null); - this.canDrainReagent(ritualStone, ReagentRegistry.crepitousReagent, crepitousDrain, true); - } - } - } - - if (world.getWorldTime() % 2 == 0 && flag) - { - SoulNetworkHandler.syphonFromNetwork(owner, this.getCostPerRefresh()); - } - } - } - - @Override - public int getCostPerRefresh() - { - return 1; - } - - @Override - public List getRitualComponentList() - { - ArrayList containmentRitual = new ArrayList(); - containmentRitual.add(new RitualComponent(1, 0, 0, 3)); - containmentRitual.add(new RitualComponent(-1, 0, 0, 3)); - containmentRitual.add(new RitualComponent(0, 0, 1, 3)); - containmentRitual.add(new RitualComponent(0, 0, -1, 3)); - containmentRitual.add(new RitualComponent(2, 0, 2, 3)); - containmentRitual.add(new RitualComponent(2, 0, -2, 3)); - containmentRitual.add(new RitualComponent(-2, 0, 2, 3)); - containmentRitual.add(new RitualComponent(-2, 0, -2, 3)); - containmentRitual.add(new RitualComponent(1, 5, 0, 3)); - containmentRitual.add(new RitualComponent(-1, 5, 0, 3)); - containmentRitual.add(new RitualComponent(0, 5, 1, 3)); - containmentRitual.add(new RitualComponent(0, 5, -1, 3)); - containmentRitual.add(new RitualComponent(2, 5, 2, 3)); - containmentRitual.add(new RitualComponent(2, 5, -2, 3)); - containmentRitual.add(new RitualComponent(-2, 5, 2, 3)); - containmentRitual.add(new RitualComponent(-2, 5, -2, 3)); - return containmentRitual; - } -} diff --git a/src-backup/main/java/WayofTime/alchemicalWizardry/common/rituals/RitualEffectCrushing.java b/src-backup/main/java/WayofTime/alchemicalWizardry/common/rituals/RitualEffectCrushing.java deleted file mode 100644 index 2b7a4643..00000000 --- a/src-backup/main/java/WayofTime/alchemicalWizardry/common/rituals/RitualEffectCrushing.java +++ /dev/null @@ -1,353 +0,0 @@ -package WayofTime.alchemicalWizardry.common.rituals; - -import java.util.ArrayList; -import java.util.List; - -import net.minecraft.block.Block; -import net.minecraft.entity.item.EntityItem; -import net.minecraft.init.Blocks; -import net.minecraft.inventory.IInventory; -import net.minecraft.item.Item; -import net.minecraft.item.ItemBlock; -import net.minecraft.item.ItemStack; -import net.minecraft.server.MinecraftServer; -import net.minecraft.tileentity.TileEntity; -import net.minecraft.world.World; -import WayofTime.alchemicalWizardry.ModBlocks; -import WayofTime.alchemicalWizardry.api.alchemy.energy.ReagentRegistry; -import WayofTime.alchemicalWizardry.api.rituals.IMasterRitualStone; -import WayofTime.alchemicalWizardry.api.rituals.RitualComponent; -import WayofTime.alchemicalWizardry.api.rituals.RitualEffect; -import WayofTime.alchemicalWizardry.api.soulNetwork.LifeEssenceNetwork; -import WayofTime.alchemicalWizardry.api.soulNetwork.SoulNetworkHandler; -import WayofTime.alchemicalWizardry.common.spell.complex.effect.SpellHelper; - -public class RitualEffectCrushing extends RitualEffect -{ - public static final int crystallosDrain = 10; - public static final int orbisTerraeDrain = 10; - public static final int potentiaDrain = 10; - public static final int virtusDrain = 10; - public static final int incendiumDrain = 10; - - @Override - public void performEffect(IMasterRitualStone ritualStone) - { - String owner = ritualStone.getOwner(); - - int currentEssence = SoulNetworkHandler.getCurrentEssence(owner); - World world = ritualStone.getWorld(); - - if (world.getWorldTime() % 10 != 5) - { - return; - } - - int x = ritualStone.getXCoord(); - int y = ritualStone.getYCoord(); - int z = ritualStone.getZCoord(); - TileEntity tile = world.getTileEntity(x, y + 1, z); - IInventory tileEntity; - - if (tile instanceof IInventory) - { - tileEntity = (IInventory) tile; - } else - { - return; - } - - if (tileEntity.getSizeInventory() <= 0) - { - return; - } - - boolean hasRoom = false; - for(int i=0; i 0) - { - world.spawnEntityInWorld(new EntityItem(world, x + 0.4, y + 2, z + 0.5, copyStack)); - //flag=true; - } - - if(hasCrystallos) - { - this.canDrainReagent(ritualStone, ReagentRegistry.crystallosReagent, crystallosDrain, true); - } - } - else - { - ArrayList itemDropList = block.getDrops(world, x + i, y + j, z + k, meta, fortuneLevel); - - if (itemDropList != null) - { - int invSize = tileEntity.getSizeInventory(); - - for (ItemStack item : itemDropList) - { - hasIncendium = hasIncendium && this.canDrainReagent(ritualStone, ReagentRegistry.incendiumReagent, incendiumDrain, false); - ItemStack copyStack = item.copyItemStack(item); - - if(this.usesIncendium(copyStack)) - { - copyStack = this.transformToNewItem(copyStack, hasIncendium, false); - this.canDrainReagent(ritualStone, ReagentRegistry.incendiumReagent, incendiumDrain, true); - } - - SpellHelper.insertStackIntoInventory(copyStack, tileEntity); - -// for (int n = 0; n < invSize; n++) -// { -// if (tileEntity.isItemValidForSlot(n, copyStack) && copyStack.stackSize != 0) -// { -// ItemStack itemStack = tileEntity.getStackInSlot(n); -// -// if (itemStack == null) -// { -// tileEntity.setInventorySlotContents(n, item); -// copyStack.stackSize = 0; -// } else -// { -// if (itemStack.getItem().equals(copyStack.getItem()) && itemStack.getItemDamage() == copyStack.getItemDamage()) -// { -// int itemSize = itemStack.stackSize; -// int copySize = copyStack.stackSize; -// int maxSize = itemStack.getMaxStackSize(); -// -// if (copySize + itemSize < maxSize) -// { -// copyStack.stackSize = 0; -// itemStack.stackSize = itemSize + copySize; -// tileEntity.setInventorySlotContents(n, itemStack); -// } else -// { -// copyStack.stackSize = itemSize + copySize - maxSize; -// itemStack.stackSize = maxSize; -// } -// } -// } -// } -// } - - if (copyStack.stackSize > 0) - { - world.spawnEntityInWorld(new EntityItem(world, x + 0.4, y + 2, z + 0.5, copyStack)); - //flag=true; - } - - if(hasOrbisTerrae){this.canDrainReagent(ritualStone, ReagentRegistry.orbisTerraeReagent, orbisTerraeDrain, true);} - if(hasPotentia){this.canDrainReagent(ritualStone, ReagentRegistry.potentiaReagent, potentiaDrain, true);} - if(hasVirtus){this.canDrainReagent(ritualStone, ReagentRegistry.virtusReagent, virtusDrain, true);} - } - } - - } - - //if(flag) - world.setBlockToAir(x + i, y + j, z + k); - world.playSoundEffect(x + i, y + j, z + k, "mob.endermen.portal", 1.0F, 1.0F); - - SoulNetworkHandler.syphonFromNetwork(owner, this.getCostPerRefresh()); - - return; - } - } - } - } - } - } - - private boolean usesIncendium(ItemStack stack) - { - if(stack != null) - { - Item item = stack.getItem(); - if(item instanceof ItemBlock) - { - Block block = ((ItemBlock)item).field_150939_a; - - if(block == Blocks.cobblestone || block == Blocks.stone) - { - return true; - } - }else - { - - } - } - return false; - } - - private ItemStack transformToNewItem(ItemStack stack, boolean hasIncendium, boolean hasCrepitous) - { - if(stack != null) - { - ItemStack copyStack = ItemStack.copyItemStack(stack); - int stackSize = copyStack.stackSize; - - Item item = stack.getItem(); - if(item instanceof ItemBlock) - { - Block block = ((ItemBlock)item).field_150939_a; - - if(hasIncendium) - { - if(block == Blocks.cobblestone || block == Blocks.stone) - { - copyStack = new ItemStack(Blocks.netherrack, stackSize, 0); - } - } - }else - { - - } - - return copyStack; - } - return stack; - } - - public boolean isSilkTouch(World world, int x, int y, int z) - { - int index = 0; - for(int i=-2; i<=2; i++) - { - for(int j=-2; j<=2; j++) - { - int index1 = Math.abs(i); - int index2 = Math.abs(j); - - if((index1 == 2 && (index2 == 2 || index2 == 1)) || (index1 == 1 && index2 == 2)) - { - Block block = world.getBlock(x + i, y + 1, z + j); - if(block == Blocks.gold_block) - { - index++; - } - } - } - } - - return index>=12; - } - - public int getFortuneLevel(World world, int x, int y, int z) - { - int index = 0; - for(int i=-2; i<=2; i++) - { - for(int j=-2; j<=2; j++) - { - int index1 = Math.abs(i); - int index2 = Math.abs(j); - - if((index1 == 2 && (index2 == 2 || index2 == 1)) || (index1 == 1 && index2 == 2)) - { - Block block = world.getBlock(x + i, y + 1, z + j); - if(block == Blocks.emerald_block || block == Blocks.diamond_block) - { - index++; - } - } - } - } - - if(index>=12) - { - return 3; - }else if(index>=8) - { - return 2; - }else if(index>=4) - { - return 1; - } - - return 0; - } - - @Override - public int getCostPerRefresh() - { - return 7; - } - - @Override - public List getRitualComponentList() - { - ArrayList crushingRitual = new ArrayList(); - crushingRitual.add(new RitualComponent(0, 0, 1, RitualComponent.EARTH)); - crushingRitual.add(new RitualComponent(1, 0, 0, RitualComponent.EARTH)); - crushingRitual.add(new RitualComponent(0, 0, -1, RitualComponent.EARTH)); - crushingRitual.add(new RitualComponent(-1, 0, 0, RitualComponent.EARTH)); - crushingRitual.add(new RitualComponent(2, 0, 0, RitualComponent.FIRE)); - crushingRitual.add(new RitualComponent(0, 0, 2, RitualComponent.FIRE)); - crushingRitual.add(new RitualComponent(-2, 0, 0, RitualComponent.FIRE)); - crushingRitual.add(new RitualComponent(0, 0, -2, RitualComponent.FIRE)); - crushingRitual.add(new RitualComponent(2, 0, 2, RitualComponent.DUSK)); - crushingRitual.add(new RitualComponent(2, 0, -2, RitualComponent.DUSK)); - crushingRitual.add(new RitualComponent(-2, 0, 2, RitualComponent.DUSK)); - crushingRitual.add(new RitualComponent(-2, 0, -2, RitualComponent.DUSK)); - crushingRitual.add(new RitualComponent(2, 1, 0, RitualComponent.AIR)); - crushingRitual.add(new RitualComponent(-2, 1, 0, RitualComponent.AIR)); - crushingRitual.add(new RitualComponent(0, 1, 2, RitualComponent.AIR)); - crushingRitual.add(new RitualComponent(0, 1, -2, RitualComponent.AIR)); - return crushingRitual; - } -} diff --git a/src-backup/main/java/WayofTime/alchemicalWizardry/common/rituals/RitualEffectEllipsoid.java b/src-backup/main/java/WayofTime/alchemicalWizardry/common/rituals/RitualEffectEllipsoid.java deleted file mode 100644 index ec6c24ef..00000000 --- a/src-backup/main/java/WayofTime/alchemicalWizardry/common/rituals/RitualEffectEllipsoid.java +++ /dev/null @@ -1,167 +0,0 @@ -package WayofTime.alchemicalWizardry.common.rituals; - -import java.util.ArrayList; -import java.util.List; - -import net.minecraft.block.Block; -import net.minecraft.entity.player.EntityPlayer; -import net.minecraft.init.Blocks; -import net.minecraft.inventory.IInventory; -import net.minecraft.item.ItemStack; -import net.minecraft.potion.Potion; -import net.minecraft.potion.PotionEffect; -import net.minecraft.server.MinecraftServer; -import net.minecraft.tileentity.TileEntity; -import net.minecraft.world.World; -import WayofTime.alchemicalWizardry.api.rituals.IMasterRitualStone; -import WayofTime.alchemicalWizardry.api.rituals.RitualComponent; -import WayofTime.alchemicalWizardry.api.rituals.RitualEffect; -import WayofTime.alchemicalWizardry.api.soulNetwork.LifeEssenceNetwork; -import WayofTime.alchemicalWizardry.api.soulNetwork.SoulNetworkHandler; -import WayofTime.alchemicalWizardry.common.spell.complex.effect.SpellHelper; -import WayofTime.alchemicalWizardry.common.tileEntity.TESpectralBlock; -import WayofTime.alchemicalWizardry.common.tileEntity.TESpectralContainer; - -public class RitualEffectEllipsoid extends RitualEffect -{ - @Override - public void performEffect(IMasterRitualStone ritualStone) - { - String owner = ritualStone.getOwner(); - - int currentEssence = SoulNetworkHandler.getCurrentEssence(owner); - World world = ritualStone.getWorld(); - int x = ritualStone.getXCoord(); - int y = ritualStone.getYCoord(); - int z = ritualStone.getZCoord(); - - TileEntity tile = world.getTileEntity(x, y+1, z); - - if(!(tile instanceof IInventory) || ((IInventory)tile).getSizeInventory() < 3) - { - return; - } - - ItemStack item1 = ((IInventory) tile).getStackInSlot(0); - ItemStack item2 = ((IInventory) tile).getStackInSlot(1); - ItemStack item3 = ((IInventory) tile).getStackInSlot(2); - - int xSize = item1 == null ? 0 : item1.stackSize; - int ySize = item2 == null ? 0 : item2.stackSize; - int zSize = item3 == null ? 0 : item3.stackSize; - - int cost = (int)Math.pow((xSize+1)*(ySize+1)*(zSize+1),0.333); - - if (currentEssence < cost) - { - EntityPlayer entityOwner = SpellHelper.getPlayerForUsername(owner); - - if (entityOwner == null) - { - return; - } - - entityOwner.addPotionEffect(new PotionEffect(Potion.confusion.id, 80)); - } else - { - //if(tile instanceof IInventory) - { - int refresh = 1000; - - int j = (int)(world.getWorldTime()%(ySize*2+1)) - ySize; - - for (int i = -xSize; i <= xSize; i++) - { -// for (int j = -ySize; j <= ySize; j++) - { - for(int k = -zSize; k <= zSize; k++) - { - if (Math.pow(i*(ySize - 0.50f)*(zSize - 0.50f),2) + Math.pow(j*(xSize - 0.50f)*(zSize - 0.50f),2) + Math.pow(k*(xSize - 0.50f)*(ySize - 0.50f),2) <= Math.pow((xSize - 1 + 0.50f)*(ySize - 1 + 0.50f)*(zSize - 1 + 0.50f), 2)) - { - continue; - } - - if (Math.pow(i*(ySize + 0.50f)*(zSize + 0.50f),2) + Math.pow(j*(xSize + 0.50f)*(zSize + 0.50f),2) + Math.pow(k*(xSize + 0.50f)*(ySize + 0.50f),2) >= Math.pow((xSize + 0.50f)*(ySize + 0.50f)*(zSize + 0.50f), 2)) - { - continue; - } - - Block block = world.getBlock(x+i, y+j, z+k); - - if(block.isAir(world, x+i, y+j, z+k)) - { - //world.setBlock(x+i, y+j, z+k, Blocks.stone); - TESpectralBlock.createSpectralBlockAtLocation(world, x+i, y+j, z+k, refresh); - } - else - { - TileEntity tile1 = world.getTileEntity(x+i, y+j, z+k); - if(tile instanceof TESpectralBlock) - { - ((TESpectralBlock) tile1).resetDuration(refresh); - } - } - } - } - } - } - - SoulNetworkHandler.syphonFromNetwork(owner, cost); - } - } - - @Override - public int getCostPerRefresh() - { - return 0; - } - - @Override - public List getRitualComponentList() - { - ArrayList ellipsoidRitual = new ArrayList(); - - ellipsoidRitual.add(new RitualComponent(-1,0,-1,RitualComponent.DUSK)); - ellipsoidRitual.add(new RitualComponent(-1,0,1,RitualComponent.DUSK)); - ellipsoidRitual.add(new RitualComponent(1,0,-1,RitualComponent.DUSK)); - ellipsoidRitual.add(new RitualComponent(1,0,1,RitualComponent.DUSK)); - - ellipsoidRitual.add(new RitualComponent(4,0,0,RitualComponent.FIRE)); - ellipsoidRitual.add(new RitualComponent(5,0,0,RitualComponent.FIRE)); - ellipsoidRitual.add(new RitualComponent(5,0,-1,RitualComponent.FIRE)); - ellipsoidRitual.add(new RitualComponent(5,0,-2,RitualComponent.FIRE)); - ellipsoidRitual.add(new RitualComponent(-4,0,0,RitualComponent.FIRE)); - ellipsoidRitual.add(new RitualComponent(-5,0,0,RitualComponent.FIRE)); - ellipsoidRitual.add(new RitualComponent(-5,0,1,RitualComponent.FIRE)); - ellipsoidRitual.add(new RitualComponent(-5,0,2,RitualComponent.FIRE)); - - ellipsoidRitual.add(new RitualComponent(0,0,4,RitualComponent.AIR)); - ellipsoidRitual.add(new RitualComponent(0,0,5,RitualComponent.AIR)); - ellipsoidRitual.add(new RitualComponent(1,0,5,RitualComponent.AIR)); - ellipsoidRitual.add(new RitualComponent(2,0,5,RitualComponent.AIR)); - ellipsoidRitual.add(new RitualComponent(0,0,-4,RitualComponent.AIR)); - ellipsoidRitual.add(new RitualComponent(0,0,-5,RitualComponent.AIR)); - ellipsoidRitual.add(new RitualComponent(-1,0,-5,RitualComponent.AIR)); - ellipsoidRitual.add(new RitualComponent(-2,0,-5,RitualComponent.AIR)); - - ellipsoidRitual.add(new RitualComponent(3,0,1,RitualComponent.EARTH)); - ellipsoidRitual.add(new RitualComponent(3,0,2,RitualComponent.EARTH)); - ellipsoidRitual.add(new RitualComponent(3,0,3,RitualComponent.EARTH)); - ellipsoidRitual.add(new RitualComponent(2,0,3,RitualComponent.EARTH)); - ellipsoidRitual.add(new RitualComponent(-3,0,-1,RitualComponent.EARTH)); - ellipsoidRitual.add(new RitualComponent(-3,0,-2,RitualComponent.EARTH)); - ellipsoidRitual.add(new RitualComponent(-3,0,-3,RitualComponent.EARTH)); - ellipsoidRitual.add(new RitualComponent(-2,0,-3,RitualComponent.EARTH)); - - ellipsoidRitual.add(new RitualComponent(1,0,-3,RitualComponent.WATER)); - ellipsoidRitual.add(new RitualComponent(2,0,-3,RitualComponent.WATER)); - ellipsoidRitual.add(new RitualComponent(3,0,-3,RitualComponent.WATER)); - ellipsoidRitual.add(new RitualComponent(3,0,-2,RitualComponent.WATER)); - ellipsoidRitual.add(new RitualComponent(-1,0,3,RitualComponent.WATER)); - ellipsoidRitual.add(new RitualComponent(-2,0,3,RitualComponent.WATER)); - ellipsoidRitual.add(new RitualComponent(-3,0,3,RitualComponent.WATER)); - ellipsoidRitual.add(new RitualComponent(-3,0,2,RitualComponent.WATER)); - - return ellipsoidRitual; - } -} diff --git a/src-backup/main/java/WayofTime/alchemicalWizardry/common/rituals/RitualEffectEvaporation.java b/src-backup/main/java/WayofTime/alchemicalWizardry/common/rituals/RitualEffectEvaporation.java deleted file mode 100644 index 9392e863..00000000 --- a/src-backup/main/java/WayofTime/alchemicalWizardry/common/rituals/RitualEffectEvaporation.java +++ /dev/null @@ -1,258 +0,0 @@ -package WayofTime.alchemicalWizardry.common.rituals; - -import java.util.ArrayList; -import java.util.List; - -import net.minecraft.block.Block; -import net.minecraft.block.material.MaterialLiquid; -import net.minecraft.entity.player.EntityPlayer; -import net.minecraft.init.Blocks; -import net.minecraft.inventory.IInventory; -import net.minecraft.item.ItemStack; -import net.minecraft.potion.Potion; -import net.minecraft.potion.PotionEffect; -import net.minecraft.server.MinecraftServer; -import net.minecraft.tileentity.TileEntity; -import net.minecraft.world.World; -import net.minecraftforge.fluids.Fluid; -import net.minecraftforge.fluids.FluidRegistry; -import net.minecraftforge.fluids.FluidStack; -import WayofTime.alchemicalWizardry.ModBlocks; -import WayofTime.alchemicalWizardry.api.rituals.IMasterRitualStone; -import WayofTime.alchemicalWizardry.api.rituals.RitualComponent; -import WayofTime.alchemicalWizardry.api.rituals.RitualEffect; -import WayofTime.alchemicalWizardry.api.soulNetwork.LifeEssenceNetwork; -import WayofTime.alchemicalWizardry.api.soulNetwork.SoulNetworkHandler; -import WayofTime.alchemicalWizardry.common.Int3; -import WayofTime.alchemicalWizardry.common.spell.complex.effect.SpellHelper; -import WayofTime.alchemicalWizardry.common.tileEntity.TESpectralBlock; -import WayofTime.alchemicalWizardry.common.tileEntity.TESpectralContainer; - -public class RitualEffectEvaporation extends RitualEffect -{ - @Override - public void performEffect(IMasterRitualStone ritualStone) - { - String owner = ritualStone.getOwner(); - - int currentEssence = SoulNetworkHandler.getCurrentEssence(owner); - World world = ritualStone.getWorld(); - int x = ritualStone.getXCoord(); - int y = ritualStone.getYCoord(); - int z = ritualStone.getZCoord(); - - if (currentEssence < 0) - { - EntityPlayer entityOwner = SpellHelper.getPlayerForUsername(owner); - - if (entityOwner == null) - { - return; - } - - entityOwner.addPotionEffect(new PotionEffect(Potion.confusion.id, 80)); - } else - { - Block block1 = world.getBlock(x, y-1, z); - int range = this.getRadiusForModifierBlock(block1); - - boolean[][][] boolList = new boolean[range * 2 + 1][range * 2 + 1][range * 2 + 1]; - - for (int i = 0; i < 2 * range + 1; i++) - { - for (int j = 0; j < 2 * range + 1; j++) - { - for(int k = 0; k < 2 * range + 1; k++) - { - boolList[i][j][k] = false; - } - } - } - - boolList[range][range][range] = true; - boolean isReady = false; - - while (!isReady) - { - isReady = true; - - for (int i = 0; i < 2 * range + 1; i++) - { - for (int j = 0; j < 2 * range + 1; j++) - { - for(int k=0; k<2*range+1;k++) - { - if (boolList[i][j][k]) - { - if (i - 1 >= 0 && !boolList[i - 1][j][k]) - { - Block block = world.getBlock(x - range + i - 1, y - range + j, z - range + k); - if(world.isAirBlock(x - range + i - 1, y - range + j, z - range + k) || block == ModBlocks.blockSpectralContainer) - { - boolList[i - 1][j][k] = true; - isReady = false; - } - } - - if (j - 1 >= 0 && !boolList[i][j - 1][k]) - { - Block block = world.getBlock(x - range + i, y - range + j - 1, z - range + k); - if(world.isAirBlock(x - range + i, y - range + j - 1, z - range + k) || block == ModBlocks.blockSpectralContainer) - { - boolList[i][j - 1][k] = true; - isReady = false; - } - } - - if(k - 1 >=0 && !boolList[i][j][k - 1]) - { - Block block = world.getBlock(x - range + i, y - range + j, z - range + k - 1); - if(world.isAirBlock(x - range + i, y - range + j, z - range + k - 1) || block == ModBlocks.blockSpectralContainer) - { - boolList[i][j][k - 1] = true; - isReady = false; - } - } - - if (i + 1 <= 2 * range && !boolList[i + 1][j][k]) - { - Block block = world.getBlock(x - range + i + 1, y - range + j, z - range + k); - if(world.isAirBlock(x - range + i + 1, y - range + j, z - range + k) || block == ModBlocks.blockSpectralContainer) - { - boolList[i + 1][j][k] = true; - isReady = false; - } - } - - if (j + 1 <= 2 * range && !boolList[i][j + 1][k]) - { - Block block = world.getBlock(x - range + i, y - range + j + 1, z - range + k); - if(world.isAirBlock(x - range + i, y - range + j + 1, z - range + k) || block == ModBlocks.blockSpectralContainer) - { - boolList[i][j + 1][k] = true; - isReady = false; - } - } - - if(k + 1 <= 2*range && !boolList[i][j][k+1]) - { - Block block = world.getBlock(x - range + i, y - range + j, z - range + k + 1); - if(world.isAirBlock(x - range + i, y - range + j, z - range + k + 1) || block == ModBlocks.blockSpectralContainer) - { - boolList[i][j][k+1] = true; - isReady = false; - } - } - } - } - } - } - } - - for (int i = 0; i < 2 * range + 1; i++) - { - for (int j = 0; j < 2 * range + 1; j++) - { - for(int k=0; k<2*range+1;k++) - { - if(!boolList[i][j][k]) - { - continue; - } - - Block block = world.getBlock(x+i-range, y+j-range, z+k-range); - - if(block == ModBlocks.blockSpectralContainer) - { - world.setBlockToAir(x+i-range, y+j-range, z+k-range); - } - } - } - } - - SoulNetworkHandler.syphonFromNetwork(owner, this.getCostPerRefresh()); - - ritualStone.setActive(false); - } - } - - @Override - public int getCostPerRefresh() - { - return 0; - } - - @Override - public List getRitualComponentList() - { - ArrayList ellipsoidRitual = new ArrayList(); - - ellipsoidRitual.add(new RitualComponent(-1,0,-1,RitualComponent.DUSK)); - ellipsoidRitual.add(new RitualComponent(-1,0,1,RitualComponent.DUSK)); - ellipsoidRitual.add(new RitualComponent(1,0,-1,RitualComponent.DUSK)); - ellipsoidRitual.add(new RitualComponent(1,0,1,RitualComponent.DUSK)); - - ellipsoidRitual.add(new RitualComponent(4,0,0,RitualComponent.DUSK)); - ellipsoidRitual.add(new RitualComponent(5,0,0,RitualComponent.DUSK)); - ellipsoidRitual.add(new RitualComponent(5,0,-1,RitualComponent.DUSK)); - ellipsoidRitual.add(new RitualComponent(5,0,-2,RitualComponent.DUSK)); - ellipsoidRitual.add(new RitualComponent(-4,0,0,RitualComponent.DUSK)); - ellipsoidRitual.add(new RitualComponent(-5,0,0,RitualComponent.DUSK)); - ellipsoidRitual.add(new RitualComponent(-5,0,1,RitualComponent.DUSK)); - ellipsoidRitual.add(new RitualComponent(-5,0,2,RitualComponent.DUSK)); - - ellipsoidRitual.add(new RitualComponent(0,0,4,RitualComponent.DUSK)); - ellipsoidRitual.add(new RitualComponent(0,0,5,RitualComponent.DUSK)); - ellipsoidRitual.add(new RitualComponent(1,0,5,RitualComponent.DUSK)); - ellipsoidRitual.add(new RitualComponent(2,0,5,RitualComponent.DUSK)); - ellipsoidRitual.add(new RitualComponent(0,0,-4,RitualComponent.DUSK)); - ellipsoidRitual.add(new RitualComponent(0,0,-5,RitualComponent.DUSK)); - ellipsoidRitual.add(new RitualComponent(-1,0,-5,RitualComponent.DUSK)); - ellipsoidRitual.add(new RitualComponent(-2,0,-5,RitualComponent.DUSK)); - - ellipsoidRitual.add(new RitualComponent(3,0,1,RitualComponent.DUSK)); - ellipsoidRitual.add(new RitualComponent(3,0,2,RitualComponent.DUSK)); - ellipsoidRitual.add(new RitualComponent(3,0,3,RitualComponent.DUSK)); - ellipsoidRitual.add(new RitualComponent(2,0,3,RitualComponent.DUSK)); - ellipsoidRitual.add(new RitualComponent(-3,0,-1,RitualComponent.DUSK)); - ellipsoidRitual.add(new RitualComponent(-3,0,-2,RitualComponent.DUSK)); - ellipsoidRitual.add(new RitualComponent(-3,0,-3,RitualComponent.DUSK)); - ellipsoidRitual.add(new RitualComponent(-2,0,-3,RitualComponent.DUSK)); - - ellipsoidRitual.add(new RitualComponent(1,0,-3,RitualComponent.DUSK)); - ellipsoidRitual.add(new RitualComponent(2,0,-3,RitualComponent.DUSK)); - ellipsoidRitual.add(new RitualComponent(3,0,-3,RitualComponent.DUSK)); - ellipsoidRitual.add(new RitualComponent(3,0,-2,RitualComponent.DUSK)); - ellipsoidRitual.add(new RitualComponent(-1,0,3,RitualComponent.DUSK)); - ellipsoidRitual.add(new RitualComponent(-2,0,3,RitualComponent.DUSK)); - ellipsoidRitual.add(new RitualComponent(-3,0,3,RitualComponent.DUSK)); - ellipsoidRitual.add(new RitualComponent(-3,0,2,RitualComponent.DUSK)); - - return ellipsoidRitual; - } - - public int getRadiusForModifierBlock(Block block) - { - if(block == null) - { - return 10; - } - - if(block == Blocks.diamond_block) - { - return 30; - } - - if(block == Blocks.gold_block) - { - return 20; - } - - if(block == Blocks.iron_block) - { - return 15; - } - - return 10; - } -} diff --git a/src-backup/main/java/WayofTime/alchemicalWizardry/common/rituals/RitualEffectExpulsion.java b/src-backup/main/java/WayofTime/alchemicalWizardry/common/rituals/RitualEffectExpulsion.java deleted file mode 100644 index 08f3c2da..00000000 --- a/src-backup/main/java/WayofTime/alchemicalWizardry/common/rituals/RitualEffectExpulsion.java +++ /dev/null @@ -1,345 +0,0 @@ -package WayofTime.alchemicalWizardry.common.rituals; - -import java.util.ArrayList; -import java.util.List; -import java.util.Random; - -import net.minecraft.block.Block; -import net.minecraft.entity.Entity; -import net.minecraft.entity.EntityLivingBase; -import net.minecraft.entity.player.EntityPlayer; -import net.minecraft.entity.player.EntityPlayerMP; -import net.minecraft.inventory.IInventory; -import net.minecraft.item.ItemStack; -import net.minecraft.potion.Potion; -import net.minecraft.potion.PotionEffect; -import net.minecraft.server.MinecraftServer; -import net.minecraft.tileentity.TileEntity; -import net.minecraft.util.MathHelper; -import net.minecraft.world.World; -import net.minecraftforge.common.MinecraftForge; -import net.minecraftforge.event.entity.living.EnderTeleportEvent; -import WayofTime.alchemicalWizardry.api.alchemy.energy.ReagentRegistry; -import WayofTime.alchemicalWizardry.api.items.interfaces.IBindable; -import WayofTime.alchemicalWizardry.api.rituals.IMasterRitualStone; -import WayofTime.alchemicalWizardry.api.rituals.RitualComponent; -import WayofTime.alchemicalWizardry.api.rituals.RitualEffect; -import WayofTime.alchemicalWizardry.api.soulNetwork.LifeEssenceNetwork; -import WayofTime.alchemicalWizardry.api.soulNetwork.SoulNetworkHandler; -import WayofTime.alchemicalWizardry.common.items.EnergyItems; -import WayofTime.alchemicalWizardry.common.spell.complex.effect.SpellHelper; -import WayofTime.alchemicalWizardry.common.spell.simple.SpellTeleport; - -public class RitualEffectExpulsion extends RitualEffect -{ - public static final int virtusDrain = 10; - public static final int potentiaDrain = 10; - public static final int tennebraeDrain = 5; - - @Override - public void performEffect(IMasterRitualStone ritualStone) - { - String owner = ritualStone.getOwner(); - - int currentEssence = SoulNetworkHandler.getCurrentEssence(owner); - World world = ritualStone.getWorld(); - int x = ritualStone.getXCoord(); - int y = ritualStone.getYCoord(); - int z = ritualStone.getZCoord(); - - if (currentEssence < this.getCostPerRefresh()) - { - SoulNetworkHandler.causeNauseaToPlayer(owner); - } else - { - boolean hasVirtus = this.canDrainReagent(ritualStone, ReagentRegistry.virtusReagent, virtusDrain, false); - boolean hasPotentia = this.canDrainReagent(ritualStone, ReagentRegistry.potentiaReagent, potentiaDrain, false); - - int teleportDistance = hasVirtus ? 300 : 100; - int range = hasPotentia ? 50 : 25; - List playerList = SpellHelper.getPlayersInRange(world, x + 0.5, y + 0.5, z + 0.5, range, range); - boolean flag = false; - - TileEntity tile = world.getTileEntity(x, y+1, z); - IInventory inventoryTile = null; - if(tile instanceof IInventory) - { - inventoryTile = (IInventory)tile; - } - - for(EntityPlayer entityplayer : playerList) - { - String playerString = SpellHelper.getUsername(entityplayer); - if (!playerString.equals(owner)) - { - if(inventoryTile != null) - { - for(int i=0; i livingList = SpellHelper.getLivingEntitiesInRange(world, x + 0.5, y + 0.5, z + 0.5, range, range); - boolean flag = false; - - for(EntityLivingBase livingEntity : livingList) - { - if(livingEntity instanceof EntityPlayer) - { - continue; - } - - flag = teleportRandomly(livingEntity, teleportDistance) || flag; - } - - if(flag) - { - if(hasVirtus) - { - this.canDrainReagent(ritualStone, ReagentRegistry.virtusReagent, virtusDrain, true); - } - - if(hasPotentia) - { - this.canDrainReagent(ritualStone, ReagentRegistry.potentiaReagent, potentiaDrain, true); - } - - this.canDrainReagent(ritualStone, ReagentRegistry.tenebraeReagent, tennebraeDrain, true); - - SoulNetworkHandler.syphonFromNetwork(owner, 1000); - } - } - } - - @Override - public int getCostPerRefresh() - { - return 1000; - } - - public boolean teleportRandomly(EntityLivingBase entityLiving, double distance) - { - double x = entityLiving.posX; - double y = entityLiving.posY; - double z = entityLiving.posZ; - Random rand = new Random(); - double d0 = x + (rand.nextDouble() - 0.5D) * distance; - double d1 = y + (double) (rand.nextInt((int) distance) - (distance) / 2); - double d2 = z + (rand.nextDouble() - 0.5D) * distance; - int i = 0; - - while (!teleportTo(entityLiving, d0, d1, d2, x, y, z) && i < 100) - { - d0 = x + (rand.nextDouble() - 0.5D) * distance; - d1 = y + (double) (rand.nextInt((int) distance) - (distance) / 2); - d2 = z + (rand.nextDouble() - 0.5D) * distance; - i++; - } - - if (i >= 100) - { - return false; - } - - return true; - //return SpellTeleport.teleportTo(entityLiving, d0, d1, d2,x,y,z); - } - - public boolean teleportTo(EntityLivingBase entityLiving, double par1, double par3, double par5, double lastX, double lastY, double lastZ) - { - EnderTeleportEvent event = new EnderTeleportEvent(entityLiving, par1, par3, par5, 0); - - if (MinecraftForge.EVENT_BUS.post(event)) - { - return false; - } - - double d3 = lastX; - double d4 = lastY; - double d5 = lastZ; - SpellTeleport.moveEntityViaTeleport(entityLiving, event.targetX, event.targetY, event.targetZ); - boolean flag = false; - int i = MathHelper.floor_double(entityLiving.posX); - int j = MathHelper.floor_double(entityLiving.posY); - int k = MathHelper.floor_double(entityLiving.posZ); - int l; - - if (entityLiving.worldObj.blockExists(i, j, k)) - { - boolean flag1 = false; - - while (!flag1 && j > 0) - { - Block block = entityLiving.worldObj.getBlock(i, j - 1, k); - - if (block != null && block.getMaterial().blocksMovement()) - { - flag1 = true; - } else - { - --entityLiving.posY; - --j; - } - } - - if (flag1) - { - SpellTeleport.moveEntityViaTeleport(entityLiving, entityLiving.posX, entityLiving.posY, entityLiving.posZ); - - if (entityLiving.worldObj.getCollidingBoundingBoxes(entityLiving, entityLiving.boundingBox).isEmpty() && !entityLiving.worldObj.isAnyLiquid(entityLiving.boundingBox)) - { - flag = true; - } - } - } - - if (!flag) - { - SpellTeleport.moveEntityViaTeleport(entityLiving, d3, d4, d5); - return false; - } else - { - short short1 = 128; - - for (l = 0; l < short1; ++l) - { - double d6 = (double) l / ((double) short1 - 1.0D); - float f = (entityLiving.worldObj.rand.nextFloat() - 0.5F) * 0.2F; - float f1 = (entityLiving.worldObj.rand.nextFloat() - 0.5F) * 0.2F; - float f2 = (entityLiving.worldObj.rand.nextFloat() - 0.5F) * 0.2F; - double d7 = d3 + (entityLiving.posX - d3) * d6 + (entityLiving.worldObj.rand.nextDouble() - 0.5D) * (double) entityLiving.width * 2.0D; - double d8 = d4 + (entityLiving.posY - d4) * d6 + entityLiving.worldObj.rand.nextDouble() * (double) entityLiving.height; - double d9 = d5 + (entityLiving.posZ - d5) * d6 + (entityLiving.worldObj.rand.nextDouble() - 0.5D) * (double) entityLiving.width * 2.0D; - entityLiving.worldObj.spawnParticle("portal", d7, d8, d9, (double) f, (double) f1, (double) f2); - } - -// this.worldObj.playSoundEffect(d3, d4, d5, "mob.endermen.portal", 1.0F, 1.0F); -// this.playSound("mob.endermen.portal", 1.0F, 1.0F); - return true; - } - } - - public void moveEntityViaTeleport(EntityLivingBase entityLiving, double x, double y, double z) - { - if (entityLiving instanceof EntityPlayer) - { - if (entityLiving != null && entityLiving instanceof EntityPlayerMP) - { - EntityPlayerMP entityplayermp = (EntityPlayerMP) entityLiving; - - if (entityplayermp.worldObj == entityLiving.worldObj) - { - EnderTeleportEvent event = new EnderTeleportEvent(entityplayermp, x, y, z, 5.0F); - - if (!MinecraftForge.EVENT_BUS.post(event)) - { - if (entityLiving.isRiding()) - { - entityLiving.mountEntity((Entity) null); - } - - entityLiving.setPositionAndUpdate(event.targetX, event.targetY, event.targetZ); -// this.getThrower().fallDistance = 0.0F; -// this.getThrower().attackEntityFrom(DamageSource.fall, event.attackDamage); - } - } - } - } else if (entityLiving != null) - { - entityLiving.setPosition(x, y, z); - } - } - - @Override - public List getRitualComponentList() - { - ArrayList expulsionRitual = new ArrayList(); - expulsionRitual.add(new RitualComponent(2,0,2, RitualComponent.EARTH)); - expulsionRitual.add(new RitualComponent(2,0,1, RitualComponent.EARTH)); - expulsionRitual.add(new RitualComponent(1,0,2, RitualComponent.EARTH)); - expulsionRitual.add(new RitualComponent(2,0,-2, RitualComponent.EARTH)); - expulsionRitual.add(new RitualComponent(2,0,-1, RitualComponent.EARTH)); - expulsionRitual.add(new RitualComponent(-1,0,2, RitualComponent.EARTH)); - expulsionRitual.add(new RitualComponent(-2,0,2, RitualComponent.EARTH)); - expulsionRitual.add(new RitualComponent(-2,0,1, RitualComponent.EARTH)); - expulsionRitual.add(new RitualComponent(1,0,-2, RitualComponent.EARTH)); - expulsionRitual.add(new RitualComponent(-2,0,-2, RitualComponent.EARTH)); - expulsionRitual.add(new RitualComponent(-2,0,-1, RitualComponent.EARTH)); - expulsionRitual.add(new RitualComponent(-1,0,-2, RitualComponent.EARTH)); - expulsionRitual.add(new RitualComponent(4,0,2, RitualComponent.AIR)); - expulsionRitual.add(new RitualComponent(5,0,2, RitualComponent.AIR)); - expulsionRitual.add(new RitualComponent(4,0,-2, RitualComponent.AIR)); - expulsionRitual.add(new RitualComponent(5,0,-2, RitualComponent.AIR)); - expulsionRitual.add(new RitualComponent(-4,0,2, RitualComponent.AIR)); - expulsionRitual.add(new RitualComponent(-5,0,2, RitualComponent.AIR)); - expulsionRitual.add(new RitualComponent(-4,0,-2, RitualComponent.AIR)); - expulsionRitual.add(new RitualComponent(-5,0,-2, RitualComponent.AIR)); - expulsionRitual.add(new RitualComponent(2,0,4, RitualComponent.AIR)); - expulsionRitual.add(new RitualComponent(2,0,5, RitualComponent.AIR)); - expulsionRitual.add(new RitualComponent(-2,0,4, RitualComponent.AIR)); - expulsionRitual.add(new RitualComponent(-2,0,5, RitualComponent.AIR)); - expulsionRitual.add(new RitualComponent(2,0,-4, RitualComponent.AIR)); - expulsionRitual.add(new RitualComponent(2,0,-5, RitualComponent.AIR)); - expulsionRitual.add(new RitualComponent(-2,0,-4, RitualComponent.AIR)); - expulsionRitual.add(new RitualComponent(-2,0,-5, RitualComponent.AIR)); - expulsionRitual.add(new RitualComponent(0,0,6, RitualComponent.EARTH)); - expulsionRitual.add(new RitualComponent(0,0,-6, RitualComponent.EARTH)); - expulsionRitual.add(new RitualComponent(6,0,0, RitualComponent.EARTH)); - expulsionRitual.add(new RitualComponent(-6,0,0, RitualComponent.EARTH)); - expulsionRitual.add(new RitualComponent(-5,0,0, RitualComponent.DUSK)); - expulsionRitual.add(new RitualComponent(-6,0,1, RitualComponent.DUSK)); - expulsionRitual.add(new RitualComponent(-6,0,-1, RitualComponent.DUSK)); - expulsionRitual.add(new RitualComponent(5,0,0, RitualComponent.DUSK)); - expulsionRitual.add(new RitualComponent(6,0,1, RitualComponent.DUSK)); - expulsionRitual.add(new RitualComponent(6,0,-1, RitualComponent.DUSK)); - expulsionRitual.add(new RitualComponent(0,0,5, RitualComponent.DUSK)); - expulsionRitual.add(new RitualComponent(1,0,6, RitualComponent.DUSK)); - expulsionRitual.add(new RitualComponent(-1,0,6, RitualComponent.DUSK)); - expulsionRitual.add(new RitualComponent(0,0,-5, RitualComponent.DUSK)); - expulsionRitual.add(new RitualComponent(1,0,-6, RitualComponent.DUSK)); - expulsionRitual.add(new RitualComponent(-1,0,-6, RitualComponent.DUSK)); - expulsionRitual.add(new RitualComponent(4,0,4, RitualComponent.FIRE)); - expulsionRitual.add(new RitualComponent(4,0,-4, RitualComponent.FIRE)); - expulsionRitual.add(new RitualComponent(-4,0,4, RitualComponent.FIRE)); - expulsionRitual.add(new RitualComponent(-4,0,-4, RitualComponent.FIRE)); - return expulsionRitual; - } -} diff --git a/src-backup/main/java/WayofTime/alchemicalWizardry/common/rituals/RitualEffectFeatheredEarth.java b/src-backup/main/java/WayofTime/alchemicalWizardry/common/rituals/RitualEffectFeatheredEarth.java deleted file mode 100644 index d20906f5..00000000 --- a/src-backup/main/java/WayofTime/alchemicalWizardry/common/rituals/RitualEffectFeatheredEarth.java +++ /dev/null @@ -1,177 +0,0 @@ -package WayofTime.alchemicalWizardry.common.rituals; - -import java.util.ArrayList; -import java.util.List; - -import net.minecraft.entity.EntityLivingBase; -import net.minecraft.entity.effect.EntityLightningBolt; -import net.minecraft.entity.player.EntityPlayer; -import net.minecraft.potion.Potion; -import net.minecraft.potion.PotionEffect; -import net.minecraft.server.MinecraftServer; -import net.minecraft.util.AxisAlignedBB; -import net.minecraft.world.World; -import WayofTime.alchemicalWizardry.api.alchemy.energy.ReagentRegistry; -import WayofTime.alchemicalWizardry.api.rituals.IMasterRitualStone; -import WayofTime.alchemicalWizardry.api.rituals.RitualComponent; -import WayofTime.alchemicalWizardry.api.rituals.RitualEffect; -import WayofTime.alchemicalWizardry.api.soulNetwork.LifeEssenceNetwork; -import WayofTime.alchemicalWizardry.api.soulNetwork.SoulNetworkHandler; -import WayofTime.alchemicalWizardry.common.spell.complex.effect.SpellHelper; - -public class RitualEffectFeatheredEarth extends RitualEffect //Nullifies all fall damage in the area of effect -{ - public static final int terraeDrain = 1; - public static final int orbisTerraeDrain = 1; - public static final int aetherDrain = 1; - - public static final int costCooldown = 10; - - @Override - public void performEffect(IMasterRitualStone ritualStone) - { - String owner = ritualStone.getOwner(); - - int currentEssence = SoulNetworkHandler.getCurrentEssence(owner); - World world = ritualStone.getWorld(); - int x = ritualStone.getXCoord(); - int y = ritualStone.getYCoord(); - int z = ritualStone.getZCoord(); - - if (ritualStone.getCooldown() > 0) - { - world.addWeatherEffect(new EntityLightningBolt(world, x + 4, y + 5, z + 4)); - world.addWeatherEffect(new EntityLightningBolt(world, x + 4, y + 5, z - 4)); - world.addWeatherEffect(new EntityLightningBolt(world, x - 4, y + 5, z - 4)); - world.addWeatherEffect(new EntityLightningBolt(world, x - 4, y + 5, z + 4)); - ritualStone.setCooldown(0); - } - - boolean hasTerrae = this.canDrainReagent(ritualStone, ReagentRegistry.terraeReagent, terraeDrain, false); - boolean hasOrbisTerrae = this.canDrainReagent(ritualStone, ReagentRegistry.orbisTerraeReagent, orbisTerraeDrain, false); - boolean hasAether = this.canDrainReagent(ritualStone, ReagentRegistry.aetherReagent, aetherDrain, false); - - int range = this.getHorizontalRangeForReagent(hasTerrae, hasOrbisTerrae); - int verticalRange = hasAether ? 60 : 30; - List entities = world.getEntitiesWithinAABB(EntityLivingBase.class, AxisAlignedBB.getBoundingBox(x, y, z, x + 1, y + 1, z + 1).expand(range, verticalRange, range)); - int entityCount = 0; - boolean flag = false; - - for (EntityLivingBase entity : entities) - { - entityCount++; - } - - if (currentEssence < this.getCostPerRefresh() * entityCount) - { - SoulNetworkHandler.causeNauseaToPlayer(owner); - } else - { - for (EntityLivingBase entity : entities) - { - entity.fallDistance = 0; - flag = true; - } - - SoulNetworkHandler.syphonFromNetwork(owner, this.getCostPerRefresh() * entityCount); - - if(flag && world.getWorldTime() % costCooldown == 0) - { - if(hasTerrae) - { - this.canDrainReagent(ritualStone, ReagentRegistry.terraeReagent, terraeDrain, true); - } - if(hasOrbisTerrae) - { - this.canDrainReagent(ritualStone, ReagentRegistry.orbisTerraeReagent, orbisTerraeDrain, true); - } - if(hasAether) - { - this.canDrainReagent(ritualStone, ReagentRegistry.aetherReagent, aetherDrain, true); - } - } - } - } - - @Override - public int getCostPerRefresh() - { - return 0; - } - - @Override - public int getInitialCooldown() - { - return 1; - } - - @Override - public List getRitualComponentList() - { - ArrayList featheredEarthRitual = new ArrayList(); - featheredEarthRitual.add(new RitualComponent(1, 0, 0, RitualComponent.DUSK)); - featheredEarthRitual.add(new RitualComponent(-1, 0, 0, RitualComponent.DUSK)); - featheredEarthRitual.add(new RitualComponent(0, 0, 1, RitualComponent.DUSK)); - featheredEarthRitual.add(new RitualComponent(0, 0, -1, RitualComponent.DUSK)); - featheredEarthRitual.add(new RitualComponent(2, 0, 2, RitualComponent.AIR)); - featheredEarthRitual.add(new RitualComponent(-2, 0, 2, RitualComponent.AIR)); - featheredEarthRitual.add(new RitualComponent(-2, 0, -2, RitualComponent.AIR)); - featheredEarthRitual.add(new RitualComponent(2, 0, -2, RitualComponent.AIR)); - featheredEarthRitual.add(new RitualComponent(1, 0, 3, RitualComponent.EARTH)); - featheredEarthRitual.add(new RitualComponent(0, 0, 3, RitualComponent.EARTH)); - featheredEarthRitual.add(new RitualComponent(-1, 0, 3, RitualComponent.EARTH)); - featheredEarthRitual.add(new RitualComponent(1, 0, -3, RitualComponent.EARTH)); - featheredEarthRitual.add(new RitualComponent(0, 0, -3, RitualComponent.EARTH)); - featheredEarthRitual.add(new RitualComponent(-1, 0, -3, RitualComponent.EARTH)); - featheredEarthRitual.add(new RitualComponent(3, 0, 1, RitualComponent.EARTH)); - featheredEarthRitual.add(new RitualComponent(3, 0, 0, RitualComponent.EARTH)); - featheredEarthRitual.add(new RitualComponent(3, 0, -1, RitualComponent.EARTH)); - featheredEarthRitual.add(new RitualComponent(-3, 0, 1, RitualComponent.EARTH)); - featheredEarthRitual.add(new RitualComponent(-3, 0, 0, RitualComponent.EARTH)); - featheredEarthRitual.add(new RitualComponent(-3, 0, -1, RitualComponent.EARTH)); - featheredEarthRitual.add(new RitualComponent(4, 4, 4, RitualComponent.FIRE)); - featheredEarthRitual.add(new RitualComponent(-4, 4, 4, RitualComponent.FIRE)); - featheredEarthRitual.add(new RitualComponent(-4, 4, -4, RitualComponent.FIRE)); - featheredEarthRitual.add(new RitualComponent(4, 4, -4, RitualComponent.FIRE)); - featheredEarthRitual.add(new RitualComponent(4, 5, 5, RitualComponent.AIR)); - featheredEarthRitual.add(new RitualComponent(4, 5, 3, RitualComponent.AIR)); - featheredEarthRitual.add(new RitualComponent(5, 5, 4, RitualComponent.AIR)); - featheredEarthRitual.add(new RitualComponent(3, 5, 4, RitualComponent.AIR)); - featheredEarthRitual.add(new RitualComponent(-4, 5, 5, RitualComponent.AIR)); - featheredEarthRitual.add(new RitualComponent(-4, 5, 3, RitualComponent.AIR)); - featheredEarthRitual.add(new RitualComponent(-5, 5, 4, RitualComponent.AIR)); - featheredEarthRitual.add(new RitualComponent(-3, 5, 4, RitualComponent.AIR)); - featheredEarthRitual.add(new RitualComponent(4, 5, -5, RitualComponent.AIR)); - featheredEarthRitual.add(new RitualComponent(4, 5, -3, RitualComponent.AIR)); - featheredEarthRitual.add(new RitualComponent(5, 5, -4, RitualComponent.AIR)); - featheredEarthRitual.add(new RitualComponent(3, 5, -4, RitualComponent.AIR)); - featheredEarthRitual.add(new RitualComponent(-4, 5, -5, RitualComponent.AIR)); - featheredEarthRitual.add(new RitualComponent(-4, 5, -3, RitualComponent.AIR)); - featheredEarthRitual.add(new RitualComponent(-5, 5, -4, RitualComponent.AIR)); - featheredEarthRitual.add(new RitualComponent(-3, 5, -4, RitualComponent.AIR)); - return featheredEarthRitual; - } - - public int getHorizontalRangeForReagent(boolean hasTerrae, boolean hasOrbisTerrae) - { - if(hasOrbisTerrae) - { - if(hasTerrae) - { - return 64; - }else - { - return 45; - } - }else - { - if(hasTerrae) - { - return 30; - }else - { - return 20; - } - } - } -} diff --git a/src-backup/main/java/WayofTime/alchemicalWizardry/common/rituals/RitualEffectFeatheredKnife.java b/src-backup/main/java/WayofTime/alchemicalWizardry/common/rituals/RitualEffectFeatheredKnife.java deleted file mode 100644 index ba8d6782..00000000 --- a/src-backup/main/java/WayofTime/alchemicalWizardry/common/rituals/RitualEffectFeatheredKnife.java +++ /dev/null @@ -1,189 +0,0 @@ -package WayofTime.alchemicalWizardry.common.rituals; - -import java.util.ArrayList; -import java.util.Iterator; -import java.util.List; - -import net.minecraft.entity.player.EntityPlayer; -import net.minecraft.entity.player.EntityPlayerMP; -import net.minecraft.potion.Potion; -import net.minecraft.potion.PotionEffect; -import net.minecraft.server.MinecraftServer; -import net.minecraft.util.AxisAlignedBB; -import net.minecraft.world.World; -import WayofTime.alchemicalWizardry.api.alchemy.energy.ReagentRegistry; -import WayofTime.alchemicalWizardry.api.rituals.IMasterRitualStone; -import WayofTime.alchemicalWizardry.api.rituals.RitualComponent; -import WayofTime.alchemicalWizardry.api.rituals.RitualEffect; -import WayofTime.alchemicalWizardry.api.soulNetwork.LifeEssenceNetwork; -import WayofTime.alchemicalWizardry.api.soulNetwork.SoulNetworkHandler; -import WayofTime.alchemicalWizardry.common.spell.complex.effect.SpellHelper; -import WayofTime.alchemicalWizardry.common.tileEntity.TEAltar; - -public class RitualEffectFeatheredKnife extends RitualEffect -{ - public final int amount = 100; - - public static final int sanctusDrain = 5; - public static final int reductusDrain = 3; - public static final int magicalesDrain = 2; - public static final int potentiaDrain = 5; - - @Override - public void performEffect(IMasterRitualStone ritualStone) - { - String owner = ritualStone.getOwner(); - - int currentEssence = SoulNetworkHandler.getCurrentEssence(owner); - World world = ritualStone.getWorld(); - int x = ritualStone.getXCoord(); - int y = ritualStone.getYCoord(); - int z = ritualStone.getZCoord(); - - boolean hasPotentia = this.canDrainReagent(ritualStone, ReagentRegistry.potentiaReagent, potentiaDrain, false); - - int timeDelay = hasPotentia ? 10 : 20; - - if (world.getWorldTime() % timeDelay != 0) - { - return; - } - - TEAltar tileAltar = null; - boolean testFlag = false; - - for (int i = -5; i <= 5; i++) - { - for (int j = -5; j <= 5; j++) - { - for (int k = -10; k <= 10; k++) - { - if (world.getTileEntity(x + i, y + k, z + j) instanceof TEAltar) - { - tileAltar = (TEAltar) world.getTileEntity(x + i, y + k, z + j); - testFlag = true; - } - } - } - } - - if (!testFlag) - { - return; - } - - boolean hasReductus = this.canDrainReagent(ritualStone, ReagentRegistry.reductusReagent, reductusDrain, false); - - double range = hasReductus ? 8 : 15; - double vertRange = hasReductus ? 8 : 20; - List list = SpellHelper.getPlayersInRange(world, x+0.5, y+0.5, z+0.5, range, vertRange); - - int entityCount = 0; - boolean flag = false; - - if (currentEssence < this.getCostPerRefresh() * list.size()) - { - SoulNetworkHandler.causeNauseaToPlayer(owner); - } else - { - boolean hasMagicales = this.canDrainReagent(ritualStone, ReagentRegistry.magicalesReagent, magicalesDrain, false); - boolean hasSanctus = this.canDrainReagent(ritualStone, ReagentRegistry.sanctusReagent, sanctusDrain, false); - - EntityPlayer ownerPlayer = SpellHelper.getPlayerForUsername(owner); - for(EntityPlayer player : list) - { - hasSanctus = hasSanctus && this.canDrainReagent(ritualStone, ReagentRegistry.sanctusReagent, sanctusDrain, false); - double threshold = hasSanctus ? 0.7d : 0.3d; - - if((hasMagicales && player == ownerPlayer) || !hasMagicales) - { - if (!SpellHelper.isFakePlayer(world, player)) - { - if (player.getHealth()/player.getMaxHealth() > threshold) - { - player.setHealth(player.getHealth() - 1); - entityCount++; - tileAltar.sacrificialDaggerCall(this.amount, false); - if(hasSanctus) - { - this.canDrainReagent(ritualStone, ReagentRegistry.sanctusReagent, sanctusDrain, true); - } - if(hasMagicales) - { - this.canDrainReagent(ritualStone, ReagentRegistry.magicalesReagent, magicalesDrain, true); - break; - } - } - } - } - } - - if(entityCount > 0) - { - if(hasReductus) - { - this.canDrainReagent(ritualStone, ReagentRegistry.reductusReagent, reductusDrain, true); - } - if(hasPotentia) - { - this.canDrainReagent(ritualStone, ReagentRegistry.potentiaReagent, potentiaDrain, true); - } - - SoulNetworkHandler.syphonFromNetwork(owner, this.getCostPerRefresh() * entityCount); - } - } - } - - @Override - public int getCostPerRefresh() - { - return 20; - } - - @Override - public List getRitualComponentList() - { - ArrayList featheredKnifeRitual = new ArrayList(); - featheredKnifeRitual.add(new RitualComponent(1, 0, 0, RitualComponent.DUSK)); - featheredKnifeRitual.add(new RitualComponent(-1, 0, 0, RitualComponent.DUSK)); - featheredKnifeRitual.add(new RitualComponent(0, 0, 1, RitualComponent.DUSK)); - featheredKnifeRitual.add(new RitualComponent(0, 0, -1, RitualComponent.DUSK)); - featheredKnifeRitual.add(new RitualComponent(2, -1, 0, RitualComponent.WATER)); - featheredKnifeRitual.add(new RitualComponent(-2, -1, 0, RitualComponent.WATER)); - featheredKnifeRitual.add(new RitualComponent(0, -1, 2, RitualComponent.WATER)); - featheredKnifeRitual.add(new RitualComponent(0, -1, -2, RitualComponent.WATER)); - featheredKnifeRitual.add(new RitualComponent(1, -1, 1, RitualComponent.AIR)); - featheredKnifeRitual.add(new RitualComponent(1, -1, -1, RitualComponent.AIR)); - featheredKnifeRitual.add(new RitualComponent(-1, -1, 1, RitualComponent.AIR)); - featheredKnifeRitual.add(new RitualComponent(-1, -1, -1, RitualComponent.AIR)); - featheredKnifeRitual.add(new RitualComponent(4, -1, 2, RitualComponent.FIRE)); - featheredKnifeRitual.add(new RitualComponent(2, -1, 4, RitualComponent.FIRE)); - featheredKnifeRitual.add(new RitualComponent(-4, -1, 2, RitualComponent.FIRE)); - featheredKnifeRitual.add(new RitualComponent(2, -1, -4, RitualComponent.FIRE)); - featheredKnifeRitual.add(new RitualComponent(4, -1, -2, RitualComponent.FIRE)); - featheredKnifeRitual.add(new RitualComponent(-2, -1, 4, RitualComponent.FIRE)); - featheredKnifeRitual.add(new RitualComponent(-4, -1, -2, RitualComponent.FIRE)); - featheredKnifeRitual.add(new RitualComponent(-2, -1, -4, RitualComponent.FIRE)); - featheredKnifeRitual.add(new RitualComponent(4, 0, 2, RitualComponent.EARTH)); - featheredKnifeRitual.add(new RitualComponent(2, 0, 4, RitualComponent.EARTH)); - featheredKnifeRitual.add(new RitualComponent(-4, 0, 2, RitualComponent.EARTH)); - featheredKnifeRitual.add(new RitualComponent(2, 0, -4, RitualComponent.EARTH)); - featheredKnifeRitual.add(new RitualComponent(4, 0, -2, RitualComponent.EARTH)); - featheredKnifeRitual.add(new RitualComponent(-2, 0, 4, RitualComponent.EARTH)); - featheredKnifeRitual.add(new RitualComponent(-4, 0, -2, RitualComponent.EARTH)); - featheredKnifeRitual.add(new RitualComponent(-2, 0, -4, RitualComponent.EARTH)); - featheredKnifeRitual.add(new RitualComponent(4, 0, 3, RitualComponent.EARTH)); - featheredKnifeRitual.add(new RitualComponent(3, 0, 4, RitualComponent.EARTH)); - featheredKnifeRitual.add(new RitualComponent(-4, 0, 3, RitualComponent.EARTH)); - featheredKnifeRitual.add(new RitualComponent(3, 0, -4, RitualComponent.EARTH)); - featheredKnifeRitual.add(new RitualComponent(4, 0, -3, RitualComponent.EARTH)); - featheredKnifeRitual.add(new RitualComponent(-3, 0, 4, RitualComponent.EARTH)); - featheredKnifeRitual.add(new RitualComponent(-4, 0, -3, RitualComponent.EARTH)); - featheredKnifeRitual.add(new RitualComponent(-3, 0, -4, RitualComponent.EARTH)); - featheredKnifeRitual.add(new RitualComponent(3, 0, 3, RitualComponent.AIR)); - featheredKnifeRitual.add(new RitualComponent(3, 0, -3, RitualComponent.AIR)); - featheredKnifeRitual.add(new RitualComponent(-3, 0, 3, RitualComponent.AIR)); - featheredKnifeRitual.add(new RitualComponent(-3, 0, -3, RitualComponent.AIR)); - return featheredKnifeRitual; - } -} diff --git a/src-backup/main/java/WayofTime/alchemicalWizardry/common/rituals/RitualEffectFlight.java b/src-backup/main/java/WayofTime/alchemicalWizardry/common/rituals/RitualEffectFlight.java deleted file mode 100644 index ae4031d8..00000000 --- a/src-backup/main/java/WayofTime/alchemicalWizardry/common/rituals/RitualEffectFlight.java +++ /dev/null @@ -1,186 +0,0 @@ -package WayofTime.alchemicalWizardry.common.rituals; - -import java.util.ArrayList; -import java.util.List; - -import net.minecraft.entity.player.EntityPlayer; -import net.minecraft.potion.Potion; -import net.minecraft.potion.PotionEffect; -import net.minecraft.server.MinecraftServer; -import net.minecraft.util.AxisAlignedBB; -import net.minecraft.world.World; -import WayofTime.alchemicalWizardry.AlchemicalWizardry; -import WayofTime.alchemicalWizardry.api.alchemy.energy.ReagentRegistry; -import WayofTime.alchemicalWizardry.api.rituals.IMasterRitualStone; -import WayofTime.alchemicalWizardry.api.rituals.RitualComponent; -import WayofTime.alchemicalWizardry.api.rituals.RitualEffect; -import WayofTime.alchemicalWizardry.api.soulNetwork.LifeEssenceNetwork; -import WayofTime.alchemicalWizardry.api.soulNetwork.SoulNetworkHandler; -import WayofTime.alchemicalWizardry.common.spell.complex.effect.SpellHelper; - -public class RitualEffectFlight extends RitualEffect -{ - public static final int aetherDrain = 10; - public static final int reductusDrain = 5; - public static final int reagentCooldown = 50; - - @Override - public void performEffect(IMasterRitualStone ritualStone) - { - String owner = ritualStone.getOwner(); - - int currentEssence = SoulNetworkHandler.getCurrentEssence(owner); - World world = ritualStone.getWorld(); - int x = ritualStone.getXCoord(); - int y = ritualStone.getYCoord(); - int z = ritualStone.getZCoord(); - - int range = 20; - int verticalRange = 30; - AxisAlignedBB axis = AxisAlignedBB.getBoundingBox(x, y, z, x + 1, y + 1, z + 1).expand(range, verticalRange, range); - axis.maxY = 256; - axis.minY = 0; - List entities = world.getEntitiesWithinAABB(EntityPlayer.class, axis); - int entityCount = 0; - - boolean hasAether = this.canDrainReagent(ritualStone, ReagentRegistry.aetherReagent, aetherDrain, false); - boolean hasReductus = this.canDrainReagent(ritualStone, ReagentRegistry.reductusReagent, reductusDrain, false); - - for (EntityPlayer entity : entities) - { - entityCount++; - } - - if (currentEssence < this.getCostPerRefresh() * entityCount) - { - SoulNetworkHandler.causeNauseaToPlayer(owner); - } else - { - entityCount = 0; - EntityPlayer ownerEntity = SpellHelper.getPlayerForUsername(owner); - for (EntityPlayer entity : entities) - { - if(hasReductus && entity != ownerEntity) - { - continue; - } - entity.addPotionEffect(new PotionEffect(AlchemicalWizardry.customPotionFlight.id, hasAether ? 30*20 : 20, 0)); - entityCount ++; - } - - if(entityCount > 0 && world.getWorldTime() % reagentCooldown == 0) - { - if(hasAether) - { - this.canDrainReagent(ritualStone, ReagentRegistry.aetherReagent, aetherDrain, true); - } - if(hasReductus) - { - this.canDrainReagent(ritualStone, ReagentRegistry.reductusReagent, reductusDrain, true); - } - } - - SoulNetworkHandler.syphonFromNetwork(owner, this.getCostPerRefresh() * entityCount); - } - } - - @Override - public int getCostPerRefresh() - { - return 0; - } - - @Override - public int getInitialCooldown() - { - return 1; - } - - @Override - public List getRitualComponentList() - { - ArrayList flightRitual = new ArrayList(); - flightRitual.add(new RitualComponent(1, 0, 0, RitualComponent.DUSK)); - flightRitual.add(new RitualComponent(-1, 0, 0, RitualComponent.DUSK)); - flightRitual.add(new RitualComponent(0, 0, 1, RitualComponent.DUSK)); - flightRitual.add(new RitualComponent(0, 0, -1, RitualComponent.DUSK)); - flightRitual.add(new RitualComponent(2, 0, 2, RitualComponent.AIR)); - flightRitual.add(new RitualComponent(-2, 0, 2, RitualComponent.AIR)); - flightRitual.add(new RitualComponent(-2, 0, -2, RitualComponent.AIR)); - flightRitual.add(new RitualComponent(2, 0, -2, RitualComponent.AIR)); - flightRitual.add(new RitualComponent(1, 0, 3, RitualComponent.EARTH)); - flightRitual.add(new RitualComponent(0, 0, 3, RitualComponent.EARTH)); - flightRitual.add(new RitualComponent(-1, 0, 3, RitualComponent.EARTH)); - flightRitual.add(new RitualComponent(1, 0, -3, RitualComponent.EARTH)); - flightRitual.add(new RitualComponent(0, 0, -3, RitualComponent.EARTH)); - flightRitual.add(new RitualComponent(-1, 0, -3, RitualComponent.EARTH)); - flightRitual.add(new RitualComponent(3, 0, 1, RitualComponent.EARTH)); - flightRitual.add(new RitualComponent(3, 0, 0, RitualComponent.EARTH)); - flightRitual.add(new RitualComponent(3, 0, -1, RitualComponent.EARTH)); - flightRitual.add(new RitualComponent(-3, 0, 1, RitualComponent.EARTH)); - flightRitual.add(new RitualComponent(-3, 0, 0, RitualComponent.EARTH)); - flightRitual.add(new RitualComponent(-3, 0, -1, RitualComponent.EARTH)); - flightRitual.add(new RitualComponent(-3, 0, -4, RitualComponent.WATER)); - flightRitual.add(new RitualComponent(-4, 0, -3, RitualComponent.WATER)); - flightRitual.add(new RitualComponent(-3, 0, 4, RitualComponent.WATER)); - flightRitual.add(new RitualComponent(4, 0, -3, RitualComponent.WATER)); - flightRitual.add(new RitualComponent(3, 0, -4, RitualComponent.WATER)); - flightRitual.add(new RitualComponent(-4, 0, 3, RitualComponent.WATER)); - flightRitual.add(new RitualComponent(3, 0, 4, RitualComponent.WATER)); - flightRitual.add(new RitualComponent(4, 0, 3, RitualComponent.WATER)); - flightRitual.add(new RitualComponent(-1, 1, 0, RitualComponent.FIRE)); - flightRitual.add(new RitualComponent(1, 1, 0, RitualComponent.FIRE)); - flightRitual.add(new RitualComponent(0, 1, -1, RitualComponent.FIRE)); - flightRitual.add(new RitualComponent(0, 1, 1, RitualComponent.FIRE)); - flightRitual.add(new RitualComponent(-2, 1, 0, RitualComponent.BLANK)); - flightRitual.add(new RitualComponent(2, 1, 0, RitualComponent.BLANK)); - flightRitual.add(new RitualComponent(0, 1, -2, RitualComponent.BLANK)); - flightRitual.add(new RitualComponent(0, 1, 2, RitualComponent.BLANK)); - flightRitual.add(new RitualComponent(-4, 1, 0, RitualComponent.BLANK)); - flightRitual.add(new RitualComponent(4, 1, 0, RitualComponent.BLANK)); - flightRitual.add(new RitualComponent(0, 1, -4, RitualComponent.BLANK)); - flightRitual.add(new RitualComponent(0, 1, 4, RitualComponent.BLANK)); - flightRitual.add(new RitualComponent(-5, 1, 0, RitualComponent.AIR)); - flightRitual.add(new RitualComponent(5, 1, 0, RitualComponent.AIR)); - flightRitual.add(new RitualComponent(0, 1, -5, RitualComponent.AIR)); - flightRitual.add(new RitualComponent(0, 1, 5, RitualComponent.AIR)); - flightRitual.add(new RitualComponent(5, 0, 0, RitualComponent.DUSK)); - flightRitual.add(new RitualComponent(-5, 0, 0, RitualComponent.DUSK)); - flightRitual.add(new RitualComponent(0, 0, 5, RitualComponent.DUSK)); - flightRitual.add(new RitualComponent(0, 0, -5, RitualComponent.DUSK)); - - for (int i = 2; i <= 4; i++) - { - flightRitual.add(new RitualComponent(-i, 2, 0, RitualComponent.EARTH)); - flightRitual.add(new RitualComponent(i, 2, 0, RitualComponent.EARTH)); - flightRitual.add(new RitualComponent(0, 2, -i, RitualComponent.EARTH)); - flightRitual.add(new RitualComponent(0, 2, i, RitualComponent.EARTH)); - } - - flightRitual.add(new RitualComponent(2, 4, 1, RitualComponent.FIRE)); - flightRitual.add(new RitualComponent(1, 4, 2, RitualComponent.FIRE)); - flightRitual.add(new RitualComponent(-2, 4, 1, RitualComponent.FIRE)); - flightRitual.add(new RitualComponent(1, 4, -2, RitualComponent.FIRE)); - flightRitual.add(new RitualComponent(2, 4, -1, RitualComponent.FIRE)); - flightRitual.add(new RitualComponent(-1, 4, 2, RitualComponent.FIRE)); - flightRitual.add(new RitualComponent(-2, 4, -1, RitualComponent.FIRE)); - flightRitual.add(new RitualComponent(-1, 4, -2, RitualComponent.FIRE)); - flightRitual.add(new RitualComponent(2, 4, 2, RitualComponent.AIR)); - flightRitual.add(new RitualComponent(-2, 4, 2, RitualComponent.AIR)); - flightRitual.add(new RitualComponent(2, 4, -2, RitualComponent.AIR)); - flightRitual.add(new RitualComponent(-2, 4, -2, RitualComponent.AIR)); - flightRitual.add(new RitualComponent(-4, 2, -4, RitualComponent.FIRE)); - flightRitual.add(new RitualComponent(4, 2, 4, RitualComponent.FIRE)); - flightRitual.add(new RitualComponent(4, 2, -4, RitualComponent.FIRE)); - flightRitual.add(new RitualComponent(-4, 2, 4, RitualComponent.FIRE)); - - for (int i = -1; i <= 1; i++) - { - flightRitual.add(new RitualComponent(3, 4, i, RitualComponent.EARTH)); - flightRitual.add(new RitualComponent(-3, 4, i, RitualComponent.EARTH)); - flightRitual.add(new RitualComponent(i, 4, 3, RitualComponent.EARTH)); - flightRitual.add(new RitualComponent(i, 4, -3, RitualComponent.EARTH)); - } - return flightRitual; - } -} diff --git a/src-backup/main/java/WayofTime/alchemicalWizardry/common/rituals/RitualEffectFullStomach.java b/src-backup/main/java/WayofTime/alchemicalWizardry/common/rituals/RitualEffectFullStomach.java deleted file mode 100644 index 2753a118..00000000 --- a/src-backup/main/java/WayofTime/alchemicalWizardry/common/rituals/RitualEffectFullStomach.java +++ /dev/null @@ -1,147 +0,0 @@ -package WayofTime.alchemicalWizardry.common.rituals; - -import java.util.ArrayList; -import java.util.List; - -import net.minecraft.entity.player.EntityPlayer; -import net.minecraft.inventory.IInventory; -import net.minecraft.item.ItemFood; -import net.minecraft.item.ItemStack; -import net.minecraft.tileentity.TileEntity; -import net.minecraft.util.FoodStats; -import net.minecraft.world.World; -import WayofTime.alchemicalWizardry.api.rituals.IMasterRitualStone; -import WayofTime.alchemicalWizardry.api.rituals.RitualComponent; -import WayofTime.alchemicalWizardry.api.rituals.RitualEffect; -import WayofTime.alchemicalWizardry.api.soulNetwork.SoulNetworkHandler; -import WayofTime.alchemicalWizardry.common.spell.complex.effect.SpellHelper; - -public class RitualEffectFullStomach extends RitualEffect -{ - - @Override - public void performEffect(IMasterRitualStone ritualStone) - { - String owner = ritualStone.getOwner(); - - int currentEssence = SoulNetworkHandler.getCurrentEssence(owner); - World world = ritualStone.getWorld(); - int x = ritualStone.getXCoord(); - int y = ritualStone.getYCoord(); - int z = ritualStone.getZCoord(); - - if (world.getWorldTime() % 20 != 0) - { - return; - } - - double horizRange = 16; - double vertRange = 16; - - List playerList = SpellHelper.getPlayersInRange(world, x+0.5, y+0.5, z+0.5, horizRange, vertRange); - - if(playerList == null) - { - return; - } - - if (currentEssence < this.getCostPerRefresh() * playerList.size()) - { - SoulNetworkHandler.causeNauseaToPlayer(owner); - } else - { - TileEntity tile = world.getTileEntity(x, y+1, z); - IInventory inventory = null; - if(tile instanceof IInventory) - { - inventory = (IInventory)tile; - }else - { - tile = world.getTileEntity(x, y-1, z); - if(tile instanceof IInventory) - { - inventory = (IInventory)tile; - } - } - - int count = 0; - - if(inventory != null) - { - for(EntityPlayer player : playerList) - { - FoodStats foodStats = player.getFoodStats(); - float satLevel = foodStats.getSaturationLevel(); - - for(int i=0; i getRitualComponentList() - { - ArrayList fullRitual = new ArrayList(); - fullRitual.add(new RitualComponent(0, 0, 3, RitualComponent.FIRE)); - fullRitual.add(new RitualComponent(0, 0, -3, RitualComponent.FIRE)); - fullRitual.add(new RitualComponent(3, 0, 0, RitualComponent.FIRE)); - fullRitual.add(new RitualComponent(-3, 0, 0, RitualComponent.FIRE)); - fullRitual.add(new RitualComponent(1, 0, 1, RitualComponent.AIR)); - fullRitual.add(new RitualComponent(1, 0, -1, RitualComponent.AIR)); - fullRitual.add(new RitualComponent(-1, 0, -1, RitualComponent.AIR)); - fullRitual.add(new RitualComponent(-1, 0, 1, RitualComponent.AIR)); - - fullRitual.add(new RitualComponent(2, 0, 1, RitualComponent.AIR)); - fullRitual.add(new RitualComponent(2, 0, -1, RitualComponent.AIR)); - fullRitual.add(new RitualComponent(-2, 0, -1, RitualComponent.AIR)); - fullRitual.add(new RitualComponent(-2, 0, 1, RitualComponent.AIR)); - fullRitual.add(new RitualComponent(1, 0, 2, RitualComponent.AIR)); - fullRitual.add(new RitualComponent(1, 0, -2, RitualComponent.AIR)); - fullRitual.add(new RitualComponent(-1, 0, -2, RitualComponent.AIR)); - fullRitual.add(new RitualComponent(-1, 0, 2, RitualComponent.AIR)); - - fullRitual.add(new RitualComponent(4, 0, 4, RitualComponent.WATER)); - fullRitual.add(new RitualComponent(4, 0, -4, RitualComponent.WATER)); - fullRitual.add(new RitualComponent(-4, 0, -4, RitualComponent.WATER)); - fullRitual.add(new RitualComponent(-4, 0, 4, RitualComponent.WATER)); - - fullRitual.add(new RitualComponent(4, 0, 3, RitualComponent.EARTH)); - fullRitual.add(new RitualComponent(3, 0, 4, RitualComponent.EARTH)); - fullRitual.add(new RitualComponent(-4, 0, 3, RitualComponent.EARTH)); - fullRitual.add(new RitualComponent(3, 0, -4, RitualComponent.EARTH)); - fullRitual.add(new RitualComponent(-4, 0, -3, RitualComponent.EARTH)); - fullRitual.add(new RitualComponent(-3, 0, -4, RitualComponent.EARTH)); - fullRitual.add(new RitualComponent(4, 0, -3, RitualComponent.EARTH)); - fullRitual.add(new RitualComponent(-3, 0, 4, RitualComponent.EARTH)); - - return fullRitual; - } -} diff --git a/src-backup/main/java/WayofTime/alchemicalWizardry/common/rituals/RitualEffectGrowth.java b/src-backup/main/java/WayofTime/alchemicalWizardry/common/rituals/RitualEffectGrowth.java deleted file mode 100644 index 91d24751..00000000 --- a/src-backup/main/java/WayofTime/alchemicalWizardry/common/rituals/RitualEffectGrowth.java +++ /dev/null @@ -1,148 +0,0 @@ -package WayofTime.alchemicalWizardry.common.rituals; - -import java.util.ArrayList; -import java.util.List; - -import net.minecraft.block.Block; -import net.minecraft.block.BlockFarmland; -import net.minecraft.init.Blocks; -import net.minecraft.server.MinecraftServer; -import net.minecraft.world.World; -import net.minecraftforge.common.IPlantable; -import WayofTime.alchemicalWizardry.api.alchemy.energy.ReagentRegistry; -import WayofTime.alchemicalWizardry.api.rituals.IMasterRitualStone; -import WayofTime.alchemicalWizardry.api.rituals.RitualComponent; -import WayofTime.alchemicalWizardry.api.rituals.RitualEffect; -import WayofTime.alchemicalWizardry.api.soulNetwork.LifeEssenceNetwork; -import WayofTime.alchemicalWizardry.api.soulNetwork.SoulNetworkHandler; -import WayofTime.alchemicalWizardry.common.spell.complex.effect.SpellHelper; - -public class RitualEffectGrowth extends RitualEffect -{ - private static final int aquasalusDrain = 10; - private static final int terraeDrain = 20; - private static final int orbisTerraeDrain = 20; - private static final int virtusDrain = 10; - - @Override - public void performEffect(IMasterRitualStone ritualStone) - { - String owner = ritualStone.getOwner(); - - int currentEssence = SoulNetworkHandler.getCurrentEssence(owner); - World world = ritualStone.getWorld(); - int x = ritualStone.getXCoord(); - int y = ritualStone.getYCoord(); - int z = ritualStone.getZCoord(); - - if (currentEssence < this.getCostPerRefresh()*9) - { - SoulNetworkHandler.causeNauseaToPlayer(owner); - } else - { - boolean hasTerrae = this.canDrainReagent(ritualStone, ReagentRegistry.terraeReagent, terraeDrain, false); - boolean hasOrbisTerrae = this.canDrainReagent(ritualStone, ReagentRegistry.orbisTerraeReagent, orbisTerraeDrain, false); - boolean hasVirtus = this.canDrainReagent(ritualStone, ReagentRegistry.virtusReagent, virtusDrain, false); - - int speed = this.getSpeedForReagents(hasTerrae, hasOrbisTerrae); - if (world.getWorldTime() % speed != 0) - { - return; - } - - if(this.canDrainReagent(ritualStone, ReagentRegistry.aquasalusReagent, aquasalusDrain, false)) - { - int hydrationRange = hasVirtus ? 4 : 1; - for(int i=-hydrationRange; i<=hydrationRange; i++) - { - for(int j=-hydrationRange; j<=hydrationRange; j++) - { - if(this.canDrainReagent(ritualStone, ReagentRegistry.aquasalusReagent, aquasalusDrain, false)) - { - if(SpellHelper.hydrateSoil(world, x + i, y + 1, z + j)) - { - this.canDrainReagent(ritualStone, ReagentRegistry.aquasalusReagent, aquasalusDrain, true); - } - } - } - } - } - - int flag = 0; - - int range = hasVirtus ? 4 : 1; - for (int i = -range; i <= range; i++) - { - for (int j = -range; j <= range; j++) - { - Block block = world.getBlock(x + i, y + 2, z + j); - - if (block instanceof IPlantable) - { - { - SpellHelper.sendIndexedParticleToAllAround(world, x, y, z, 20, world.provider.dimensionId, 3, x, y, z); - block.updateTick(world, x + i, y + 2, z + j, world.rand); - flag++; - } - } - } - } - - if (flag > 0) - { - if(hasTerrae) - this.canDrainReagent(ritualStone, ReagentRegistry.terraeReagent, terraeDrain, true); - if(hasOrbisTerrae) - this.canDrainReagent(ritualStone, ReagentRegistry.orbisTerraeReagent, orbisTerraeDrain, true); - if(hasVirtus) - this.canDrainReagent(ritualStone, ReagentRegistry.virtusReagent, virtusDrain, true); - - SoulNetworkHandler.syphonFromNetwork(owner, this.getCostPerRefresh()*flag); - } - } - } - - @Override - public int getCostPerRefresh() - { - return 20; - } - - @Override - public List getRitualComponentList() - { - ArrayList growthRitual = new ArrayList(); - growthRitual.add(new RitualComponent(1, 0, 0, 1)); - growthRitual.add(new RitualComponent(-1, 0, 0, 1)); - growthRitual.add(new RitualComponent(0, 0, 1, 1)); - growthRitual.add(new RitualComponent(0, 0, -1, 1)); - growthRitual.add(new RitualComponent(-1, 0, 1, 3)); - growthRitual.add(new RitualComponent(1, 0, 1, 3)); - growthRitual.add(new RitualComponent(-1, 0, -1, 3)); - growthRitual.add(new RitualComponent(1, 0, -1, 3)); - return growthRitual; - } - - public int getSpeedForReagents(boolean hasTerrae, boolean hasOrbisTerrae) - { - if(hasOrbisTerrae) - { - if(hasTerrae) - { - return 10; - }else - { - return 15; - } - }else - { - if(hasTerrae) - { - return 20; - }else - { - return 30; - } - } - } -} diff --git a/src-backup/main/java/WayofTime/alchemicalWizardry/common/rituals/RitualEffectHarvest.java b/src-backup/main/java/WayofTime/alchemicalWizardry/common/rituals/RitualEffectHarvest.java deleted file mode 100644 index f85d611e..00000000 --- a/src-backup/main/java/WayofTime/alchemicalWizardry/common/rituals/RitualEffectHarvest.java +++ /dev/null @@ -1,143 +0,0 @@ -package WayofTime.alchemicalWizardry.common.rituals; - -import java.util.ArrayList; -import java.util.List; - -import net.minecraft.block.Block; -import net.minecraft.entity.player.EntityPlayer; -import net.minecraft.init.Blocks; -import net.minecraft.potion.Potion; -import net.minecraft.potion.PotionEffect; -import net.minecraft.server.MinecraftServer; -import net.minecraft.world.World; -import net.minecraftforge.common.IPlantable; -import WayofTime.alchemicalWizardry.api.harvest.HarvestRegistry; -import WayofTime.alchemicalWizardry.api.rituals.IMasterRitualStone; -import WayofTime.alchemicalWizardry.api.rituals.RitualComponent; -import WayofTime.alchemicalWizardry.api.rituals.RitualEffect; -import WayofTime.alchemicalWizardry.api.soulNetwork.LifeEssenceNetwork; -import WayofTime.alchemicalWizardry.api.soulNetwork.SoulNetworkHandler; -import WayofTime.alchemicalWizardry.common.spell.complex.effect.SpellHelper; - -public class RitualEffectHarvest extends RitualEffect -{ - @Override - public void performEffect(IMasterRitualStone ritualStone) - { - String owner = ritualStone.getOwner(); - - int currentEssence = SoulNetworkHandler.getCurrentEssence(owner); - World world = ritualStone.getWorld(); - int x = ritualStone.getXCoord(); - int y = ritualStone.getYCoord(); - int z = ritualStone.getZCoord(); - int maxCount = 100; - - if (currentEssence < this.getCostPerRefresh() * maxCount) - { - EntityPlayer entityOwner = SpellHelper.getPlayerForUsername(owner); - - if (entityOwner == null) - { - return; - } - - entityOwner.addPotionEffect(new PotionEffect(Potion.confusion.id, 80)); - } else - { - if (world.getWorldTime() % 5 != 0) - { - return; - } - - Block block = world.getBlock(x, y-1, z); - int flag = 0; - int range = this.getRadiusForModifierBlock(block); - int vertRange = 4; - - for (int i = -range; i <= range; i++) - { - for (int j = -vertRange; j <= vertRange; j++) - { - for(int k = -range; k<=range; k++) - { - if(HarvestRegistry.harvestBlock(world, x + i, y + j, z + k) && flag < maxCount) - { - flag++; - } - } - } - } - - if (flag > 0) - { - SoulNetworkHandler.syphonFromNetwork(owner, this.getCostPerRefresh() * Math.min(maxCount, flag)); - } - } - } - - @Override - public int getCostPerRefresh() - { - return 20; - } - - public int getRadiusForModifierBlock(Block block) - { - if(block == null) - { - return 4; - } - - if(block == Blocks.diamond_block) - { - return 15; - } - - if(block == Blocks.gold_block) - { - return 10; - } - - if(block == Blocks.iron_block) - { - return 6; - } - - return 4; - } - - @Override - public List getRitualComponentList() - { - ArrayList harvestRitual = new ArrayList(); - - harvestRitual.add(new RitualComponent(1,0,1,RitualComponent.DUSK)); - harvestRitual.add(new RitualComponent(1,0,-1,RitualComponent.DUSK)); - harvestRitual.add(new RitualComponent(-1,0,-1,RitualComponent.DUSK)); - harvestRitual.add(new RitualComponent(-1,0,1,RitualComponent.DUSK)); - harvestRitual.add(new RitualComponent(2,0,0,RitualComponent.EARTH)); - harvestRitual.add(new RitualComponent(-2,0,0,RitualComponent.EARTH)); - harvestRitual.add(new RitualComponent(0,0,2,RitualComponent.EARTH)); - harvestRitual.add(new RitualComponent(0,0,-2,RitualComponent.EARTH)); - harvestRitual.add(new RitualComponent(3,0,1,RitualComponent.EARTH)); - harvestRitual.add(new RitualComponent(3,0,-1,RitualComponent.EARTH)); - harvestRitual.add(new RitualComponent(-3,0,1,RitualComponent.EARTH)); - harvestRitual.add(new RitualComponent(-3,0,-1,RitualComponent.EARTH)); - harvestRitual.add(new RitualComponent(1,0,3,RitualComponent.EARTH)); - harvestRitual.add(new RitualComponent(-1,0,3,RitualComponent.EARTH)); - harvestRitual.add(new RitualComponent(1,0,-3,RitualComponent.EARTH)); - harvestRitual.add(new RitualComponent(-1,0,-3,RitualComponent.EARTH)); - harvestRitual.add(new RitualComponent(2,0,3,RitualComponent.WATER)); - harvestRitual.add(new RitualComponent(3,0,2,RitualComponent.WATER)); - harvestRitual.add(new RitualComponent(2,0,-3,RitualComponent.WATER)); - harvestRitual.add(new RitualComponent(-3,0,2,RitualComponent.WATER)); - harvestRitual.add(new RitualComponent(-2,0,3,RitualComponent.WATER)); - harvestRitual.add(new RitualComponent(3,0,-2,RitualComponent.WATER)); - harvestRitual.add(new RitualComponent(-2,0,-3,RitualComponent.WATER)); - harvestRitual.add(new RitualComponent(-3,0,-2,RitualComponent.WATER)); - - - return harvestRitual; - } -} diff --git a/src-backup/main/java/WayofTime/alchemicalWizardry/common/rituals/RitualEffectHealing.java b/src-backup/main/java/WayofTime/alchemicalWizardry/common/rituals/RitualEffectHealing.java deleted file mode 100644 index a0c86f27..00000000 --- a/src-backup/main/java/WayofTime/alchemicalWizardry/common/rituals/RitualEffectHealing.java +++ /dev/null @@ -1,185 +0,0 @@ -package WayofTime.alchemicalWizardry.common.rituals; - -import java.util.ArrayList; -import java.util.Iterator; -import java.util.List; - -import net.minecraft.entity.EntityLivingBase; -import net.minecraft.entity.player.EntityPlayer; -import net.minecraft.potion.Potion; -import net.minecraft.potion.PotionEffect; -import net.minecraft.server.MinecraftServer; -import net.minecraft.util.AxisAlignedBB; -import net.minecraft.world.World; -import WayofTime.alchemicalWizardry.api.alchemy.energy.ReagentRegistry; -import WayofTime.alchemicalWizardry.api.rituals.IMasterRitualStone; -import WayofTime.alchemicalWizardry.api.rituals.RitualComponent; -import WayofTime.alchemicalWizardry.api.rituals.RitualEffect; -import WayofTime.alchemicalWizardry.api.soulNetwork.LifeEssenceNetwork; -import WayofTime.alchemicalWizardry.api.soulNetwork.SoulNetworkHandler; -import WayofTime.alchemicalWizardry.common.spell.complex.effect.SpellHelper; - -public class RitualEffectHealing extends RitualEffect -{ - public static final int reductusDrain = 10; - public static final int virtusDrain = 10; - public static final int praesidiumDrain = 2; - - @Override - public void performEffect(IMasterRitualStone ritualStone) - { - String owner = ritualStone.getOwner(); - - int currentEssence = SoulNetworkHandler.getCurrentEssence(owner); - World world = ritualStone.getWorld(); - int x = ritualStone.getXCoord(); - int y = ritualStone.getYCoord(); - int z = ritualStone.getZCoord(); - - int timeDelay = 50; - - if (world.getWorldTime() % timeDelay != 0) - { - return; - } - - boolean hasPraesidium = this.canDrainReagent(ritualStone, ReagentRegistry.praesidiumReagent, praesidiumDrain, false); - - int range = 15 * (hasPraesidium ? 3 : 1); - int vertRange = 15 * (hasPraesidium ? 3 : 1); - - List list = SpellHelper.getLivingEntitiesInRange(world, x+0.5, y+0.5, z+0.5, range, vertRange); - int entityCount = 0; - boolean flag = false; - - for(EntityLivingBase livingEntity : list) - { - if (livingEntity instanceof EntityPlayer) - { - entityCount += 10; - } else - { - entityCount++; - } - } - - boolean hasVirtus = this.canDrainReagent(ritualStone, ReagentRegistry.virtusReagent, virtusDrain, false); - - int cost = this.getCostPerRefresh() * (hasVirtus ? 3 : 1); - int potency = hasVirtus ? 1 : 0; - - if (currentEssence < cost * entityCount) - { - SoulNetworkHandler.causeNauseaToPlayer(owner); - } else - { - entityCount = 0; - - boolean hasReductus = this.canDrainReagent(ritualStone, ReagentRegistry.reductusReagent, reductusDrain, false); - - for(EntityLivingBase livingEntity : list) - { - hasReductus = hasReductus && this.canDrainReagent(ritualStone, ReagentRegistry.reductusReagent, reductusDrain, false); - if(hasReductus && !(livingEntity instanceof EntityPlayer)) - { - continue; - } - - if (livingEntity.getHealth() + 0.1f < livingEntity.getMaxHealth()) - { - PotionEffect effect = livingEntity.getActivePotionEffect(Potion.regeneration); - if(effect == null || (effect != null && effect.getAmplifier() <= potency && effect.getDuration() <= timeDelay)) - { - if(!hasVirtus || (this.canDrainReagent(ritualStone, ReagentRegistry.virtusReagent, virtusDrain, false))) - { - livingEntity.addPotionEffect(new PotionEffect(Potion.regeneration.id, timeDelay + 2, potency)); - if(hasReductus) - { - this.canDrainReagent(ritualStone, ReagentRegistry.reductusReagent, reductusDrain, true); - } - if(hasVirtus) - { - this.canDrainReagent(ritualStone, ReagentRegistry.virtusReagent, virtusDrain, true); - } - - if (livingEntity instanceof EntityPlayer) - { - entityCount += 10; - } else - { - entityCount++; - } - } - } - } - } - - if(entityCount > 0) - { - if(hasPraesidium) - { - this.canDrainReagent(ritualStone, ReagentRegistry.praesidiumReagent, praesidiumDrain, true); - } - SoulNetworkHandler.syphonFromNetwork(owner, cost * entityCount); - } - } - } - - @Override - public int getCostPerRefresh() - { - // TODO Auto-generated method stub - return 20; - } - - @Override - public List getRitualComponentList() - { - ArrayList healingRitual = new ArrayList(); - healingRitual.add(new RitualComponent(4, 0, 0, RitualComponent.AIR)); - healingRitual.add(new RitualComponent(5, 0, -1, RitualComponent.AIR)); - healingRitual.add(new RitualComponent(5, 0, 1, RitualComponent.AIR)); - healingRitual.add(new RitualComponent(-4, 0, 0, RitualComponent.AIR)); - healingRitual.add(new RitualComponent(-5, 0, -1, RitualComponent.AIR)); - healingRitual.add(new RitualComponent(-5, 0, 1, RitualComponent.AIR)); - healingRitual.add(new RitualComponent(0, 0, 4, RitualComponent.FIRE)); - healingRitual.add(new RitualComponent(-1, 0, 5, RitualComponent.FIRE)); - healingRitual.add(new RitualComponent(1, 0, 5, RitualComponent.FIRE)); - healingRitual.add(new RitualComponent(0, 0, -4, RitualComponent.FIRE)); - healingRitual.add(new RitualComponent(-1, 0, -5, RitualComponent.FIRE)); - healingRitual.add(new RitualComponent(1, 0, -5, RitualComponent.FIRE)); - healingRitual.add(new RitualComponent(3, 0, 5, RitualComponent.WATER)); - healingRitual.add(new RitualComponent(5, 0, 3, RitualComponent.WATER)); - healingRitual.add(new RitualComponent(3, 0, -5, RitualComponent.WATER)); - healingRitual.add(new RitualComponent(5, 0, -3, RitualComponent.WATER)); - healingRitual.add(new RitualComponent(-3, 0, 5, RitualComponent.WATER)); - healingRitual.add(new RitualComponent(-5, 0, 3, RitualComponent.WATER)); - healingRitual.add(new RitualComponent(-3, 0, -5, RitualComponent.WATER)); - healingRitual.add(new RitualComponent(-5, 0, -3, RitualComponent.WATER)); - healingRitual.add(new RitualComponent(-3, 0, -3, RitualComponent.DUSK)); - healingRitual.add(new RitualComponent(-3, 0, 3, RitualComponent.DUSK)); - healingRitual.add(new RitualComponent(3, 0, -3, RitualComponent.DUSK)); - healingRitual.add(new RitualComponent(3, 0, 3, RitualComponent.DUSK)); - healingRitual.add(new RitualComponent(4, 0, 5, RitualComponent.EARTH)); - healingRitual.add(new RitualComponent(4, -1, 5, RitualComponent.EARTH)); - healingRitual.add(new RitualComponent(5, 0, 4, RitualComponent.EARTH)); - healingRitual.add(new RitualComponent(5, -1, 4, RitualComponent.EARTH)); - healingRitual.add(new RitualComponent(5, 0, 5, RitualComponent.EARTH)); - healingRitual.add(new RitualComponent(4, 0, -5, RitualComponent.EARTH)); - healingRitual.add(new RitualComponent(4, -1, -5, RitualComponent.EARTH)); - healingRitual.add(new RitualComponent(5, 0, -4, RitualComponent.EARTH)); - healingRitual.add(new RitualComponent(5, -1, -4, RitualComponent.EARTH)); - healingRitual.add(new RitualComponent(5, 0, -5, RitualComponent.EARTH)); - healingRitual.add(new RitualComponent(-4, 0, 5, RitualComponent.EARTH)); - healingRitual.add(new RitualComponent(-4, -1, 5, RitualComponent.EARTH)); - healingRitual.add(new RitualComponent(-5, 0, 4, RitualComponent.EARTH)); - healingRitual.add(new RitualComponent(-5, -1, 4, RitualComponent.EARTH)); - healingRitual.add(new RitualComponent(-5, 0, 5, RitualComponent.EARTH)); - healingRitual.add(new RitualComponent(-4, 0, -5, RitualComponent.EARTH)); - healingRitual.add(new RitualComponent(-4, -1, -5, RitualComponent.EARTH)); - healingRitual.add(new RitualComponent(-5, 0, -4, RitualComponent.EARTH)); - healingRitual.add(new RitualComponent(-5, -1, -4, RitualComponent.EARTH)); - healingRitual.add(new RitualComponent(-5, 0, -5, RitualComponent.EARTH)); - return healingRitual; - } -} diff --git a/src-backup/main/java/WayofTime/alchemicalWizardry/common/rituals/RitualEffectInterdiction.java b/src-backup/main/java/WayofTime/alchemicalWizardry/common/rituals/RitualEffectInterdiction.java deleted file mode 100644 index 12fc1b63..00000000 --- a/src-backup/main/java/WayofTime/alchemicalWizardry/common/rituals/RitualEffectInterdiction.java +++ /dev/null @@ -1,149 +0,0 @@ -package WayofTime.alchemicalWizardry.common.rituals; - -import java.util.ArrayList; -import java.util.Iterator; -import java.util.List; - -import net.minecraft.entity.EntityLivingBase; -import net.minecraft.entity.item.EntityItem; -import net.minecraft.entity.player.EntityPlayer; -import net.minecraft.potion.Potion; -import net.minecraft.potion.PotionEffect; -import net.minecraft.server.MinecraftServer; -import net.minecraft.util.AxisAlignedBB; -import net.minecraft.world.World; -import WayofTime.alchemicalWizardry.api.alchemy.energy.ReagentRegistry; -import WayofTime.alchemicalWizardry.api.rituals.IMasterRitualStone; -import WayofTime.alchemicalWizardry.api.rituals.RitualComponent; -import WayofTime.alchemicalWizardry.api.rituals.RitualEffect; -import WayofTime.alchemicalWizardry.api.soulNetwork.LifeEssenceNetwork; -import WayofTime.alchemicalWizardry.api.soulNetwork.SoulNetworkHandler; -import WayofTime.alchemicalWizardry.common.spell.complex.effect.SpellHelper; - -public class RitualEffectInterdiction extends RitualEffect -{ - public static final int aetherDrain = 1; - public static final int magicalesDrain = 1; - - @Override - public void performEffect(IMasterRitualStone ritualStone) - { - String owner = ritualStone.getOwner(); - - int currentEssence = SoulNetworkHandler.getCurrentEssence(owner); - World world = ritualStone.getWorld(); - int x = ritualStone.getXCoord(); - int y = ritualStone.getYCoord(); - int z = ritualStone.getZCoord(); - - if (currentEssence < this.getCostPerRefresh()) - { - SoulNetworkHandler.causeNauseaToPlayer(owner); - } else - { - int d0 = 5; - - List list = SpellHelper.getLivingEntitiesInRange(world, x+0.5, y+0.5, z+0.5, d0, d0); - boolean flag = false; - - boolean hasOffensa = this.canDrainReagent(ritualStone, ReagentRegistry.magicalesReagent, magicalesDrain, false); - boolean playerFlag = false; - - for(EntityLivingBase entityLiving : list) - { - if (!((!hasOffensa && entityLiving instanceof EntityPlayer) && (SpellHelper.getUsername((EntityPlayer)entityLiving).equals(owner)))) - { - double xDif = entityLiving.posX - x; - double yDif = entityLiving.posY - (y + 1); - double zDif = entityLiving.posZ - z; - entityLiving.motionX = 0.1 * xDif; - entityLiving.motionY = 0.1 * yDif; - entityLiving.motionZ = 0.1 * zDif; - - if(hasOffensa && entityLiving instanceof EntityPlayer) - { - SpellHelper.setPlayerSpeedFromServer((EntityPlayer)entityLiving, 0.1 * xDif, 0.1 * yDif, 0.1 * zDif); - playerFlag = true; - } - - entityLiving.fallDistance = 0; - - - flag = true; - - - //entityLiving.addPotionEffect(new PotionEffect(Potion.confusion.id, 80)); - } - } - - if(playerFlag) - { - this.canDrainReagent(ritualStone, ReagentRegistry.magicalesReagent, magicalesDrain, true); - } - - boolean hasAether = this.canDrainReagent(ritualStone, ReagentRegistry.aetherReagent, aetherDrain, false); - - if(hasAether) - { - int aetherDrainRate = 10; - - int horizontalRadius = 5; - int verticalRadius = 5; - List itemList = world.getEntitiesWithinAABB(EntityItem.class, AxisAlignedBB.getBoundingBox(x, y, z, x + 1, y + 1, z + 1).expand(horizontalRadius, verticalRadius, horizontalRadius)); - - if(itemList != null) - { - boolean itemFlag = false; - - for(EntityItem entity : itemList) - { - double xDif = entity.posX - x; - double yDif = entity.posY - (y + 1); - double zDif = entity.posZ - z; - entity.motionX = 0.1 * xDif; - entity.motionY = 0.1 * yDif; - entity.motionZ = 0.1 * zDif; - - itemFlag = true; - } - - if(itemFlag) - { - flag = true; - if(world.getWorldTime() % aetherDrainRate == 0) - { - this.canDrainReagent(ritualStone, ReagentRegistry.aetherReagent, aetherDrain, true); - } - } - } - } - - - if (world.getWorldTime() % 2 == 0 && flag) - { - SoulNetworkHandler.syphonFromNetwork(owner, getCostPerRefresh()); - } - } - } - - @Override - public int getCostPerRefresh() - { - return 1; - } - - @Override - public List getRitualComponentList() - { - ArrayList interdictionRitual = new ArrayList(); - interdictionRitual.add(new RitualComponent(1, 0, 0, 4)); - interdictionRitual.add(new RitualComponent(-1, 0, 0, 4)); - interdictionRitual.add(new RitualComponent(0, 0, 1, 4)); - interdictionRitual.add(new RitualComponent(0, 0, -1, 4)); - interdictionRitual.add(new RitualComponent(-1, 0, 1, 4)); - interdictionRitual.add(new RitualComponent(1, 0, 1, 4)); - interdictionRitual.add(new RitualComponent(-1, 0, -1, 4)); - interdictionRitual.add(new RitualComponent(1, 0, -1, 4)); - return interdictionRitual; - } -} diff --git a/src-backup/main/java/WayofTime/alchemicalWizardry/common/rituals/RitualEffectItemSuction.java b/src-backup/main/java/WayofTime/alchemicalWizardry/common/rituals/RitualEffectItemSuction.java deleted file mode 100644 index f4800145..00000000 --- a/src-backup/main/java/WayofTime/alchemicalWizardry/common/rituals/RitualEffectItemSuction.java +++ /dev/null @@ -1,178 +0,0 @@ -package WayofTime.alchemicalWizardry.common.rituals; - -import java.util.ArrayList; -import java.util.List; - -import net.minecraft.block.Block; -import net.minecraft.block.BlockFurnace; -import net.minecraft.entity.item.EntityItem; -import net.minecraft.entity.player.EntityPlayer; -import net.minecraft.init.Blocks; -import net.minecraft.inventory.IInventory; -import net.minecraft.item.ItemStack; -import net.minecraft.potion.Potion; -import net.minecraft.potion.PotionEffect; -import net.minecraft.server.MinecraftServer; -import net.minecraft.tileentity.TileEntity; -import net.minecraft.world.World; -import WayofTime.alchemicalWizardry.ModBlocks; -import WayofTime.alchemicalWizardry.api.alchemy.energy.ReagentRegistry; -import WayofTime.alchemicalWizardry.api.rituals.IMasterRitualStone; -import WayofTime.alchemicalWizardry.api.rituals.RitualComponent; -import WayofTime.alchemicalWizardry.api.rituals.RitualEffect; -import WayofTime.alchemicalWizardry.api.soulNetwork.LifeEssenceNetwork; -import WayofTime.alchemicalWizardry.api.soulNetwork.SoulNetworkHandler; -import WayofTime.alchemicalWizardry.common.spell.complex.effect.SpellHelper; - -public class RitualEffectItemSuction extends RitualEffect -{ - public static final int reductusDrain = 1; - - public static final int timeDelayMin = 60; - - @Override - public void performEffect(IMasterRitualStone ritualStone) - { - String owner = ritualStone.getOwner(); - - int currentEssence = SoulNetworkHandler.getCurrentEssence(owner); - World world = ritualStone.getWorld(); - - int x = ritualStone.getXCoord(); - int y = ritualStone.getYCoord(); - int z = ritualStone.getZCoord(); - TileEntity tile = world.getTileEntity(x, y + 1, z); - IInventory tileEntity; - - if (tile instanceof IInventory) - { - tileEntity = (IInventory) tile; - } else - { - return; - } - - if (tileEntity.getSizeInventory() <= 0) - { - return; - } - - if (currentEssence < this.getCostPerRefresh()*100) - { - SoulNetworkHandler.causeNauseaToPlayer(owner); - } else - { - List itemDropList = SpellHelper.getItemsInRange(world, x+0.5f, y+0.5f, z+0.5f, 10, 10); - - boolean hasReductus = this.canDrainReagent(ritualStone, ReagentRegistry.reductusReagent, reductusDrain, false); - - int count = 0; - - if (itemDropList != null) - { - int invSize = tileEntity.getSizeInventory(); - - for (EntityItem itemEntity : itemDropList) - { - hasReductus = hasReductus && this.canDrainReagent(ritualStone, ReagentRegistry.reductusReagent, reductusDrain, false); - if(hasReductus && itemEntity.age < this.timeDelayMin) - { - continue; - } - ItemStack item = itemEntity.getEntityItem(); - ItemStack copyStack = itemEntity.getEntityItem().copy(); - - int pastAmount = copyStack.stackSize; - -// for (int n = 0; n < invSize; n++) -// { -// if (tileEntity.isItemValidForSlot(n, copyStack) && copyStack.stackSize != 0) -// { -// ItemStack itemStack = tileEntity.getStackInSlot(n); -// -// if (itemStack == null) -// { -// tileEntity.setInventorySlotContents(n, item); -// copyStack.stackSize = 0; -// } else -// { -// if (itemStack.getItem().equals(copyStack.getItem()) && itemStack.getItemDamage() == copyStack.getItemDamage()) -// { -// int itemSize = itemStack.stackSize; -// int copySize = copyStack.stackSize; -// int maxSize = itemStack.getMaxStackSize(); -// -// if (copySize + itemSize < maxSize) -// { -// copyStack.stackSize = 0; -// itemStack.stackSize = itemSize + copySize; -// tileEntity.setInventorySlotContents(n, itemStack); -// } else -// { -// copyStack.stackSize = itemSize + copySize - maxSize; -// itemStack.stackSize = maxSize; -// } -// } -// } -// } -// } - - //count++; - - ItemStack newStack = SpellHelper.insertStackIntoInventory(copyStack, tileEntity); - - if(newStack != null && newStack.stackSize < pastAmount) - { - count++; - if(newStack.stackSize<=0) - { - itemEntity.setDead(); - itemEntity.getEntityItem().stackSize = newStack.stackSize; - } - - if (newStack.stackSize > 0) - { - itemEntity.getEntityItem().stackSize = newStack.stackSize; - } - if(hasReductus) - { - BlockFurnace d; - this.canDrainReagent(ritualStone, ReagentRegistry.reductusReagent, reductusDrain, true); - } - } - } - } - - if(count>0) - { - SoulNetworkHandler.syphonFromNetwork(owner, this.getCostPerRefresh()*Math.min(count, 100)); - return; - } - } - } - - @Override - public int getCostPerRefresh() - { - return 5; - } - - @Override - public List getRitualComponentList() - { - ArrayList suctionRitual = new ArrayList(); - suctionRitual.add(new RitualComponent(2, 0, 0, RitualComponent.AIR)); - suctionRitual.add(new RitualComponent(-2, 0, 0, RitualComponent.AIR)); - suctionRitual.add(new RitualComponent(0, 0, 2, RitualComponent.AIR)); - suctionRitual.add(new RitualComponent(0, 0, -2, RitualComponent.AIR)); - suctionRitual.add(new RitualComponent(1, 1, 1, RitualComponent.AIR)); - suctionRitual.add(new RitualComponent(1, 1, -1, RitualComponent.AIR)); - suctionRitual.add(new RitualComponent(-1, 1, 1, RitualComponent.AIR)); - suctionRitual.add(new RitualComponent(-1, 1, -1, RitualComponent.AIR)); - suctionRitual.add(new RitualComponent(1, -1, 0, RitualComponent.AIR)); - suctionRitual.add(new RitualComponent(-1, -1, 0, RitualComponent.AIR)); - suctionRitual.add(new RitualComponent(0, -1, 1, RitualComponent.AIR)); - suctionRitual.add(new RitualComponent(0, -1, -1, RitualComponent.AIR)); - return suctionRitual; - } -} diff --git a/src-backup/main/java/WayofTime/alchemicalWizardry/common/rituals/RitualEffectJumping.java b/src-backup/main/java/WayofTime/alchemicalWizardry/common/rituals/RitualEffectJumping.java deleted file mode 100644 index 69ffe1a0..00000000 --- a/src-backup/main/java/WayofTime/alchemicalWizardry/common/rituals/RitualEffectJumping.java +++ /dev/null @@ -1,115 +0,0 @@ -package WayofTime.alchemicalWizardry.common.rituals; - -import java.util.ArrayList; -import java.util.List; - -import net.minecraft.entity.EntityLivingBase; -import net.minecraft.entity.player.EntityPlayer; -import net.minecraft.potion.PotionEffect; -import net.minecraft.server.MinecraftServer; -import net.minecraft.world.World; -import WayofTime.alchemicalWizardry.AlchemicalWizardry; -import WayofTime.alchemicalWizardry.api.alchemy.energy.ReagentRegistry; -import WayofTime.alchemicalWizardry.api.rituals.IMasterRitualStone; -import WayofTime.alchemicalWizardry.api.rituals.RitualComponent; -import WayofTime.alchemicalWizardry.api.rituals.RitualEffect; -import WayofTime.alchemicalWizardry.api.soulNetwork.LifeEssenceNetwork; -import WayofTime.alchemicalWizardry.api.soulNetwork.SoulNetworkHandler; -import WayofTime.alchemicalWizardry.common.spell.complex.effect.SpellHelper; - -public class RitualEffectJumping extends RitualEffect -{ - public static final int aetherDrain = 10; - public static final int terraeDrain = 10; - - @Override - public void performEffect(IMasterRitualStone ritualStone) - { - String owner = ritualStone.getOwner(); - - int currentEssence = SoulNetworkHandler.getCurrentEssence(owner); - World world = ritualStone.getWorld(); - int x = ritualStone.getXCoord(); - int y = ritualStone.getYCoord(); - int z = ritualStone.getZCoord(); - - double range = 0.5; - List livingList = SpellHelper.getLivingEntitiesInRange(world, x+0.5, y+1.5, z+0.5, range, range); - - if (currentEssence < this.getCostPerRefresh() * livingList.size()) - { - SoulNetworkHandler.causeNauseaToPlayer(owner); - } else - { - int flag = 0; - - boolean hasAether = this.canDrainReagent(ritualStone, ReagentRegistry.aetherReagent, aetherDrain, false); - boolean hasTerrae = this.canDrainReagent(ritualStone, ReagentRegistry.terraeReagent, terraeDrain, false); - - for(EntityLivingBase livingEntity : livingList) - { - if(livingEntity.isSneaking()) - { - continue; - } - - hasAether = hasAether && this.canDrainReagent(ritualStone, ReagentRegistry.aetherReagent, aetherDrain, false); - hasTerrae = hasTerrae && this.canDrainReagent(ritualStone, ReagentRegistry.terraeReagent, terraeDrain, false); - - double motionY = 1.5 * (hasAether ? 2 : 1); - - if (livingEntity instanceof EntityPlayer) - { - SpellHelper.setPlayerSpeedFromServer((EntityPlayer)livingEntity, livingEntity.motionX, motionY, livingEntity.motionZ); - livingEntity.motionY = motionY; - livingEntity.fallDistance = 0; - flag++; - } else - { - livingEntity.motionY = motionY; - livingEntity.fallDistance = 0; - flag++; - } - - if(hasAether) - { - this.canDrainReagent(ritualStone, ReagentRegistry.aetherReagent, aetherDrain, true); - } - if(hasTerrae) - { - if(!livingEntity.isPotionActive(AlchemicalWizardry.customPotionFeatherFall)) - { - livingEntity.addPotionEffect(new PotionEffect(AlchemicalWizardry.customPotionFeatherFall.id, 5 * 20, 0)); - this.canDrainReagent(ritualStone, ReagentRegistry.terraeReagent, terraeDrain, true); - } - } - } - - if (flag > 0) - { - SoulNetworkHandler.syphonFromNetwork(owner, this.getCostPerRefresh()*flag); - } - } - } - - @Override - public int getCostPerRefresh() - { - return 5; - } - - @Override - public List getRitualComponentList() - { - ArrayList jumpingRitual = new ArrayList(); - - for (int i = -1; i <= 1; i++) - { - jumpingRitual.add(new RitualComponent(1, i, 1, RitualComponent.AIR)); - jumpingRitual.add(new RitualComponent(-1, i, 1, RitualComponent.AIR)); - jumpingRitual.add(new RitualComponent(-1, i, -1, RitualComponent.AIR)); - jumpingRitual.add(new RitualComponent(1, i, -1, RitualComponent.AIR)); - } - return jumpingRitual; - } -} diff --git a/src-backup/main/java/WayofTime/alchemicalWizardry/common/rituals/RitualEffectLava.java b/src-backup/main/java/WayofTime/alchemicalWizardry/common/rituals/RitualEffectLava.java deleted file mode 100644 index 96576e8b..00000000 --- a/src-backup/main/java/WayofTime/alchemicalWizardry/common/rituals/RitualEffectLava.java +++ /dev/null @@ -1,141 +0,0 @@ -package WayofTime.alchemicalWizardry.common.rituals; - -import java.util.ArrayList; -import java.util.List; - -import net.minecraft.block.Block; -import net.minecraft.entity.EntityLivingBase; -import net.minecraft.entity.player.EntityPlayer; -import net.minecraft.init.Blocks; -import net.minecraft.potion.PotionEffect; -import net.minecraft.server.MinecraftServer; -import net.minecraft.tileentity.TileEntity; -import net.minecraft.world.World; -import net.minecraftforge.common.util.ForgeDirection; -import net.minecraftforge.fluids.FluidRegistry; -import net.minecraftforge.fluids.FluidStack; -import net.minecraftforge.fluids.IFluidHandler; -import WayofTime.alchemicalWizardry.AlchemicalWizardry; -import WayofTime.alchemicalWizardry.api.alchemy.energy.ReagentRegistry; -import WayofTime.alchemicalWizardry.api.rituals.IMasterRitualStone; -import WayofTime.alchemicalWizardry.api.rituals.RitualComponent; -import WayofTime.alchemicalWizardry.api.rituals.RitualEffect; -import WayofTime.alchemicalWizardry.api.soulNetwork.LifeEssenceNetwork; -import WayofTime.alchemicalWizardry.api.soulNetwork.SoulNetworkHandler; -import WayofTime.alchemicalWizardry.common.block.BlockSpectralContainer; -import WayofTime.alchemicalWizardry.common.spell.complex.effect.SpellHelper; - -public class RitualEffectLava extends RitualEffect -{ - public static final int sanctusDrain = 20; - public static final int offensaDrain = 50; - public static final int reductusDrain = 5; - - public static final int fireFuseCost = 1000; - - @Override - public void performEffect(IMasterRitualStone ritualStone) - { - String owner = ritualStone.getOwner(); - - int currentEssence = SoulNetworkHandler.getCurrentEssence(owner); - World world = ritualStone.getWorld(); - int x = ritualStone.getXCoord(); - int y = ritualStone.getYCoord(); - int z = ritualStone.getZCoord(); - - - if(this.canDrainReagent(ritualStone, ReagentRegistry.offensaReagent, offensaDrain, false) && SoulNetworkHandler.canSyphonFromOnlyNetwork(owner, fireFuseCost)) - { - boolean hasReductus = this.canDrainReagent(ritualStone, ReagentRegistry.reductusReagent, reductusDrain, false); - boolean drainReductus = world.getWorldTime() % 100 == 0; - - int range = 5; - List entityList = SpellHelper.getLivingEntitiesInRange(world, x + 0.5, y + 0.5, z + 0.5, range, range); - EntityPlayer player = SpellHelper.getPlayerForUsername(owner); - - for(EntityLivingBase entity : entityList) - { - if(entity != player && this.canDrainReagent(ritualStone, ReagentRegistry.offensaReagent, offensaDrain, false) && SoulNetworkHandler.canSyphonFromOnlyNetwork(owner, fireFuseCost) && !entity.isPotionActive(AlchemicalWizardry.customPotionFireFuse)) - { - if(hasReductus && this.canDrainReagent(ritualStone, ReagentRegistry.reductusReagent, reductusDrain, false)) - { - if(entity instanceof EntityPlayer) - { - if(drainReductus) - { - this.canDrainReagent(ritualStone, ReagentRegistry.reductusReagent, reductusDrain, true); - } - - continue; - } - } - - entity.addPotionEffect(new PotionEffect(AlchemicalWizardry.customPotionFireFuse.id,100,0)); - this.canDrainReagent(ritualStone, ReagentRegistry.offensaReagent, offensaDrain, true); - SoulNetworkHandler.syphonFromNetwork(owner, fireFuseCost); - } - } - } - - Block block = world.getBlock(x, y + 1, z); - - if (world.isAirBlock(x, y + 1, z) && !(block instanceof BlockSpectralContainer)) - { - if (currentEssence < this.getCostPerRefresh()) - { - SoulNetworkHandler.causeNauseaToPlayer(owner); - } else - { - for (int i = 0; i < 10; i++) - { - SpellHelper.sendIndexedParticleToAllAround(world, x, y, z, 20, world.provider.dimensionId, 3, x, y, z); - } - - world.setBlock(x, y + 1, z, Blocks.lava, 0, 3); - SoulNetworkHandler.syphonFromNetwork(owner, this.getCostPerRefresh()); - } - }else - { - boolean hasSanctus = this.canDrainReagent(ritualStone, ReagentRegistry.sanctusReagent, sanctusDrain, false); - if(!hasSanctus) - { - return; - } - TileEntity tile = world.getTileEntity(x, y + 1, z); - if(tile instanceof IFluidHandler) - { - int amount = ((IFluidHandler) tile).fill(ForgeDirection.DOWN, new FluidStack(FluidRegistry.LAVA, 1000), false); - if(amount >= 1000) - { - ((IFluidHandler) tile).fill(ForgeDirection.DOWN, new FluidStack(FluidRegistry.LAVA, 1000), true); - - this.canDrainReagent(ritualStone, ReagentRegistry.sanctusReagent, sanctusDrain, true); - - SoulNetworkHandler.syphonFromNetwork(owner, this.getCostPerRefresh()); - } - } - } - - - - } - - @Override - public int getCostPerRefresh() - { - // TODO Auto-generated method stub - return 500; - } - - @Override - public List getRitualComponentList() - { - ArrayList lavaRitual = new ArrayList(); - lavaRitual.add(new RitualComponent(1, 0, 0, 2)); - lavaRitual.add(new RitualComponent(-1, 0, 0, 2)); - lavaRitual.add(new RitualComponent(0, 0, 1, 2)); - lavaRitual.add(new RitualComponent(0, 0, -1, 2)); - return lavaRitual; - } -} diff --git a/src-backup/main/java/WayofTime/alchemicalWizardry/common/rituals/RitualEffectLeap.java b/src-backup/main/java/WayofTime/alchemicalWizardry/common/rituals/RitualEffectLeap.java deleted file mode 100644 index cde539ff..00000000 --- a/src-backup/main/java/WayofTime/alchemicalWizardry/common/rituals/RitualEffectLeap.java +++ /dev/null @@ -1,194 +0,0 @@ -package WayofTime.alchemicalWizardry.common.rituals; - -import java.util.ArrayList; -import java.util.List; - -import net.minecraft.entity.EntityAgeable; -import net.minecraft.entity.EntityLivingBase; -import net.minecraft.entity.player.EntityPlayer; -import net.minecraft.potion.PotionEffect; -import net.minecraft.server.MinecraftServer; -import net.minecraft.world.World; -import WayofTime.alchemicalWizardry.AlchemicalWizardry; -import WayofTime.alchemicalWizardry.api.alchemy.energy.ReagentRegistry; -import WayofTime.alchemicalWizardry.api.rituals.IMasterRitualStone; -import WayofTime.alchemicalWizardry.api.rituals.RitualComponent; -import WayofTime.alchemicalWizardry.api.rituals.RitualEffect; -import WayofTime.alchemicalWizardry.api.soulNetwork.LifeEssenceNetwork; -import WayofTime.alchemicalWizardry.api.soulNetwork.SoulNetworkHandler; -import WayofTime.alchemicalWizardry.common.spell.complex.effect.SpellHelper; - -public class RitualEffectLeap extends RitualEffect -{ - public static final int aetherDrain = 10; - public static final int terraeDrain = 10; - public static final int reductusDrain = 10; - public static final int tenebraeDrain = 10; - public static final int sanctusDrain = 10; - - @Override - public void performEffect(IMasterRitualStone ritualStone) - { - String owner = ritualStone.getOwner(); - - int currentEssence = SoulNetworkHandler.getCurrentEssence(owner); - World world = ritualStone.getWorld(); - int x = ritualStone.getXCoord(); - int y = ritualStone.getYCoord(); - int z = ritualStone.getZCoord(); - - double range = 2.0; - - List livingList = SpellHelper.getLivingEntitiesInRange(world, x+0.5, y+0.5, z+0.5, range, range); - - if(livingList == null){return;} - - if (currentEssence < this.getCostPerRefresh() * livingList.size()) - { - SoulNetworkHandler.causeNauseaToPlayer(owner); - } else - { - boolean hasAether = this.canDrainReagent(ritualStone, ReagentRegistry.aetherReagent, aetherDrain, false); - boolean hasTerrae = this.canDrainReagent(ritualStone, ReagentRegistry.terraeReagent, terraeDrain, false); - boolean hasReductus = this.canDrainReagent(ritualStone, ReagentRegistry.reductusReagent, reductusDrain, false); - boolean hasTenebrae = this.canDrainReagent(ritualStone, ReagentRegistry.tenebraeReagent, tenebraeDrain, false); - boolean hasSanctus = this.canDrainReagent(ritualStone, ReagentRegistry.sanctusReagent, sanctusDrain, false); - - int direction = ritualStone.getDirection(); - - int flag = 0; - - for(EntityLivingBase livingEntity : livingList) - { - if(livingEntity.isSneaking()) - { - continue; - } - - hasAether = hasAether && this.canDrainReagent(ritualStone, ReagentRegistry.aetherReagent, aetherDrain, false); - hasTerrae = hasTerrae && this.canDrainReagent(ritualStone, ReagentRegistry.terraeReagent, terraeDrain, false); - hasReductus = hasReductus && this.canDrainReagent(ritualStone, ReagentRegistry.reductusReagent, reductusDrain, false); - hasTenebrae = hasTenebrae && this.canDrainReagent(ritualStone, ReagentRegistry.tenebraeReagent, tenebraeDrain, false); - hasSanctus = hasSanctus && this.canDrainReagent(ritualStone, ReagentRegistry.sanctusReagent, sanctusDrain, false); - - double motionY = hasTerrae ? 0.6 : 1.2; - double speed = hasAether ? 6.0 : 3.0; - - if (!(hasTenebrae || hasSanctus)|| livingEntity instanceof EntityPlayer) - { - livingEntity.motionY = motionY; - livingEntity.fallDistance = 0; - - switch (direction) - { - case 1: - SpellHelper.setPlayerSpeedFromServer((EntityPlayer)livingEntity, 0, motionY, -speed); - break; - - case 2: - SpellHelper.setPlayerSpeedFromServer((EntityPlayer)livingEntity, speed, motionY, 0); - break; - - case 3: - SpellHelper.setPlayerSpeedFromServer((EntityPlayer)livingEntity, 0, motionY, speed); - break; - - case 4: - SpellHelper.setPlayerSpeedFromServer((EntityPlayer)livingEntity, -speed, motionY, 0); - break; - } - - flag++; - } else - { - if((hasSanctus && !livingEntity.isChild()) || (hasTenebrae && livingEntity.isChild())) - { - continue; - } - - livingEntity.motionY = motionY; - - switch (direction) - { - case 1: - livingEntity.motionX = 0.0; - livingEntity.motionZ = -speed; - break; - - case 2: - livingEntity.motionX = speed; - livingEntity.motionZ = 0.0; - break; - - case 3: - livingEntity.motionX = 0.0; - livingEntity.motionZ = -speed; - break; - - case 4: - livingEntity.motionX = -speed; - livingEntity.motionZ = 0.0; - break; - } - - if(hasTenebrae) - { - this.canDrainReagent(ritualStone, ReagentRegistry.tenebraeReagent, tenebraeDrain, true); - } - if(hasSanctus) - { - this.canDrainReagent(ritualStone, ReagentRegistry.sanctusReagent, sanctusDrain, true); - } - - livingEntity.fallDistance = 0; - flag++; - } - - if(hasAether) - { - this.canDrainReagent(ritualStone, ReagentRegistry.aetherReagent, aetherDrain, true); - } - if(hasTerrae) - { - this.canDrainReagent(ritualStone, ReagentRegistry.terraeReagent, terraeDrain, true); - } - if(hasReductus) - { - if(!livingEntity.isPotionActive(AlchemicalWizardry.customPotionFeatherFall)) - { - livingEntity.addPotionEffect(new PotionEffect(AlchemicalWizardry.customPotionFeatherFall.id, 3*20, 0)); - this.canDrainReagent(ritualStone, ReagentRegistry.reductusReagent, reductusDrain, true); - } - } - - } - - if (flag > 0) - { - SoulNetworkHandler.syphonFromNetwork(owner, this.getCostPerRefresh() * flag); - } - } - } - - @Override - public int getCostPerRefresh() - { - return 5; - } - - @Override - public List getRitualComponentList() - { - ArrayList leapingRitual = new ArrayList(); - leapingRitual.add(new RitualComponent(0, 0, -2, RitualComponent.DUSK)); - leapingRitual.add(new RitualComponent(1, 0, -1, RitualComponent.AIR)); - leapingRitual.add(new RitualComponent(-1, 0, -1, RitualComponent.AIR)); - - for (int i = 0; i <= 2; i++) - { - leapingRitual.add(new RitualComponent(2, 0, i, RitualComponent.AIR)); - leapingRitual.add(new RitualComponent(-2, 0, i, RitualComponent.AIR)); - } - return leapingRitual; - } -} diff --git a/src-backup/main/java/WayofTime/alchemicalWizardry/common/rituals/RitualEffectLifeConduit.java b/src-backup/main/java/WayofTime/alchemicalWizardry/common/rituals/RitualEffectLifeConduit.java deleted file mode 100644 index fab7e120..00000000 --- a/src-backup/main/java/WayofTime/alchemicalWizardry/common/rituals/RitualEffectLifeConduit.java +++ /dev/null @@ -1,173 +0,0 @@ -package WayofTime.alchemicalWizardry.common.rituals; - -import java.util.ArrayList; -import java.util.Iterator; -import java.util.List; - -import net.minecraft.entity.player.EntityPlayer; -import net.minecraft.server.MinecraftServer; -import net.minecraft.util.AxisAlignedBB; -import net.minecraft.world.World; -import net.minecraftforge.common.util.ForgeDirection; -import net.minecraftforge.fluids.FluidStack; -import WayofTime.alchemicalWizardry.AlchemicalWizardry; -import WayofTime.alchemicalWizardry.api.rituals.IMasterRitualStone; -import WayofTime.alchemicalWizardry.api.rituals.RitualComponent; -import WayofTime.alchemicalWizardry.api.rituals.RitualEffect; -import WayofTime.alchemicalWizardry.api.soulNetwork.LifeEssenceNetwork; -import WayofTime.alchemicalWizardry.api.soulNetwork.SoulNetworkHandler; -import WayofTime.alchemicalWizardry.common.spell.complex.effect.SpellHelper; -import WayofTime.alchemicalWizardry.common.tileEntity.TEAltar; - -public class RitualEffectLifeConduit extends RitualEffect -{ - @Override - public void performEffect(IMasterRitualStone ritualStone) - { - String owner = ritualStone.getOwner(); - - int currentEssence = SoulNetworkHandler.getCurrentEssence(owner); - World world = ritualStone.getWorld(); - int x = ritualStone.getXCoord(); - int y = ritualStone.getYCoord(); - int z = ritualStone.getZCoord(); - - TEAltar tileAltar = null; - boolean testFlag = false; - - for (int i = -5; i <= 5; i++) - { - for (int j = -5; j <= 5; j++) - { - for (int k = -10; k <= 10; k++) - { - if (world.getTileEntity(x + i, y + k, z + j) instanceof TEAltar) - { - tileAltar = (TEAltar) world.getTileEntity(x + i, y + k, z + j); - testFlag = true; - } - } - } - } - - if (!testFlag) - { - return; - } - - //tileAltar = (TEAltar)world.getBlockTileEntity(x,y-1,z); - int d0 = 15; - int vertRange = 20; - - EntityPlayer entityOwner = null; - List list = SpellHelper.getPlayersInRange(world, x, y, z, d0, vertRange); - - for(EntityPlayer player : list) - { - if(SpellHelper.getUsername(player).equals(owner)) - { - entityOwner = player; - } - } - - if (entityOwner == null) - { - return; - } - - int fillAmount = Math.min(currentEssence/2,tileAltar.fill(ForgeDirection.UP, new FluidStack(AlchemicalWizardry.lifeEssenceFluid,10000), false)); - - { - tileAltar.fill(ForgeDirection.UP, new FluidStack(AlchemicalWizardry.lifeEssenceFluid,fillAmount), true); - if(entityOwner.getHealth() > 2.0f && fillAmount != 0) - { - entityOwner.setHealth(2.0f); - } - SoulNetworkHandler.syphonFromNetwork(owner, fillAmount*2); - } - } - - @Override - public int getCostPerRefresh() - { - return 0; - } - - @Override - public List getRitualComponentList() - { - ArrayList conduitRitual = new ArrayList(); - - conduitRitual.add(new RitualComponent(-1,0,-1,RitualComponent.FIRE)); - conduitRitual.add(new RitualComponent(-1,0,1,RitualComponent.FIRE)); - conduitRitual.add(new RitualComponent(1,0,1,RitualComponent.FIRE)); - conduitRitual.add(new RitualComponent(1,0,-1,RitualComponent.FIRE)); - - for(int i=0; i<4; i++) - { - conduitRitual.add(new RitualComponent(-2,i,-2,RitualComponent.AIR)); - conduitRitual.add(new RitualComponent(-2,i,2,RitualComponent.AIR)); - conduitRitual.add(new RitualComponent(2,i,2,RitualComponent.AIR)); - conduitRitual.add(new RitualComponent(2,i,-2,RitualComponent.AIR)); - } - - conduitRitual.add(new RitualComponent(4,1,4,RitualComponent.EARTH)); - conduitRitual.add(new RitualComponent(4,1,-4,RitualComponent.EARTH)); - conduitRitual.add(new RitualComponent(-4,1,-4,RitualComponent.EARTH)); - conduitRitual.add(new RitualComponent(-4,1,4,RitualComponent.EARTH)); - conduitRitual.add(new RitualComponent(3,1,4,RitualComponent.EARTH)); - conduitRitual.add(new RitualComponent(4,1,3,RitualComponent.EARTH)); - conduitRitual.add(new RitualComponent(-3,1,4,RitualComponent.EARTH)); - conduitRitual.add(new RitualComponent(-4,1,3,RitualComponent.EARTH)); - conduitRitual.add(new RitualComponent(3,1,-4,RitualComponent.EARTH)); - conduitRitual.add(new RitualComponent(4,1,-3,RitualComponent.EARTH)); - conduitRitual.add(new RitualComponent(-3,1,-4,RitualComponent.EARTH)); - conduitRitual.add(new RitualComponent(-4,1,-3,RitualComponent.EARTH)); - - - for(int i=0; i<2; i++) - { - conduitRitual.add(new RitualComponent(4,i+2,4,RitualComponent.WATER)); - conduitRitual.add(new RitualComponent(4,i+2,-4,RitualComponent.WATER)); - conduitRitual.add(new RitualComponent(-4,i+2,-4,RitualComponent.WATER)); - conduitRitual.add(new RitualComponent(-4,i+2,4,RitualComponent.WATER)); - } - - conduitRitual.add(new RitualComponent(4,4,4,RitualComponent.DUSK)); - conduitRitual.add(new RitualComponent(4,4,-4,RitualComponent.DUSK)); - conduitRitual.add(new RitualComponent(-4,4,-4,RitualComponent.DUSK)); - conduitRitual.add(new RitualComponent(-4,4,4,RitualComponent.DUSK)); - - conduitRitual.add(new RitualComponent(6,0,5,RitualComponent.FIRE)); - conduitRitual.add(new RitualComponent(5,0,6,RitualComponent.FIRE)); - conduitRitual.add(new RitualComponent(-6,0,5,RitualComponent.FIRE)); - conduitRitual.add(new RitualComponent(-5,0,6,RitualComponent.FIRE)); - conduitRitual.add(new RitualComponent(6,0,-5,RitualComponent.FIRE)); - conduitRitual.add(new RitualComponent(5,0,-6,RitualComponent.FIRE)); - conduitRitual.add(new RitualComponent(-6,0,-5,RitualComponent.FIRE)); - conduitRitual.add(new RitualComponent(-5,0,-6,RitualComponent.FIRE)); - - for(int i=0; i<2; i++) - { - conduitRitual.add(new RitualComponent(6,i,6,RitualComponent.FIRE)); - conduitRitual.add(new RitualComponent(6,i,-6,RitualComponent.FIRE)); - conduitRitual.add(new RitualComponent(-6,i,6,RitualComponent.FIRE)); - conduitRitual.add(new RitualComponent(-6,i,-6,RitualComponent.FIRE)); - } - - for(int i=0; i<3; i++) - { - conduitRitual.add(new RitualComponent(6,i+2,6,RitualComponent.BLANK)); - conduitRitual.add(new RitualComponent(6,i+2,-6,RitualComponent.BLANK)); - conduitRitual.add(new RitualComponent(-6,i+2,6,RitualComponent.BLANK)); - conduitRitual.add(new RitualComponent(-6,i+2,-6,RitualComponent.BLANK)); - } - - conduitRitual.add(new RitualComponent(6,5,6,RitualComponent.DUSK)); - conduitRitual.add(new RitualComponent(6,5,-6,RitualComponent.DUSK)); - conduitRitual.add(new RitualComponent(-6,5,6,RitualComponent.DUSK)); - conduitRitual.add(new RitualComponent(-6,5,-6,RitualComponent.DUSK)); - - return conduitRitual; - } -} diff --git a/src-backup/main/java/WayofTime/alchemicalWizardry/common/rituals/RitualEffectMagnetic.java b/src-backup/main/java/WayofTime/alchemicalWizardry/common/rituals/RitualEffectMagnetic.java deleted file mode 100644 index 01e289eb..00000000 --- a/src-backup/main/java/WayofTime/alchemicalWizardry/common/rituals/RitualEffectMagnetic.java +++ /dev/null @@ -1,187 +0,0 @@ -package WayofTime.alchemicalWizardry.common.rituals; - -import java.util.ArrayList; -import java.util.List; - -import net.minecraft.block.Block; -import net.minecraft.entity.player.EntityPlayer; -import net.minecraft.init.Blocks; -import net.minecraft.item.ItemStack; -import net.minecraft.potion.Potion; -import net.minecraft.potion.PotionEffect; -import net.minecraft.server.MinecraftServer; -import net.minecraft.world.World; -import net.minecraftforge.oredict.OreDictionary; -import WayofTime.alchemicalWizardry.api.alchemy.energy.ReagentRegistry; -import WayofTime.alchemicalWizardry.api.rituals.IMasterRitualStone; -import WayofTime.alchemicalWizardry.api.rituals.RitualComponent; -import WayofTime.alchemicalWizardry.api.rituals.RitualEffect; -import WayofTime.alchemicalWizardry.api.soulNetwork.LifeEssenceNetwork; -import WayofTime.alchemicalWizardry.api.soulNetwork.SoulNetworkHandler; -import WayofTime.alchemicalWizardry.common.block.BlockTeleposer; -import WayofTime.alchemicalWizardry.common.spell.complex.effect.SpellHelper; - -public class RitualEffectMagnetic extends RitualEffect -{ - private static final int potentiaDrain = 10; - private static final int terraeDrain = 10; - private static final int orbisTerraeDrain = 10; - - @Override - public void performEffect(IMasterRitualStone ritualStone) - { - String owner = ritualStone.getOwner(); - - int currentEssence = SoulNetworkHandler.getCurrentEssence(owner); - World world = ritualStone.getWorld(); - int x = ritualStone.getXCoord(); - int y = ritualStone.getYCoord(); - int z = ritualStone.getZCoord(); - - boolean hasPotentia = this.canDrainReagent(ritualStone, ReagentRegistry.potentiaReagent, potentiaDrain, false); - - if(world.getWorldTime() % (hasPotentia ? 10 : 40) != 0) - { - return; - } - - boolean hasTerrae = this.canDrainReagent(ritualStone, ReagentRegistry.terraeReagent, terraeDrain, false); - boolean hasOrbisTerrae = this.canDrainReagent(ritualStone, ReagentRegistry.orbisTerraeReagent, orbisTerraeDrain, false); - - int radius = this.getRadiusForReagents(hasTerrae, hasOrbisTerrae); - - if (currentEssence < this.getCostPerRefresh()) - { - SoulNetworkHandler.causeNauseaToPlayer(owner); - } else - { - int xRep = 0; - int yRep = 0; - int zRep = 0; - boolean replace = false; - - for (int j = 1; j <= 3; j++) - { - for (int i = -1; i <= 1; i++) - { - for (int k = -1; k <= 1; k++) - { - if ((!replace) && world.isAirBlock(x + i, y + j, z + k)) - { - xRep = x + i; - yRep = y + j; - zRep = z + k; - replace = true; - } - } - } - } - - if (replace) - { - //boolean hasReplaced = false; - for (int j = y - 1; j >= 0; j--) - { - for (int i = -radius; i <= radius; i++) - { - for (int k = -radius; k <= radius; k++) - { - Block block = world.getBlock(x + i, j, z + k); - int meta = world.getBlockMetadata(x + i, j, z + k); - - if (block == null) - { - continue; - } - - ItemStack itemStack = new ItemStack(block, 1, meta); - int id = OreDictionary.getOreID(itemStack); - - if (id != -1) - { - String oreName = OreDictionary.getOreName(id); - - if (oreName.contains("ore")) - { - //TODO - //Allow swapping code. This means the searched block is an ore. - BlockTeleposer.swapBlocks(world, world, x + i, j, z + k, xRep, yRep, zRep); - SoulNetworkHandler.syphonFromNetwork(owner, this.getCostPerRefresh()); - - if(hasPotentia) - { - this.canDrainReagent(ritualStone, ReagentRegistry.potentiaReagent, potentiaDrain, true); - } - - if(hasTerrae) - { - this.canDrainReagent(ritualStone, ReagentRegistry.terraeReagent, terraeDrain, true); - } - - if(hasOrbisTerrae) - { - this.canDrainReagent(ritualStone, ReagentRegistry.orbisTerraeReagent, orbisTerraeDrain, true); - } - - return; - } - } - } - } - } - } - } - } - - @Override - public int getCostPerRefresh() - { - return 50; - } - - @Override - public List getRitualComponentList() - { - ArrayList magneticRitual = new ArrayList(); - magneticRitual.add(new RitualComponent(1, 0, 1, RitualComponent.EARTH)); - magneticRitual.add(new RitualComponent(1, 0, -1, RitualComponent.EARTH)); - magneticRitual.add(new RitualComponent(-1, 0, 1, RitualComponent.EARTH)); - magneticRitual.add(new RitualComponent(-1, 0, -1, RitualComponent.EARTH)); - magneticRitual.add(new RitualComponent(2, 1, 0, RitualComponent.EARTH)); - magneticRitual.add(new RitualComponent(0, 1, 2, RitualComponent.EARTH)); - magneticRitual.add(new RitualComponent(-2, 1, 0, RitualComponent.EARTH)); - magneticRitual.add(new RitualComponent(0, 1, -2, RitualComponent.EARTH)); - magneticRitual.add(new RitualComponent(2, 1, 2, RitualComponent.AIR)); - magneticRitual.add(new RitualComponent(2, 1, -2, RitualComponent.AIR)); - magneticRitual.add(new RitualComponent(-2, 1, 2, RitualComponent.AIR)); - magneticRitual.add(new RitualComponent(-2, 1, -2, RitualComponent.AIR)); - magneticRitual.add(new RitualComponent(2, 2, 0, RitualComponent.FIRE)); - magneticRitual.add(new RitualComponent(0, 2, 2, RitualComponent.FIRE)); - magneticRitual.add(new RitualComponent(-2, 2, 0, RitualComponent.FIRE)); - magneticRitual.add(new RitualComponent(0, 2, -2, RitualComponent.FIRE)); - return magneticRitual; - } - - public int getRadiusForReagents(boolean hasTerrae, boolean hasOrbisTerrae) - { - if(hasTerrae) - { - if(hasOrbisTerrae) - { - return 31; - }else - { - return 7; - } - }else - { - if(hasOrbisTerrae) - { - return 12; - }else - { - return 3; - } - } - } -} diff --git a/src-backup/main/java/WayofTime/alchemicalWizardry/common/rituals/RitualEffectSoulBound.java b/src-backup/main/java/WayofTime/alchemicalWizardry/common/rituals/RitualEffectSoulBound.java deleted file mode 100644 index 2099ca3d..00000000 --- a/src-backup/main/java/WayofTime/alchemicalWizardry/common/rituals/RitualEffectSoulBound.java +++ /dev/null @@ -1,191 +0,0 @@ -package WayofTime.alchemicalWizardry.common.rituals; - -import java.util.ArrayList; -import java.util.Iterator; -import java.util.List; - -import net.minecraft.entity.effect.EntityLightningBolt; -import net.minecraft.entity.item.EntityItem; -import net.minecraft.entity.player.EntityPlayer; -import net.minecraft.item.Item; -import net.minecraft.item.ItemStack; -import net.minecraft.potion.Potion; -import net.minecraft.potion.PotionEffect; -import net.minecraft.server.MinecraftServer; -import net.minecraft.util.AxisAlignedBB; -import net.minecraft.world.World; -import WayofTime.alchemicalWizardry.api.bindingRegistry.BindingRegistry; -import WayofTime.alchemicalWizardry.api.rituals.IMasterRitualStone; -import WayofTime.alchemicalWizardry.api.rituals.RitualComponent; -import WayofTime.alchemicalWizardry.api.rituals.RitualEffect; -import WayofTime.alchemicalWizardry.api.soulNetwork.LifeEssenceNetwork; -import WayofTime.alchemicalWizardry.api.soulNetwork.SoulNetworkHandler; -import WayofTime.alchemicalWizardry.common.spell.complex.effect.SpellHelper; - -public class RitualEffectSoulBound extends RitualEffect -{ - @Override - public void performEffect(IMasterRitualStone ritualStone) - { - String owner = ritualStone.getOwner(); - - int currentEssence = SoulNetworkHandler.getCurrentEssence(owner); - World world = ritualStone.getWorld(); - int x = ritualStone.getXCoord(); - int y = ritualStone.getYCoord(); - int z = ritualStone.getZCoord(); - - if (currentEssence < this.getCostPerRefresh()) - { - EntityPlayer entityOwner = SpellHelper.getPlayerForUsername(owner); - - if (entityOwner == null) - { - return; - } - - entityOwner.addPotionEffect(new PotionEffect(Potion.confusion.id, 80)); - } else - { - if (ritualStone.getVar1() == 0) - { - int d0 = 0; - AxisAlignedBB axisalignedbb = AxisAlignedBB.getBoundingBox((double) x, (double) y + 1, (double) z, (double) (x + 1), (double) (y + 2), (double) (z + 1)).expand(d0, d0, d0); - List list = world.getEntitiesWithinAABB(EntityItem.class, axisalignedbb); - Iterator iterator = list.iterator(); - EntityItem item; - - while (iterator.hasNext()) - { - item = (EntityItem) iterator.next(); -// double xDif = item.posX - (xCoord+0.5); -// double yDif = item.posY - (yCoord+1); -// double zDif = item.posZ - (zCoord+0.5); - ItemStack itemStack = item.getEntityItem(); - - if (itemStack == null) - { - continue; - } - - - if(BindingRegistry.isRequiredItemValid(itemStack)) - { - ritualStone.setVar1(BindingRegistry.getIndexForItem(itemStack)+1); - world.addWeatherEffect(new EntityLightningBolt(world, x, y + 1, z)); - ritualStone.setCooldown(ritualStone.getCooldown() - 1); - item.setDead(); - break; - } - - if (world.rand.nextInt(10) == 0) - { - SpellHelper.sendIndexedParticleToAllAround(world, x, y, z, 20, world.provider.dimensionId, 1, x, y, z); - } - } - - SoulNetworkHandler.syphonFromNetwork(owner, getCostPerRefresh()); - } else - { - ritualStone.setCooldown(ritualStone.getCooldown() - 1); - - if (world.rand.nextInt(20) == 0) - { - int lightningPoint = world.rand.nextInt(8); - - switch (lightningPoint) - { - case 0: - world.addWeatherEffect(new EntityLightningBolt(world, x + 4, y + 3, z + 0)); - break; - - case 1: - world.addWeatherEffect(new EntityLightningBolt(world, x - 4, y + 3, z + 0)); - break; - - case 2: - world.addWeatherEffect(new EntityLightningBolt(world, x + 0, y + 3, z + 4)); - break; - - case 3: - world.addWeatherEffect(new EntityLightningBolt(world, x + 0, y + 3, z - 4)); - break; - - case 4: - world.addWeatherEffect(new EntityLightningBolt(world, x + 3, y + 3, z + 3)); - break; - - case 5: - world.addWeatherEffect(new EntityLightningBolt(world, x - 3, y + 3, z + 3)); - break; - - case 6: - world.addWeatherEffect(new EntityLightningBolt(world, x + 3, y + 3, z - 3)); - break; - - case 7: - world.addWeatherEffect(new EntityLightningBolt(world, x - 3, y + 3, z - 3)); - break; - } - } - - if (ritualStone.getCooldown() <= 0) - { - - ItemStack spawnedItem = BindingRegistry.getOutputForIndex(ritualStone.getVar1()-1); - - if (spawnedItem != null) - { - EntityItem newItem = new EntityItem(world, x + 0.5, y + 1, z + 0.5, spawnedItem.copy()); - world.spawnEntityInWorld(newItem); - } - - ritualStone.setActive(false); - } - } - } - } - - @Override - public int getCostPerRefresh() - { - return 0; - } - - @Override - public int getInitialCooldown() - { - return 200; - } - - @Override - public List getRitualComponentList() - { - ArrayList boundSoulRitual = new ArrayList(); - boundSoulRitual.add(new RitualComponent(3, 0, 0, 2)); - boundSoulRitual.add(new RitualComponent(-3, 0, 0, 2)); - boundSoulRitual.add(new RitualComponent(0, 0, 3, 2)); - boundSoulRitual.add(new RitualComponent(0, 0, -3, 2)); - boundSoulRitual.add(new RitualComponent(2, 0, 2, 4)); - boundSoulRitual.add(new RitualComponent(-2, 0, 2, 4)); - boundSoulRitual.add(new RitualComponent(2, 0, -2, 4)); - boundSoulRitual.add(new RitualComponent(-2, 0, -2, 4)); - boundSoulRitual.add(new RitualComponent(4, 2, 0, 1)); - boundSoulRitual.add(new RitualComponent(-4, 2, 0, 1)); - boundSoulRitual.add(new RitualComponent(0, 2, 4, 1)); - boundSoulRitual.add(new RitualComponent(0, 2, -4, 1)); - boundSoulRitual.add(new RitualComponent(3, 2, 3, 3)); - boundSoulRitual.add(new RitualComponent(3, 2, -3, 3)); - boundSoulRitual.add(new RitualComponent(-3, 2, 3, 3)); - boundSoulRitual.add(new RitualComponent(-3, 2, -3, 3)); - boundSoulRitual.add(new RitualComponent(4, 1, 0, 0)); - boundSoulRitual.add(new RitualComponent(-4, 1, 0, 0)); - boundSoulRitual.add(new RitualComponent(0, 1, 4, 0)); - boundSoulRitual.add(new RitualComponent(0, 1, -4, 0)); - boundSoulRitual.add(new RitualComponent(3, 1, 3, 0)); - boundSoulRitual.add(new RitualComponent(3, 1, -3, 0)); - boundSoulRitual.add(new RitualComponent(-3, 1, 3, 0)); - boundSoulRitual.add(new RitualComponent(-3, 1, -3, 0)); - return boundSoulRitual; - } -} diff --git a/src-backup/main/java/WayofTime/alchemicalWizardry/common/rituals/RitualEffectSpawnWard.java b/src-backup/main/java/WayofTime/alchemicalWizardry/common/rituals/RitualEffectSpawnWard.java deleted file mode 100644 index 0d69aa0e..00000000 --- a/src-backup/main/java/WayofTime/alchemicalWizardry/common/rituals/RitualEffectSpawnWard.java +++ /dev/null @@ -1,133 +0,0 @@ -package WayofTime.alchemicalWizardry.common.rituals; - -import java.util.ArrayList; -import java.util.LinkedList; -import java.util.List; - -import net.minecraft.entity.player.EntityPlayer; -import net.minecraft.potion.Potion; -import net.minecraft.potion.PotionEffect; -import net.minecraft.server.MinecraftServer; -import net.minecraft.world.World; -import WayofTime.alchemicalWizardry.api.rituals.IMasterRitualStone; -import WayofTime.alchemicalWizardry.api.rituals.RitualComponent; -import WayofTime.alchemicalWizardry.api.rituals.RitualEffect; -import WayofTime.alchemicalWizardry.api.soulNetwork.LifeEssenceNetwork; -import WayofTime.alchemicalWizardry.api.soulNetwork.SoulNetworkHandler; -import WayofTime.alchemicalWizardry.common.AlchemicalWizardryEventHooks; -import WayofTime.alchemicalWizardry.common.CoordAndRange; -import WayofTime.alchemicalWizardry.common.spell.complex.effect.SpellHelper; - -public class RitualEffectSpawnWard extends RitualEffect -{ - @Override - public void performEffect(IMasterRitualStone ritualStone) - { - String owner = ritualStone.getOwner(); - - int currentEssence = SoulNetworkHandler.getCurrentEssence(owner); - World world = ritualStone.getWorld(); - int x = ritualStone.getXCoord(); - int y = ritualStone.getYCoord(); - int z = ritualStone.getZCoord(); - -// if (world.getWorldTime() % 20 != 0) -// { -// return; -// } - - if (currentEssence < this.getCostPerRefresh()) - { - SoulNetworkHandler.causeNauseaToPlayer(owner); - } else - { - int horizRange = 32; - int vertRange = 32; - - int dimension = world.provider.dimensionId; - - if(AlchemicalWizardryEventHooks.respawnMap.containsKey(new Integer(dimension))) - { - List list = AlchemicalWizardryEventHooks.respawnMap.get(new Integer(dimension)); - if(list != null) - { - if(!list.contains(new CoordAndRange(x,y,z,horizRange,vertRange))) - { - boolean hasFoundAndRemoved = false; - for(CoordAndRange coords : list) - { - int xLocation = coords.xCoord; - int yLocation = coords.yCoord; - int zLocation = coords.zCoord; - - if(xLocation == x && yLocation == y && zLocation == z) - { - list.remove(coords); - hasFoundAndRemoved = true; - break; - } - } - list.add(new CoordAndRange(x,y,z,horizRange,vertRange)); - } - }else - { - list = new LinkedList(); - list.add(new CoordAndRange(x,y,z,horizRange,vertRange)); - AlchemicalWizardryEventHooks.respawnMap.put(new Integer(dimension), list); - } - }else - { - List list = new LinkedList(); - list.add(new CoordAndRange(x,y,z,horizRange,vertRange)); - AlchemicalWizardryEventHooks.respawnMap.put(new Integer(dimension), list); - } - - - SoulNetworkHandler.syphonFromNetwork(owner, this.getCostPerRefresh()); - } - } - - @Override - public int getCostPerRefresh() - { - return 15; - } - - @Override - public List getRitualComponentList() - { - ArrayList wardRitualRitual = new ArrayList(); - - for(int i=2; i<=4; i++) - { - if(i <= 3) - { - wardRitualRitual.add(new RitualComponent(0, 0, i, RitualComponent.AIR)); - wardRitualRitual.add(new RitualComponent(0, 0, -i, RitualComponent.AIR)); - wardRitualRitual.add(new RitualComponent(i, 0, 0, RitualComponent.AIR)); - wardRitualRitual.add(new RitualComponent(-i, 0, 0, RitualComponent.AIR)); - } - - wardRitualRitual.add(new RitualComponent(i, 0, i, RitualComponent.FIRE)); - wardRitualRitual.add(new RitualComponent(i, 0, -i, RitualComponent.FIRE)); - wardRitualRitual.add(new RitualComponent(-i, 0, -i, RitualComponent.FIRE)); - wardRitualRitual.add(new RitualComponent(-i, 0, i, RitualComponent.FIRE)); - } - - wardRitualRitual.add(new RitualComponent(0, 0, 5, RitualComponent.DUSK)); - wardRitualRitual.add(new RitualComponent(0, 0, -5, RitualComponent.DUSK)); - wardRitualRitual.add(new RitualComponent(5, 0, 0, RitualComponent.DUSK)); - wardRitualRitual.add(new RitualComponent(-5, 0, 0, RitualComponent.DUSK)); - - wardRitualRitual.add(new RitualComponent(6, 0, 5, RitualComponent.WATER)); - wardRitualRitual.add(new RitualComponent(5, 0, 6, RitualComponent.WATER)); - wardRitualRitual.add(new RitualComponent(6, 0, -5, RitualComponent.WATER)); - wardRitualRitual.add(new RitualComponent(-5, 0, 6, RitualComponent.WATER)); - wardRitualRitual.add(new RitualComponent(-6, 0, 5, RitualComponent.WATER)); - wardRitualRitual.add(new RitualComponent(5, 0, -6, RitualComponent.WATER)); - wardRitualRitual.add(new RitualComponent(-6, 0, -5, RitualComponent.WATER)); - wardRitualRitual.add(new RitualComponent(-5, 0, -6, RitualComponent.WATER)); - - return wardRitualRitual; - } -} diff --git a/src-backup/main/java/WayofTime/alchemicalWizardry/common/rituals/RitualEffectSummonMeteor.java b/src-backup/main/java/WayofTime/alchemicalWizardry/common/rituals/RitualEffectSummonMeteor.java deleted file mode 100644 index 70985878..00000000 --- a/src-backup/main/java/WayofTime/alchemicalWizardry/common/rituals/RitualEffectSummonMeteor.java +++ /dev/null @@ -1,214 +0,0 @@ -package WayofTime.alchemicalWizardry.common.rituals; - -import java.util.ArrayList; -import java.util.List; - -import net.minecraft.entity.item.EntityItem; -import net.minecraft.entity.player.EntityPlayer; -import net.minecraft.potion.Potion; -import net.minecraft.potion.PotionEffect; -import net.minecraft.server.MinecraftServer; -import net.minecraft.util.AxisAlignedBB; -import net.minecraft.world.World; -import WayofTime.alchemicalWizardry.api.alchemy.energy.ReagentRegistry; -import WayofTime.alchemicalWizardry.api.rituals.IMasterRitualStone; -import WayofTime.alchemicalWizardry.api.rituals.RitualComponent; -import WayofTime.alchemicalWizardry.api.rituals.RitualEffect; -import WayofTime.alchemicalWizardry.api.soulNetwork.LifeEssenceNetwork; -import WayofTime.alchemicalWizardry.api.soulNetwork.SoulNetworkHandler; -import WayofTime.alchemicalWizardry.common.entity.projectile.EntityMeteor; -import WayofTime.alchemicalWizardry.common.spell.complex.effect.SpellHelper; -import WayofTime.alchemicalWizardry.common.summoning.meteor.MeteorRegistry; - -public class RitualEffectSummonMeteor extends RitualEffect -{ - @Override - public void performEffect(IMasterRitualStone ritualStone) - { - String owner = ritualStone.getOwner(); - - int currentEssence = SoulNetworkHandler.getCurrentEssence(owner); - World world = ritualStone.getWorld(); - int x = ritualStone.getXCoord(); - int y = ritualStone.getYCoord(); - int z = ritualStone.getZCoord(); - - if (ritualStone.getCooldown() > 0) - { - ritualStone.setCooldown(0); - } - - if (currentEssence < this.getCostPerRefresh()) - { - EntityPlayer entityOwner = SpellHelper.getPlayerForUsername(owner); - - if (entityOwner == null) - { - return; - } - - entityOwner.addPotionEffect(new PotionEffect(Potion.confusion.id, 80)); - } else - { - List entities = world.getEntitiesWithinAABB(EntityItem.class, AxisAlignedBB.getBoundingBox(x, y + 1, z, x + 1, y + 2, z + 1)); - - if (entities == null) - { - return; - } - - for (EntityItem entityItem : entities) - { - if (entityItem != null && MeteorRegistry.isValidParadigmItem(entityItem.getEntityItem())) - { - int meteorID = MeteorRegistry.getParadigmIDForItem(entityItem.getEntityItem()); - EntityMeteor meteor = new EntityMeteor(world, x + 0.5f, 257, z + 0.5f, meteorID); - meteor.motionY = -1.0f; - - if(this.canDrainReagent(ritualStone, ReagentRegistry.terraeReagent, 1000, true)) - { - meteor.hasTerrae = true; - } - if(this.canDrainReagent(ritualStone, ReagentRegistry.orbisTerraeReagent, 1000, true)) - { - meteor.hasOrbisTerrae = true; - } - if(this.canDrainReagent(ritualStone, ReagentRegistry.crystallosReagent, 1000, true)) - { - meteor.hasCrystallos = true; - } - if(this.canDrainReagent(ritualStone, ReagentRegistry.incendiumReagent, 1000, true)) - { - meteor.hasIncendium = true; - } - if(this.canDrainReagent(ritualStone, ReagentRegistry.tenebraeReagent, 1000, true)) - { - meteor.hasTennebrae = true; - } - - entityItem.setDead(); - world.spawnEntityInWorld(meteor); - ritualStone.setActive(false); - break; - } - } - - SoulNetworkHandler.syphonFromNetwork(owner, this.getCostPerRefresh()); - } - } - - @Override - public int getCostPerRefresh() - { - return 0; - } - - @Override - public List getRitualComponentList() - { - ArrayList meteorRitual = new ArrayList(); - meteorRitual.add(new RitualComponent(2, 0, 0, RitualComponent.FIRE)); - meteorRitual.add(new RitualComponent(-2, 0, 0, RitualComponent.FIRE)); - meteorRitual.add(new RitualComponent(0, 0, 2, RitualComponent.FIRE)); - meteorRitual.add(new RitualComponent(0, 0, -2, RitualComponent.FIRE)); - meteorRitual.add(new RitualComponent(3, 0, 1, RitualComponent.AIR)); - meteorRitual.add(new RitualComponent(3, 0, -1, RitualComponent.AIR)); - meteorRitual.add(new RitualComponent(-3, 0, 1, RitualComponent.AIR)); - meteorRitual.add(new RitualComponent(-3, 0, -1, RitualComponent.AIR)); - meteorRitual.add(new RitualComponent(1, 0, 3, RitualComponent.AIR)); - meteorRitual.add(new RitualComponent(-1, 0, 3, RitualComponent.AIR)); - meteorRitual.add(new RitualComponent(1, 0, -3, RitualComponent.AIR)); - meteorRitual.add(new RitualComponent(-1, 0, -3, RitualComponent.AIR)); - meteorRitual.add(new RitualComponent(4, 0, 2, RitualComponent.AIR)); - meteorRitual.add(new RitualComponent(4, 0, -2, RitualComponent.AIR)); - meteorRitual.add(new RitualComponent(-4, 0, 2, RitualComponent.AIR)); - meteorRitual.add(new RitualComponent(-4, 0, -2, RitualComponent.AIR)); - meteorRitual.add(new RitualComponent(2, 0, 4, RitualComponent.AIR)); - meteorRitual.add(new RitualComponent(-2, 0, 4, RitualComponent.AIR)); - meteorRitual.add(new RitualComponent(2, 0, -4, RitualComponent.AIR)); - meteorRitual.add(new RitualComponent(-2, 0, -4, RitualComponent.AIR)); - meteorRitual.add(new RitualComponent(5, 0, 3, RitualComponent.DUSK)); - meteorRitual.add(new RitualComponent(5, 0, -3, RitualComponent.DUSK)); - meteorRitual.add(new RitualComponent(-5, 0, 3, RitualComponent.DUSK)); - meteorRitual.add(new RitualComponent(-5, 0, -3, RitualComponent.DUSK)); - meteorRitual.add(new RitualComponent(3, 0, 5, RitualComponent.DUSK)); - meteorRitual.add(new RitualComponent(-3, 0, 5, RitualComponent.DUSK)); - meteorRitual.add(new RitualComponent(3, 0, -5, RitualComponent.DUSK)); - meteorRitual.add(new RitualComponent(-3, 0, -5, RitualComponent.DUSK)); - meteorRitual.add(new RitualComponent(-4, 0, -4, RitualComponent.DUSK)); - meteorRitual.add(new RitualComponent(-4, 0, 4, RitualComponent.DUSK)); - meteorRitual.add(new RitualComponent(4, 0, 4, RitualComponent.DUSK)); - meteorRitual.add(new RitualComponent(4, 0, -4, RitualComponent.DUSK)); - - for (int i = 4; i <= 6; i++) - { - meteorRitual.add(new RitualComponent(i, 0, 0, RitualComponent.EARTH)); - meteorRitual.add(new RitualComponent(-i, 0, 0, RitualComponent.EARTH)); - meteorRitual.add(new RitualComponent(0, 0, i, RitualComponent.EARTH)); - meteorRitual.add(new RitualComponent(0, 0, -i, RitualComponent.EARTH)); - } - - meteorRitual.add(new RitualComponent(8, 0, 0, RitualComponent.EARTH)); - meteorRitual.add(new RitualComponent(-8, 0, 0, RitualComponent.EARTH)); - meteorRitual.add(new RitualComponent(0, 0, 8, RitualComponent.EARTH)); - meteorRitual.add(new RitualComponent(0, 0, -8, RitualComponent.EARTH)); - meteorRitual.add(new RitualComponent(8, 1, 0, RitualComponent.EARTH)); - meteorRitual.add(new RitualComponent(-8, 1, 0, RitualComponent.EARTH)); - meteorRitual.add(new RitualComponent(0, 1, 8, RitualComponent.EARTH)); - meteorRitual.add(new RitualComponent(0, 1, -8, RitualComponent.EARTH)); - meteorRitual.add(new RitualComponent(7, 1, 0, RitualComponent.EARTH)); - meteorRitual.add(new RitualComponent(-7, 1, 0, RitualComponent.EARTH)); - meteorRitual.add(new RitualComponent(0, 1, 7, RitualComponent.EARTH)); - meteorRitual.add(new RitualComponent(0, 1, -7, RitualComponent.EARTH)); - meteorRitual.add(new RitualComponent(7, 2, 0, RitualComponent.FIRE)); - meteorRitual.add(new RitualComponent(-7, 2, 0, RitualComponent.FIRE)); - meteorRitual.add(new RitualComponent(0, 2, 7, RitualComponent.FIRE)); - meteorRitual.add(new RitualComponent(0, 2, -7, RitualComponent.FIRE)); - meteorRitual.add(new RitualComponent(6, 2, 0, RitualComponent.FIRE)); - meteorRitual.add(new RitualComponent(-6, 2, 0, RitualComponent.FIRE)); - meteorRitual.add(new RitualComponent(0, 2, 6, RitualComponent.FIRE)); - meteorRitual.add(new RitualComponent(0, 2, -6, RitualComponent.FIRE)); - meteorRitual.add(new RitualComponent(6, 3, 0, RitualComponent.WATER)); - meteorRitual.add(new RitualComponent(-6, 3, 0, RitualComponent.WATER)); - meteorRitual.add(new RitualComponent(0, 3, 6, RitualComponent.WATER)); - meteorRitual.add(new RitualComponent(0, 3, -6, RitualComponent.WATER)); - meteorRitual.add(new RitualComponent(5, 3, 0, RitualComponent.WATER)); - meteorRitual.add(new RitualComponent(-5, 3, 0, RitualComponent.WATER)); - meteorRitual.add(new RitualComponent(0, 3, 5, RitualComponent.WATER)); - meteorRitual.add(new RitualComponent(0, 3, -5, RitualComponent.WATER)); - meteorRitual.add(new RitualComponent(5, 4, 0, RitualComponent.AIR)); - meteorRitual.add(new RitualComponent(-5, 4, 0, RitualComponent.AIR)); - meteorRitual.add(new RitualComponent(0, 4, 5, RitualComponent.AIR)); - meteorRitual.add(new RitualComponent(0, 4, -5, RitualComponent.AIR)); - - for (int i = -1; i <= 1; i++) - { - meteorRitual.add(new RitualComponent(i, 4, 4, RitualComponent.AIR)); - meteorRitual.add(new RitualComponent(i, 4, -4, RitualComponent.AIR)); - meteorRitual.add(new RitualComponent(4, 4, i, RitualComponent.AIR)); - meteorRitual.add(new RitualComponent(-4, 4, i, RitualComponent.AIR)); - } - - meteorRitual.add(new RitualComponent(2, 4, 4, RitualComponent.WATER)); - meteorRitual.add(new RitualComponent(4, 4, 2, RitualComponent.WATER)); - meteorRitual.add(new RitualComponent(2, 4, -4, RitualComponent.WATER)); - meteorRitual.add(new RitualComponent(-4, 4, 2, RitualComponent.WATER)); - meteorRitual.add(new RitualComponent(-2, 4, 4, RitualComponent.WATER)); - meteorRitual.add(new RitualComponent(4, 4, -2, RitualComponent.WATER)); - meteorRitual.add(new RitualComponent(-2, 4, -4, RitualComponent.WATER)); - meteorRitual.add(new RitualComponent(-4, 4, -2, RitualComponent.WATER)); - meteorRitual.add(new RitualComponent(2, 4, 3, RitualComponent.FIRE)); - meteorRitual.add(new RitualComponent(3, 4, 2, RitualComponent.FIRE)); - meteorRitual.add(new RitualComponent(3, 4, 3, RitualComponent.FIRE)); - meteorRitual.add(new RitualComponent(-2, 4, 3, RitualComponent.FIRE)); - meteorRitual.add(new RitualComponent(3, 4, -2, RitualComponent.FIRE)); - meteorRitual.add(new RitualComponent(3, 4, -3, RitualComponent.FIRE)); - meteorRitual.add(new RitualComponent(2, 4, -3, RitualComponent.FIRE)); - meteorRitual.add(new RitualComponent(-3, 4, 2, RitualComponent.FIRE)); - meteorRitual.add(new RitualComponent(-3, 4, 3, RitualComponent.FIRE)); - meteorRitual.add(new RitualComponent(-2, 4, -3, RitualComponent.FIRE)); - meteorRitual.add(new RitualComponent(-3, 4, -2, RitualComponent.FIRE)); - meteorRitual.add(new RitualComponent(-3, 4, -3, RitualComponent.FIRE)); - return meteorRitual; - } -} diff --git a/src-backup/main/java/WayofTime/alchemicalWizardry/common/rituals/RitualEffectSupression.java b/src-backup/main/java/WayofTime/alchemicalWizardry/common/rituals/RitualEffectSupression.java deleted file mode 100644 index 9a93eb98..00000000 --- a/src-backup/main/java/WayofTime/alchemicalWizardry/common/rituals/RitualEffectSupression.java +++ /dev/null @@ -1,189 +0,0 @@ -package WayofTime.alchemicalWizardry.common.rituals; - -import java.util.ArrayList; -import java.util.List; - -import net.minecraft.block.Block; -import net.minecraft.entity.player.EntityPlayer; -import net.minecraft.init.Blocks; -import net.minecraft.potion.Potion; -import net.minecraft.potion.PotionEffect; -import net.minecraft.server.MinecraftServer; -import net.minecraft.tileentity.TileEntity; -import net.minecraft.world.World; -import WayofTime.alchemicalWizardry.api.alchemy.energy.ReagentRegistry; -import WayofTime.alchemicalWizardry.api.rituals.IMasterRitualStone; -import WayofTime.alchemicalWizardry.api.rituals.RitualComponent; -import WayofTime.alchemicalWizardry.api.rituals.RitualEffect; -import WayofTime.alchemicalWizardry.api.soulNetwork.LifeEssenceNetwork; -import WayofTime.alchemicalWizardry.api.soulNetwork.SoulNetworkHandler; -import WayofTime.alchemicalWizardry.common.spell.complex.effect.SpellHelper; -import WayofTime.alchemicalWizardry.common.tileEntity.TESpectralContainer; - -public class RitualEffectSupression extends RitualEffect -{ - public static final int aquasalusDrain = 15; - public static final int aetherDrain = 15; - - @Override - public void performEffect(IMasterRitualStone ritualStone) - { - String owner = ritualStone.getOwner(); - - int currentEssence = SoulNetworkHandler.getCurrentEssence(owner); - World world = ritualStone.getWorld(); - int x = ritualStone.getXCoord(); - int y = ritualStone.getYCoord(); - int z = ritualStone.getZCoord(); - - Block blockish = world.getBlock(x, y-1, z); - - boolean hasAquasalus = this.canDrainReagent(ritualStone, ReagentRegistry.aquasalusReagent, aquasalusDrain, false); - boolean hasAether = this.canDrainReagent(ritualStone, ReagentRegistry.aetherReagent, aetherDrain, false); - - int costMod = this.getCostModifier(blockish); - int radius = this.getRadiusForReagents(hasAether, hasAquasalus); - int masterRadius = radius; - - int yIndex = (int)(world.getWorldTime() % (2*radius + 1))-radius; - boolean expansion = false; - - if(ritualStone.getVar1()<(radius+1)) - { - expansion = true; - radius = ritualStone.getVar1(); - ritualStone.setVar1(ritualStone.getVar1() + 1); - } - - if (currentEssence < this.getCostPerRefresh()*costMod) - { - EntityPlayer entityOwner = SpellHelper.getPlayerForUsername(owner); - - if (entityOwner == null) - { - return; - } - - entityOwner.addPotionEffect(new PotionEffect(Potion.confusion.id, 80)); - } else - { - for (int i = -radius; i <= radius; i++) - { - for (int j = (expansion ? -radius : yIndex); j <= (expansion ? radius : yIndex); j++) - { - for(int k = -radius; k <= radius; k++) - { - if (i * i + j * j + k * k >= (radius + 0.50f) * (radius + 0.50f)) - { - continue; - } - - Block block = world.getBlock(x+i, y+j, z+k); - - - if(SpellHelper.isBlockFluid(block)) - { - TESpectralContainer.createSpectralBlockAtLocation(world, x+i, y+j, z+k, 3*masterRadius); - } - else - { - TileEntity tile = world.getTileEntity(x+i, y+j, z+k); - if(tile instanceof TESpectralContainer) - { - ((TESpectralContainer) tile).resetDuration(3*masterRadius); - } - } - } - } - } - - - SoulNetworkHandler.syphonFromNetwork(owner, this.getCostPerRefresh()*costMod); - - if(world.getWorldTime() % 100 == 0) - { - if(hasAquasalus) - { - this.canDrainReagent(ritualStone, ReagentRegistry.aquasalusReagent, aquasalusDrain, true); - } - if(hasAether) - { - this.canDrainReagent(ritualStone, ReagentRegistry.aetherReagent, aetherDrain, true); - } - } - } - } - - @Override - public int getCostPerRefresh() - { - return 2; - } - - @Override - public List getRitualComponentList() - { - ArrayList supressionRitual = new ArrayList(); - supressionRitual.add(new RitualComponent(2,0,2, RitualComponent.WATER)); - supressionRitual.add(new RitualComponent(2,0,-2, RitualComponent.WATER)); - supressionRitual.add(new RitualComponent(-2,0,2, RitualComponent.WATER)); - supressionRitual.add(new RitualComponent(-2,0,-2, RitualComponent.WATER)); - supressionRitual.add(new RitualComponent(-2,0,-1, RitualComponent.AIR)); - supressionRitual.add(new RitualComponent(-1,0,-2, RitualComponent.AIR)); - supressionRitual.add(new RitualComponent(-2,0,1, RitualComponent.AIR)); - supressionRitual.add(new RitualComponent(1,0,-2, RitualComponent.AIR)); - supressionRitual.add(new RitualComponent(2,0,1, RitualComponent.AIR)); - supressionRitual.add(new RitualComponent(1,0,2, RitualComponent.AIR)); - supressionRitual.add(new RitualComponent(2,0,-1, RitualComponent.AIR)); - supressionRitual.add(new RitualComponent(-1,0,2, RitualComponent.AIR)); - return supressionRitual; - } - - public int getCostModifier(Block block) - { -// if(block == null) -// { -// return 1; -// } -// -// if(block == Blocks.diamond_block) -// { -// return 20; -// } -// -// if(block == Blocks.gold_block) -// { -// return 10; -// } -// -// if(block == Blocks.iron_block) -// { -// return 5; -// } - - return 1; - } - - public int getRadiusForReagents(boolean hasAether, boolean hasAquasalus) - { - if(hasAether) - { - if(hasAquasalus) - { - return 30; - }else - { - return 20; - } - }else - { - if(hasAquasalus) - { - return 15; - }else - { - return 10; - } - } - } -} diff --git a/src-backup/main/java/WayofTime/alchemicalWizardry/common/rituals/RitualEffectUnbinding.java b/src-backup/main/java/WayofTime/alchemicalWizardry/common/rituals/RitualEffectUnbinding.java deleted file mode 100644 index fdcd8d86..00000000 --- a/src-backup/main/java/WayofTime/alchemicalWizardry/common/rituals/RitualEffectUnbinding.java +++ /dev/null @@ -1,221 +0,0 @@ -package WayofTime.alchemicalWizardry.common.rituals; - -import java.util.ArrayList; -import java.util.Iterator; -import java.util.List; - -import net.minecraft.entity.effect.EntityLightningBolt; -import net.minecraft.entity.item.EntityItem; -import net.minecraft.item.ItemStack; -import net.minecraft.nbt.NBTTagCompound; -import net.minecraft.server.MinecraftServer; -import net.minecraft.util.AxisAlignedBB; -import net.minecraft.world.World; -import WayofTime.alchemicalWizardry.ModBlocks; -import WayofTime.alchemicalWizardry.ModItems; -import WayofTime.alchemicalWizardry.api.alchemy.energy.ReagentRegistry; -import WayofTime.alchemicalWizardry.api.items.interfaces.IBindable; -import WayofTime.alchemicalWizardry.api.rituals.IMasterRitualStone; -import WayofTime.alchemicalWizardry.api.rituals.RitualComponent; -import WayofTime.alchemicalWizardry.api.rituals.RitualEffect; -import WayofTime.alchemicalWizardry.api.soulNetwork.LifeEssenceNetwork; -import WayofTime.alchemicalWizardry.api.soulNetwork.SoulNetworkHandler; -import WayofTime.alchemicalWizardry.common.items.BoundArmour; -import WayofTime.alchemicalWizardry.common.items.EnergyItems; -import WayofTime.alchemicalWizardry.common.items.sigil.SigilOfHolding; -import WayofTime.alchemicalWizardry.common.spell.complex.effect.SpellHelper; - -public class RitualEffectUnbinding extends RitualEffect -{ - public static final int sanctusDrain = 1000; - - @Override - public void performEffect(IMasterRitualStone ritualStone) - { - String owner = ritualStone.getOwner(); - - int currentEssence = SoulNetworkHandler.getCurrentEssence(owner); - World world = ritualStone.getWorld(); - int x = ritualStone.getXCoord(); - int y = ritualStone.getYCoord(); - int z = ritualStone.getZCoord(); - - if (currentEssence < this.getCostPerRefresh()) - { - SoulNetworkHandler.causeNauseaToPlayer(owner); - } else - { - int d0 = 0; - AxisAlignedBB axisalignedbb = AxisAlignedBB.getBoundingBox((double) x, (double) y + 1, (double) z, (double) (x + 1), (double) (y + 2), (double) (z + 1)).expand(d0, d0, d0); - List list = world.getEntitiesWithinAABB(EntityItem.class, axisalignedbb); - Iterator iterator = list.iterator(); - EntityItem item; - - boolean drain = false; - - while (iterator.hasNext()) - { - item = (EntityItem) iterator.next(); -// double xDif = item.posX - (xCoord+0.5); -// double yDif = item.posY - (yCoord+1); -// double zDif = item.posZ - (zCoord+0.5); - ItemStack itemStack = item.getEntityItem(); - - if (itemStack == null) - { - continue; - } - - boolean hasSanctus = this.canDrainReagent(ritualStone, ReagentRegistry.sanctusReagent, sanctusDrain, false); - if(hasSanctus) - { - if(itemStack.getItem() instanceof IBindable && !EnergyItems.getOwnerName(itemStack).equals("")) - { - world.addWeatherEffect(new EntityLightningBolt(world, x, y + 1, z - 5)); - world.addWeatherEffect(new EntityLightningBolt(world, x, y + 1, z + 5)); - world.addWeatherEffect(new EntityLightningBolt(world, x - 5, y + 1, z)); - world.addWeatherEffect(new EntityLightningBolt(world, x + 5, y + 1, z)); - - EnergyItems.setItemOwner(itemStack, ""); - this.canDrainReagent(ritualStone, ReagentRegistry.sanctusReagent, sanctusDrain, true); - drain = true; - ritualStone.setActive(false); - break; - } - } - - if (itemStack.getItem() == ModItems.boundHelmet) - { - ritualStone.setVar1(5); - } else if (itemStack.getItem() == ModItems.boundPlate) - { - ritualStone.setVar1(8); - } else if (itemStack.getItem() == ModItems.boundLeggings) - { - ritualStone.setVar1(7); - } else if (itemStack.getItem() == ModItems.boundBoots) - { - ritualStone.setVar1(4); - } else if (itemStack.getItem() == ModItems.sigilOfHolding) - { - ritualStone.setVar1(-1); - } - - if (ritualStone.getVar1() > 0) - { - item.setDead(); - world.addWeatherEffect(new EntityLightningBolt(world, x, y + 1, z - 5)); - world.addWeatherEffect(new EntityLightningBolt(world, x, y + 1, z + 5)); - world.addWeatherEffect(new EntityLightningBolt(world, x - 5, y + 1, z)); - world.addWeatherEffect(new EntityLightningBolt(world, x + 5, y + 1, z)); - NBTTagCompound itemTag = itemStack.stackTagCompound; - ItemStack[] inv = ((BoundArmour) itemStack.getItem()).getInternalInventory(itemStack); - - if (inv != null) - { - for (ItemStack internalItem : inv) - { - if (internalItem != null) - { - EntityItem newItem = new EntityItem(world, x + 0.5, y + 1, z + 0.5, internalItem.copy()); - world.spawnEntityInWorld(newItem); - } - } - } - - EntityItem newItem = new EntityItem(world, x + 0.5, y + 1, z + 0.5, new ItemStack(ModBlocks.bloodSocket, ritualStone.getVar1())); - world.spawnEntityInWorld(newItem); - ritualStone.setActive(false); - drain = true; - break; - } else if (ritualStone.getVar1() == -1) - { - item.setDead(); - world.addWeatherEffect(new EntityLightningBolt(world, x, y + 1, z - 5)); - world.addWeatherEffect(new EntityLightningBolt(world, x, y + 1, z + 5)); - world.addWeatherEffect(new EntityLightningBolt(world, x - 5, y + 1, z)); - world.addWeatherEffect(new EntityLightningBolt(world, x + 5, y + 1, z)); - NBTTagCompound itemTag = itemStack.stackTagCompound; - ItemStack[] inv = ((SigilOfHolding) itemStack.getItem()).getInternalInventory(itemStack); - - if (inv != null) - { - for (ItemStack internalItem : inv) - { - if (internalItem != null) - { - EntityItem newItem = new EntityItem(world, x + 0.5, y + 1, z + 0.5, internalItem.copy()); - world.spawnEntityInWorld(newItem); - } - } - } - - EntityItem newItem = new EntityItem(world, x + 0.5, y + 1, z + 0.5, new ItemStack(ModItems.sigilOfHolding, 1, 0)); - world.spawnEntityInWorld(newItem); - ritualStone.setActive(false); - drain = true; - break; - } - - - - } - - if(drain) - { - SoulNetworkHandler.syphonFromNetwork(owner, this.getCostPerRefresh()); - } - } - - if (world.rand.nextInt(10) == 0) - { - SpellHelper.sendIndexedParticleToAllAround(world, x, y, z, 20, world.provider.dimensionId, 1, x, y, z); - } - } - - @Override - public int getCostPerRefresh() - { - // TODO Auto-generated method stub - return 0; - } - - @Override - public List getRitualComponentList() - { - ArrayList unbindingRitual = new ArrayList(); - unbindingRitual.add(new RitualComponent(-2, 0, 0, 4)); - unbindingRitual.add(new RitualComponent(2, 0, 0, 4)); - unbindingRitual.add(new RitualComponent(0, 0, 2, 4)); - unbindingRitual.add(new RitualComponent(0, 0, -2, 4)); - unbindingRitual.add(new RitualComponent(-2, 0, -2, 3)); - unbindingRitual.add(new RitualComponent(-2, 0, -3, 3)); - unbindingRitual.add(new RitualComponent(-3, 0, -2, 3)); - unbindingRitual.add(new RitualComponent(2, 0, -2, 3)); - unbindingRitual.add(new RitualComponent(2, 0, -3, 3)); - unbindingRitual.add(new RitualComponent(3, 0, -2, 3)); - unbindingRitual.add(new RitualComponent(-2, 0, 2, 3)); - unbindingRitual.add(new RitualComponent(-2, 0, 3, 3)); - unbindingRitual.add(new RitualComponent(-3, 0, 2, 3)); - unbindingRitual.add(new RitualComponent(2, 0, 2, 3)); - unbindingRitual.add(new RitualComponent(2, 0, 3, 3)); - unbindingRitual.add(new RitualComponent(3, 0, 2, 3)); - unbindingRitual.add(new RitualComponent(3, 1, 3, 0)); - unbindingRitual.add(new RitualComponent(3, 1, -3, 0)); - unbindingRitual.add(new RitualComponent(-3, 1, -3, 0)); - unbindingRitual.add(new RitualComponent(-3, 1, 3, 0)); - unbindingRitual.add(new RitualComponent(3, 2, 3, 0)); - unbindingRitual.add(new RitualComponent(3, 2, -3, 0)); - unbindingRitual.add(new RitualComponent(-3, 2, -3, 0)); - unbindingRitual.add(new RitualComponent(-3, 2, 3, 0)); - unbindingRitual.add(new RitualComponent(3, 3, 3, 2)); - unbindingRitual.add(new RitualComponent(3, 3, -3, 2)); - unbindingRitual.add(new RitualComponent(-3, 3, -3, 2)); - unbindingRitual.add(new RitualComponent(-3, 3, 3, 2)); - unbindingRitual.add(new RitualComponent(-5, 0, 0, 2)); - unbindingRitual.add(new RitualComponent(5, 0, 0, 2)); - unbindingRitual.add(new RitualComponent(0, 0, 5, 2)); - unbindingRitual.add(new RitualComponent(0, 0, -5, 2)); - return unbindingRitual; - } -} diff --git a/src-backup/main/java/WayofTime/alchemicalWizardry/common/rituals/RitualEffectVeilOfEvil.java b/src-backup/main/java/WayofTime/alchemicalWizardry/common/rituals/RitualEffectVeilOfEvil.java deleted file mode 100644 index 362b608f..00000000 --- a/src-backup/main/java/WayofTime/alchemicalWizardry/common/rituals/RitualEffectVeilOfEvil.java +++ /dev/null @@ -1,150 +0,0 @@ -package WayofTime.alchemicalWizardry.common.rituals; - -import java.util.ArrayList; -import java.util.LinkedList; -import java.util.List; - -import net.minecraft.entity.player.EntityPlayer; -import net.minecraft.potion.Potion; -import net.minecraft.potion.PotionEffect; -import net.minecraft.server.MinecraftServer; -import net.minecraft.world.World; -import WayofTime.alchemicalWizardry.api.rituals.IMasterRitualStone; -import WayofTime.alchemicalWizardry.api.rituals.RitualComponent; -import WayofTime.alchemicalWizardry.api.rituals.RitualEffect; -import WayofTime.alchemicalWizardry.api.soulNetwork.LifeEssenceNetwork; -import WayofTime.alchemicalWizardry.api.soulNetwork.SoulNetworkHandler; -import WayofTime.alchemicalWizardry.common.AlchemicalWizardryEventHooks; -import WayofTime.alchemicalWizardry.common.CoordAndRange; -import WayofTime.alchemicalWizardry.common.spell.complex.effect.SpellHelper; - -public class RitualEffectVeilOfEvil extends RitualEffect -{ - @Override - public void performEffect(IMasterRitualStone ritualStone) - { - String owner = ritualStone.getOwner(); - - int currentEssence = SoulNetworkHandler.getCurrentEssence(owner); - World world = ritualStone.getWorld(); - int x = ritualStone.getXCoord(); - int y = ritualStone.getYCoord(); - int z = ritualStone.getZCoord(); - -// if (world.getWorldTime() % 20 != 0) -// { -// return; -// } - - if (currentEssence < this.getCostPerRefresh()) - { - SoulNetworkHandler.causeNauseaToPlayer(owner); - } else - { - int horizRange = 32; - int vertRange = 32; - - int dimension = world.provider.dimensionId; - - if(AlchemicalWizardryEventHooks.forceSpawnMap.containsKey(new Integer(dimension))) - { - List list = AlchemicalWizardryEventHooks.forceSpawnMap.get(new Integer(dimension)); - if(list != null) - { - if(!list.contains(new CoordAndRange(x,y,z,horizRange,vertRange))) - { - boolean hasFoundAndRemoved = false; - for(CoordAndRange coords : list) - { - int xLocation = coords.xCoord; - int yLocation = coords.yCoord; - int zLocation = coords.zCoord; - - if(xLocation == x && yLocation == y && zLocation == z) - { - list.remove(coords); - hasFoundAndRemoved = true; - break; - } - } - list.add(new CoordAndRange(x,y,z,horizRange,vertRange)); - } - }else - { - list = new LinkedList(); - list.add(new CoordAndRange(x,y,z,horizRange,vertRange)); - AlchemicalWizardryEventHooks.forceSpawnMap.put(new Integer(dimension), list); - } - }else - { - List list = new LinkedList(); - list.add(new CoordAndRange(x,y,z,horizRange,vertRange)); - AlchemicalWizardryEventHooks.forceSpawnMap.put(new Integer(dimension), list); - } - - - SoulNetworkHandler.syphonFromNetwork(owner, this.getCostPerRefresh()); - } - } - - @Override - public int getCostPerRefresh() - { - return 20; - } - - @Override - public List getRitualComponentList() - { - ArrayList veilRitual = new ArrayList(); - - veilRitual.add(new RitualComponent(1, 0, 2, RitualComponent.DUSK)); - veilRitual.add(new RitualComponent(2, 0, 1, RitualComponent.DUSK)); - veilRitual.add(new RitualComponent(1, 0, -2, RitualComponent.DUSK)); - veilRitual.add(new RitualComponent(-2, 0, 1, RitualComponent.DUSK)); - veilRitual.add(new RitualComponent(-1, 0, 2, RitualComponent.DUSK)); - veilRitual.add(new RitualComponent(2, 0, -1, RitualComponent.DUSK)); - veilRitual.add(new RitualComponent(-1, 0, -2, RitualComponent.DUSK)); - veilRitual.add(new RitualComponent(-2, 0, -1, RitualComponent.DUSK)); - - veilRitual.add(new RitualComponent(3, 0, 3, RitualComponent.FIRE)); - veilRitual.add(new RitualComponent(-3, 0, 3, RitualComponent.FIRE)); - veilRitual.add(new RitualComponent(3, 0, -3, RitualComponent.FIRE)); - veilRitual.add(new RitualComponent(-3, 0, -3, RitualComponent.FIRE)); - - for(int i=0; i<=1; i++) - { - veilRitual.add(new RitualComponent((4+i), i, 0, RitualComponent.DUSK)); - veilRitual.add(new RitualComponent((4+i), i, -1, RitualComponent.BLANK)); - veilRitual.add(new RitualComponent((4+i), i, 1, RitualComponent.BLANK)); - - veilRitual.add(new RitualComponent(-(4+i), i, 0, RitualComponent.DUSK)); - veilRitual.add(new RitualComponent(-(4+i), i, -1, RitualComponent.BLANK)); - veilRitual.add(new RitualComponent(-(4+i), i, 1, RitualComponent.BLANK)); - - veilRitual.add(new RitualComponent(0, i, (4+i), RitualComponent.DUSK)); - veilRitual.add(new RitualComponent(1, i, (4+i), RitualComponent.BLANK)); - veilRitual.add(new RitualComponent(-1, i, (4+i), RitualComponent.BLANK)); - - veilRitual.add(new RitualComponent(0, i, -(4+i), RitualComponent.DUSK)); - veilRitual.add(new RitualComponent(1, i, -(4+i), RitualComponent.BLANK)); - veilRitual.add(new RitualComponent(-1, i, -(4+i), RitualComponent.BLANK)); - - veilRitual.add(new RitualComponent(4, i, 5, RitualComponent.EARTH)); - veilRitual.add(new RitualComponent(5, i, 4, RitualComponent.EARTH)); - veilRitual.add(new RitualComponent(4, i, -5, RitualComponent.EARTH)); - veilRitual.add(new RitualComponent(-5, i, 4, RitualComponent.EARTH)); - veilRitual.add(new RitualComponent(-4, i, 5, RitualComponent.EARTH)); - veilRitual.add(new RitualComponent(5, i, -4, RitualComponent.EARTH)); - veilRitual.add(new RitualComponent(-4, i, -5, RitualComponent.EARTH)); - veilRitual.add(new RitualComponent(-5, i, -4, RitualComponent.EARTH)); - } - - veilRitual.add(new RitualComponent(5, 1, 5, RitualComponent.BLANK)); - veilRitual.add(new RitualComponent(-5, 1, 5, RitualComponent.BLANK)); - veilRitual.add(new RitualComponent(5, 1, -5, RitualComponent.BLANK)); - veilRitual.add(new RitualComponent(-5, 1, -5, RitualComponent.BLANK)); - - return veilRitual; - } -} \ No newline at end of file diff --git a/src-backup/main/java/WayofTime/alchemicalWizardry/common/rituals/RitualEffectWater.java b/src-backup/main/java/WayofTime/alchemicalWizardry/common/rituals/RitualEffectWater.java deleted file mode 100644 index 9b1718cb..00000000 --- a/src-backup/main/java/WayofTime/alchemicalWizardry/common/rituals/RitualEffectWater.java +++ /dev/null @@ -1,202 +0,0 @@ -package WayofTime.alchemicalWizardry.common.rituals; - -import java.util.ArrayList; -import java.util.List; - -import net.minecraft.block.Block; -import net.minecraft.entity.Entity; -import net.minecraft.entity.EntityLivingBase; -import net.minecraft.entity.player.EntityPlayer; -import net.minecraft.init.Blocks; -import net.minecraft.potion.PotionEffect; -import net.minecraft.server.MinecraftServer; -import net.minecraft.tileentity.TileEntity; -import net.minecraft.world.World; -import net.minecraftforge.common.util.ForgeDirection; -import net.minecraftforge.fluids.Fluid; -import net.minecraftforge.fluids.FluidRegistry; -import net.minecraftforge.fluids.FluidStack; -import net.minecraftforge.fluids.IFluidHandler; -import WayofTime.alchemicalWizardry.AlchemicalWizardry; -import WayofTime.alchemicalWizardry.api.alchemy.energy.ReagentRegistry; -import WayofTime.alchemicalWizardry.api.rituals.IMasterRitualStone; -import WayofTime.alchemicalWizardry.api.rituals.RitualComponent; -import WayofTime.alchemicalWizardry.api.rituals.RitualEffect; -import WayofTime.alchemicalWizardry.api.soulNetwork.LifeEssenceNetwork; -import WayofTime.alchemicalWizardry.api.soulNetwork.SoulNetworkHandler; -import WayofTime.alchemicalWizardry.common.block.BlockSpectralContainer; -import WayofTime.alchemicalWizardry.common.spell.complex.effect.SpellHelper; - -public class RitualEffectWater extends RitualEffect -{ - public static final int aquasalusDrain = 5; - public static final int offensaDrain = 20; - public static final int sanctusDrain = 5; - public static final int reductusDrain = 2; - public static final int crystallosDrain = 10; - - public void performEffect(IMasterRitualStone ritualStone) - { - String owner = ritualStone.getOwner(); - - int currentEssence = SoulNetworkHandler.getCurrentEssence(owner); - World world = ritualStone.getWorld(); - int x = ritualStone.getXCoord(); - int y = ritualStone.getYCoord(); - int z = ritualStone.getZCoord(); - - boolean hasCrystallos = this.canDrainReagent(ritualStone, ReagentRegistry.crystallosReagent, crystallosDrain, false); - boolean hasAquasalus = this.canDrainReagent(ritualStone, ReagentRegistry.aquasalusReagent, aquasalusDrain, false); - boolean hasOffensa = this.canDrainReagent(ritualStone, ReagentRegistry.offensaReagent, offensaDrain, false); - - if(hasAquasalus) - { - int hydrationRange = 4; - int vertRange = 3; - - for(int i=-hydrationRange; i<=hydrationRange; i++) - { - for(int j=-vertRange; j<=vertRange; j++) - { - for(int k=-hydrationRange; k<=hydrationRange; k++) - { - if(SpellHelper.hydrateSoil(world, x+i, y+j, z+k)) - { - this.canDrainReagent(ritualStone, ReagentRegistry.aquasalusReagent, aquasalusDrain, true); - } - } - } - } - } - - if(hasOffensa) - { - boolean hasReductus = this.canDrainReagent(ritualStone, ReagentRegistry.reductusReagent, reductusDrain, false); - boolean drainReductus = world.getWorldTime() % 100 == 0; - - int range = 10; - List list = SpellHelper.getEntitiesInRange(world, x + 0.5, y + 0.5, z + 0.5, range, range); - for(Entity entity : list) - { - if(entity instanceof EntityLivingBase) - { - EntityLivingBase livingEntity = (EntityLivingBase) entity; - - if(livingEntity == SpellHelper.getPlayerForUsername(owner)) - { - continue; - } - - if(hasReductus && this.canDrainReagent(ritualStone, ReagentRegistry.reductusReagent, reductusDrain, false)) - { - if(livingEntity instanceof EntityPlayer) - { - if(drainReductus) - { - this.canDrainReagent(ritualStone, ReagentRegistry.reductusReagent, reductusDrain, true); - } - - continue; - } - } - - if(!livingEntity.isPotionActive(AlchemicalWizardry.customPotionDrowning)) - { - livingEntity.addPotionEffect(new PotionEffect(AlchemicalWizardry.customPotionDrowning.id,100,0)); - this.canDrainReagent(ritualStone, ReagentRegistry.offensaReagent, offensaDrain, true); - } - } - } - } - - Block block = world.getBlock(x, y + 1, z); - - if (world.isAirBlock(x, y + 1, z) && !(block instanceof BlockSpectralContainer)) - { - if (currentEssence < this.getCostPerRefresh()) - { - SoulNetworkHandler.causeNauseaToPlayer(owner); - } else - { - for (int i = 0; i < 10; i++) - { - SpellHelper.sendIndexedParticleToAllAround(world, x, y, z, 20, world.provider.dimensionId, 3, x, y, z); - } - - world.setBlock(x, y + 1, z, Blocks.water, 0, 3); - SoulNetworkHandler.syphonFromNetwork(owner, this.getCostPerRefresh()); - } - }else - { - boolean hasSanctus = this.canDrainReagent(ritualStone, ReagentRegistry.sanctusReagent, sanctusDrain, false); - if(!hasSanctus) - { - return; - } - TileEntity tile = world.getTileEntity(x, y + 1, z); - if(tile instanceof IFluidHandler) - { - int amount = ((IFluidHandler) tile).fill(ForgeDirection.DOWN, new FluidStack(FluidRegistry.WATER, 1000), false); - if(amount >= 1000) - { - ((IFluidHandler) tile).fill(ForgeDirection.DOWN, new FluidStack(FluidRegistry.WATER, 1000), true); - - this.canDrainReagent(ritualStone, ReagentRegistry.sanctusReagent, sanctusDrain, true); - - SoulNetworkHandler.syphonFromNetwork(owner, this.getCostPerRefresh()); - } - } - } - - if(hasCrystallos) - { - int range = 2; - for(int i=-range; i<=range; i++) - { - for(int j=-range; j<=range; j++) - { - for(int k=-range; k<=range; k++) - { - hasCrystallos = hasCrystallos && this.canDrainReagent(ritualStone, ReagentRegistry.crystallosReagent, crystallosDrain, false); - - if(hasCrystallos) - { - boolean success = false; - if(!world.isAirBlock(x+i, y+j, z+k) && SpellHelper.freezeWaterBlock(world, x+i, y+j, z+k)) - { - success = true; - }else - { - if(world.rand.nextInt(100) == 0 && world.isSideSolid(x+i, y+j-1, z+k, ForgeDirection.UP)) - { - success = true; - } - } - - if(success) - { - this.canDrainReagent(ritualStone, ReagentRegistry.crystallosReagent, crystallosDrain, true); - } - } - } - } - } - } - } - - public int getCostPerRefresh() - { - return 25; - } - - @Override - public List getRitualComponentList() - { - ArrayList waterRitual = new ArrayList(); - waterRitual.add(new RitualComponent(-1, 0, 1, 1)); - waterRitual.add(new RitualComponent(-1, 0, -1, 1)); - waterRitual.add(new RitualComponent(1, 0, -1, 1)); - waterRitual.add(new RitualComponent(1, 0, 1, 1)); - return waterRitual; - } -} diff --git a/src-backup/main/java/WayofTime/alchemicalWizardry/common/rituals/RitualEffectWellOfSuffering.java b/src-backup/main/java/WayofTime/alchemicalWizardry/common/rituals/RitualEffectWellOfSuffering.java deleted file mode 100644 index 7ec6e98b..00000000 --- a/src-backup/main/java/WayofTime/alchemicalWizardry/common/rituals/RitualEffectWellOfSuffering.java +++ /dev/null @@ -1,146 +0,0 @@ -package WayofTime.alchemicalWizardry.common.rituals; - -import java.util.ArrayList; -import java.util.Iterator; -import java.util.List; - -import net.minecraft.entity.EntityLivingBase; -import net.minecraft.entity.player.EntityPlayer; -import net.minecraft.potion.Potion; -import net.minecraft.potion.PotionEffect; -import net.minecraft.server.MinecraftServer; -import net.minecraft.util.AxisAlignedBB; -import net.minecraft.util.DamageSource; -import net.minecraft.world.World; -import WayofTime.alchemicalWizardry.AlchemicalWizardry; -import WayofTime.alchemicalWizardry.api.rituals.IMasterRitualStone; -import WayofTime.alchemicalWizardry.api.rituals.RitualComponent; -import WayofTime.alchemicalWizardry.api.rituals.RitualEffect; -import WayofTime.alchemicalWizardry.api.soulNetwork.LifeEssenceNetwork; -import WayofTime.alchemicalWizardry.api.soulNetwork.SoulNetworkHandler; -import WayofTime.alchemicalWizardry.common.spell.complex.effect.SpellHelper; -import WayofTime.alchemicalWizardry.common.tileEntity.TEAltar; - -public class RitualEffectWellOfSuffering extends RitualEffect -{ - public static final int timeDelay = 25; - public static final int amount = 10; - - @Override - public void performEffect(IMasterRitualStone ritualStone) - { - String owner = ritualStone.getOwner(); - - int currentEssence = SoulNetworkHandler.getCurrentEssence(owner); - World world = ritualStone.getWorld(); - int x = ritualStone.getXCoord(); - int y = ritualStone.getYCoord(); - int z = ritualStone.getZCoord(); - - if (world.getWorldTime() % this.timeDelay != 0) - { - return; - } - - TEAltar tileAltar = null; - boolean testFlag = false; - - for (int i = -5; i <= 5; i++) - { - for (int j = -5; j <= 5; j++) - { - for (int k = -10; k <= 10; k++) - { - if (world.getTileEntity(x + i, y + k, z + j) instanceof TEAltar) - { - tileAltar = (TEAltar) world.getTileEntity(x + i, y + k, z + j); - testFlag = true; - } - } - } - } - - if (!testFlag) - { - return; - } - - int d0 = 10; - int vertRange = 10; - AxisAlignedBB axisalignedbb = AxisAlignedBB.getBoundingBox((double) x, (double) y, (double) z, (double) (x + 1), (double) (y + 1), (double) (z + 1)).expand(d0, vertRange, d0); - List list = world.getEntitiesWithinAABB(EntityLivingBase.class, axisalignedbb); - - int entityCount = 0; - - if (currentEssence < this.getCostPerRefresh() * list.size()) - { - SoulNetworkHandler.causeNauseaToPlayer(owner); - } else - { - for(EntityLivingBase livingEntity : list) - { - if (livingEntity instanceof EntityPlayer || AlchemicalWizardry.wellBlacklist.contains(livingEntity.getClass())) - { - continue; - } - - if(livingEntity.attackEntityFrom(DamageSource.outOfWorld, 1)) - { - entityCount++; - tileAltar.sacrificialDaggerCall(this.amount, true); - } - } - - SoulNetworkHandler.syphonFromNetwork(owner, this.getCostPerRefresh() * entityCount); - } - } - - @Override - public int getCostPerRefresh() - { - return 2; - } - - @Override - public List getRitualComponentList() - { - ArrayList wellOfSufferingRitual = new ArrayList(); - wellOfSufferingRitual.add(new RitualComponent(1, 0, 1, RitualComponent.FIRE)); - wellOfSufferingRitual.add(new RitualComponent(-1, 0, 1, RitualComponent.FIRE)); - wellOfSufferingRitual.add(new RitualComponent(1, 0, -1, RitualComponent.FIRE)); - wellOfSufferingRitual.add(new RitualComponent(-1, 0, -1, RitualComponent.FIRE)); - wellOfSufferingRitual.add(new RitualComponent(2, -1, 2, RitualComponent.FIRE)); - wellOfSufferingRitual.add(new RitualComponent(2, -1, -2, RitualComponent.FIRE)); - wellOfSufferingRitual.add(new RitualComponent(-2, -1, 2, RitualComponent.FIRE)); - wellOfSufferingRitual.add(new RitualComponent(-2, -1, -2, RitualComponent.FIRE)); - wellOfSufferingRitual.add(new RitualComponent(0, -1, 2, RitualComponent.EARTH)); - wellOfSufferingRitual.add(new RitualComponent(2, -1, 0, RitualComponent.EARTH)); - wellOfSufferingRitual.add(new RitualComponent(0, -1, -2, RitualComponent.EARTH)); - wellOfSufferingRitual.add(new RitualComponent(-2, -1, 0, RitualComponent.EARTH)); - wellOfSufferingRitual.add(new RitualComponent(-3, -1, -3, RitualComponent.DUSK)); - wellOfSufferingRitual.add(new RitualComponent(3, -1, -3, RitualComponent.DUSK)); - wellOfSufferingRitual.add(new RitualComponent(-3, -1, 3, RitualComponent.DUSK)); - wellOfSufferingRitual.add(new RitualComponent(3, -1, 3, RitualComponent.DUSK)); - wellOfSufferingRitual.add(new RitualComponent(2, -1, 4, RitualComponent.WATER)); - wellOfSufferingRitual.add(new RitualComponent(4, -1, 2, RitualComponent.WATER)); - wellOfSufferingRitual.add(new RitualComponent(-2, -1, 4, RitualComponent.WATER)); - wellOfSufferingRitual.add(new RitualComponent(4, -1, -2, RitualComponent.WATER)); - wellOfSufferingRitual.add(new RitualComponent(2, -1, -4, RitualComponent.WATER)); - wellOfSufferingRitual.add(new RitualComponent(-4, -1, 2, RitualComponent.WATER)); - wellOfSufferingRitual.add(new RitualComponent(-2, -1, -4, RitualComponent.WATER)); - wellOfSufferingRitual.add(new RitualComponent(-4, -1, -2, RitualComponent.WATER)); - wellOfSufferingRitual.add(new RitualComponent(1, 0, 4, RitualComponent.WATER)); - wellOfSufferingRitual.add(new RitualComponent(4, 0, 1, RitualComponent.WATER)); - wellOfSufferingRitual.add(new RitualComponent(1, 0, -4, RitualComponent.WATER)); - wellOfSufferingRitual.add(new RitualComponent(-4, 0, 1, RitualComponent.WATER)); - wellOfSufferingRitual.add(new RitualComponent(-1, 0, 4, RitualComponent.WATER)); - wellOfSufferingRitual.add(new RitualComponent(4, 0, -1, RitualComponent.WATER)); - wellOfSufferingRitual.add(new RitualComponent(-1, 0, -4, RitualComponent.WATER)); - wellOfSufferingRitual.add(new RitualComponent(-4, 0, -1, RitualComponent.WATER)); - wellOfSufferingRitual.add(new RitualComponent(4, 1, 0, RitualComponent.AIR)); - wellOfSufferingRitual.add(new RitualComponent(0, 1, 4, RitualComponent.AIR)); - wellOfSufferingRitual.add(new RitualComponent(-4, 1, 0, RitualComponent.AIR)); - wellOfSufferingRitual.add(new RitualComponent(0, 1, -4, RitualComponent.AIR)); - return wellOfSufferingRitual; - } -} diff --git a/src-backup/main/java/WayofTime/alchemicalWizardry/common/spell/complex/EntitySpellProjectile.java b/src-backup/main/java/WayofTime/alchemicalWizardry/common/spell/complex/EntitySpellProjectile.java deleted file mode 100644 index 767b22f3..00000000 --- a/src-backup/main/java/WayofTime/alchemicalWizardry/common/spell/complex/EntitySpellProjectile.java +++ /dev/null @@ -1,624 +0,0 @@ -package WayofTime.alchemicalWizardry.common.spell.complex; - -import java.util.ArrayList; -import java.util.Iterator; -import java.util.LinkedList; -import java.util.List; - -import net.minecraft.block.Block; -import net.minecraft.entity.Entity; -import net.minecraft.entity.IProjectile; -import net.minecraft.entity.player.EntityPlayer; -import net.minecraft.nbt.NBTTagCompound; -import net.minecraft.nbt.NBTTagList; -import net.minecraft.util.AxisAlignedBB; -import net.minecraft.util.DamageSource; -import net.minecraft.util.MathHelper; -import net.minecraft.util.MovingObjectPosition; -import net.minecraft.util.Vec3; -import net.minecraft.world.World; -import net.minecraftforge.common.util.Constants; -import WayofTime.alchemicalWizardry.common.spell.complex.effect.SpellEffect; -import WayofTime.alchemicalWizardry.common.spell.complex.effect.impactEffects.IProjectileImpactEffect; -import WayofTime.alchemicalWizardry.common.spell.complex.effect.impactEffects.IProjectileUpdateEffect; -import cpw.mods.fml.relauncher.Side; -import cpw.mods.fml.relauncher.SideOnly; - -public class EntitySpellProjectile extends Entity implements IProjectile -{ - private int xTile = -1; - private int yTile = -1; - private int zTile = -1; - private int inTile = 0; - private int inData = 0; - private boolean inGround = false; - /** The owner of this arrow. */ - public EntityPlayer shootingEntity; - private int ticksInAir = 0; - private int ricochetCounter = 0; - private boolean scheduledForDeath = false; - private boolean isSilkTouch = false; - - //Custom variables - private int maxRicochet = 0; - private float damage = 1; - public List impactList = new ArrayList(); - private boolean penetration = false; - public List updateEffectList = new ArrayList(); - public List spellEffectList = new LinkedList(); - private int blocksBroken = 0; - - public EntitySpellProjectile(World par1World) - { - super(par1World); - this.setSize(0.5F, 0.5F); - } - - public EntitySpellProjectile(World par1World, double par2, double par4, double par6) - { - super(par1World); - this.setSize(0.5F, 0.5F); - this.setPosition(par2, par4, par6); - yOffset = 0.0F; - } - - public EntitySpellProjectile(World par1World, EntityPlayer par2EntityPlayer) - { - super(par1World); - shootingEntity = par2EntityPlayer; - float par3 = 0.8F; - this.setSize(0.1F, 0.1F); - this.setLocationAndAngles(par2EntityPlayer.posX, par2EntityPlayer.posY + par2EntityPlayer.getEyeHeight(), par2EntityPlayer.posZ, par2EntityPlayer.rotationYaw, par2EntityPlayer.rotationPitch); - posX -= MathHelper.cos(rotationYaw / 180.0F * (float)Math.PI) * 0.16F; - posY -= 0.2D; - posZ -= MathHelper.sin(rotationYaw / 180.0F * (float)Math.PI) * 0.16F; - this.setPosition(posX, posY, posZ); - yOffset = 0.0F; - motionX = -MathHelper.sin(rotationYaw / 180.0F * (float)Math.PI) * MathHelper.cos(rotationPitch / 180.0F * (float)Math.PI); - motionZ = MathHelper.cos(rotationYaw / 180.0F * (float)Math.PI) * MathHelper.cos(rotationPitch / 180.0F * (float)Math.PI); - motionY = -MathHelper.sin(rotationPitch / 180.0F * (float)Math.PI); - this.setThrowableHeading(motionX, motionY, motionZ, par3 * 1.5F, 1.0F); - - } - - @Override - protected void entityInit() { - dataWatcher.addObject(16, Byte.valueOf((byte)0)); - } - - /** - * Similar to setArrowHeading, it's point the throwable entity to a x, y, z - * direction. - */ - @Override - public void setThrowableHeading(double var1, double var3, double var5, float var7, float var8) { - float var9 = MathHelper.sqrt_double(var1 * var1 + var3 * var3 + var5 * var5); - var1 /= var9; - var3 /= var9; - var5 /= var9; - var1 += rand.nextGaussian() * 0.007499999832361937D * var8; - var3 += rand.nextGaussian() * 0.007499999832361937D * var8; - var5 += rand.nextGaussian() * 0.007499999832361937D * var8; - var1 *= var7; - var3 *= var7; - var5 *= var7; - motionX = var1; - motionY = var3; - motionZ = var5; - float var10 = MathHelper.sqrt_double(var1 * var1 + var5 * var5); - prevRotationYaw = rotationYaw = (float)(Math.atan2(var1, var5) * 180.0D / Math.PI); - prevRotationPitch = rotationPitch = (float)(Math.atan2(var3, var10) * 180.0D / Math.PI); - } - - @Override - @SideOnly(Side.CLIENT) - /** - * Sets the position and rotation. Only difference from the other one is no bounding on the rotation. Args: posX, - * posY, posZ, yaw, pitch - */ - public void setPositionAndRotation2(double par1, double par3, double par5, float par7, float par8, int par9) { - this.setPosition(par1, par3, par5); - this.setRotation(par7, par8); - } - - @Override - @SideOnly(Side.CLIENT) - /** - * Sets the velocity to the args. Args: x, y, z - */ - public void setVelocity(double par1, double par3, double par5) { - motionX = par1; - motionY = par3; - motionZ = par5; - if (prevRotationPitch == 0.0F && prevRotationYaw == 0.0F) { - float var7 = MathHelper.sqrt_double(par1 * par1 + par5 * par5); - prevRotationYaw = rotationYaw = (float)(Math.atan2(par1, par5) * 180.0D / Math.PI); - prevRotationPitch = rotationPitch = (float)(Math.atan2(par3, var7) * 180.0D / Math.PI); - prevRotationPitch = rotationPitch; - prevRotationYaw = rotationYaw; - this.setLocationAndAngles(posX, posY, posZ, rotationYaw, rotationPitch); - } - } - - /** - * Called to update the entity's position/logic. - */ - @Override - public void onUpdate() - { - super.onUpdate(); - this.performUpdateEffects(); - if (ticksInAir > 600) { - this.setDead(); - } - if (shootingEntity == null) { - List players = worldObj.getEntitiesWithinAABB(EntityPlayer.class, AxisAlignedBB.getBoundingBox(posX - 1, posY - 1, posZ - 1, posX + 1, posY + 1, posZ + 1)); - Iterator i = players.iterator(); - double closestDistance = Double.MAX_VALUE; - EntityPlayer closestPlayer = null; - while (i.hasNext()) { - EntityPlayer e = (EntityPlayer)i.next(); - double distance = e.getDistanceToEntity(this); - if (distance < closestDistance) { - closestPlayer = e; - } - } - if (closestPlayer != null) { - shootingEntity = closestPlayer; - } - } - if (prevRotationPitch == 0.0F && prevRotationYaw == 0.0F) { - float var1 = MathHelper.sqrt_double(motionX * motionX + motionZ * motionZ); - prevRotationYaw = rotationYaw = (float)(Math.atan2(motionX, motionZ) * 180.0D / Math.PI); - prevRotationPitch = rotationPitch = (float)(Math.atan2(motionY, var1) * 180.0D / Math.PI); - } - Block var16 = worldObj.getBlock(xTile, yTile, zTile); - - if (var16 != null) - { - var16.setBlockBoundsBasedOnState(worldObj, xTile, yTile, zTile); - AxisAlignedBB var2 = var16.getCollisionBoundingBoxFromPool(worldObj, xTile, yTile, zTile); - - if (var2 != null && var2.isVecInside(Vec3.createVectorHelper(posX, posY, posZ))) - { - inGround = true; - } - } - - if (inGround) - { - Block var18 = worldObj.getBlock(xTile, yTile, zTile); - int var19 = worldObj.getBlockMetadata(xTile, yTile, zTile); - - if (var18.equals(Block.getBlockById(inTile)) && var19 == inData) - { - // this.groundImpact(); - // this.setDead(); - } - } else - { - ++ticksInAir; - - if (ticksInAir > 1 && ticksInAir < 3) - { - //worldObj.spawnParticle("flame", posX + smallGauss(0.1D), posY + smallGauss(0.1D), posZ + smallGauss(0.1D), 0D, 0D, 0D); - for (int particles = 0; particles < 3; particles++) - { - this.doFiringParticles(); - } - } - - Vec3 var17 = Vec3.createVectorHelper(posX, posY, posZ); - Vec3 var3 = Vec3.createVectorHelper(posX + motionX, posY + motionY, posZ + motionZ); - MovingObjectPosition var4 = worldObj.func_147447_a(var17, var3, true, false, false); - var17 = Vec3.createVectorHelper(posX, posY, posZ); - var3 = Vec3.createVectorHelper(posX + motionX, posY + motionY, posZ + motionZ); - - if (var4 != null) - { - var3 = Vec3.createVectorHelper(var4.hitVec.xCoord, var4.hitVec.yCoord, var4.hitVec.zCoord); - } - - Entity var5 = null; - List var6 = worldObj.getEntitiesWithinAABBExcludingEntity(this, boundingBox.addCoord(motionX, motionY, motionZ).expand(1.0D, 1.0D, 1.0D)); - double var7 = 0.0D; - Iterator var9 = var6.iterator(); - float var11; - - while (var9.hasNext()) - { - Entity var10 = (Entity) var9.next(); - - if (var10.canBeCollidedWith() && (var10 != shootingEntity || ticksInAir >= 5)) - { - var11 = 0.3F; - AxisAlignedBB var12 = var10.boundingBox.expand(var11, var11, var11); - MovingObjectPosition var13 = var12.calculateIntercept(var17, var3); - - if (var13 != null) - { - double var14 = var17.distanceTo(var13.hitVec); - - if (var14 < var7 || var7 == 0.0D) - { - var5 = var10; - var7 = var14; - } - } - } - } - - if (var5 != null) - { - var4 = new MovingObjectPosition(var5); - } - - if (var4 != null) - { - this.onImpact(var4); - - if (scheduledForDeath) - { - this.setDead(); - } - } - - posX += motionX; - posY += motionY; - posZ += motionZ; - MathHelper.sqrt_double(motionX * motionX + motionZ * motionZ); - this.setPosition(posX, posY, posZ); - //this.doBlockCollisions(); - } - } - - private void doFlightParticles() { - if (ticksInAir % 3 == 0) { - double gauss = gaussian(1.0F); - worldObj.spawnParticle("mobSpell", posX, posY, posZ, gauss, gauss, 0.0F); - } - } - - private void doFiringParticles() { - worldObj.spawnParticle("mobSpellAmbient", posX + smallGauss(0.1D), posY + smallGauss(0.1D), posZ + smallGauss(0.1D), 0.5D, 0.5D, 0.5D); - worldObj.spawnParticle("flame", posX, posY, posZ, gaussian(motionX), gaussian(motionY), gaussian(motionZ)); - } - - /** - * (abstract) Protected helper method to write subclass entity data to NBT. - */ - @Override - public void writeEntityToNBT(NBTTagCompound par1NBTTagCompound) - { - par1NBTTagCompound.setShort("xTile", (short)xTile); - par1NBTTagCompound.setShort("yTile", (short)yTile); - par1NBTTagCompound.setShort("zTile", (short)zTile); - par1NBTTagCompound.setByte("inTile", (byte)inTile); - par1NBTTagCompound.setByte("inData", (byte)inData); - par1NBTTagCompound.setByte("inGround", (byte)(inGround ? 1 : 0)); - - NBTTagList effectList = new NBTTagList(); - - for(SpellEffect eff : spellEffectList) - { - effectList.appendTag(eff.getTag()); - } - -// for (String str : this.effectList) -// { -// if (str != null) -// { -// NBTTagCompound tag = new NBTTagCompound(); -// -// tag.setString("Class", str); -// effectList.appendTag(tag); -// } -// } - - par1NBTTagCompound.setTag("Effects", effectList); - par1NBTTagCompound.setInteger("blocksBroken", blocksBroken); - par1NBTTagCompound.setBoolean("isSilkTouch", isSilkTouch); - } - - /** - * (abstract) Protected helper method to read subclass entity data from NBT. - */ - @Override - public void readEntityFromNBT(NBTTagCompound par1NBTTagCompound) - { - xTile = par1NBTTagCompound.getShort("xTile"); - yTile = par1NBTTagCompound.getShort("yTile"); - zTile = par1NBTTagCompound.getShort("zTile"); - inTile = par1NBTTagCompound.getByte("inTile") & 255; - inData = par1NBTTagCompound.getByte("inData") & 255; - inGround = par1NBTTagCompound.getByte("inGround") == 1; - blocksBroken = par1NBTTagCompound.getInteger("blocksBroken"); - isSilkTouch = par1NBTTagCompound.getBoolean("isSilkTouch"); - - NBTTagList tagList = par1NBTTagCompound.getTagList("Effects",Constants.NBT.TAG_COMPOUND); - - List spellEffectList = new LinkedList(); - for (int i = 0; i < tagList.tagCount(); i++) - { - NBTTagCompound tag = (NBTTagCompound) tagList.getCompoundTagAt(i); - - SpellEffect eff = SpellEffect.getEffectFromTag(tag); - if(eff!=null) - { - spellEffectList.add(eff); - } - } - this.spellEffectList = spellEffectList; - - -// this.effectList = new LinkedList(); -// for (int i = 0; i < tagList.tagCount(); i++) -// { -// NBTTagCompound tag = (NBTTagCompound) tagList.tagAt(i); -// -// this.effectList.add(tag.getString("Class")); -// } - - //SpellParadigmProjectile parad = SpellParadigmProjectile.getParadigmForStringArray(effectList); - SpellParadigmProjectile parad = SpellParadigmProjectile.getParadigmForEffectArray(spellEffectList); - parad.applyAllSpellEffects(); - parad.prepareProjectile(this); - } - - /** - * returns if this entity triggers Block.onEntityWalking on the blocks they - * walk on. used for spiders and wolves to prevent them from trampling crops - */ - @Override - protected boolean canTriggerWalking() { - return false; - } - - @Override - @SideOnly(Side.CLIENT) - public float getShadowSize() { - return 0.0F; - } - - /** - * Sets the amount of knockback the arrow applies when it hits a mob. - */ - public void setKnockbackStrength(int par1) { - } - - /** - * If returns false, the item will not inflict any damage against entities. - */ - @Override - public boolean canAttackWithItem() { - return false; - } - - /** - * Whether the arrow has a stream of critical hit particles flying behind - * it. - */ - public void setIsCritical(boolean par1) { - byte var2 = dataWatcher.getWatchableObjectByte(16); - if (par1) { - dataWatcher.updateObject(16, Byte.valueOf((byte)(var2 | 1))); - } else { - dataWatcher.updateObject(16, Byte.valueOf((byte)(var2 & -2))); - } - } - - /** - * Whether the arrow has a stream of critical hit particles flying behind - * it. - */ - public boolean getIsCritical() { - byte var1 = dataWatcher.getWatchableObjectByte(16); - return (var1 & 1) != 0; - } - - private void onImpact(MovingObjectPosition mop) - { - if (mop.typeOfHit == MovingObjectPosition.MovingObjectType.ENTITY && mop.entityHit != null) - { - if (mop.entityHit == shootingEntity) return; - this.onImpact(mop.entityHit); - this.performEntityImpactEffects(mop.entityHit); - } - else if (mop.typeOfHit == MovingObjectPosition.MovingObjectType.BLOCK) - { - if(!this.penetration) - { - this.groundImpact(mop.sideHit); - this.performTileImpactEffects(mop); - } - } - } - - private void onImpact(Entity mop) //TODO - { - if (mop == shootingEntity && ticksInAir > 3) - { - shootingEntity.attackEntityFrom(DamageSource.causePlayerDamage(shootingEntity), 1); - this.setDead(); - } - else - { - doDamage(this.damage, mop); - } - spawnHitParticles("exorcism", 8); - this.setDead(); - } - - - private void spawnHitParticles(String string, int i) { - for (int particles = 0; particles < i; particles++) { - worldObj.spawnParticle("mobSpellAmbient", posX + smallGauss(0.1D), posY + smallGauss(0.1D), posZ + smallGauss(0.1D), posGauss(1.0F), posGauss(1.0F), 0.0F); - } - } - - private void doDamage(float f, Entity mop) - { - mop.attackEntityFrom(this.getDamageSource(), f); - } - - private DamageSource getDamageSource() - { - return DamageSource.causePlayerDamage(shootingEntity); - } - - private void groundImpact(int sideHit) { - this.ricochet(sideHit); - } - - private double smallGauss(double d) { - return (worldObj.rand.nextFloat() - 0.5D) * d; - } - - private double posGauss(double d) { - return rand.nextFloat() * 0.5D * d; - } - - private double gaussian(double d) { - return d + d * ((rand.nextFloat() - 0.5D) / 4); - } - - private void ricochet(int sideHit) { - switch (sideHit) { - case 0: - case 1: - // topHit, bottomHit, reflect Y - motionY = motionY * -1; - break; - case 2: - case 3: - // westHit, eastHit, reflect Z - motionZ = motionZ * -1; - break; - case 4: - case 5: - // southHit, northHit, reflect X - motionX = motionX * -1; - break; - } - ricochetCounter++; - if (ricochetCounter > this.getRicochetMax()) { - scheduledForDeath = true; - for (int particles = 0; particles < 4; particles++) { - switch (sideHit) { - case 0: - worldObj.spawnParticle("smoke", posX, posY, posZ, gaussian(0.1D), -gaussian(0.1D), gaussian(0.1D)); - break; - case 1: - worldObj.spawnParticle("smoke", posX, posY, posZ, gaussian(0.1D), gaussian(0.1D), gaussian(0.1D)); - break; - case 2: - worldObj.spawnParticle("smoke", posX, posY, posZ, gaussian(0.1D), gaussian(0.1D), -gaussian(0.1D)); - break; - case 3: - worldObj.spawnParticle("smoke", posX, posY, posZ, gaussian(0.1D), gaussian(0.1D), gaussian(0.1D)); - break; - case 4: - worldObj.spawnParticle("smoke", posX, posY, posZ, -gaussian(0.1D), gaussian(0.1D), gaussian(0.1D)); - break; - case 5: - worldObj.spawnParticle("smoke", posX, posY, posZ, gaussian(0.1D), gaussian(0.1D), gaussian(0.1D)); - break; - } - } - } - } - - //Custom stuff - public int getRicochetMax() - { - return this.maxRicochet; - } - - public void setRicochetMax(int ricochet) - { - this.maxRicochet = ricochet; - } - - public void setImpactList(List list) - { - this.impactList = list; - } - - public void setUpdateEffectList(List list) - { - this.updateEffectList = list; - } - - private void performEntityImpactEffects(Entity mop) - { - if(impactList!=null) - { - for(IProjectileImpactEffect impactEffect : impactList) - { - impactEffect.onEntityImpact(mop, this); - } - } - } - - private void performTileImpactEffects(MovingObjectPosition mop) - { - if(impactList!=null) - { - for(IProjectileImpactEffect impactEffect : impactList) - { - impactEffect.onTileImpact(worldObj, mop); - } - } - } - - private void performUpdateEffects() - { - if(updateEffectList!=null) - { - for(IProjectileUpdateEffect updateEffect : updateEffectList) - { - updateEffect.onUpdateEffect(this); - } - } - } - - public void setPenetration(boolean penetration) - { - this.penetration = penetration; - } - - public float getDamage() - { - return this.damage; - } - - public void setDamage(float damage) - { - this.damage = damage; - } - - public void setSpellEffectList(List list) - { - this.spellEffectList = list; - } - - public int getBlocksBroken() - { - return this.blocksBroken; - } - - public void setBlocksBroken(int blocksBroken) - { - this.blocksBroken = blocksBroken; - } - - public boolean getIsSilkTouch() - { - return this.isSilkTouch; - } - - public void setIsSilkTouch(boolean bool) - { - this.isSilkTouch = bool; - } -} diff --git a/src-backup/main/java/WayofTime/alchemicalWizardry/common/spell/complex/SpellModifier.java b/src-backup/main/java/WayofTime/alchemicalWizardry/common/spell/complex/SpellModifier.java deleted file mode 100644 index 39297530..00000000 --- a/src-backup/main/java/WayofTime/alchemicalWizardry/common/spell/complex/SpellModifier.java +++ /dev/null @@ -1,21 +0,0 @@ -package WayofTime.alchemicalWizardry.common.spell.complex; - -public class SpellModifier -{ - public static final int DEFAULT = 0; - public static final int OFFENSIVE = 1; - public static final int DEFENSIVE = 2; - public static final int ENVIRONMENTAL = 3; - - private int modifier; - - protected SpellModifier(int modifier) - { - this.modifier = modifier; - } - - public int getModifier() - { - return this.modifier; - } -} diff --git a/src-backup/main/java/WayofTime/alchemicalWizardry/common/spell/complex/SpellModifierDefault.java b/src-backup/main/java/WayofTime/alchemicalWizardry/common/spell/complex/SpellModifierDefault.java deleted file mode 100644 index fd379ae1..00000000 --- a/src-backup/main/java/WayofTime/alchemicalWizardry/common/spell/complex/SpellModifierDefault.java +++ /dev/null @@ -1,9 +0,0 @@ -package WayofTime.alchemicalWizardry.common.spell.complex; - -public class SpellModifierDefault extends SpellModifier -{ - public SpellModifierDefault() - { - super(SpellModifier.DEFAULT); - } -} diff --git a/src-backup/main/java/WayofTime/alchemicalWizardry/common/spell/complex/SpellModifierDefensive.java b/src-backup/main/java/WayofTime/alchemicalWizardry/common/spell/complex/SpellModifierDefensive.java deleted file mode 100644 index f9f69dbe..00000000 --- a/src-backup/main/java/WayofTime/alchemicalWizardry/common/spell/complex/SpellModifierDefensive.java +++ /dev/null @@ -1,9 +0,0 @@ -package WayofTime.alchemicalWizardry.common.spell.complex; - -public class SpellModifierDefensive extends SpellModifier -{ - public SpellModifierDefensive() - { - super(SpellModifier.DEFENSIVE); - } -} diff --git a/src-backup/main/java/WayofTime/alchemicalWizardry/common/spell/complex/SpellModifierEnvironmental.java b/src-backup/main/java/WayofTime/alchemicalWizardry/common/spell/complex/SpellModifierEnvironmental.java deleted file mode 100644 index ff9ef7f4..00000000 --- a/src-backup/main/java/WayofTime/alchemicalWizardry/common/spell/complex/SpellModifierEnvironmental.java +++ /dev/null @@ -1,9 +0,0 @@ -package WayofTime.alchemicalWizardry.common.spell.complex; - -public class SpellModifierEnvironmental extends SpellModifier -{ - public SpellModifierEnvironmental() - { - super(SpellModifier.ENVIRONMENTAL); - } -} diff --git a/src-backup/main/java/WayofTime/alchemicalWizardry/common/spell/complex/SpellModifierOffensive.java b/src-backup/main/java/WayofTime/alchemicalWizardry/common/spell/complex/SpellModifierOffensive.java deleted file mode 100644 index 783ab1e3..00000000 --- a/src-backup/main/java/WayofTime/alchemicalWizardry/common/spell/complex/SpellModifierOffensive.java +++ /dev/null @@ -1,9 +0,0 @@ -package WayofTime.alchemicalWizardry.common.spell.complex; - -public class SpellModifierOffensive extends SpellModifier -{ - public SpellModifierOffensive() - { - super(SpellModifier.OFFENSIVE); - } -} diff --git a/src-backup/main/java/WayofTime/alchemicalWizardry/common/spell/complex/SpellParadigm.java b/src-backup/main/java/WayofTime/alchemicalWizardry/common/spell/complex/SpellParadigm.java deleted file mode 100644 index 75bad220..00000000 --- a/src-backup/main/java/WayofTime/alchemicalWizardry/common/spell/complex/SpellParadigm.java +++ /dev/null @@ -1,163 +0,0 @@ -package WayofTime.alchemicalWizardry.common.spell.complex; - -import java.util.ArrayList; -import java.util.LinkedList; -import java.util.List; - -import net.minecraft.entity.player.EntityPlayer; -import net.minecraft.item.ItemStack; -import net.minecraft.world.World; -import WayofTime.alchemicalWizardry.common.spell.complex.effect.SpellEffect; -import WayofTime.alchemicalWizardry.common.spell.complex.enhancement.SpellEnhancement; - -public abstract class SpellParadigm -{ - protected List bufferedEffectList = new LinkedList(); - public List effectList = new LinkedList(); - - public void addBufferedEffect(SpellEffect effect) - { - if(effect!=null) - { - this.bufferedEffectList.add(effect); - - effectList.add(effect.getClass().getName()); - } - } - - public void modifyBufferedEffect(SpellModifier modifier) - { - SpellEffect effect = this.getBufferedEffect(); - if(effect!=null) - { - effect.modifyEffect(modifier); - - effectList.add(modifier.getClass().getName()); - } - } - - public void applyEnhancement(SpellEnhancement enh) - { - if(enh!=null) - { - if(bufferedEffectList.isEmpty()) - { - this.enhanceParadigm(enh); - } - else - { - SpellEffect effect = this.getBufferedEffect(); - if(effect!=null) - { - effect.enhanceEffect(enh); - } - } - - effectList.add(enh.getClass().getName()); - } - - } - - public abstract void enhanceParadigm(SpellEnhancement enh); - public abstract void castSpell(World world, EntityPlayer entityPlayer, ItemStack itemStack); - - public void applySpellEffect(SpellEffect effect) - { - effect.modifyParadigm(this); - } - - public void applyAllSpellEffects() - { - for(SpellEffect effect : bufferedEffectList) - { - this.applySpellEffect(effect); - } - } - - public SpellEffect getBufferedEffect() - { - if(bufferedEffectList.isEmpty()) - { - return null; - } - else - { - return bufferedEffectList.get(bufferedEffectList.size()-1); - } - } - - public int getTotalCost() - { - int cost = 0; - if(this.bufferedEffectList!=null && !this.bufferedEffectList.isEmpty()) - { - if(this instanceof SpellParadigmProjectile) - { - for(SpellEffect effect : bufferedEffectList) - { - cost+=effect.getCostForProjectile(); - } - }else if(this instanceof SpellParadigmSelf) - { - for(SpellEffect effect : bufferedEffectList) - { - cost+=effect.getCostForSelf(); - } - }else if(this instanceof SpellParadigmMelee) - { - for(SpellEffect effect : bufferedEffectList) - { - cost+=effect.getCostForMelee(); - } - }else if(this instanceof SpellParadigmTool) - { - for(SpellEffect effect : bufferedEffectList) - { - cost+=effect.getCostForTool(); - } - } - - return (int)(cost*Math.sqrt(this.bufferedEffectList.size())); - } - - return getDefaultCost(); - } - - public abstract int getDefaultCost(); - - public int getBufferedEffectPower() - { - SpellEffect eff = this.getBufferedEffect(); - - if(eff!=null) - { - return eff.getPowerEnhancements(); - } - - return 0; - } - - public int getBufferedEffectCost() - { - SpellEffect eff = this.getBufferedEffect(); - - if(eff!=null) - { - return eff.getCostEnhancements(); - } - - return 0; - } - - public int getBufferedEffectPotency() - { - SpellEffect eff = this.getBufferedEffect(); - - if(eff!=null) - { - return eff.getPotencyEnhancements(); - } - - return 0; - } -} diff --git a/src-backup/main/java/WayofTime/alchemicalWizardry/common/spell/complex/SpellParadigmMelee.java b/src-backup/main/java/WayofTime/alchemicalWizardry/common/spell/complex/SpellParadigmMelee.java deleted file mode 100644 index b1cac7de..00000000 --- a/src-backup/main/java/WayofTime/alchemicalWizardry/common/spell/complex/SpellParadigmMelee.java +++ /dev/null @@ -1,70 +0,0 @@ -package WayofTime.alchemicalWizardry.common.spell.complex; - -import java.util.ArrayList; -import java.util.List; - -import net.minecraft.entity.player.EntityPlayer; -import net.minecraft.item.ItemStack; -import net.minecraft.world.World; -import WayofTime.alchemicalWizardry.common.items.EnergyItems; -import WayofTime.alchemicalWizardry.common.spell.complex.effect.impactEffects.IMeleeSpellEntityEffect; -import WayofTime.alchemicalWizardry.common.spell.complex.effect.impactEffects.IMeleeSpellWorldEffect; -import WayofTime.alchemicalWizardry.common.spell.complex.enhancement.SpellEnhancement; - -public class SpellParadigmMelee extends SpellParadigm -{ - private List entityEffectList; - private List worldEffectList; - - public SpellParadigmMelee() - { - this.entityEffectList = new ArrayList(); - this.worldEffectList = new ArrayList(); - } - - @Override - public void enhanceParadigm(SpellEnhancement enh) - { - - } - - @Override - public void castSpell(World world, EntityPlayer entityPlayer, ItemStack itemStack) - { - for(IMeleeSpellEntityEffect effect : entityEffectList) - { - effect.onEntityImpact(world, entityPlayer); - } - - for(IMeleeSpellWorldEffect effect : worldEffectList) - { - effect.onWorldEffect(world, entityPlayer); - } - - int cost = this.getTotalCost(); - - EnergyItems.syphonBatteries(itemStack, entityPlayer, cost); - } - - public void addEntityEffect(IMeleeSpellEntityEffect eff) - { - if(eff!=null) - { - this.entityEffectList.add(eff); - } - } - - public void addWorldEffect(IMeleeSpellWorldEffect eff) - { - if(eff!=null) - { - this.worldEffectList.add(eff); - } - } - - @Override - public int getDefaultCost() - { - return 0; - } -} diff --git a/src-backup/main/java/WayofTime/alchemicalWizardry/common/spell/complex/SpellParadigmProjectile.java b/src-backup/main/java/WayofTime/alchemicalWizardry/common/spell/complex/SpellParadigmProjectile.java deleted file mode 100644 index 8bb44f6a..00000000 --- a/src-backup/main/java/WayofTime/alchemicalWizardry/common/spell/complex/SpellParadigmProjectile.java +++ /dev/null @@ -1,102 +0,0 @@ -package WayofTime.alchemicalWizardry.common.spell.complex; - -import java.util.ArrayList; -import java.util.List; - -import net.minecraft.entity.player.EntityPlayer; -import net.minecraft.item.ItemStack; -import net.minecraft.util.DamageSource; -import net.minecraft.world.World; -import WayofTime.alchemicalWizardry.common.items.EnergyItems; -import WayofTime.alchemicalWizardry.common.spell.complex.effect.SpellEffect; -import WayofTime.alchemicalWizardry.common.spell.complex.effect.impactEffects.IProjectileImpactEffect; -import WayofTime.alchemicalWizardry.common.spell.complex.effect.impactEffects.IProjectileUpdateEffect; -import WayofTime.alchemicalWizardry.common.spell.complex.effect.impactEffects.fire.ProjectileDefaultFire; -import WayofTime.alchemicalWizardry.common.spell.complex.enhancement.SpellEnhancement; - -public class SpellParadigmProjectile extends SpellParadigm -{ - public DamageSource damageSource; - public float damage; - public int cost; - public List impactList; - public List updateEffectList; - public boolean penetration; - public int ricochetMax; - public boolean isSilkTouch; - - public SpellParadigmProjectile() - { - this.damageSource = DamageSource.generic; - this.damage = 1; - this.cost = 0; - this.impactList = new ArrayList(); - this.updateEffectList = new ArrayList(); - this.penetration = false; - this.ricochetMax = 0; - this.isSilkTouch = false; - } - - @Override - public void enhanceParadigm(SpellEnhancement enh) - { - - } - - @Override - public void castSpell(World world, EntityPlayer entityPlayer, ItemStack itemStack) - { - EntitySpellProjectile proj = new EntitySpellProjectile(world, entityPlayer); - this.prepareProjectile(proj); - world.spawnEntityInWorld(proj); - int cost = this.getTotalCost(); - - EnergyItems.syphonBatteries(itemStack, entityPlayer, cost); - } - - public static SpellParadigmProjectile getParadigmForEffectArray(List effectList) - { - SpellParadigmProjectile parad = new SpellParadigmProjectile(); - - for(SpellEffect eff : effectList) - { - parad.addBufferedEffect(eff); - } - - return parad; - } - - public void prepareProjectile(EntitySpellProjectile proj) - { - proj.setDamage(damage); - proj.setImpactList(impactList); - proj.setUpdateEffectList(updateEffectList); - proj.setPenetration(penetration); - proj.setRicochetMax(ricochetMax); - proj.setIsSilkTouch(isSilkTouch); - proj.setSpellEffectList(bufferedEffectList); - } - - public void addImpactEffect(IProjectileImpactEffect eff) - { - if(eff!=null) - { - this.impactList.add(eff); - } - } - - public void addUpdateEffect(IProjectileUpdateEffect eff) - { - if(eff!=null) - { - this.updateEffectList.add(eff); - } - } - - @Override - public int getDefaultCost() - { - return 50; - } - -} diff --git a/src-backup/main/java/WayofTime/alchemicalWizardry/common/spell/complex/SpellParadigmSelf.java b/src-backup/main/java/WayofTime/alchemicalWizardry/common/spell/complex/SpellParadigmSelf.java deleted file mode 100644 index 94a7186a..00000000 --- a/src-backup/main/java/WayofTime/alchemicalWizardry/common/spell/complex/SpellParadigmSelf.java +++ /dev/null @@ -1,58 +0,0 @@ -package WayofTime.alchemicalWizardry.common.spell.complex; - -import java.util.ArrayList; -import java.util.List; - -import WayofTime.alchemicalWizardry.common.items.EnergyItems; -import WayofTime.alchemicalWizardry.common.spell.complex.effect.SpellEffect; -import WayofTime.alchemicalWizardry.common.spell.complex.effect.impactEffects.ISelfSpellEffect; -import WayofTime.alchemicalWizardry.common.spell.complex.enhancement.SpellEnhancement; -import net.minecraft.entity.player.EntityPlayer; -import net.minecraft.item.ItemStack; -import net.minecraft.world.World; - -public class SpellParadigmSelf extends SpellParadigm -{ - public List selfSpellEffectList; - - public SpellParadigmSelf() - { - selfSpellEffectList = new ArrayList(); - } - - @Override - public void enhanceParadigm(SpellEnhancement enh) - { - - } - - @Override - public void castSpell(World world, EntityPlayer entityPlayer, ItemStack itemStack) - { - this.applyAllSpellEffects(); - - for(ISelfSpellEffect eff : selfSpellEffectList) - { - eff.onSelfUse(world, entityPlayer); - } - - int cost = this.getTotalCost(); - - EnergyItems.syphonBatteries(itemStack, entityPlayer, cost); - } - - public void addSelfSpellEffect(ISelfSpellEffect eff) - { - if(eff!=null) - { - this.selfSpellEffectList.add(eff); - } - } - - @Override - public int getDefaultCost() - { - return 100; - } - -} diff --git a/src-backup/main/java/WayofTime/alchemicalWizardry/common/spell/complex/SpellParadigmTool.java b/src-backup/main/java/WayofTime/alchemicalWizardry/common/spell/complex/SpellParadigmTool.java deleted file mode 100644 index 16b1498f..00000000 --- a/src-backup/main/java/WayofTime/alchemicalWizardry/common/spell/complex/SpellParadigmTool.java +++ /dev/null @@ -1,501 +0,0 @@ -package WayofTime.alchemicalWizardry.common.spell.complex; - -import java.util.HashMap; -import java.util.LinkedList; -import java.util.List; -import java.util.Map.Entry; -import java.util.Set; - -import net.minecraft.block.Block; -import net.minecraft.entity.Entity; -import net.minecraft.entity.EntityLivingBase; -import net.minecraft.entity.player.EntityPlayer; -import net.minecraft.item.ItemStack; -import net.minecraft.util.MovingObjectPosition; -import net.minecraft.world.World; -import net.minecraftforge.common.util.ForgeDirection; -import WayofTime.alchemicalWizardry.ModItems; -import WayofTime.alchemicalWizardry.common.items.EnergyItems; -import WayofTime.alchemicalWizardry.common.items.spell.ItemSpellMultiTool; -import WayofTime.alchemicalWizardry.common.spell.complex.effect.SpellEffect; -import WayofTime.alchemicalWizardry.common.spell.complex.effect.SpellHelper; -import WayofTime.alchemicalWizardry.common.spell.complex.effect.impactEffects.tool.IDigAreaEffect; -import WayofTime.alchemicalWizardry.common.spell.complex.effect.impactEffects.tool.IItemManipulator; -import WayofTime.alchemicalWizardry.common.spell.complex.effect.impactEffects.tool.ILeftClickEffect; -import WayofTime.alchemicalWizardry.common.spell.complex.effect.impactEffects.tool.IOnBanishTool; -import WayofTime.alchemicalWizardry.common.spell.complex.effect.impactEffects.tool.IOnBreakBlock; -import WayofTime.alchemicalWizardry.common.spell.complex.effect.impactEffects.tool.IOnSummonTool; -import WayofTime.alchemicalWizardry.common.spell.complex.effect.impactEffects.tool.IRightClickEffect; -import WayofTime.alchemicalWizardry.common.spell.complex.effect.impactEffects.tool.ISpecialDamageEffect; -import WayofTime.alchemicalWizardry.common.spell.complex.effect.impactEffects.tool.IToolUpdateEffect; -import WayofTime.alchemicalWizardry.common.spell.complex.effect.impactEffects.tool.RightClickTunnel; -import WayofTime.alchemicalWizardry.common.spell.complex.enhancement.SpellEnhancement; - -public class SpellParadigmTool extends SpellParadigm -{ - private List leftClickEffectList; - private List rightClickEffectList; - private List toolUpdateEffectList; - private List toolSummonEffectList; - private List toolBanishEffectList; - private List breakBlockEffectList; - private List itemManipulatorEffectList; - private List digAreaEffectList; - private List specialDamageEffectList; - - private float maxDamage; - private HashMap harvestLevel; - private HashMap digSpeed; - private HashMap maxDamageHash; - private HashMap critChanceHash; - private HashMap durationHash; //ticks - - private HashMap toolInfoString; - - private int fortuneLevel; - private boolean silkTouch; - - private int duration; - - public SpellParadigmTool() - { - this.leftClickEffectList = new LinkedList(); - this.rightClickEffectList = new LinkedList(); - this.toolUpdateEffectList = new LinkedList(); - this.toolSummonEffectList = new LinkedList(); - this.toolBanishEffectList = new LinkedList(); - this.breakBlockEffectList = new LinkedList(); - this.itemManipulatorEffectList = new LinkedList(); - this.digAreaEffectList = new LinkedList(); - this.specialDamageEffectList = new LinkedList(); - this.durationHash = new HashMap(); - - this.toolInfoString = new HashMap(); - this.critChanceHash = new HashMap(); - - this.maxDamage = 5; - - this.harvestLevel = new HashMap(); - this.harvestLevel.put("pickaxe", -1); - this.harvestLevel.put("shovel", -1); - this.harvestLevel.put("axe", -1); - - this.digSpeed = new HashMap(); - this.digSpeed.put("pickaxe", 1.0f); - this.digSpeed.put("shovel", 1.0f); - this.digSpeed.put("axe", 1.0f); - - this.maxDamageHash = new HashMap(); - this.maxDamageHash.put("default", 5.0f); - - this.fortuneLevel = 0; - this.silkTouch = false; - - this.duration = 0; - - this.durationHash.put("default", 2400); - - //this.addRightClickEffect(new RightClickTunnel(0,0,0)); - - //this.addItemManipulatorEffect(new ToolDefaultFire(0,0,0)); - //this.addDigAreaEffect(new DigAreaEffect(0,0,0)); - } - - @Override - public void enhanceParadigm(SpellEnhancement enh) - { - - } - - @Override - public void castSpell(World world, EntityPlayer entityPlayer, ItemStack crystal) - { - if(entityPlayer.worldObj.isRemote) - { - return; - } - - int cost = this.getTotalCost(); - - EnergyItems.syphonBatteries(crystal, entityPlayer, cost); - - ItemStack toolStack = this.prepareTool(crystal, world); - - entityPlayer.setCurrentItemOrArmor(0, toolStack); - - this.onSummonTool(toolStack, world, entityPlayer); - } - - /** - * - * @param crystalStack - * @return stack containing the new multitool - */ - public ItemStack prepareTool(ItemStack crystalStack, World world) - { - ItemStack toolStack = new ItemStack(ModItems.customTool,1); - - ItemSpellMultiTool itemTool = (ItemSpellMultiTool) ModItems.customTool; - - itemTool.setItemAttack(toolStack, this.composeMaxDamageFromHash()); - - Set> harvestLevelSet = this.harvestLevel.entrySet(); - - for(Entry testMap : harvestLevelSet) - { - String tool = testMap.getKey(); - int level = testMap.getValue(); - - itemTool.setHarvestLevel(toolStack, tool, level); - } - - Set> digSpeedSet = this.digSpeed.entrySet(); - - for(Entry testMap : digSpeedSet) - { - String tool = testMap.getKey(); - float speed = testMap.getValue(); - - itemTool.setDigSpeed(toolStack, tool, speed); - } - - itemTool.setFortuneLevel(toolStack, getFortuneLevel()); - itemTool.setSilkTouch(toolStack, this.getSilkTouch()); - - if(this.getSilkTouch()) - { - this.addToolString("SilkTouch", "Silk Touch" + " " + SpellHelper.getNumeralForInt(1)); - } - - if(this.getFortuneLevel() > 0) - { - this.addToolString("Fortune", "Fortune" + " " + SpellHelper.getNumeralForInt(this.getFortuneLevel())); - } - - itemTool.setCritChance(toolStack, this.getCritChance()/100f); - - List toolStringList = new LinkedList(); - - for(String str : this.toolInfoString.values()) - { - toolStringList.add(str); - } - - itemTool.setToolListString(toolStack, toolStringList); - - for(Integer integ : this.durationHash.values()) - { - this.duration += integ; - } - - itemTool.setDuration(toolStack, world, this.duration); - itemTool.loadParadigmIntoStack(toolStack, this.bufferedEffectList); - - EnergyItems.checkAndSetItemOwner(toolStack, EnergyItems.getOwnerName(crystalStack)); - - itemTool.setContainedCrystal(toolStack, crystalStack); - - return toolStack; - } - - @Override - public int getDefaultCost() - { - return 100; - } - - public static SpellParadigmTool getParadigmForEffectArray(List effectList) - { - SpellParadigmTool parad = new SpellParadigmTool(); - - for(SpellEffect eff : effectList) - { - parad.addBufferedEffect(eff); - } - - parad.applyAllSpellEffects(); - - return parad; - } - - public void addLeftClickEffect(ILeftClickEffect eff) - { - if(eff != null) - { - this.leftClickEffectList.add(eff); - } - } - - public void addRightClickEffect(IRightClickEffect eff) - { - if(eff != null) - { - this.rightClickEffectList.add(eff); - } - } - - public void addUpdateEffect(IToolUpdateEffect eff) - { - if(eff != null) - { - this.toolUpdateEffectList.add(eff); - } - } - - public void addToolSummonEffect(IOnSummonTool eff) - { - if(eff != null) - { - this.toolSummonEffectList.add(eff); - } - } - - public void addToolBanishEffect(IOnBanishTool eff) - { - if(eff != null) - { - this.toolBanishEffectList.add(eff); - } - } - - public void addBlockBreakEffect(IOnBreakBlock eff) - { - if(eff != null) - { - this.breakBlockEffectList.add(eff); - } - } - - public void addItemManipulatorEffect(IItemManipulator eff) - { - if(eff != null) - { - this.itemManipulatorEffectList.add(eff); - } - } - - public void addDigAreaEffect(IDigAreaEffect eff) - { - if(eff != null) - { - this.digAreaEffectList.add(eff); - } - } - - public void addSpecialDamageEffect(ISpecialDamageEffect eff) - { - if(eff != null) - { - this.specialDamageEffectList.add(eff); - } - } - - public int onLeftClickEntity(ItemStack stack, EntityLivingBase attacked, EntityLivingBase weilder) - { - int total = 0; - for(ILeftClickEffect effect : this.leftClickEffectList) - { - total += effect.onLeftClickEntity(stack, attacked, weilder); - } - - return total; - } - - public int onRightClickBlock(ItemStack toolStack, EntityLivingBase weilder, World world, MovingObjectPosition mop) - { - int total = 0; - for(IRightClickEffect effect : this.rightClickEffectList) - { - total += effect.onRightClickBlock(toolStack, weilder, world, mop); - } - - return total; - } - - public int onRightClickAir(ItemStack toolStack, World world, EntityPlayer player) - { - int total = 0; - for(IRightClickEffect effect : this.rightClickEffectList) - { - total += effect.onRightClickAir(toolStack, player); - } - - return total; - } - - public int onUpdate(ItemStack toolStack, World world, Entity par3Entity, int invSlot, boolean inHand) - { - int total = 0; - for(IToolUpdateEffect effect : this.toolUpdateEffectList) - { - total += effect.onUpdate(toolStack, world, par3Entity, invSlot, inHand); - } - - return total; - } - - public int onSummonTool(ItemStack toolStack, World world, Entity entity) - { - int total = 0; - for(IOnSummonTool effect : this.toolSummonEffectList) - { - total += effect.onSummonTool(toolStack, world, entity); - } - - return total; - } - - public int onBanishTool(ItemStack toolStack, World world, Entity entity, int invSlot, boolean inHand) - { - int total = 0; - for(IOnBanishTool effect : this.toolBanishEffectList) - { - total += effect.onBanishTool(toolStack, world, entity, invSlot, inHand); - } - - return total; - } - - public int onBreakBlock(ItemStack container, World world, EntityPlayer player, Block block, int meta, int x, int y, int z, ForgeDirection sideBroken) - { - int total = 0; - for(IOnBreakBlock effect : this.breakBlockEffectList) - { - total += effect.onBlockBroken(container, world, player, block, meta, x, y, z, sideBroken); - } - - return total; - } - - public List handleItemList(ItemStack toolStack, List items) - { - List heldList = items; - - for(IItemManipulator eff : this.itemManipulatorEffectList) - { - List newHeldList = eff.handleItemsOnBlockBroken(toolStack, heldList); - heldList = newHeldList; - } - - return heldList; - } - - public int digSurroundingArea(ItemStack container, World world, EntityPlayer player, MovingObjectPosition blockPos, String usedToolClass, float blockHardness, int harvestLvl, ItemSpellMultiTool itemTool) - { - int cost = 0; - - for(IDigAreaEffect effect : this.digAreaEffectList) - { - cost += effect.digSurroundingArea(container, world, player, blockPos, usedToolClass, blockHardness, harvestLvl, itemTool); - } - - return cost; - } - - public int getFortuneLevel() - { - return this.fortuneLevel; - } - - public void setFortuneLevel(int fortuneLevel) - { - this.fortuneLevel = fortuneLevel; - } - - public boolean getSilkTouch() - { - return this.silkTouch; - } - - public void setSilkTouch(boolean silkTouch) - { - this.silkTouch = silkTouch; - } - - public int getDuration() - { - return this.duration; - } - - public void setDuration(int duration) - { - this.duration = duration; - } - - public void setDigSpeed(String toolClass, float digSpeed) - { - this.digSpeed.put(toolClass, digSpeed); - } - - public void setHarvestLevel(String toolClass, int hlvl) - { - this.harvestLevel.put(toolClass, hlvl); - } - - public float composeMaxDamageFromHash() - { - float damage = 0.0f; - - for(float f : this.maxDamageHash.values()) - { - damage += f; - } - - return damage; - } - - public void addDamageToHash(String key, float dmg) - { - this.maxDamageHash.put(key, dmg); - } - - public void addToolString(String key, String str) - { - if(str != null && key != null) - { - this.toolInfoString.put(key, str); - } - } - - public void addCritChance(String key, float chance) - { - //Chance is in percentage chance i.e. chance = 1.0 means 1.0% - this.critChanceHash.put(key, chance); - } - - public void addDuration(String key, int dur) - { - this.durationHash.put(key, dur); - } - - public float getCritChance() - { - float chance = 0.0f; - - for(float fl : this.critChanceHash.values()) - { - chance += fl; - } - - return chance; - } - - public float getAddedDamageForEntity(Entity entity) - { - HashMap hash = new HashMap(); - - for(ISpecialDamageEffect effect : this.specialDamageEffectList) - { - hash.put(effect.getKey(), effect.getDamageForEntity(entity)); - } - - float addedDmg = 0.0f; - - for(float fl : hash.values()) - { - addedDmg += fl; - } - - return addedDmg; - } -} \ No newline at end of file diff --git a/src-backup/main/java/WayofTime/alchemicalWizardry/common/spell/complex/effect/SpellEffect.java b/src-backup/main/java/WayofTime/alchemicalWizardry/common/spell/complex/effect/SpellEffect.java deleted file mode 100644 index d241917e..00000000 --- a/src-backup/main/java/WayofTime/alchemicalWizardry/common/spell/complex/effect/SpellEffect.java +++ /dev/null @@ -1,259 +0,0 @@ -package WayofTime.alchemicalWizardry.common.spell.complex.effect; - -import net.minecraft.nbt.NBTTagCompound; -import WayofTime.alchemicalWizardry.common.spell.complex.SpellModifier; -import WayofTime.alchemicalWizardry.common.spell.complex.SpellParadigm; -import WayofTime.alchemicalWizardry.common.spell.complex.SpellParadigmMelee; -import WayofTime.alchemicalWizardry.common.spell.complex.SpellParadigmProjectile; -import WayofTime.alchemicalWizardry.common.spell.complex.SpellParadigmSelf; -import WayofTime.alchemicalWizardry.common.spell.complex.SpellParadigmTool; -import WayofTime.alchemicalWizardry.common.spell.complex.enhancement.SpellEnhancement; - -public abstract class SpellEffect -{ - protected int modifierState; - protected int powerEnhancement; - protected int costEnhancement; - protected int potencyEnhancement; - - public SpellEffect() - { - this.modifierState = SpellModifier.DEFAULT; - this.powerEnhancement = 0; - this.costEnhancement = 0; - this.potencyEnhancement = 0; - } - - public void enhanceEffect(SpellEnhancement enh) - { - if(enh!=null) - { - switch(enh.getState()) - { - case SpellEnhancement.POWER: this.powerEnhancement++; break; - case SpellEnhancement.EFFICIENCY: this.costEnhancement++; break; - case SpellEnhancement.POTENCY: this.potencyEnhancement++; break; - } - } - } - - public void modifyEffect(SpellModifier mod) - { - if(mod!=null) - modifierState = mod.getModifier(); - } - - public void modifyParadigm(SpellParadigm parad) - { - if(parad instanceof SpellParadigmProjectile) - { - this.modifyProjectileParadigm((SpellParadigmProjectile)parad); - } - if(parad instanceof SpellParadigmSelf) - { - this.modifySelfParadigm((SpellParadigmSelf)parad); - } - if(parad instanceof SpellParadigmMelee) - { - this.modifyMeleeParadigm((SpellParadigmMelee)parad); - } - if(parad instanceof SpellParadigmTool) - { - this.modifyToolParadigm((SpellParadigmTool)parad); - } - } - - public void modifyProjectileParadigm(SpellParadigmProjectile parad) - { - switch(modifierState) - { - case SpellModifier.DEFAULT: this.defaultModificationProjectile(parad); break; - case SpellModifier.OFFENSIVE: this.offensiveModificationProjectile(parad); break; - case SpellModifier.DEFENSIVE: this.defensiveModificationProjectile(parad); break; - case SpellModifier.ENVIRONMENTAL: this.environmentalModificationProjectile(parad); break; - } - } - - public abstract void defaultModificationProjectile(SpellParadigmProjectile parad); - public abstract void offensiveModificationProjectile(SpellParadigmProjectile parad); - public abstract void defensiveModificationProjectile(SpellParadigmProjectile parad); - public abstract void environmentalModificationProjectile(SpellParadigmProjectile parad); - - public void modifySelfParadigm(SpellParadigmSelf parad) - { - switch(modifierState) - { - case SpellModifier.DEFAULT: this.defaultModificationSelf(parad); break; - case SpellModifier.OFFENSIVE: this.offensiveModificationSelf(parad); break; - case SpellModifier.DEFENSIVE: this.defensiveModificationSelf(parad); break; - case SpellModifier.ENVIRONMENTAL: this.environmentalModificationSelf(parad); break; - } - } - - public abstract void defaultModificationSelf(SpellParadigmSelf parad); - public abstract void offensiveModificationSelf(SpellParadigmSelf parad); - public abstract void defensiveModificationSelf(SpellParadigmSelf parad); - public abstract void environmentalModificationSelf(SpellParadigmSelf parad); - - public void modifyMeleeParadigm(SpellParadigmMelee parad) - { - switch(modifierState) - { - case SpellModifier.DEFAULT: this.defaultModificationMelee(parad); break; - case SpellModifier.OFFENSIVE: this.offensiveModificationMelee(parad); break; - case SpellModifier.DEFENSIVE: this.defensiveModificationMelee(parad); break; - case SpellModifier.ENVIRONMENTAL: this.environmentalModificationMelee(parad); break; - } - } - - public abstract void defaultModificationMelee(SpellParadigmMelee parad); - public abstract void offensiveModificationMelee(SpellParadigmMelee parad); - public abstract void defensiveModificationMelee(SpellParadigmMelee parad); - public abstract void environmentalModificationMelee(SpellParadigmMelee parad); - - public void modifyToolParadigm(SpellParadigmTool parad) - { - switch(modifierState) - { - case SpellModifier.DEFAULT: this.defaultModificationTool(parad); break; - case SpellModifier.OFFENSIVE: this.offensiveModificationTool(parad); break; - case SpellModifier.DEFENSIVE: this.defensiveModificationTool(parad); break; - case SpellModifier.ENVIRONMENTAL: this.environmentalModificationTool(parad); break; - } - } - - public abstract void defaultModificationTool(SpellParadigmTool parad); - public abstract void offensiveModificationTool(SpellParadigmTool parad); - public abstract void defensiveModificationTool(SpellParadigmTool parad); - public abstract void environmentalModificationTool(SpellParadigmTool parad); - - public int getCostForProjectile() - { - switch(this.modifierState) - { - case SpellModifier.DEFAULT: return this.getCostForDefaultProjectile(); - case SpellModifier.OFFENSIVE: return this.getCostForOffenseProjectile(); - case SpellModifier.DEFENSIVE: return this.getCostForDefenseProjectile(); - case SpellModifier.ENVIRONMENTAL: return this.getCostForEnvironmentProjectile(); - } - return 0; - } - - protected abstract int getCostForDefaultProjectile(); - protected abstract int getCostForOffenseProjectile(); - protected abstract int getCostForDefenseProjectile(); - protected abstract int getCostForEnvironmentProjectile(); - - public int getCostForSelf() - { - switch(this.modifierState) - { - case SpellModifier.DEFAULT: return this.getCostForDefaultSelf(); - case SpellModifier.OFFENSIVE: return this.getCostForOffenseSelf(); - case SpellModifier.DEFENSIVE: return this.getCostForDefenseSelf(); - case SpellModifier.ENVIRONMENTAL: return this.getCostForEnvironmentSelf(); - } - return 0; - } - - protected abstract int getCostForDefaultSelf(); - protected abstract int getCostForOffenseSelf(); - protected abstract int getCostForDefenseSelf(); - protected abstract int getCostForEnvironmentSelf(); - - public int getCostForMelee() - { - switch(this.modifierState) - { - case SpellModifier.DEFAULT: return this.getCostForDefaultMelee(); - case SpellModifier.OFFENSIVE: return this.getCostForOffenseMelee(); - case SpellModifier.DEFENSIVE: return this.getCostForDefenseMelee(); - case SpellModifier.ENVIRONMENTAL: return this.getCostForEnvironmentMelee(); - } - return 0; - } - - protected abstract int getCostForDefaultMelee(); - protected abstract int getCostForOffenseMelee(); - protected abstract int getCostForDefenseMelee(); - protected abstract int getCostForEnvironmentMelee(); - - public int getCostForTool() - { - switch(this.modifierState) - { - case SpellModifier.DEFAULT: return this.getCostForDefaultTool(); - case SpellModifier.OFFENSIVE: return this.getCostForOffenseTool(); - case SpellModifier.DEFENSIVE: return this.getCostForDefenseTool(); - case SpellModifier.ENVIRONMENTAL: return this.getCostForEnvironmentTool(); - } - return 0; - } - - protected abstract int getCostForDefaultTool(); - protected abstract int getCostForOffenseTool(); - protected abstract int getCostForDefenseTool(); - protected abstract int getCostForEnvironmentTool(); - - public int getPowerEnhancements() - { - return this.powerEnhancement; - } - - public int getCostEnhancements() - { - return this.costEnhancement; - } - - public int getPotencyEnhancements() - { - return this.potencyEnhancement; - } - - public NBTTagCompound getTag() - { - NBTTagCompound tag = new NBTTagCompound(); - - tag.setString("Class", this.getClass().getName()); - tag.setInteger("modifier", modifierState); - tag.setInteger("power", powerEnhancement); - tag.setInteger("cost", costEnhancement); - tag.setInteger("potency", potencyEnhancement); - - return tag; - } - - public static SpellEffect getEffectFromTag(NBTTagCompound tag) - { - try { - Class clazz = Class.forName(tag.getString("Class")); - if(clazz !=null) - { - try { - Object obj = clazz.newInstance(); - if(obj instanceof SpellEffect) - { - SpellEffect eff = (SpellEffect) obj; - - eff.modifierState = tag.getInteger("modifier"); - eff.powerEnhancement = tag.getInteger("power"); - eff.costEnhancement = tag.getInteger("cost"); - eff.potencyEnhancement = tag.getInteger("potency"); - - return eff; - } - } catch (InstantiationException e) { - // TODO Auto-generated catch block - e.printStackTrace(); - } catch (IllegalAccessException e) { - // TODO Auto-generated catch block - e.printStackTrace(); - } - } - } catch (ClassNotFoundException e) { - // TODO Auto-generated catch block - e.printStackTrace(); - } - return null; - } -} diff --git a/src-backup/main/java/WayofTime/alchemicalWizardry/common/spell/complex/effect/SpellEffectEarth.java b/src-backup/main/java/WayofTime/alchemicalWizardry/common/spell/complex/effect/SpellEffectEarth.java deleted file mode 100644 index 094d3fb4..00000000 --- a/src-backup/main/java/WayofTime/alchemicalWizardry/common/spell/complex/effect/SpellEffectEarth.java +++ /dev/null @@ -1,280 +0,0 @@ -package WayofTime.alchemicalWizardry.common.spell.complex.effect; - -import WayofTime.alchemicalWizardry.common.spell.complex.SpellParadigmMelee; -import WayofTime.alchemicalWizardry.common.spell.complex.SpellParadigmProjectile; -import WayofTime.alchemicalWizardry.common.spell.complex.SpellParadigmSelf; -import WayofTime.alchemicalWizardry.common.spell.complex.SpellParadigmTool; -import WayofTime.alchemicalWizardry.common.spell.complex.effect.impactEffects.earth.MeleeDefaultEarth; -import WayofTime.alchemicalWizardry.common.spell.complex.effect.impactEffects.earth.MeleeDefensiveEarth; -import WayofTime.alchemicalWizardry.common.spell.complex.effect.impactEffects.earth.MeleeEnvironmentalEarth; -import WayofTime.alchemicalWizardry.common.spell.complex.effect.impactEffects.earth.MeleeOffensiveEarth; -import WayofTime.alchemicalWizardry.common.spell.complex.effect.impactEffects.earth.ProjectileDefaultEarth; -import WayofTime.alchemicalWizardry.common.spell.complex.effect.impactEffects.earth.ProjectileDefensiveEarth; -import WayofTime.alchemicalWizardry.common.spell.complex.effect.impactEffects.earth.ProjectileEnvironmentalEarth; -import WayofTime.alchemicalWizardry.common.spell.complex.effect.impactEffects.earth.ProjectileOffensiveEarth; -import WayofTime.alchemicalWizardry.common.spell.complex.effect.impactEffects.earth.SelfDefaultEarth; -import WayofTime.alchemicalWizardry.common.spell.complex.effect.impactEffects.earth.SelfDefensiveEarth; -import WayofTime.alchemicalWizardry.common.spell.complex.effect.impactEffects.earth.SelfEnvironmentalEarth; -import WayofTime.alchemicalWizardry.common.spell.complex.effect.impactEffects.earth.SelfOffensiveEarth; -import WayofTime.alchemicalWizardry.common.spell.complex.effect.impactEffects.earth.ToolEnvironmentalEarth; -import WayofTime.alchemicalWizardry.common.spell.complex.effect.impactEffects.earth.ToolOffensiveEarth; - -public class SpellEffectEarth extends SpellEffect -{ - @Override - public void defaultModificationProjectile(SpellParadigmProjectile parad) - { - parad.addImpactEffect(new ProjectileDefaultEarth(this.powerEnhancement, this.potencyEnhancement, this.costEnhancement)); - } - - @Override - public void offensiveModificationProjectile(SpellParadigmProjectile parad) - { - parad.addImpactEffect(new ProjectileOffensiveEarth(this.powerEnhancement, this.potencyEnhancement, this.costEnhancement)); - } - - @Override - public void defensiveModificationProjectile(SpellParadigmProjectile parad) - { - parad.addImpactEffect(new ProjectileDefensiveEarth(this.powerEnhancement,this.potencyEnhancement,this.costEnhancement)); - } - - @Override - public void environmentalModificationProjectile(SpellParadigmProjectile parad) - { - parad.addUpdateEffect(new ProjectileEnvironmentalEarth(this.powerEnhancement,this.potencyEnhancement,this.costEnhancement)); - } - - @Override - public void defaultModificationSelf(SpellParadigmSelf parad) - { - parad.addSelfSpellEffect(new SelfDefaultEarth(this.powerEnhancement, this.potencyEnhancement, this.costEnhancement)); - } - - @Override - public void offensiveModificationSelf(SpellParadigmSelf parad) - { - parad.addSelfSpellEffect(new SelfOffensiveEarth(this.powerEnhancement,this.potencyEnhancement, this.costEnhancement)); - } - - @Override - public void defensiveModificationSelf(SpellParadigmSelf parad) - { - parad.addSelfSpellEffect(new SelfDefensiveEarth(this.powerEnhancement,this.potencyEnhancement, this.costEnhancement)); - } - - @Override - public void environmentalModificationSelf(SpellParadigmSelf parad) - { - parad.addSelfSpellEffect(new SelfEnvironmentalEarth(this.powerEnhancement,this.potencyEnhancement,this.costEnhancement)); - } - - @Override - public void defaultModificationMelee(SpellParadigmMelee parad) - { - parad.addWorldEffect(new MeleeDefaultEarth(this.powerEnhancement, this.potencyEnhancement, this.costEnhancement)); - } - - @Override - public void offensiveModificationMelee(SpellParadigmMelee parad) - { - parad.addWorldEffect(new MeleeOffensiveEarth(this.powerEnhancement,this.potencyEnhancement,this.costEnhancement)); - } - - @Override - public void defensiveModificationMelee(SpellParadigmMelee parad) - { - parad.addWorldEffect(new MeleeDefensiveEarth(this.powerEnhancement, this.potencyEnhancement, this.costEnhancement)); - } - - @Override - public void environmentalModificationMelee(SpellParadigmMelee parad) - { - parad.addWorldEffect(new MeleeEnvironmentalEarth(this.powerEnhancement, this.potencyEnhancement, this.costEnhancement)); - } - - @Override - protected int getCostForDefaultProjectile() - { - return (int)(10*Math.pow((0.5*(this.powerEnhancement)+1)*2 + 1,3)*Math.pow(0.85, costEnhancement)); - } - - @Override - protected int getCostForOffenseProjectile() - { - - return (int)(10*(1.5*this.potencyEnhancement+1)*(Math.pow(1*this.powerEnhancement+1,2))*Math.pow(0.85, costEnhancement)); - } - - @Override - protected int getCostForDefenseProjectile() - { - return (int)(3*Math.pow((this.powerEnhancement*2+1),2)*(this.potencyEnhancement*2+1)*Math.pow(0.85, costEnhancement)); - } - - @Override - protected int getCostForEnvironmentProjectile() - { - return (int)(10*2*(0.1d*(this.potencyEnhancement+1))*Math.pow(3.47,this.potencyEnhancement)*Math.pow(0.85, costEnhancement)); - } - - @Override - protected int getCostForDefaultSelf() - { - return (int)(20*Math.pow(1.5*powerEnhancement+1,2)*(2*this.potencyEnhancement+1)*Math.pow(0.85, costEnhancement)); - } - - @Override - protected int getCostForOffenseSelf() - { - return (int)(10*Math.pow(2*this.powerEnhancement+1,2)*(this.potencyEnhancement+1)*Math.pow(0.85, costEnhancement)); - } - - @Override - protected int getCostForDefenseSelf() - { - return (int)(750*(1.1*this.powerEnhancement+1)*(0.5*this.potencyEnhancement+1)*Math.pow(0.85, costEnhancement)); - } - - @Override - protected int getCostForEnvironmentSelf() - { - return (int)(250*(1.2*this.potencyEnhancement+1)*(3*this.powerEnhancement+2.5)*Math.pow(0.85, costEnhancement)); - } - - @Override - protected int getCostForDefaultMelee() - { - return (int)(50*Math.pow(1.5*this.potencyEnhancement + 1,3)*(0.5*this.powerEnhancement + 1)*Math.pow(0.85, costEnhancement)); - } - - @Override - protected int getCostForOffenseMelee() - { - return (int)(20*Math.pow(1.5*this.powerEnhancement+1,3)*(0.25*this.powerEnhancement+1)*Math.pow(0.85, costEnhancement)); - } - - @Override - protected int getCostForDefenseMelee() - { - return (int)(5*(1.2*this.powerEnhancement+1)*(1.0f/3.0f*Math.pow(this.potencyEnhancement,2)+2+1.0f/2.0f*this.potencyEnhancement)*Math.pow(0.85, costEnhancement)); - } - - @Override - protected int getCostForEnvironmentMelee() - { - return (int)(500*Math.pow(2*this.potencyEnhancement+1, 3)*(0.25*this.powerEnhancement+1)*Math.pow(0.85, costEnhancement)); - } - - @Override - public void defaultModificationTool(SpellParadigmTool parad) - { - String toolClass = "pickaxe"; - - - float digSpeed = 7.0f; - - - switch(this.powerEnhancement) - { - case 1: - digSpeed = 9.0f; - break; - case 2: - digSpeed = 12.0f; - break; - case 3: - digSpeed = 16.0f; - break; - case 4: - digSpeed = 21.0f; - break; - case 5: - digSpeed = 27.0f; - break; - } - - - parad.setDigSpeed(toolClass, digSpeed); - - - int hlvl = this.potencyEnhancement + 2; - parad.setHarvestLevel(toolClass, hlvl); - } - - - @Override - public void offensiveModificationTool(SpellParadigmTool parad) - { - parad.addItemManipulatorEffect(new ToolOffensiveEarth(this.powerEnhancement, this.potencyEnhancement, this.costEnhancement)); - } - - @Override - public void defensiveModificationTool(SpellParadigmTool parad) - { - String toolClass = "shovel"; - - - float digSpeed = 7.0f; - - - switch(this.powerEnhancement) - { - case 1: - digSpeed = 9.0f; - break; - case 2: - digSpeed = 12.0f; - break; - case 3: - digSpeed = 16.0f; - break; - case 4: - digSpeed = 21.0f; - break; - case 5: - digSpeed = 27.0f; - break; - } - - - parad.setDigSpeed(toolClass, digSpeed); - - - int hlvl = this.potencyEnhancement + 2; - parad.setHarvestLevel(toolClass, hlvl); - } - - - @Override - public void environmentalModificationTool(SpellParadigmTool parad) - { - parad.addDigAreaEffect(new ToolEnvironmentalEarth(this.powerEnhancement, this.potencyEnhancement, this.costEnhancement)); - } - - - @Override - protected int getCostForDefaultTool() - { - return (int)(1000 * (1 + this.potencyEnhancement*0.1f) * (1 + this.powerEnhancement*0.2f) * Math.pow(0.85, costEnhancement)); - } - - - @Override - protected int getCostForOffenseTool() - { - return 1000; - } - - @Override - protected int getCostForDefenseTool() - { - return (int)(1000 * (1 + this.potencyEnhancement*0.1f) * (1 + this.powerEnhancement*0.2f) * Math.pow(0.85, costEnhancement)); - } - - @Override - protected int getCostForEnvironmentTool() - { - return (int)(10 * (1+this.potencyEnhancement*0.8) * Math.pow(1.5*this.powerEnhancement + 3, 2) * Math.pow(0.85, this.costEnhancement)); - } -} diff --git a/src-backup/main/java/WayofTime/alchemicalWizardry/common/spell/complex/effect/SpellEffectFire.java b/src-backup/main/java/WayofTime/alchemicalWizardry/common/spell/complex/effect/SpellEffectFire.java deleted file mode 100644 index a4027390..00000000 --- a/src-backup/main/java/WayofTime/alchemicalWizardry/common/spell/complex/effect/SpellEffectFire.java +++ /dev/null @@ -1,225 +0,0 @@ -package WayofTime.alchemicalWizardry.common.spell.complex.effect; - -import WayofTime.alchemicalWizardry.common.spell.complex.SpellParadigmMelee; -import WayofTime.alchemicalWizardry.common.spell.complex.SpellParadigmProjectile; -import WayofTime.alchemicalWizardry.common.spell.complex.SpellParadigmSelf; -import WayofTime.alchemicalWizardry.common.spell.complex.SpellParadigmTool; -import WayofTime.alchemicalWizardry.common.spell.complex.effect.impactEffects.fire.MeleeDefaultFire; -import WayofTime.alchemicalWizardry.common.spell.complex.effect.impactEffects.fire.MeleeDefensiveFire; -import WayofTime.alchemicalWizardry.common.spell.complex.effect.impactEffects.fire.MeleeEnvironmentalFire; -import WayofTime.alchemicalWizardry.common.spell.complex.effect.impactEffects.fire.MeleeOffensiveFire; -import WayofTime.alchemicalWizardry.common.spell.complex.effect.impactEffects.fire.ProjectileDefaultFire; -import WayofTime.alchemicalWizardry.common.spell.complex.effect.impactEffects.fire.ProjectileDefensiveFire; -import WayofTime.alchemicalWizardry.common.spell.complex.effect.impactEffects.fire.ProjectileEnvironmentalFire; -import WayofTime.alchemicalWizardry.common.spell.complex.effect.impactEffects.fire.ProjectileOffensiveFire; -import WayofTime.alchemicalWizardry.common.spell.complex.effect.impactEffects.fire.SelfDefaultFire; -import WayofTime.alchemicalWizardry.common.spell.complex.effect.impactEffects.fire.SelfDefensiveFire; -import WayofTime.alchemicalWizardry.common.spell.complex.effect.impactEffects.fire.SelfEnvironmentalFire; -import WayofTime.alchemicalWizardry.common.spell.complex.effect.impactEffects.fire.SelfOffensiveFire; -import WayofTime.alchemicalWizardry.common.spell.complex.effect.impactEffects.fire.ToolDefaultFire; -import WayofTime.alchemicalWizardry.common.spell.complex.effect.impactEffects.fire.ToolEnvironmentalFire; -import WayofTime.alchemicalWizardry.common.spell.complex.effect.impactEffects.fire.ToolOffensiveFire; - -public class SpellEffectFire extends SpellEffect -{ - @Override - public void defaultModificationProjectile(SpellParadigmProjectile parad) - { - parad.addImpactEffect(new ProjectileDefaultFire(this.powerEnhancement,this.potencyEnhancement,this.costEnhancement)); - parad.damage+=this.potencyEnhancement; - } - - @Override - public void offensiveModificationProjectile(SpellParadigmProjectile parad) - { - parad.addImpactEffect(new ProjectileOffensiveFire(this.powerEnhancement,this.potencyEnhancement,this.costEnhancement)); - } - - @Override - public void defensiveModificationProjectile(SpellParadigmProjectile parad) - { - parad.addImpactEffect(new ProjectileDefensiveFire(this.powerEnhancement,this.potencyEnhancement,this.costEnhancement)); - } - - @Override - public void environmentalModificationProjectile(SpellParadigmProjectile parad) - { - parad.addUpdateEffect(new ProjectileEnvironmentalFire(this.powerEnhancement,this.potencyEnhancement,this.costEnhancement)); - } - - @Override - public void defaultModificationSelf(SpellParadigmSelf parad) - { - parad.addSelfSpellEffect(new SelfDefaultFire(powerEnhancement, potencyEnhancement, costEnhancement)); - } - - @Override - public void offensiveModificationSelf(SpellParadigmSelf parad) - { - parad.addSelfSpellEffect(new SelfOffensiveFire(powerEnhancement,potencyEnhancement,costEnhancement)); - } - - @Override - public void defensiveModificationSelf(SpellParadigmSelf parad) - { - parad.addSelfSpellEffect(new SelfDefensiveFire(powerEnhancement,potencyEnhancement,costEnhancement)); - } - - @Override - public void environmentalModificationSelf(SpellParadigmSelf parad) - { - parad.addSelfSpellEffect(new SelfEnvironmentalFire(powerEnhancement, potencyEnhancement, costEnhancement)); - } - - @Override - public void defaultModificationMelee(SpellParadigmMelee parad) - { - parad.addEntityEffect(new MeleeDefaultFire(this.powerEnhancement, this.potencyEnhancement, this.costEnhancement)); - } - - @Override - public void offensiveModificationMelee(SpellParadigmMelee parad) - { - parad.addEntityEffect(new MeleeOffensiveFire(this.powerEnhancement,this.potencyEnhancement,this.costEnhancement)); - } - - @Override - public void defensiveModificationMelee(SpellParadigmMelee parad) - { - parad.addWorldEffect(new MeleeDefensiveFire(this.powerEnhancement,this.potencyEnhancement,this.costEnhancement)); - } - - @Override - public void environmentalModificationMelee(SpellParadigmMelee parad) - { - parad.addWorldEffect(new MeleeEnvironmentalFire(this.powerEnhancement,this.potencyEnhancement,this.costEnhancement)); - } - - @Override - protected int getCostForDefaultProjectile() - { - return (int)((5*Math.pow(1.5*this.powerEnhancement+1, 2)*(1.5*this.potencyEnhancement+1)+this.potencyEnhancement*15)*Math.pow(0.85, costEnhancement)); - } - - @Override - protected int getCostForOffenseProjectile() - { - return (int)(10*Math.pow((this.powerEnhancement)*1.3+1,2)*((1.5*this.potencyEnhancement+1))*Math.pow(0.85, costEnhancement)); - } - - @Override - protected int getCostForDefenseProjectile() - { - return (int)(25*Math.pow(1*this.powerEnhancement+1,2)*(1*this.potencyEnhancement+1)*Math.pow(0.85, costEnhancement)); - } - - @Override - protected int getCostForEnvironmentProjectile() - { - return (int)(75*(0.5*this.powerEnhancement+1)*(0.5*this.potencyEnhancement+1)*Math.pow(0.85, costEnhancement)); - } - - @Override - protected int getCostForDefaultSelf() - { - return 10*(int)(10*Math.pow(1.5, this.powerEnhancement+1.5*this.potencyEnhancement)*Math.pow(0.85, costEnhancement)); - } - - @Override - protected int getCostForOffenseSelf() - { - return (int)(300*(3*powerEnhancement+1)*(2*potencyEnhancement + 1)*Math.pow(0.85, costEnhancement)); - } - - @Override - protected int getCostForDefenseSelf() - { - return (int)(25*(3*this.potencyEnhancement+1)*(2*this.powerEnhancement+1)*Math.pow(0.85, costEnhancement)); - } - - @Override - protected int getCostForEnvironmentSelf() - { - return (int)((15*Math.pow(1.7, powerEnhancement)+10*Math.pow(potencyEnhancement,1.8))*Math.pow(0.85, costEnhancement)); - } - - @Override - protected int getCostForDefaultMelee() - { - return (int)(25*(1.2*this.potencyEnhancement+1)*(2.5*this.powerEnhancement+2)*Math.pow(0.85, costEnhancement)); - } - - @Override - protected int getCostForOffenseMelee() - { - return (int)(500*(1+this.potencyEnhancement)*(this.powerEnhancement+1)*Math.pow(0.85, costEnhancement)); - } - - @Override - protected int getCostForDefenseMelee() - { - return (int)(30*(1.5*potencyEnhancement+1)*(3*powerEnhancement+1)*Math.pow(0.85, costEnhancement)); - } - - @Override - protected int getCostForEnvironmentMelee() - { - return (int)(25*Math.pow(1.5*this.powerEnhancement+1,3)*(0.25*this.powerEnhancement+1)*Math.pow(0.85, costEnhancement)); - } - - @Override - public void defaultModificationTool(SpellParadigmTool parad) - { - parad.addItemManipulatorEffect(new ToolDefaultFire(this.powerEnhancement,this.potencyEnhancement,this.costEnhancement)); - } - - @Override - public void offensiveModificationTool(SpellParadigmTool parad) - { - parad.addLeftClickEffect(new ToolOffensiveFire(this.powerEnhancement, this.potencyEnhancement, this.costEnhancement)); - - parad.addToolString("offFire", "Fire Aspect" + " " + SpellHelper.getNumeralForInt(this.powerEnhancement + 1)); - } - - @Override - public void defensiveModificationTool(SpellParadigmTool parad) - { - parad.addCritChance("defFire", this.potencyEnhancement); - - parad.addDuration("defFire", 1200 * this.powerEnhancement); - - parad.addToolString("defFire", "Unbreaking" + " " + SpellHelper.getNumeralForInt(this.powerEnhancement + 1)); - } - - @Override - public void environmentalModificationTool(SpellParadigmTool parad) - { - parad.addBlockBreakEffect(new ToolEnvironmentalFire(this.powerEnhancement,this.potencyEnhancement,this.costEnhancement)); - - parad.addToolString("envFire", "Magma Plume" + " " + SpellHelper.getNumeralForInt(this.powerEnhancement + 1)); - } - - @Override - protected int getCostForDefaultTool() - { - return 1000; - } - - @Override - protected int getCostForOffenseTool() - { - return (int)(1000 * (1 + this.powerEnhancement*0.3f) * (1 + this.potencyEnhancement*0.2f) * Math.pow(0.85, costEnhancement)); - } - - @Override - protected int getCostForDefenseTool() - { - return (int)(500 * (1 + this.powerEnhancement*0.5f) * (1 + this.potencyEnhancement) * Math.pow(0.85, costEnhancement)); - } - - @Override - protected int getCostForEnvironmentTool() - { - return 0; - } -} diff --git a/src-backup/main/java/WayofTime/alchemicalWizardry/common/spell/complex/effect/SpellEffectIce.java b/src-backup/main/java/WayofTime/alchemicalWizardry/common/spell/complex/effect/SpellEffectIce.java deleted file mode 100644 index ee85fb46..00000000 --- a/src-backup/main/java/WayofTime/alchemicalWizardry/common/spell/complex/effect/SpellEffectIce.java +++ /dev/null @@ -1,241 +0,0 @@ -package WayofTime.alchemicalWizardry.common.spell.complex.effect; - -import WayofTime.alchemicalWizardry.common.spell.complex.SpellParadigmMelee; -import WayofTime.alchemicalWizardry.common.spell.complex.SpellParadigmProjectile; -import WayofTime.alchemicalWizardry.common.spell.complex.SpellParadigmSelf; -import WayofTime.alchemicalWizardry.common.spell.complex.SpellParadigmTool; -import WayofTime.alchemicalWizardry.common.spell.complex.effect.impactEffects.ice.MeleeDefaultIce; -import WayofTime.alchemicalWizardry.common.spell.complex.effect.impactEffects.ice.MeleeDefensiveIce; -import WayofTime.alchemicalWizardry.common.spell.complex.effect.impactEffects.ice.MeleeEnvironmentalIce; -import WayofTime.alchemicalWizardry.common.spell.complex.effect.impactEffects.ice.MeleeOffensiveIce; -import WayofTime.alchemicalWizardry.common.spell.complex.effect.impactEffects.ice.ProjectileDefaultIce; -import WayofTime.alchemicalWizardry.common.spell.complex.effect.impactEffects.ice.ProjectileDefensiveIce; -import WayofTime.alchemicalWizardry.common.spell.complex.effect.impactEffects.ice.ProjectileEnvironmentalIce; -import WayofTime.alchemicalWizardry.common.spell.complex.effect.impactEffects.ice.ProjectileOffensiveIce; -import WayofTime.alchemicalWizardry.common.spell.complex.effect.impactEffects.ice.SelfDefaultIce; -import WayofTime.alchemicalWizardry.common.spell.complex.effect.impactEffects.ice.SelfDefensiveIce; -import WayofTime.alchemicalWizardry.common.spell.complex.effect.impactEffects.ice.SelfEnvironmentalIce; -import WayofTime.alchemicalWizardry.common.spell.complex.effect.impactEffects.ice.SelfOffensiveIce; -import WayofTime.alchemicalWizardry.common.spell.complex.effect.impactEffects.ice.ToolDefaultIce; -import WayofTime.alchemicalWizardry.common.spell.complex.effect.impactEffects.ice.ToolDefensiveIce; - -public class SpellEffectIce extends SpellEffect -{ - @Override - public void defaultModificationProjectile(SpellParadigmProjectile parad) - { - parad.damage+=this.potencyEnhancement; - parad.addImpactEffect(new ProjectileDefaultIce(this.powerEnhancement,this.potencyEnhancement,this.costEnhancement)); - } - - @Override - public void offensiveModificationProjectile(SpellParadigmProjectile parad) - { - parad.damage+=2; - parad.addImpactEffect(new ProjectileOffensiveIce(this.powerEnhancement,this.potencyEnhancement,this.costEnhancement)); - } - - @Override - public void defensiveModificationProjectile(SpellParadigmProjectile parad) - { - parad.addImpactEffect(new ProjectileDefensiveIce(this.powerEnhancement,this.potencyEnhancement,this.costEnhancement)); - - } - - @Override - public void environmentalModificationProjectile(SpellParadigmProjectile parad) - { - parad.addUpdateEffect(new ProjectileEnvironmentalIce(this.powerEnhancement,this.potencyEnhancement,this.costEnhancement)); - } - - @Override - public void defaultModificationSelf(SpellParadigmSelf parad) - { - parad.addSelfSpellEffect(new SelfDefaultIce(this.powerEnhancement,this.potencyEnhancement, this.costEnhancement)); - } - - @Override - public void offensiveModificationSelf(SpellParadigmSelf parad) - { - parad.addSelfSpellEffect(new SelfOffensiveIce(this.powerEnhancement,this.potencyEnhancement,this.costEnhancement)); - } - - @Override - public void defensiveModificationSelf(SpellParadigmSelf parad) - { - parad.addSelfSpellEffect(new SelfDefensiveIce(this.powerEnhancement,this.potencyEnhancement,this.costEnhancement)); - } - - @Override - public void environmentalModificationSelf(SpellParadigmSelf parad) - { - parad.addSelfSpellEffect(new SelfEnvironmentalIce(this.powerEnhancement,this.potencyEnhancement,this.costEnhancement)); - } - - @Override - public void defaultModificationMelee(SpellParadigmMelee parad) - { - parad.addEntityEffect(new MeleeDefaultIce(this.powerEnhancement,this.potencyEnhancement,this.costEnhancement)); - } - - @Override - public void offensiveModificationMelee(SpellParadigmMelee parad) - { - parad.addEntityEffect(new MeleeOffensiveIce(this.powerEnhancement,this.potencyEnhancement,this.costEnhancement)); - } - - @Override - public void defensiveModificationMelee(SpellParadigmMelee parad) - { - parad.addWorldEffect(new MeleeDefensiveIce(this.powerEnhancement,this.potencyEnhancement,this.costEnhancement)); - } - - @Override - public void environmentalModificationMelee(SpellParadigmMelee parad) - { - parad.addEntityEffect(new MeleeEnvironmentalIce(this.powerEnhancement,this.potencyEnhancement,this.costEnhancement)); - } - - @Override - protected int getCostForDefaultProjectile() - { - return (int)((30)*(this.potencyEnhancement+1)*Math.pow(0.85, costEnhancement)); - } - - @Override - protected int getCostForOffenseProjectile() - { - return (int)((60)*(this.powerEnhancement+1)*(3*this.potencyEnhancement+1)*Math.pow(0.85, costEnhancement)); - } - - @Override - protected int getCostForDefenseProjectile() - { - return (int)(75*(2*this.powerEnhancement+1)*(this.potencyEnhancement+1)*Math.pow(0.85, costEnhancement)); - } - - @Override - protected int getCostForEnvironmentProjectile() - { - return (int)(200*(2*this.powerEnhancement+1)*(2*this.potencyEnhancement+1)*Math.pow(0.85, costEnhancement)); - } - - @Override - protected int getCostForDefaultSelf() - { - return (int)(20*(this.powerEnhancement+1)*Math.pow(0.85, costEnhancement)); - } - - @Override - protected int getCostForOffenseSelf() - { - return (int)(100*(2*this.powerEnhancement+1)*(2*this.potencyEnhancement+1)*Math.pow(0.85, costEnhancement)); - } - - @Override - protected int getCostForDefenseSelf() - { - return (int)(200*(3*powerEnhancement+1)*(2*potencyEnhancement + 1)*Math.pow(0.85, costEnhancement)); - } - - @Override - protected int getCostForEnvironmentSelf() - { - return (int)(10*(1.5*potencyEnhancement+1)*(3*powerEnhancement+1)*Math.pow(0.85, costEnhancement)); - } - - @Override - protected int getCostForDefaultMelee() - { - return (int)(250*(potencyEnhancement+1)*(1.5*powerEnhancement+1)*Math.pow(0.85, costEnhancement)); - } - - @Override - protected int getCostForOffenseMelee() - { - return (int)(40*(1.5*potencyEnhancement+1)*Math.pow(1.5, powerEnhancement)*Math.pow(0.85, costEnhancement)); - } - - @Override - protected int getCostForDefenseMelee() - { - return (int)(50*(0.5*potencyEnhancement+1)*(0.7*powerEnhancement+1)*(0.5*powerEnhancement+1)*Math.pow(0.85, costEnhancement)); - } - - @Override - protected int getCostForEnvironmentMelee() - { - return (int)(20*(0.5*potencyEnhancement+1)*(0*powerEnhancement+1)*Math.pow(0.85, costEnhancement)); - } - - @Override - public void defaultModificationTool(SpellParadigmTool parad) - { - parad.addLeftClickEffect(new ToolDefaultIce(this.powerEnhancement,this.potencyEnhancement,this.costEnhancement)); - - - parad.addToolString("FrostTouch", "FrostTouch" + " " + SpellHelper.getNumeralForInt((this.powerEnhancement+1))); - - - parad.addCritChance("FrostCrit", this.potencyEnhancement * 0.5f); - } - - - @Override - public void offensiveModificationTool(SpellParadigmTool parad) - { - parad.addDamageToHash("Sharpness", (this.powerEnhancement+1)*1.5f); - - - parad.addToolString("Sharpness", "Sharpness" + " " + SpellHelper.getNumeralForInt((this.powerEnhancement+1))); - - - parad.addCritChance("SharpCrit", this.potencyEnhancement); - } - - - @Override - public void defensiveModificationTool(SpellParadigmTool parad) - { - parad.addToolSummonEffect(new ToolDefensiveIce(this.powerEnhancement,this.potencyEnhancement,this.costEnhancement)); - } - - - @Override - public void environmentalModificationTool(SpellParadigmTool parad) - { - parad.addToolString("SilkTouch", "Silk Touch" + " " + SpellHelper.getNumeralForInt((this.powerEnhancement+1))); - - - parad.setSilkTouch(true); - } - - - @Override - protected int getCostForDefaultTool() - { - return (int)(500 * (1 + this.powerEnhancement*0.3f) * (1 + this.potencyEnhancement*0.1f) * Math.pow(0.85, costEnhancement)); - } - - - @Override - protected int getCostForOffenseTool() - { - return (int)(1000 * (1 + this.powerEnhancement*0.3f) * (1 + this.potencyEnhancement*0.2f) * Math.pow(0.85, costEnhancement)); - } - - - @Override - protected int getCostForDefenseTool() - { - return (int)(500 * (1 + this.powerEnhancement*0.2) * (1 + this.potencyEnhancement*0.5) * Math.pow(0.85, costEnhancement)); - } - - - @Override - protected int getCostForEnvironmentTool() - { - return (int)(1000 * Math.pow(0.85, costEnhancement)); - } - -} diff --git a/src-backup/main/java/WayofTime/alchemicalWizardry/common/spell/complex/effect/SpellEffectWind.java b/src-backup/main/java/WayofTime/alchemicalWizardry/common/spell/complex/effect/SpellEffectWind.java deleted file mode 100644 index 7bf6ec80..00000000 --- a/src-backup/main/java/WayofTime/alchemicalWizardry/common/spell/complex/effect/SpellEffectWind.java +++ /dev/null @@ -1,242 +0,0 @@ -package WayofTime.alchemicalWizardry.common.spell.complex.effect; - -import WayofTime.alchemicalWizardry.common.spell.complex.SpellParadigmMelee; -import WayofTime.alchemicalWizardry.common.spell.complex.SpellParadigmProjectile; -import WayofTime.alchemicalWizardry.common.spell.complex.SpellParadigmSelf; -import WayofTime.alchemicalWizardry.common.spell.complex.SpellParadigmTool; -import WayofTime.alchemicalWizardry.common.spell.complex.effect.impactEffects.wind.MeleeDefaultWind; -import WayofTime.alchemicalWizardry.common.spell.complex.effect.impactEffects.wind.MeleeDefensiveWind; -import WayofTime.alchemicalWizardry.common.spell.complex.effect.impactEffects.wind.MeleeEnvironmentalWind; -import WayofTime.alchemicalWizardry.common.spell.complex.effect.impactEffects.wind.MeleeOffensiveWind; -import WayofTime.alchemicalWizardry.common.spell.complex.effect.impactEffects.wind.ProjectileDefaultWind; -import WayofTime.alchemicalWizardry.common.spell.complex.effect.impactEffects.wind.ProjectileEnvironmentalWind; -import WayofTime.alchemicalWizardry.common.spell.complex.effect.impactEffects.wind.ProjectileOffensiveWind; -import WayofTime.alchemicalWizardry.common.spell.complex.effect.impactEffects.wind.SelfDefaultWind; -import WayofTime.alchemicalWizardry.common.spell.complex.effect.impactEffects.wind.SelfDefensiveWind; -import WayofTime.alchemicalWizardry.common.spell.complex.effect.impactEffects.wind.SelfEnvironmentalWind; -import WayofTime.alchemicalWizardry.common.spell.complex.effect.impactEffects.wind.SelfOffensiveWind; -import WayofTime.alchemicalWizardry.common.spell.complex.effect.impactEffects.wind.ToolDefensiveWind; -import WayofTime.alchemicalWizardry.common.spell.complex.effect.impactEffects.wind.ToolEnvironmentalWind; -import WayofTime.alchemicalWizardry.common.spell.complex.effect.impactEffects.wind.ToolOffensiveWind; - -public class SpellEffectWind extends SpellEffect -{ - @Override - public void defaultModificationProjectile(SpellParadigmProjectile parad) - { - parad.addImpactEffect(new ProjectileDefaultWind(this.powerEnhancement,this.potencyEnhancement,this.costEnhancement)); - } - - @Override - public void offensiveModificationProjectile(SpellParadigmProjectile parad) - { - parad.addImpactEffect(new ProjectileOffensiveWind(this.powerEnhancement,this.potencyEnhancement,this.costEnhancement)); - } - - @Override - public void defensiveModificationProjectile(SpellParadigmProjectile parad) - { - parad.isSilkTouch = true; - } - - @Override - public void environmentalModificationProjectile(SpellParadigmProjectile parad) - { - parad.addUpdateEffect(new ProjectileEnvironmentalWind(this.powerEnhancement,this.potencyEnhancement,this.costEnhancement)); - } - - @Override - public void defaultModificationSelf(SpellParadigmSelf parad) - { - parad.addSelfSpellEffect(new SelfDefaultWind(this.powerEnhancement,this.potencyEnhancement,this.costEnhancement)); - } - - @Override - public void offensiveModificationSelf(SpellParadigmSelf parad) - { - parad.addSelfSpellEffect(new SelfOffensiveWind(this.powerEnhancement,this.potencyEnhancement,this.costEnhancement)); - } - - @Override - public void defensiveModificationSelf(SpellParadigmSelf parad) - { - parad.addSelfSpellEffect(new SelfDefensiveWind(this.powerEnhancement,this.potencyEnhancement,this.costEnhancement)); - } - - @Override - public void environmentalModificationSelf(SpellParadigmSelf parad) - { - parad.addSelfSpellEffect(new SelfEnvironmentalWind(this.powerEnhancement,this.potencyEnhancement,this.costEnhancement)); - } - - @Override - public void defaultModificationMelee(SpellParadigmMelee parad) - { - parad.addEntityEffect(new MeleeDefaultWind(this.powerEnhancement,this.potencyEnhancement,this.costEnhancement)); - } - - @Override - public void offensiveModificationMelee(SpellParadigmMelee parad) - { - parad.addEntityEffect(new MeleeOffensiveWind(this.powerEnhancement,this.potencyEnhancement,this.costEnhancement)); - } - - @Override - public void defensiveModificationMelee(SpellParadigmMelee parad) - { - parad.addEntityEffect(new MeleeDefensiveWind(this.powerEnhancement,this.potencyEnhancement,this.costEnhancement)); - } - - @Override - public void environmentalModificationMelee(SpellParadigmMelee parad) - { - parad.addWorldEffect(new MeleeEnvironmentalWind(this.powerEnhancement,this.potencyEnhancement,this.costEnhancement)); - } - - @Override - protected int getCostForDefaultProjectile() - { - return (int)(100*(this.potencyEnhancement+1)*Math.pow(0.85, costEnhancement)); - } - - @Override - protected int getCostForOffenseProjectile() - { - return (int)(100*(0.5*this.potencyEnhancement+1)*(this.powerEnhancement+1)*Math.pow(0.85, costEnhancement)); - } - - @Override - protected int getCostForDefenseProjectile() - { - return (int)(100*(this.potencyEnhancement+1)); - } - - @Override - protected int getCostForEnvironmentProjectile() - { - return (int)(50*(this.powerEnhancement+1)*(this.potencyEnhancement+1)*Math.pow(0.85, costEnhancement)); - } - - @Override - protected int getCostForDefaultSelf() - { - return (int)(100*Math.pow(0.85, costEnhancement)); - } - - @Override - protected int getCostForOffenseSelf() - { - return (int)(100*(0.5*this.powerEnhancement+1)*Math.pow(0.85, costEnhancement)); - } - - @Override - protected int getCostForDefenseSelf() - { - return (int)(500*(0.7d*this.powerEnhancement+1)*(0.8*this.potencyEnhancement+1)*Math.pow(0.85, costEnhancement)); - } - - @Override - protected int getCostForEnvironmentSelf() - { - return (int)(500*(0.7d*this.powerEnhancement+1)*(0.2*this.potencyEnhancement+1)*Math.pow(0.85, costEnhancement)); - } - - @Override - protected int getCostForDefaultMelee() - { - return (int)(350*(1.0*this.potencyEnhancement+1)*(1.2*this.powerEnhancement+1)*Math.pow(0.85, costEnhancement)); - } - - @Override - protected int getCostForOffenseMelee() - { - return (int)(250*(1.0*this.potencyEnhancement+1)*(0.7*this.powerEnhancement+1)*Math.pow(0.85, costEnhancement)); - } - - @Override - protected int getCostForDefenseMelee() - { - return (int)(150*(1.0*this.potencyEnhancement+1)*(0.7*this.powerEnhancement+1)*Math.pow(0.85, costEnhancement)); - } - - @Override - protected int getCostForEnvironmentMelee() - { - return (int)(100*(1.0*this.potencyEnhancement+1)*(0.7*this.powerEnhancement+1)*Math.pow(0.85, costEnhancement)); - } - - @Override - public void defaultModificationTool(SpellParadigmTool parad) - { - String toolClass = "axe"; - - float digSpeed = 7.0f; - - switch(this.powerEnhancement) - { - case 1: - digSpeed = 9.0f; - break; - case 2: - digSpeed = 12.0f; - break; - case 3: - digSpeed = 16.0f; - break; - case 4: - digSpeed = 21.0f; - break; - case 5: - digSpeed = 27.0f; - break; - } - - parad.setDigSpeed(toolClass, digSpeed); - - int hlvl = this.potencyEnhancement + 2; - parad.setHarvestLevel(toolClass, hlvl); - } - - @Override - public void offensiveModificationTool(SpellParadigmTool parad) - { - parad.addLeftClickEffect(new ToolOffensiveWind(this.powerEnhancement, this.potencyEnhancement, this.costEnhancement)); - } - - @Override - public void defensiveModificationTool(SpellParadigmTool parad) - { - parad.addLeftClickEffect(new ToolDefensiveWind(this.powerEnhancement, this.potencyEnhancement, this.costEnhancement)); - parad.addToolString("DefWind", "Knockback" + " " + SpellHelper.getNumeralForInt(this.powerEnhancement + 1)); - } - - @Override - public void environmentalModificationTool(SpellParadigmTool parad) - { - parad.addBlockBreakEffect(new ToolEnvironmentalWind(this.powerEnhancement, this.potencyEnhancement, this.costEnhancement)); - } - - @Override - protected int getCostForDefaultTool() - { - return (int)(1000 * (1 + this.potencyEnhancement*0.1f) * (1 + this.powerEnhancement*0.2f) * Math.pow(0.85, costEnhancement)); - } - - @Override - protected int getCostForOffenseTool() - { - return 0; //Cost is on the attack method - } - - @Override - protected int getCostForDefenseTool() - { - return (int)(150 * (1+this.powerEnhancement*0.4f) * (1+this.potencyEnhancement*0.3f) * Math.pow(0.85, costEnhancement)); - } - - @Override - protected int getCostForEnvironmentTool() - { - return (int)(150 * (1+this.powerEnhancement) * Math.pow(0.85, costEnhancement)); - } -} diff --git a/src-backup/main/java/WayofTime/alchemicalWizardry/common/spell/complex/effect/SpellHelper.java b/src-backup/main/java/WayofTime/alchemicalWizardry/common/spell/complex/effect/SpellHelper.java deleted file mode 100644 index 8aa7fd8e..00000000 --- a/src-backup/main/java/WayofTime/alchemicalWizardry/common/spell/complex/effect/SpellHelper.java +++ /dev/null @@ -1,523 +0,0 @@ -package WayofTime.alchemicalWizardry.common.spell.complex.effect; - -import java.util.ArrayList; -import java.util.List; -import java.util.Random; - -import net.minecraft.block.Block; -import net.minecraft.block.BlockLiquid; -import net.minecraft.entity.Entity; -import net.minecraft.entity.EntityLivingBase; -import net.minecraft.entity.item.EntityItem; -import net.minecraft.entity.player.EntityPlayer; -import net.minecraft.entity.player.EntityPlayerMP; -import net.minecraft.init.Blocks; -import net.minecraft.inventory.IInventory; -import net.minecraft.item.Item; -import net.minecraft.item.ItemBlock; -import net.minecraft.item.ItemStack; -import net.minecraft.item.crafting.FurnaceRecipes; -import net.minecraft.util.AxisAlignedBB; -import net.minecraft.util.MathHelper; -import net.minecraft.util.MovingObjectPosition; -import net.minecraft.util.Vec3; -import net.minecraft.world.World; -import net.minecraftforge.common.util.FakePlayer; -import net.minecraftforge.common.util.ForgeDirection; -import net.minecraftforge.oredict.OreDictionary; -import WayofTime.alchemicalWizardry.AlchemicalWizardry; -import WayofTime.alchemicalWizardry.api.alchemy.energy.IAlchemyGoggles; -import WayofTime.alchemicalWizardry.api.items.interfaces.IReagentManipulator; -import WayofTime.alchemicalWizardry.api.soulNetwork.SoulNetworkHandler; -import WayofTime.alchemicalWizardry.common.NewPacketHandler; - -public class SpellHelper -{ - public static Random rand = new Random(); - public static final double root2 = Math.sqrt(2); - - public static boolean canEntityBeSeen(Entity entity, Entity entity2) - { - return entity.worldObj.rayTraceBlocks(Vec3.createVectorHelper(entity.posX, entity.posY, entity.posZ), Vec3.createVectorHelper(entity2.posX, entity2.posY, entity2.posZ), false) == null; - } - - public static void smeltBlockInWorld(World world, int posX, int posY, int posZ) - { - FurnaceRecipes recipes = FurnaceRecipes.smelting(); - - Block block = world.getBlock(posX, posY, posZ); - if(block==null) - { - return; - } - - int meta = world.getBlockMetadata(posX, posY, posZ); - - ItemStack smeltedStack = recipes.getSmeltingResult(new ItemStack(block,1,meta)); - if(smeltedStack!=null && smeltedStack.getItem() instanceof ItemBlock) - { - world.setBlock(posX, posY, posZ, ((ItemBlock)(smeltedStack.getItem())).field_150939_a, smeltedStack.getItemDamage(), 3); - } - } - - public static boolean canPlayerSeeAlchemy(EntityPlayer player) - { - if(player != null) - { - ItemStack stack = player.getCurrentArmor(3); - if(stack != null) - { - Item item = stack.getItem(); - if(item instanceof IAlchemyGoggles && ((IAlchemyGoggles)item).showIngameHUD(player.worldObj, stack, player)) - { - return true; - } - } - - ItemStack heldStack = player.getHeldItem(); - if(heldStack != null && heldStack.getItem() instanceof IReagentManipulator) - { - return true; - } - } - - return false; - } - - public static List getEntitiesInRange(World world, double posX, double posY, double posZ, double horizontalRadius, double verticalRadius) - { - return world.getEntitiesWithinAABB(Entity.class, AxisAlignedBB.getBoundingBox(posX-0.5f, posY-0.5f, posZ-0.5f, posX + 0.5f, posY + 0.5f, posZ + 0.5f).expand(horizontalRadius, verticalRadius, horizontalRadius)); - } - - public static List getLivingEntitiesInRange(World world, double posX, double posY, double posZ, double horizontalRadius, double verticalRadius) - { - return world.getEntitiesWithinAABB(EntityLivingBase.class, AxisAlignedBB.getBoundingBox(posX-0.5f, posY-0.5f, posZ-0.5f, posX + 0.5f, posY + 0.5f, posZ + 0.5f).expand(horizontalRadius, verticalRadius, horizontalRadius)); - } - - public static List getItemsInRange(World world, double posX, double posY, double posZ, double horizontalRadius, double verticalRadius) - { - return world.getEntitiesWithinAABB(EntityItem.class, AxisAlignedBB.getBoundingBox(posX-0.5f, posY-0.5f, posZ-0.5f, posX + 0.5f, posY + 0.5f, posZ + 0.5f).expand(horizontalRadius, verticalRadius, horizontalRadius)); - } - - public static List getPlayersInRange(World world, double posX, double posY, double posZ, double horizontalRadius, double verticalRadius) - { - return world.getEntitiesWithinAABB(EntityPlayer.class, AxisAlignedBB.getBoundingBox(posX-0.5f, posY-0.5f, posZ-0.5f, posX + 0.5f, posY + 0.5f, posZ + 0.5f).expand(horizontalRadius, verticalRadius, horizontalRadius)); - } - - public static double gaussian(double d) - { - return d * ((rand.nextFloat() - 0.5D)); - } - - public static Vec3 getEntityBlockVector(Entity entity) - { - int posX = (int) Math.round(entity.posX - 0.5f); - int posY = (int) entity.posY; - int posZ = (int) Math.round(entity.posZ - 0.5f); - - return entity.getLookVec().createVectorHelper(posX, posY, posZ); - } - - public static ForgeDirection getDirectionForLookVector(Vec3 lookVec) - { - double distance = lookVec.lengthVector(); - - if(lookVec.yCoord>distance*0.9) - { - return ForgeDirection.UP; - } - if(lookVec.yCoordradius*1/root2) - { - return ForgeDirection.SOUTH; - } - if(lookVec.zCoord<-radius*1/root2) - { - return ForgeDirection.NORTH; - } - if(lookVec.xCoord>radius*1/root2) - { - return ForgeDirection.EAST; - } - if(lookVec.xCoord<-radius*1/root2) - { - return ForgeDirection.WEST; - } - - return ForgeDirection.EAST; - } - - public static boolean freezeWaterBlock(World world, int posX, int posY, int posZ) - { - Block block = world.getBlock(posX, posY, posZ); - - if(block == Blocks.water || block == Blocks.flowing_water) - { - world.setBlock(posX, posY, posZ, Blocks.ice); - return true; - } - - return false; - } - - public static String getUsername(EntityPlayer player) - { - return SoulNetworkHandler.getUsername(player); - } - - public static EntityPlayer getPlayerForUsername(String str) - { - return SoulNetworkHandler.getPlayerForUsername(str); - } - - public static void sendParticleToPlayer(EntityPlayer player, String str, double xCoord, double yCoord, double zCoord, double xVel, double yVel, double zVel) - { - if(player instanceof EntityPlayerMP) - { - NewPacketHandler.INSTANCE.sendTo(NewPacketHandler.getParticlePacket(str, xCoord, yCoord, zCoord, xVel, yVel, zVel),(EntityPlayerMP) player); - } - } - - public static void sendIndexedParticleToPlayer(EntityPlayer player, int index, double xCoord, double yCoord, double zCoord) - { - switch(index) - { - case 1: - SpellHelper.sendParticleToPlayer(player, "mobSpell", xCoord + 0.5D + rand.nextGaussian() / 8, yCoord + 1.1D, zCoord + 0.5D + rand.nextGaussian() / 8, 0.5117D, 0.0117D, 0.0117D); - break; - case 2: - SpellHelper.sendParticleToPlayer(player, "reddust", xCoord + 0.5D + rand.nextGaussian() / 8, yCoord + 1.1D, zCoord + 0.5D + rand.nextGaussian() / 8, 0.82D, 0.941D, 0.91D); - break; - case 3: - SpellHelper.sendParticleToPlayer(player, "mobSpell", xCoord + 0.5D + rand.nextGaussian() / 8, yCoord + 1.1D, zCoord + 0.5D + rand.nextGaussian() / 8, 1.0D, 0.371D, 0.371D); - break; - case 4: - float f = (float) 1.0F; - float f1 = f * 0.6F + 0.4F; - float f2 = f * f * 0.7F - 0.5F; - float f3 = f * f * 0.6F - 0.7F; - - for (int l = 0; l < 8; ++l) - { - SpellHelper.sendParticleToPlayer(player,"reddust", xCoord + Math.random() - Math.random(), yCoord + Math.random() - Math.random(), zCoord + Math.random() - Math.random(), f1, f2, f3); - } - break; - } - } - - public static void sendParticleToAllAround(World world, double xPos, double yPos, double zPos, int radius, int dimension, String str, double xCoord, double yCoord, double zCoord, double xVel, double yVel, double zVel) - { - List entities = SpellHelper.getPlayersInRange(world, xPos, yPos, zPos, radius, radius); - - if(entities==null) - { - return; - } - - for(EntityPlayer player : entities) - { - SpellHelper.sendParticleToPlayer(player, str, xCoord, yCoord, zCoord, xVel, yVel, zVel); - } - } - - public static void sendIndexedParticleToAllAround(World world, double xPos, double yPos, double zPos, int radius, int dimension, int index, double xCoord, double yCoord, double zCoord) - { - List entities = SpellHelper.getPlayersInRange(world, xPos, yPos, zPos, radius, radius); - - if(entities==null) - { - return; - } - - for(EntityPlayer player : entities) - { - SpellHelper.sendIndexedParticleToPlayer(player, index, xCoord, yCoord, zCoord); - } - } - - public static void setPlayerSpeedFromServer(EntityPlayer player, double motionX, double motionY, double motionZ) - { - if(player instanceof EntityPlayerMP) - { - NewPacketHandler.INSTANCE.sendTo(NewPacketHandler.getVelSettingPacket(motionX, motionY, motionZ), (EntityPlayerMP) player); - } - } - - public static boolean isFakePlayer(World world, EntityPlayer player) - { - if(world.isRemote) - { - return false; - } - - if(player instanceof FakePlayer || SpellHelper.getUsername(player).contains("[CoFH]")) - { - return true; - } - - String str = player.getClass().getSimpleName(); - if(str.contains("GC")) - { - return false; - } - - if(player.getClass().equals(EntityPlayerMP.class)) - { - return false; - } - - return false; - } - - public static void smashBlock(World world, int posX, int posY, int posZ) - { - Block block = world.getBlock(posX, posY, posZ); - - if(block==Blocks.stone) - { - world.setBlock(posX, posY, posZ, Blocks.cobblestone); - return; - } - else if(block==Blocks.cobblestone) - { - world.setBlock(posX, posY, posZ, Blocks.gravel); - return; - } - else if(block==Blocks.gravel) - { - world.setBlock(posX, posY, posZ, Blocks.sand); - return; - } - } - - public static boolean isBlockFluid(Block block) - { - return block instanceof BlockLiquid; - } - - public static void evaporateWaterBlock(World world, int posX, int posY, int posZ) - { - Block block = world.getBlock(posX, posY, posZ); - - if(block == Blocks.water || block == Blocks.flowing_water) - { - world.setBlockToAir(posX, posY, posZ); - } - } - - public static ItemStack getDustForOre(ItemStack item) - { - String oreName = OreDictionary.getOreName(OreDictionary.getOreID(item)); - - if(oreName.contains("ore")) - { - String lowercaseOre = oreName.toLowerCase(); - boolean isAllowed = false; - - for(String str : AlchemicalWizardry.allowedCrushedOresArray) - { - String testStr = str.toLowerCase(); - - if(lowercaseOre.contains(testStr)) - { - isAllowed = true; - break; - } - } - - if(!isAllowed) - { - return null; - } - - String dustName = oreName.replace("ore", "dust"); - - ArrayList items = OreDictionary.getOres(dustName); - - if(items!=null && items.size()>=1) - { - return(items.get(0).copy()); - } - } - - return null; - } - - public static List getItemsFromBlock(World world, Block block, int x, int y, int z, int meta, boolean silkTouch, int fortune) - { - boolean canSilk = block.canSilkHarvest(world, null, x, y, z, meta); - - if(canSilk && silkTouch) - { - ArrayList items = new ArrayList(); - ItemStack item = new ItemStack(block, 1, meta); - - items.add(item); - - return items; - }else - { - return block.getDrops(world, x, y, z, meta, fortune); - } - } - - public static void spawnItemListInWorld(List items, World world, float x, float y, float z) - { - for(ItemStack stack : items) - { - EntityItem itemEntity = new EntityItem(world, x, y, z, stack); - itemEntity.delayBeforeCanPickup = 10; - world.spawnEntityInWorld(itemEntity); - } - } - - public static MovingObjectPosition raytraceFromEntity (World world, Entity player, boolean par3, double range) - { - float f = 1.0F; - float f1 = player.prevRotationPitch + (player.rotationPitch - player.prevRotationPitch) * f; - float f2 = player.prevRotationYaw + (player.rotationYaw - player.prevRotationYaw) * f; - double d0 = player.prevPosX + (player.posX - player.prevPosX) * (double) f; - double d1 = player.prevPosY + (player.posY - player.prevPosY) * (double) f; - if (!world.isRemote && player instanceof EntityPlayer) - d1 += 1.62D; - double d2 = player.prevPosZ + (player.posZ - player.prevPosZ) * (double) f; - Vec3 vec3 = Vec3.createVectorHelper(d0, d1, d2); - float f3 = MathHelper.cos(-f2 * 0.017453292F - (float) Math.PI); - float f4 = MathHelper.sin(-f2 * 0.017453292F - (float) Math.PI); - float f5 = -MathHelper.cos(-f1 * 0.017453292F); - float f6 = MathHelper.sin(-f1 * 0.017453292F); - float f7 = f4 * f5; - float f8 = f3 * f5; - double d3 = range; - if (player instanceof EntityPlayerMP) - { - d3 = ((EntityPlayerMP) player).theItemInWorldManager.getBlockReachDistance(); - } - Vec3 vec31 = vec3.addVector((double) f7 * d3, (double) f6 * d3, (double) f8 * d3); - return world.func_147447_a(vec3, vec31, par3, !par3, par3); - } - - public static String getNumeralForInt(int num) - { - switch(num) - { - case 1: return "I"; - case 2: return "II"; - case 3: return "III"; - case 4: return "IV"; - case 5: return "V"; - case 6: return "VI"; - case 7: return "VII"; - case 8: return "VIII"; - case 9: return "IX"; - case 10: return "X"; - default: return ""; - } - } - - /** - * Used to determine if stack1 can be placed into stack2. If stack2 is null and stack1 isn't null, returns true. Ignores stack size - * @param stack1 Stack that is placed into a slot - * @param stack2 Slot content that stack1 is placed into - * @return True if they can be combined - */ - public static boolean canCombine(ItemStack stack1, ItemStack stack2) - { - if(stack1 == null) - { - return false; - } - - if(stack2 == null) - { - return true; - } - - if(stack1.isItemStackDamageable() ^ stack2.isItemStackDamageable()) - { - return false; - } - - boolean tagsEqual = ItemStack.areItemStackTagsEqual(stack1, stack2); - - return stack1.getItem() == stack2.getItem() && tagsEqual && stack1.getItemDamage() == stack2.getItemDamage() && Math.min(stack2.getMaxStackSize() - stack2.stackSize, stack1.stackSize) > 0; - } - - /** - * - * @param stack1 Stack that is placed into a slot - * @param stack2 Slot content that stack1 is placed into - * @return Stacks after stacking - */ - public static ItemStack[] combineStacks(ItemStack stack1, ItemStack stack2) - { - ItemStack[] returned = new ItemStack[2]; - - if(canCombine(stack1, stack2)) - { - int transferedAmount = stack2 == null ? stack1.stackSize : Math.min(stack2.getMaxStackSize() - stack2.stackSize, stack1.stackSize); - if(transferedAmount > 0) - { - ItemStack copyStack = stack1.splitStack(transferedAmount); - if(stack2 == null) - { - stack2 = copyStack; - }else - { - stack2.stackSize+=transferedAmount; - } - } - } - - returned[0] = stack1; - returned[1] = stack2; - - return returned; - } - - public static ItemStack insertStackIntoInventory(ItemStack stack, IInventory inventory) - { - if(stack == null) - { - return stack; - } - - for(int i=0; i entities = world.getEntitiesWithinAABB(Entity.class, AxisAlignedBB.getBoundingBox(x-0.5f, y-0.5f, z-0.5f, x + 0.5f, y + 0.5f, z + 0.5f).expand(radius, radius, radius)); - int hit = 0; - - if(entities!=null) - { - for(Entity entity : entities) - { - if(hit=maxBlocks) - { - return; - } - - for(int i=-horizRange; i<=horizRange; i++) - { - for(int j=-vertRange; j<=vertRange; j++) - { - for(int k=-horizRange; k<=horizRange; k++) - { - if(!worldObj.isAirBlock(posX+i, posY+j, posZ+k)&&blocksBroken=-vertRange; j--) - { - if(!world.isAirBlock(posX+i, posY+j, posZ+k)&&!SpellHelper.isBlockFluid(world.getBlock(posX+i, posY+j, posZ+k))) - { - BlockTeleposer.swapBlocks(world, world, posX+i, posY, posZ+k, posX+i, posY+j, posZ+k); - - break; - } - } - } - } - } -} diff --git a/src-backup/main/java/WayofTime/alchemicalWizardry/common/spell/complex/effect/impactEffects/earth/SelfDefensiveEarth.java b/src-backup/main/java/WayofTime/alchemicalWizardry/common/spell/complex/effect/impactEffects/earth/SelfDefensiveEarth.java deleted file mode 100644 index d0053320..00000000 --- a/src-backup/main/java/WayofTime/alchemicalWizardry/common/spell/complex/effect/impactEffects/earth/SelfDefensiveEarth.java +++ /dev/null @@ -1,27 +0,0 @@ -package WayofTime.alchemicalWizardry.common.spell.complex.effect.impactEffects.earth; - -import net.minecraft.entity.player.EntityPlayer; -import net.minecraft.potion.Potion; -import net.minecraft.potion.PotionEffect; -import net.minecraft.world.World; -import WayofTime.alchemicalWizardry.AlchemicalWizardry; -import WayofTime.alchemicalWizardry.common.spell.complex.effect.impactEffects.SelfSpellEffect; - -public class SelfDefensiveEarth extends SelfSpellEffect -{ - - public SelfDefensiveEarth(int power, int potency, int cost) - { - super(power, potency, cost); - } - - @Override - public void onSelfUse(World world, EntityPlayer player) - { - int pot = 2*this.potencyUpgrades + 1; - int duration = 20*60*(this.powerUpgrades+1); - - player.addPotionEffect(new PotionEffect(Potion.field_76434_w.id,duration, pot)); - player.addPotionEffect(new PotionEffect(AlchemicalWizardry.customPotionHeavyHeart.id, duration, pot)); - } -} diff --git a/src-backup/main/java/WayofTime/alchemicalWizardry/common/spell/complex/effect/impactEffects/earth/SelfEnvironmentalEarth.java b/src-backup/main/java/WayofTime/alchemicalWizardry/common/spell/complex/effect/impactEffects/earth/SelfEnvironmentalEarth.java deleted file mode 100644 index d73381ee..00000000 --- a/src-backup/main/java/WayofTime/alchemicalWizardry/common/spell/complex/effect/impactEffects/earth/SelfEnvironmentalEarth.java +++ /dev/null @@ -1,37 +0,0 @@ -package WayofTime.alchemicalWizardry.common.spell.complex.effect.impactEffects.earth; - -import java.util.List; - -import net.minecraft.entity.Entity; -import net.minecraft.entity.EntityLiving; -import net.minecraft.entity.player.EntityPlayer; -import net.minecraft.potion.Potion; -import net.minecraft.potion.PotionEffect; -import net.minecraft.world.World; -import WayofTime.alchemicalWizardry.common.spell.complex.effect.SpellHelper; -import WayofTime.alchemicalWizardry.common.spell.complex.effect.impactEffects.SelfSpellEffect; - -public class SelfEnvironmentalEarth extends SelfSpellEffect -{ - public SelfEnvironmentalEarth(int power, int potency, int cost) - { - super(power, potency, cost); - } - - @Override - public void onSelfUse(World world, EntityPlayer player) - { - float radius = this.powerUpgrades*2 + 1.5f; - int dur = this.powerUpgrades*5*20 + 60; - - List entities = SpellHelper.getEntitiesInRange(world, player.posX, player.posY, player.posZ, radius, radius); - - for(Entity entity : entities) - { - if(entity instanceof EntityLiving) - { - ((EntityLiving) entity).addPotionEffect(new PotionEffect(Potion.weakness.id,dur,this.potencyUpgrades)); - } - } - } -} diff --git a/src-backup/main/java/WayofTime/alchemicalWizardry/common/spell/complex/effect/impactEffects/earth/SelfOffensiveEarth.java b/src-backup/main/java/WayofTime/alchemicalWizardry/common/spell/complex/effect/impactEffects/earth/SelfOffensiveEarth.java deleted file mode 100644 index 6637e9d8..00000000 --- a/src-backup/main/java/WayofTime/alchemicalWizardry/common/spell/complex/effect/impactEffects/earth/SelfOffensiveEarth.java +++ /dev/null @@ -1,43 +0,0 @@ -package WayofTime.alchemicalWizardry.common.spell.complex.effect.impactEffects.earth; - -import net.minecraft.entity.player.EntityPlayer; -import net.minecraft.util.Vec3; -import net.minecraft.world.World; -import WayofTime.alchemicalWizardry.common.spell.complex.effect.SpellHelper; -import WayofTime.alchemicalWizardry.common.spell.complex.effect.impactEffects.SelfSpellEffect; - -public class SelfOffensiveEarth extends SelfSpellEffect -{ - - public SelfOffensiveEarth(int power, int potency, int cost) - { - super(power, potency, cost); - } - - @Override - public void onSelfUse(World world, EntityPlayer player) - { - int horizRadius = this.powerUpgrades; - int vertRadius = this.potencyUpgrades + 1; - - Vec3 blockVec = SpellHelper.getEntityBlockVector(player); - - int posX = (int)(blockVec.xCoord); - int posY = (int)(blockVec.yCoord); - int posZ = (int)(blockVec.zCoord); - - for(int i=-horizRadius; i<=horizRadius; i++) - { - for(int j=-vertRadius; j<0; j++) - { - for(int k=-horizRadius; k<=horizRadius; k++) - { - if(world.rand.nextFloat()<0.7f) - { - SpellHelper.smashBlock(world, posX+i, posY+j, posZ+k); - } - } - } - } - } -} diff --git a/src-backup/main/java/WayofTime/alchemicalWizardry/common/spell/complex/effect/impactEffects/earth/ToolEnvironmentalEarth.java b/src-backup/main/java/WayofTime/alchemicalWizardry/common/spell/complex/effect/impactEffects/earth/ToolEnvironmentalEarth.java deleted file mode 100644 index a6f03bc1..00000000 --- a/src-backup/main/java/WayofTime/alchemicalWizardry/common/spell/complex/effect/impactEffects/earth/ToolEnvironmentalEarth.java +++ /dev/null @@ -1,86 +0,0 @@ -package WayofTime.alchemicalWizardry.common.spell.complex.effect.impactEffects.earth; - -import net.minecraft.entity.player.EntityPlayer; -import net.minecraft.item.ItemStack; -import net.minecraft.util.MovingObjectPosition; -import net.minecraft.world.World; -import net.minecraftforge.common.util.ForgeDirection; -import WayofTime.alchemicalWizardry.common.items.spell.ItemSpellMultiTool; -import WayofTime.alchemicalWizardry.common.spell.complex.effect.impactEffects.tool.DigAreaEffect; - -public class ToolEnvironmentalEarth extends DigAreaEffect -{ - public ToolEnvironmentalEarth(int power, int potency, int cost) - { - super(power, potency, cost); - } - - @Override - public int digSurroundingArea(ItemStack container, World world, EntityPlayer player, MovingObjectPosition blockPos, String usedToolClass, float blockHardness, int harvestLvl, ItemSpellMultiTool itemTool) - { - if(!blockPos.typeOfHit.equals(MovingObjectPosition.MovingObjectType.BLOCK)) - { - return 0; - } - - int x = blockPos.blockX; - int y = blockPos.blockY; - int z = blockPos.blockZ; - ForgeDirection sidehit = ForgeDirection.getOrientation(blockPos.sideHit); - - int radius = 2; - int depth = 5; - - depth--; - - int posX = radius; - int negX = radius; - int posY = radius; - int negY = radius; - int posZ = radius; - int negZ = radius; - - switch(sidehit) - { - case UP: - posY = 0; - negY = depth; - break; - case DOWN: - negY = 0; - posY = depth; - break; - case SOUTH: - posZ = 0; - negZ = depth; - break; - case NORTH: - negZ = 0; - posZ = depth; - break; - case WEST: - negX = 0; - posX = depth; - break; - case EAST: - posX = 0; - negX = depth; - break; - - default: - } - - for(int xPos = x-negX; xPos <= x+posX; xPos++) - { - for(int yPos = y-negY; yPos <= y+posY; yPos++) - { - for(int zPos = z-negZ; zPos <= z+posZ; zPos++) - { - this.breakBlock(container, world, player, blockHardness, xPos, yPos, zPos, itemTool); - } - } - } - - return 0; - } -} diff --git a/src-backup/main/java/WayofTime/alchemicalWizardry/common/spell/complex/effect/impactEffects/earth/ToolOffensiveEarth.java b/src-backup/main/java/WayofTime/alchemicalWizardry/common/spell/complex/effect/impactEffects/earth/ToolOffensiveEarth.java deleted file mode 100644 index 240bef61..00000000 --- a/src-backup/main/java/WayofTime/alchemicalWizardry/common/spell/complex/effect/impactEffects/earth/ToolOffensiveEarth.java +++ /dev/null @@ -1,58 +0,0 @@ -package WayofTime.alchemicalWizardry.common.spell.complex.effect.impactEffects.earth; - - -import java.util.LinkedList; -import java.util.List; - - -import net.minecraft.block.Block; -import net.minecraft.init.Blocks; -import net.minecraft.item.ItemBlock; -import net.minecraft.item.ItemStack; -import WayofTime.alchemicalWizardry.common.spell.complex.effect.impactEffects.tool.ItemManipulator; - - -public class ToolOffensiveEarth extends ItemManipulator -{ - public static Block[] mundaneList = new Block[]{Blocks.stone,Blocks.cobblestone,Blocks.sand,Blocks.gravel,Blocks.netherrack,Blocks.dirt}; - - - public ToolOffensiveEarth(int power, int potency, int cost) - { - super(power, potency, cost); - } - - - @Override - public List handleItemsOnBlockBroken(ItemStack toolStack, List itemList) - { - List newList = new LinkedList(); - - - for(ItemStack stack : itemList) - { - if(stack != null && stack.getItem() instanceof ItemBlock && !this.isMundaneBlock(((ItemBlock)stack.getItem()).field_150939_a)) - { - newList.add(stack); - } - } - - - return newList; - } - - - public boolean isMundaneBlock(Block block) - { - for(Block test : mundaneList) - { - if(test.equals(block)) - { - return true; - } - } - - - return false; - } -} diff --git a/src-backup/main/java/WayofTime/alchemicalWizardry/common/spell/complex/effect/impactEffects/fire/MeleeDefaultFire.java b/src-backup/main/java/WayofTime/alchemicalWizardry/common/spell/complex/effect/impactEffects/fire/MeleeDefaultFire.java deleted file mode 100644 index af369dea..00000000 --- a/src-backup/main/java/WayofTime/alchemicalWizardry/common/spell/complex/effect/impactEffects/fire/MeleeDefaultFire.java +++ /dev/null @@ -1,30 +0,0 @@ -package WayofTime.alchemicalWizardry.common.spell.complex.effect.impactEffects.fire; - -import net.minecraft.entity.Entity; -import net.minecraft.entity.EntityLiving; -import net.minecraft.entity.player.EntityPlayer; -import net.minecraft.world.World; -import WayofTime.alchemicalWizardry.common.spell.complex.effect.impactEffects.ExtrapolatedMeleeEntityEffect; - -public class MeleeDefaultFire extends ExtrapolatedMeleeEntityEffect -{ - public MeleeDefaultFire(int power, int potency, int cost) - { - super(power, potency, cost); - this.setRange(3+0.3f*potency); - this.setRadius(2+0.3f*potency); - this.setMaxNumberHit(potency+1); - } - - @Override - protected boolean entityEffect(World world, Entity entity, EntityPlayer entityPlayer) - { - if(entity instanceof EntityLiving) - { - entity.setFire(3*this.powerUpgrades+3); - return true; - } - - return false; - } -} diff --git a/src-backup/main/java/WayofTime/alchemicalWizardry/common/spell/complex/effect/impactEffects/fire/MeleeDefensiveFire.java b/src-backup/main/java/WayofTime/alchemicalWizardry/common/spell/complex/effect/impactEffects/fire/MeleeDefensiveFire.java deleted file mode 100644 index 3fb3d275..00000000 --- a/src-backup/main/java/WayofTime/alchemicalWizardry/common/spell/complex/effect/impactEffects/fire/MeleeDefensiveFire.java +++ /dev/null @@ -1,49 +0,0 @@ -package WayofTime.alchemicalWizardry.common.spell.complex.effect.impactEffects.fire; - -import net.minecraft.entity.player.EntityPlayer; -import net.minecraft.init.Blocks; -import net.minecraft.util.Vec3; -import net.minecraft.world.World; -import net.minecraftforge.common.util.ForgeDirection; -import WayofTime.alchemicalWizardry.common.spell.complex.effect.SpellHelper; -import WayofTime.alchemicalWizardry.common.spell.complex.effect.impactEffects.MeleeSpellWorldEffect; - -public class MeleeDefensiveFire extends MeleeSpellWorldEffect -{ - public MeleeDefensiveFire(int power, int potency, int cost) - { - super(power, potency, cost); - } - - @Override - public void onWorldEffect(World world, EntityPlayer entityPlayer) - { - ForgeDirection look = SpellHelper.getCompassDirectionForLookVector(entityPlayer.getLookVec()); - - int width = this.potencyUpgrades + 1; - int length = 5*this.powerUpgrades + 3; - - int xOffset = look.offsetX; - int zOffset = look.offsetZ; - - Vec3 lookVec = SpellHelper.getEntityBlockVector(entityPlayer); - - int xStart = (int)(lookVec.xCoord)+1*xOffset; - int zStart = (int)(lookVec.zCoord)+1*zOffset; - int yStart = (int)(lookVec.yCoord)-1; - - for(int i=-width; i<=width; i++) - { - for(int j=0; j handleItemsOnBlockBroken(ItemStack toolStack, List itemList) - { - LinkedList newList = new LinkedList(); - for(ItemStack item : itemList) - { - ItemStack newItem = FurnaceRecipes.smelting().getSmeltingResult(item); - if(newItem != null) - { - newList.add(newItem); - } - else - { - newList.add(item); - } - } - - return newList; - } - -} diff --git a/src-backup/main/java/WayofTime/alchemicalWizardry/common/spell/complex/effect/impactEffects/fire/ToolEnvironmentalFire.java b/src-backup/main/java/WayofTime/alchemicalWizardry/common/spell/complex/effect/impactEffects/fire/ToolEnvironmentalFire.java deleted file mode 100644 index cfa1aa8b..00000000 --- a/src-backup/main/java/WayofTime/alchemicalWizardry/common/spell/complex/effect/impactEffects/fire/ToolEnvironmentalFire.java +++ /dev/null @@ -1,47 +0,0 @@ -package WayofTime.alchemicalWizardry.common.spell.complex.effect.impactEffects.fire; - -import java.util.Random; - -import net.minecraft.block.Block; -import net.minecraft.entity.player.EntityPlayer; -import net.minecraft.init.Blocks; -import net.minecraft.item.ItemStack; -import net.minecraft.world.World; -import net.minecraftforge.common.util.ForgeDirection; -import WayofTime.alchemicalWizardry.common.spell.complex.effect.impactEffects.tool.OnBreakBlockEffect; - -public class ToolEnvironmentalFire extends OnBreakBlockEffect -{ - public ToolEnvironmentalFire(int power, int potency, int cost) - { - super(power, potency, cost); - } - - @Override - public int onBlockBroken(ItemStack container, World world, EntityPlayer player, Block block, int meta, int x, int y, int z, ForgeDirection sideBroken) - { - int amount = 0; - int cost = (int)(250 * (1 - 0.1f*powerUpgrades) * Math.pow(0.85, costUpgrades)); - int radius = this.powerUpgrades; - float chance = 0.35f + 0.15f*this.potencyUpgrades; - - for(int i=-radius; i<=radius; i++) - { - for(int j=-radius; j<=radius; j++) - { - for(int k=-radius; k<=radius; k++) - { - Block blockAffected = world.getBlock(x + i -sideBroken.offsetX, y + j, z + k - sideBroken.offsetZ); - - if((new Random().nextFloat() <= chance) && (blockAffected == Blocks.gravel || blockAffected == Blocks.stone || blockAffected == Blocks.cobblestone)) - { - world.setBlock(x + i -sideBroken.offsetX, y + j, z + k - sideBroken.offsetZ, Blocks.lava); - amount += cost; - } - } - } - } - - return amount; - } -} diff --git a/src-backup/main/java/WayofTime/alchemicalWizardry/common/spell/complex/effect/impactEffects/fire/ToolOffensiveFire.java b/src-backup/main/java/WayofTime/alchemicalWizardry/common/spell/complex/effect/impactEffects/fire/ToolOffensiveFire.java deleted file mode 100644 index 40a59bf0..00000000 --- a/src-backup/main/java/WayofTime/alchemicalWizardry/common/spell/complex/effect/impactEffects/fire/ToolOffensiveFire.java +++ /dev/null @@ -1,21 +0,0 @@ -package WayofTime.alchemicalWizardry.common.spell.complex.effect.impactEffects.fire; - -import net.minecraft.entity.EntityLivingBase; -import net.minecraft.item.ItemStack; -import WayofTime.alchemicalWizardry.common.spell.complex.effect.impactEffects.tool.LeftClickEffect; - -public class ToolOffensiveFire extends LeftClickEffect -{ - public ToolOffensiveFire(int power, int potency, int cost) - { - super(power, potency, cost); - } - - @Override - public int onLeftClickEntity(ItemStack stack, EntityLivingBase attacked, EntityLivingBase weilder) - { - attacked.setFire(3 + 4*this.powerUpgrades); - - return (int)(10*(1+this.powerUpgrades)*Math.pow(0.85, this.costUpgrades)); - } -} diff --git a/src-backup/main/java/WayofTime/alchemicalWizardry/common/spell/complex/effect/impactEffects/ice/MeleeDefaultIce.java b/src-backup/main/java/WayofTime/alchemicalWizardry/common/spell/complex/effect/impactEffects/ice/MeleeDefaultIce.java deleted file mode 100644 index 7992509e..00000000 --- a/src-backup/main/java/WayofTime/alchemicalWizardry/common/spell/complex/effect/impactEffects/ice/MeleeDefaultIce.java +++ /dev/null @@ -1,28 +0,0 @@ -package WayofTime.alchemicalWizardry.common.spell.complex.effect.impactEffects.ice; - -import net.minecraft.entity.Entity; -import net.minecraft.entity.player.EntityPlayer; -import net.minecraft.world.World; -import WayofTime.alchemicalWizardry.common.spell.complex.effect.impactEffects.ExtrapolatedMeleeEntityEffect; - -public class MeleeDefaultIce extends ExtrapolatedMeleeEntityEffect { - - public MeleeDefaultIce(int power, int potency, int cost) - { - super(power, potency, cost); - this.setRange(3+0.3f*potency); - this.setRadius(2+0.3f*potency); - this.setMaxNumberHit(potency+1); - } - - @Override - protected boolean entityEffect(World world, Entity entity, EntityPlayer entityPlayer) - { - if(entity.hurtResistantTime>0) - { - entity.hurtResistantTime = Math.max(0, -(potencyUpgrades+1)+entity.hurtResistantTime); - } - - return true; - } -} diff --git a/src-backup/main/java/WayofTime/alchemicalWizardry/common/spell/complex/effect/impactEffects/ice/MeleeDefensiveIce.java b/src-backup/main/java/WayofTime/alchemicalWizardry/common/spell/complex/effect/impactEffects/ice/MeleeDefensiveIce.java deleted file mode 100644 index 03471ca7..00000000 --- a/src-backup/main/java/WayofTime/alchemicalWizardry/common/spell/complex/effect/impactEffects/ice/MeleeDefensiveIce.java +++ /dev/null @@ -1,48 +0,0 @@ -package WayofTime.alchemicalWizardry.common.spell.complex.effect.impactEffects.ice; - -import net.minecraft.entity.player.EntityPlayer; -import net.minecraft.init.Blocks; -import net.minecraft.util.Vec3; -import net.minecraft.world.World; -import net.minecraftforge.common.util.ForgeDirection; -import WayofTime.alchemicalWizardry.common.spell.complex.effect.SpellHelper; -import WayofTime.alchemicalWizardry.common.spell.complex.effect.impactEffects.MeleeSpellWorldEffect; - -public class MeleeDefensiveIce extends MeleeSpellWorldEffect -{ - public MeleeDefensiveIce(int power, int potency, int cost) - { - super(power, potency, cost); - } - - @Override - public void onWorldEffect(World world, EntityPlayer entityPlayer) - { - ForgeDirection look = SpellHelper.getCompassDirectionForLookVector(entityPlayer.getLookVec()); - - int width = this.powerUpgrades; - int height = this.powerUpgrades + 2; - - int xOffset = look.offsetX; - int zOffset = look.offsetZ; - - int range = this.potencyUpgrades + 1; - - Vec3 lookVec = SpellHelper.getEntityBlockVector(entityPlayer); - - int xStart = (int)(lookVec.xCoord) + range * xOffset; - int zStart = (int)(lookVec.zCoord) + range * zOffset; - int yStart = (int)(lookVec.yCoord); - - for(int i=-width; i<=width; i++) - { - for(int j=0; j entities = SpellHelper.getEntitiesInRange(world, player.posX, player.posY, player.posZ,horizRadius, vertRadius); - - if(entities==null) - { - return; - } - - int i=0; - int number = this.powerUpgrades+1; - - for(Entity entity : entities) - { - if(i>=number) - { - continue; - } - - if(entity instanceof EntityLivingBase && !entity.equals(player)) - { - ((EntityLivingBase) entity).addPotionEffect(new PotionEffect(Potion.moveSlowdown.id,60*(1+this.powerUpgrades),this.potencyUpgrades)); - - i++; - } - } - } -} diff --git a/src-backup/main/java/WayofTime/alchemicalWizardry/common/spell/complex/effect/impactEffects/ice/ToolDefaultIce.java b/src-backup/main/java/WayofTime/alchemicalWizardry/common/spell/complex/effect/impactEffects/ice/ToolDefaultIce.java deleted file mode 100644 index 295ed906..00000000 --- a/src-backup/main/java/WayofTime/alchemicalWizardry/common/spell/complex/effect/impactEffects/ice/ToolDefaultIce.java +++ /dev/null @@ -1,30 +0,0 @@ -package WayofTime.alchemicalWizardry.common.spell.complex.effect.impactEffects.ice; - - -import net.minecraft.entity.EntityLivingBase; -import net.minecraft.item.ItemStack; -import net.minecraft.potion.Potion; -import net.minecraft.potion.PotionEffect; -import WayofTime.alchemicalWizardry.common.spell.complex.effect.impactEffects.tool.LeftClickEffect; - - -public class ToolDefaultIce extends LeftClickEffect -{ - public ToolDefaultIce(int power, int potency, int cost) - { - super(power, potency, cost); - } - - - @Override - public int onLeftClickEntity(ItemStack stack, EntityLivingBase attacked, EntityLivingBase weilder) - { - int duration = 200; - - - attacked.addPotionEffect(new PotionEffect(Potion.moveSlowdown.id,duration,this.powerUpgrades)); - - - return 0; - } -} diff --git a/src-backup/main/java/WayofTime/alchemicalWizardry/common/spell/complex/effect/impactEffects/ice/ToolDefensiveIce.java b/src-backup/main/java/WayofTime/alchemicalWizardry/common/spell/complex/effect/impactEffects/ice/ToolDefensiveIce.java deleted file mode 100644 index 4a4fac77..00000000 --- a/src-backup/main/java/WayofTime/alchemicalWizardry/common/spell/complex/effect/impactEffects/ice/ToolDefensiveIce.java +++ /dev/null @@ -1,62 +0,0 @@ -package WayofTime.alchemicalWizardry.common.spell.complex.effect.impactEffects.ice; - -import java.util.List; - -import net.minecraft.entity.Entity; -import net.minecraft.entity.EntityLivingBase; -import net.minecraft.init.Blocks; -import net.minecraft.item.ItemStack; -import net.minecraft.potion.Potion; -import net.minecraft.potion.PotionEffect; -import net.minecraft.util.Vec3; -import net.minecraft.world.World; -import net.minecraftforge.common.util.ForgeDirection; -import WayofTime.alchemicalWizardry.common.spell.complex.effect.SpellHelper; -import WayofTime.alchemicalWizardry.common.spell.complex.effect.impactEffects.tool.SummonToolEffect; - -public class ToolDefensiveIce extends SummonToolEffect -{ - public ToolDefensiveIce(int power, int potency, int cost) - { - super(power, potency, cost); - } - - @Override - public int onSummonTool(ItemStack toolStack, World world, Entity entity) - { - int horizRadius = this.powerUpgrades*2+2; - int vertRadius = this.powerUpgrades * 3 + 2; - List entityList = SpellHelper.getEntitiesInRange(world, entity.posX, entity.posY, entity.posZ, horizRadius, vertRadius); - - for(Entity ent : entityList) - { - if(ent instanceof EntityLivingBase && !ent.equals(entity)) - { - ((EntityLivingBase)ent).addPotionEffect(new PotionEffect(Potion.moveSlowdown.id,200,this.potencyUpgrades*2)); - } - } - - Vec3 blockVec = SpellHelper.getEntityBlockVector(entity); - - int x = (int)(blockVec.xCoord); - int y = (int)(blockVec.yCoord); - int z = (int)(blockVec.zCoord); - - for(int posX = x-horizRadius; posX <= x+horizRadius; posX++) - { - for(int posY = y-vertRadius; posY <= y+vertRadius; posY++) - { - for(int posZ = z-horizRadius; posZ <= z+horizRadius; posZ++) - { - SpellHelper.freezeWaterBlock(world, posX, posY, posZ); - if(world.isSideSolid(posX, posY, posZ, ForgeDirection.UP) && world.isAirBlock(posX, posY+1, posZ)) - { - world.setBlock(posX, posY+1, posZ, Blocks.snow_layer); - } - } - } - } - - return 0; - } -} diff --git a/src-backup/main/java/WayofTime/alchemicalWizardry/common/spell/complex/effect/impactEffects/tool/DigAreaEffect.java b/src-backup/main/java/WayofTime/alchemicalWizardry/common/spell/complex/effect/impactEffects/tool/DigAreaEffect.java deleted file mode 100644 index c1e9511f..00000000 --- a/src-backup/main/java/WayofTime/alchemicalWizardry/common/spell/complex/effect/impactEffects/tool/DigAreaEffect.java +++ /dev/null @@ -1,138 +0,0 @@ -package WayofTime.alchemicalWizardry.common.spell.complex.effect.impactEffects.tool; - -import java.util.List; - -import net.minecraft.block.Block; -import net.minecraft.entity.player.EntityPlayer; -import net.minecraft.item.ItemStack; -import net.minecraft.util.MovingObjectPosition; -import net.minecraft.world.World; -import net.minecraftforge.common.util.ForgeDirection; -import WayofTime.alchemicalWizardry.common.items.spell.ItemSpellMultiTool; -import WayofTime.alchemicalWizardry.common.spell.complex.SpellParadigmTool; -import WayofTime.alchemicalWizardry.common.spell.complex.effect.SpellHelper; - -public class DigAreaEffect implements IDigAreaEffect -{ - protected int powerUpgrades; - protected int potencyUpgrades; - protected int costUpgrades; - - public DigAreaEffect(int power, int potency, int cost) - { - this.powerUpgrades = power; - this.potencyUpgrades = potency; - this.costUpgrades = cost; - } - - @Override - public int digSurroundingArea(ItemStack container, World world, EntityPlayer player, MovingObjectPosition blockPos, String usedToolClass, float blockHardness, int harvestLvl, ItemSpellMultiTool itemTool) - { - if(!blockPos.typeOfHit.equals(MovingObjectPosition.MovingObjectType.BLOCK)) - { - return 0; - } - - int x = blockPos.blockX; - int y = blockPos.blockY; - int z = blockPos.blockZ; - ForgeDirection sidehit = ForgeDirection.getOrientation(blockPos.sideHit); - - for(int xPos = x-1; xPos <= x+1; xPos++) - { - for(int yPos = y-1; yPos <= y+1; yPos++) - { - for(int zPos = z-1; zPos <= z+1; zPos++) - { - this.breakBlock(container, world, player, blockHardness, xPos, yPos, zPos, itemTool); - } - } - } - - return 0; - } - - public void breakBlock(ItemStack container, World world, EntityPlayer player, float blockHardness, int x, int y, int z, ItemSpellMultiTool itemTool) - { - int hlvl = -1; - Block localBlock = world.getBlock(x, y, z); - int localMeta = world.getBlockMetadata(x, y, z); - String toolClass = localBlock.getHarvestTool(localMeta); - if (toolClass != null && itemTool.getHarvestLevel(container, toolClass) != -1) - hlvl = localBlock.getHarvestLevel(localMeta); - int toolLevel = itemTool.getHarvestLevel(container, toolClass); - - float localHardness = localBlock == null ? Float.MAX_VALUE : localBlock.getBlockHardness(world, x, y, z); - - if (hlvl <= toolLevel && localHardness - this.getHardnessDifference() <= blockHardness) - { - boolean cancelHarvest = false; - - if (!cancelHarvest) - { - if (localBlock != null && !(localHardness < 0)) - { - boolean isEffective = false; - - String localToolClass = itemTool.getToolClassForMaterial(localBlock.getMaterial()); - - if(localToolClass != null && itemTool.getHarvestLevel(container, toolClass) >= localBlock.getHarvestLevel(localMeta)) - { - isEffective = true; - } - - - if (localBlock.getMaterial().isToolNotRequired()) - { - isEffective = true; - } - - - if (!player.capabilities.isCreativeMode) - { - if (isEffective) - { - if (localBlock.removedByPlayer(world, player, x, y, z)) - { - localBlock.onBlockDestroyedByPlayer(world, x, y, z, localMeta); - } - //localBlock.harvestBlock(world, player, x, y, z, localMeta); - localBlock.onBlockHarvested(world, x, y, z, localMeta, player); - if (localHardness > 0f) - itemTool.onBlockDestroyed(container, world, localBlock, x, y, z, player); - - List items = SpellHelper.getItemsFromBlock(world, localBlock, x, y, z, localMeta, itemTool.getSilkTouch(container), itemTool.getFortuneLevel(container)); - - SpellParadigmTool parad = itemTool.loadParadigmFromStack(container); - items = parad.handleItemList(container, items); - - if(!world.isRemote) - { - SpellHelper.spawnItemListInWorld(items, world, x + 0.5f, y + 0.5f, z + 0.5f); - } - - world.func_147479_m(x, y, z); - } - else - { -// world.setBlockToAir(x, y, z); -// world.func_147479_m(x, y, z); - } - - - } - else - { - world.setBlockToAir(x, y, z); - world.func_147479_m(x, y, z); - } - } - } - } - } - - public float getHardnessDifference() - { - return 1.5f; - } -} diff --git a/src-backup/main/java/WayofTime/alchemicalWizardry/common/spell/complex/effect/impactEffects/tool/DigAreaTunnel.java b/src-backup/main/java/WayofTime/alchemicalWizardry/common/spell/complex/effect/impactEffects/tool/DigAreaTunnel.java deleted file mode 100644 index 323ab050..00000000 --- a/src-backup/main/java/WayofTime/alchemicalWizardry/common/spell/complex/effect/impactEffects/tool/DigAreaTunnel.java +++ /dev/null @@ -1,171 +0,0 @@ -package WayofTime.alchemicalWizardry.common.spell.complex.effect.impactEffects.tool; - -import java.util.LinkedList; -import java.util.List; -import java.util.Random; - -import net.minecraft.entity.player.EntityPlayer; -import net.minecraft.item.ItemStack; -import net.minecraft.util.MovingObjectPosition; -import net.minecraft.util.Vec3; -import net.minecraft.world.World; -import net.minecraftforge.common.util.ForgeDirection; -import WayofTime.alchemicalWizardry.common.items.spell.ItemSpellMultiTool; - -public class DigAreaTunnel extends DigAreaEffect -{ - Random rand = new Random(); - - public DigAreaTunnel(int power, int potency, int cost) - { - super(power, potency, cost); - } - - @Override - public int digSurroundingArea(ItemStack container, World world, EntityPlayer player, MovingObjectPosition blockPos, String usedToolClass, float blockHardness, int harvestLvl, ItemSpellMultiTool itemTool) - { - if(!blockPos.typeOfHit.equals(MovingObjectPosition.MovingObjectType.BLOCK)) - { - return 0; - } - - List vectorLine = new LinkedList(); - - double initialX = blockPos.blockX; - double initialY = blockPos.blockY; - double initialZ = blockPos.blockZ; - ForgeDirection sidehit = ForgeDirection.getOrientation(blockPos.sideHit); - ForgeDirection opposite = sidehit.getOpposite(); - - System.out.println(opposite.toString()); - - double initialLength = this.getRandomVectorLength(); - - Vec3 initialVector = Vec3.createVectorHelper(opposite.offsetX*initialLength, opposite.offsetY*initialLength, opposite.offsetZ*initialLength); - - Vec3 lastVec = Vec3.createVectorHelper(initialVector.xCoord, initialVector.yCoord, initialVector.zCoord); - vectorLine.add(initialVector); - - double currentLength = lastVec.lengthVector(); - double totalLength = this.totalLength(); - - while(currentLength < totalLength-0.01) - { - Vec3 tempVec = lastVec.addVector(0, 0, 0); - - tempVec = tempVec.normalize(); - - double varr = this.varyRate(); - - tempVec = tempVec.addVector(varr*(rand.nextFloat() - rand.nextFloat()), varr*(rand.nextFloat() - rand.nextFloat()), varr*(rand.nextFloat() - rand.nextFloat())); - - tempVec = tempVec.normalize(); - - double length = Math.min(this.getRandomVectorLength(), totalLength-currentLength); - - tempVec.xCoord = tempVec.xCoord*length; - tempVec.yCoord = tempVec.yCoord*length; - tempVec.zCoord = tempVec.zCoord*length; - - vectorLine.add(tempVec); - - lastVec = tempVec; - - currentLength += tempVec.lengthVector(); - } - - for(Vec3 testVec : vectorLine) - { - this.travelVector(testVec, world, initialX, initialY, initialZ); - - initialX += testVec.xCoord; - initialY += testVec.yCoord; - initialZ += testVec.zCoord; - } - - this.travelVector(lastVec, world, initialX, initialY, initialZ); - - return 0; - } - - public double totalLength() - { - return 100; - } - - public double getStepSize() - { - return 1; - } - - public double varyRate() - { - return 0.5; - } - - public double getRandomVectorLength() - { - return 10; - } - - public double getRandomStepLength() - { - return 0.5; - } - - public int getRandomRadius() - { - return 3; - } - - public void destroySphereOfMundane(World world, double x, double y, double z, int radius) - { - for(int i=-radius; i<=radius; i++) - { - for(int j=-radius; j<=radius; j++) - { - for(int k=-radius; k<=radius; k++) - { - if (i * i + j * j + k * k >= (radius + 0.50f) * (radius + 0.50f)) - { - continue; - } - - int newX = (int)(i + x + 0.5); - int newY = (int)(j + y + 0.5); - int newZ = (int)(k + z + 0.5); - - this.destroyMunadeAt(world, newX, newY, newZ); - } - } - } - } - - public void destroyMunadeAt(World world, int x, int y, int z) - { - world.setBlockToAir(x, y, z); - } - - public void travelVector(Vec3 vector, World world, double x, double y, double z) - { - double vecLength = vector.lengthVector(); - System.out.println(vecLength); - Vec3 normVec = Vec3.createVectorHelper(vector.xCoord, vector.yCoord, vector.zCoord); - normVec = normVec.normalize(); - - Vec3 prevVec = Vec3.createVectorHelper(0, 0, 0); - double distanceTravelled = 0; - - while(distanceTravelled < vecLength) - { - System.out.println(distanceTravelled); - double stepLength = this.getRandomStepLength(); - - prevVec = prevVec.addVector(stepLength*normVec.xCoord, stepLength*normVec.yCoord, normVec.zCoord); - - this.destroySphereOfMundane(world, prevVec.xCoord + x, prevVec.yCoord + y, prevVec.zCoord + z, this.getRandomRadius()); - - distanceTravelled = prevVec.lengthVector(); - } - } -} diff --git a/src-backup/main/java/WayofTime/alchemicalWizardry/common/spell/complex/effect/impactEffects/tool/IDigAreaEffect.java b/src-backup/main/java/WayofTime/alchemicalWizardry/common/spell/complex/effect/impactEffects/tool/IDigAreaEffect.java deleted file mode 100644 index 8e993b49..00000000 --- a/src-backup/main/java/WayofTime/alchemicalWizardry/common/spell/complex/effect/impactEffects/tool/IDigAreaEffect.java +++ /dev/null @@ -1,12 +0,0 @@ -package WayofTime.alchemicalWizardry.common.spell.complex.effect.impactEffects.tool; - -import net.minecraft.entity.player.EntityPlayer; -import net.minecraft.item.ItemStack; -import net.minecraft.util.MovingObjectPosition; -import net.minecraft.world.World; -import WayofTime.alchemicalWizardry.common.items.spell.ItemSpellMultiTool; - -public interface IDigAreaEffect -{ - public abstract int digSurroundingArea(ItemStack container, World world, EntityPlayer player, MovingObjectPosition blockPos, String usedToolClass, float blockHardness, int harvestLvl, ItemSpellMultiTool itemTool); -} diff --git a/src-backup/main/java/WayofTime/alchemicalWizardry/common/spell/complex/effect/impactEffects/tool/IItemManipulator.java b/src-backup/main/java/WayofTime/alchemicalWizardry/common/spell/complex/effect/impactEffects/tool/IItemManipulator.java deleted file mode 100644 index 4df354e2..00000000 --- a/src-backup/main/java/WayofTime/alchemicalWizardry/common/spell/complex/effect/impactEffects/tool/IItemManipulator.java +++ /dev/null @@ -1,10 +0,0 @@ -package WayofTime.alchemicalWizardry.common.spell.complex.effect.impactEffects.tool; - -import java.util.List; - -import net.minecraft.item.ItemStack; - -public interface IItemManipulator -{ - public List handleItemsOnBlockBroken(ItemStack toolStack, List itemList); -} diff --git a/src-backup/main/java/WayofTime/alchemicalWizardry/common/spell/complex/effect/impactEffects/tool/ILeftClickEffect.java b/src-backup/main/java/WayofTime/alchemicalWizardry/common/spell/complex/effect/impactEffects/tool/ILeftClickEffect.java deleted file mode 100644 index 64ee0ce9..00000000 --- a/src-backup/main/java/WayofTime/alchemicalWizardry/common/spell/complex/effect/impactEffects/tool/ILeftClickEffect.java +++ /dev/null @@ -1,11 +0,0 @@ -package WayofTime.alchemicalWizardry.common.spell.complex.effect.impactEffects.tool; - -import net.minecraft.block.Block; -import net.minecraft.entity.EntityLivingBase; -import net.minecraft.item.ItemStack; -import net.minecraft.world.World; - -public interface ILeftClickEffect -{ - public abstract int onLeftClickEntity(ItemStack stack, EntityLivingBase attacked, EntityLivingBase weilder); -} diff --git a/src-backup/main/java/WayofTime/alchemicalWizardry/common/spell/complex/effect/impactEffects/tool/IOnBanishTool.java b/src-backup/main/java/WayofTime/alchemicalWizardry/common/spell/complex/effect/impactEffects/tool/IOnBanishTool.java deleted file mode 100644 index d734154a..00000000 --- a/src-backup/main/java/WayofTime/alchemicalWizardry/common/spell/complex/effect/impactEffects/tool/IOnBanishTool.java +++ /dev/null @@ -1,10 +0,0 @@ -package WayofTime.alchemicalWizardry.common.spell.complex.effect.impactEffects.tool; - -import net.minecraft.entity.Entity; -import net.minecraft.item.ItemStack; -import net.minecraft.world.World; - -public interface IOnBanishTool -{ - public abstract int onBanishTool(ItemStack toolStack, World world, Entity entity, int invSlot, boolean inHand); -} diff --git a/src-backup/main/java/WayofTime/alchemicalWizardry/common/spell/complex/effect/impactEffects/tool/IOnBreakBlock.java b/src-backup/main/java/WayofTime/alchemicalWizardry/common/spell/complex/effect/impactEffects/tool/IOnBreakBlock.java deleted file mode 100644 index 0bb58be6..00000000 --- a/src-backup/main/java/WayofTime/alchemicalWizardry/common/spell/complex/effect/impactEffects/tool/IOnBreakBlock.java +++ /dev/null @@ -1,12 +0,0 @@ -package WayofTime.alchemicalWizardry.common.spell.complex.effect.impactEffects.tool; - -import net.minecraft.block.Block; -import net.minecraft.entity.player.EntityPlayer; -import net.minecraft.item.ItemStack; -import net.minecraft.world.World; -import net.minecraftforge.common.util.ForgeDirection; - -public interface IOnBreakBlock -{ - public abstract int onBlockBroken(ItemStack container, World world, EntityPlayer player, Block block, int meta, int x, int y, int z, ForgeDirection sideBroken); -} diff --git a/src-backup/main/java/WayofTime/alchemicalWizardry/common/spell/complex/effect/impactEffects/tool/IOnSummonTool.java b/src-backup/main/java/WayofTime/alchemicalWizardry/common/spell/complex/effect/impactEffects/tool/IOnSummonTool.java deleted file mode 100644 index 612e23c8..00000000 --- a/src-backup/main/java/WayofTime/alchemicalWizardry/common/spell/complex/effect/impactEffects/tool/IOnSummonTool.java +++ /dev/null @@ -1,10 +0,0 @@ -package WayofTime.alchemicalWizardry.common.spell.complex.effect.impactEffects.tool; - -import net.minecraft.entity.Entity; -import net.minecraft.item.ItemStack; -import net.minecraft.world.World; - -public interface IOnSummonTool -{ - public abstract int onSummonTool(ItemStack toolStack, World world, Entity entity); -} diff --git a/src-backup/main/java/WayofTime/alchemicalWizardry/common/spell/complex/effect/impactEffects/tool/IRightClickEffect.java b/src-backup/main/java/WayofTime/alchemicalWizardry/common/spell/complex/effect/impactEffects/tool/IRightClickEffect.java deleted file mode 100644 index 9bd8db88..00000000 --- a/src-backup/main/java/WayofTime/alchemicalWizardry/common/spell/complex/effect/impactEffects/tool/IRightClickEffect.java +++ /dev/null @@ -1,15 +0,0 @@ -package WayofTime.alchemicalWizardry.common.spell.complex.effect.impactEffects.tool; - -import net.minecraft.entity.EntityLivingBase; -import net.minecraft.item.ItemStack; -import net.minecraft.util.MovingObjectPosition; -import net.minecraft.world.World; - -public interface IRightClickEffect -{ - //public abstract int onRightClickEntity(ItemStack stack, EntityLivingBase attacked, EntityLivingBase weilder); - - public abstract int onRightClickBlock(ItemStack stack, EntityLivingBase weilder, World world, MovingObjectPosition mop); - - public abstract int onRightClickAir(ItemStack stack, EntityLivingBase weilder); -} diff --git a/src-backup/main/java/WayofTime/alchemicalWizardry/common/spell/complex/effect/impactEffects/tool/ISpecialDamageEffect.java b/src-backup/main/java/WayofTime/alchemicalWizardry/common/spell/complex/effect/impactEffects/tool/ISpecialDamageEffect.java deleted file mode 100644 index 3882fd6c..00000000 --- a/src-backup/main/java/WayofTime/alchemicalWizardry/common/spell/complex/effect/impactEffects/tool/ISpecialDamageEffect.java +++ /dev/null @@ -1,10 +0,0 @@ -package WayofTime.alchemicalWizardry.common.spell.complex.effect.impactEffects.tool; - -import net.minecraft.entity.Entity; - -public interface ISpecialDamageEffect -{ - public float getDamageForEntity(Entity entity); - - public String getKey(); -} diff --git a/src-backup/main/java/WayofTime/alchemicalWizardry/common/spell/complex/effect/impactEffects/tool/IToolUpdateEffect.java b/src-backup/main/java/WayofTime/alchemicalWizardry/common/spell/complex/effect/impactEffects/tool/IToolUpdateEffect.java deleted file mode 100644 index ffb0d6cf..00000000 --- a/src-backup/main/java/WayofTime/alchemicalWizardry/common/spell/complex/effect/impactEffects/tool/IToolUpdateEffect.java +++ /dev/null @@ -1,10 +0,0 @@ -package WayofTime.alchemicalWizardry.common.spell.complex.effect.impactEffects.tool; - -import net.minecraft.entity.Entity; -import net.minecraft.item.ItemStack; -import net.minecraft.world.World; - -public interface IToolUpdateEffect -{ - public abstract int onUpdate(ItemStack toolStack, World world, Entity par3Entity, int invSlot, boolean inHand); -} diff --git a/src-backup/main/java/WayofTime/alchemicalWizardry/common/spell/complex/effect/impactEffects/tool/ItemManipulator.java b/src-backup/main/java/WayofTime/alchemicalWizardry/common/spell/complex/effect/impactEffects/tool/ItemManipulator.java deleted file mode 100644 index 079b7e98..00000000 --- a/src-backup/main/java/WayofTime/alchemicalWizardry/common/spell/complex/effect/impactEffects/tool/ItemManipulator.java +++ /dev/null @@ -1,22 +0,0 @@ -package WayofTime.alchemicalWizardry.common.spell.complex.effect.impactEffects.tool; - -import java.util.List; - -import net.minecraft.item.ItemStack; - -public abstract class ItemManipulator implements IItemManipulator -{ - protected int powerUpgrades; - protected int potencyUpgrades; - protected int costUpgrades; - - public ItemManipulator(int power, int potency, int cost) - { - this.powerUpgrades = power; - this.potencyUpgrades = potency; - this.costUpgrades = cost; - } - - @Override - public abstract List handleItemsOnBlockBroken(ItemStack toolStack,List itemList); -} diff --git a/src-backup/main/java/WayofTime/alchemicalWizardry/common/spell/complex/effect/impactEffects/tool/LeftClickEffect.java b/src-backup/main/java/WayofTime/alchemicalWizardry/common/spell/complex/effect/impactEffects/tool/LeftClickEffect.java deleted file mode 100644 index 63e0629a..00000000 --- a/src-backup/main/java/WayofTime/alchemicalWizardry/common/spell/complex/effect/impactEffects/tool/LeftClickEffect.java +++ /dev/null @@ -1,21 +0,0 @@ -package WayofTime.alchemicalWizardry.common.spell.complex.effect.impactEffects.tool; - -import net.minecraft.entity.EntityLivingBase; -import net.minecraft.item.ItemStack; - -public abstract class LeftClickEffect implements ILeftClickEffect -{ - protected int powerUpgrades; - protected int potencyUpgrades; - protected int costUpgrades; - - public LeftClickEffect(int power, int potency, int cost) - { - this.powerUpgrades = power; - this.potencyUpgrades = potency; - this.costUpgrades = cost; - } - - @Override - public abstract int onLeftClickEntity(ItemStack stack, EntityLivingBase attacked, EntityLivingBase weilder); -} diff --git a/src-backup/main/java/WayofTime/alchemicalWizardry/common/spell/complex/effect/impactEffects/tool/OnBreakBlockEffect.java b/src-backup/main/java/WayofTime/alchemicalWizardry/common/spell/complex/effect/impactEffects/tool/OnBreakBlockEffect.java deleted file mode 100644 index d8521990..00000000 --- a/src-backup/main/java/WayofTime/alchemicalWizardry/common/spell/complex/effect/impactEffects/tool/OnBreakBlockEffect.java +++ /dev/null @@ -1,21 +0,0 @@ -package WayofTime.alchemicalWizardry.common.spell.complex.effect.impactEffects.tool; - -import net.minecraft.block.Block; -import net.minecraft.entity.player.EntityPlayer; -import net.minecraft.item.ItemStack; -import net.minecraft.world.World; -import net.minecraftforge.common.util.ForgeDirection; - -public abstract class OnBreakBlockEffect implements IOnBreakBlock -{ - protected int powerUpgrades; - protected int potencyUpgrades; - protected int costUpgrades; - - public OnBreakBlockEffect(int power, int potency, int cost) - { - this.powerUpgrades = power; - this.potencyUpgrades = potency; - this.costUpgrades = cost; - } -} diff --git a/src-backup/main/java/WayofTime/alchemicalWizardry/common/spell/complex/effect/impactEffects/tool/RightClickEffect.java b/src-backup/main/java/WayofTime/alchemicalWizardry/common/spell/complex/effect/impactEffects/tool/RightClickEffect.java deleted file mode 100644 index e047b01a..00000000 --- a/src-backup/main/java/WayofTime/alchemicalWizardry/common/spell/complex/effect/impactEffects/tool/RightClickEffect.java +++ /dev/null @@ -1,15 +0,0 @@ -package WayofTime.alchemicalWizardry.common.spell.complex.effect.impactEffects.tool; - -public abstract class RightClickEffect implements IRightClickEffect -{ - protected int powerUpgrades; - protected int potencyUpgrades; - protected int costUpgrades; - - public RightClickEffect(int power, int potency, int cost) - { - this.powerUpgrades = power; - this.potencyUpgrades = potency; - this.costUpgrades = cost; - } -} diff --git a/src-backup/main/java/WayofTime/alchemicalWizardry/common/spell/complex/effect/impactEffects/tool/RightClickTunnel.java b/src-backup/main/java/WayofTime/alchemicalWizardry/common/spell/complex/effect/impactEffects/tool/RightClickTunnel.java deleted file mode 100644 index 6f300afb..00000000 --- a/src-backup/main/java/WayofTime/alchemicalWizardry/common/spell/complex/effect/impactEffects/tool/RightClickTunnel.java +++ /dev/null @@ -1,177 +0,0 @@ -package WayofTime.alchemicalWizardry.common.spell.complex.effect.impactEffects.tool; - -import java.util.LinkedList; -import java.util.List; -import java.util.Random; - -import net.minecraft.entity.EntityLivingBase; -import net.minecraft.item.ItemStack; -import net.minecraft.util.MovingObjectPosition; -import net.minecraft.util.Vec3; -import net.minecraft.world.World; -import net.minecraftforge.common.util.ForgeDirection; - -public class RightClickTunnel extends RightClickEffect -{ - Random rand = new Random(); - public RightClickTunnel(int power, int potency, int cost) - { - super(power, potency, cost); - } - - @Override - public int onRightClickBlock(ItemStack stack, EntityLivingBase weilder, World world, MovingObjectPosition mop) - { - if(weilder.worldObj.isRemote) - { - return 0; - } - if(!mop.typeOfHit.equals(MovingObjectPosition.MovingObjectType.BLOCK)) - { - return 0; - } - - List vectorLine = new LinkedList(); - - double initialX = mop.blockX; - double initialY = mop.blockY; - double initialZ = mop.blockZ; - ForgeDirection sidehit = ForgeDirection.getOrientation(mop.sideHit); - ForgeDirection opposite = sidehit.getOpposite(); - - double initialLength = this.getRandomVectorLength(); - - Vec3 initialVector = Vec3.createVectorHelper(opposite.offsetX*initialLength, opposite.offsetY*initialLength, opposite.offsetZ*initialLength); - - Vec3 lastVec = Vec3.createVectorHelper(initialVector.xCoord, initialVector.yCoord, initialVector.zCoord); - vectorLine.add(initialVector); - - double currentLength = lastVec.lengthVector(); - double totalLength = this.totalLength(); - - while(currentLength < totalLength-0.01) - { - Vec3 tempVec = lastVec.addVector(0, 0, 0); - - tempVec = tempVec.normalize(); - - double varr = this.varyRate(); - - tempVec = tempVec.addVector(varr*(rand.nextFloat() - rand.nextFloat()), varr*(rand.nextFloat() - rand.nextFloat()), varr*(rand.nextFloat() - rand.nextFloat())); - - tempVec = tempVec.normalize(); - - double length = Math.min(this.getRandomVectorLength(), totalLength-currentLength); - - tempVec.xCoord = tempVec.xCoord*length; - tempVec.yCoord = tempVec.yCoord*length; - tempVec.zCoord = tempVec.zCoord*length; - - vectorLine.add(tempVec); - - lastVec = tempVec; - - currentLength += tempVec.lengthVector(); - } - - for(Vec3 testVec : vectorLine) - { - this.travelVector(testVec, world, initialX, initialY, initialZ); - - initialX += testVec.xCoord; - initialY += testVec.yCoord; - initialZ += testVec.zCoord; - } - - this.travelVector(lastVec, world, initialX, initialY, initialZ); - - return 0; - } - - @Override - public int onRightClickAir(ItemStack stack, EntityLivingBase weilder) - { - //Empty Method - return 0; - } - - public double totalLength() - { - return 100; - } - - public double getStepSize() - { - return 1; - } - - public double varyRate() - { - return 0.5; - } - - public double getRandomVectorLength() - { - return 10; - } - - public double getRandomStepLength() - { - return 0.5; - } - - public int getRandomRadius() - { - return 3; - } - - public void destroySphereOfMundane(World world, double x, double y, double z, int radius) - { - for(int i=-radius; i<=radius; i++) - { - for(int j=-radius; j<=radius; j++) - { - for(int k=-radius; k<=radius; k++) - { - if (i * i + j * j + k * k >= (radius + 0.50f) * (radius + 0.50f)) - { - continue; - } - - int newX = (int)(i + x + 0.5); - int newY = (int)(j + y + 0.5); - int newZ = (int)(k + z + 0.5); - - this.destroyMunadeAt(world, newX, newY, newZ); - } - } - } - } - - public void destroyMunadeAt(World world, int x, int y, int z) - { - world.setBlockToAir(x, y, z); - } - - public void travelVector(Vec3 vector, World world, double x, double y, double z) - { - double vecLength = vector.lengthVector(); - - Vec3 normVec = Vec3.createVectorHelper(vector.xCoord, vector.yCoord, vector.zCoord); - normVec = normVec.normalize(); - - Vec3 prevVec = Vec3.createVectorHelper(0, 0, 0); - double distanceTravelled = 0; - - while(distanceTravelled < vecLength) - { - double stepLength = this.getRandomStepLength(); - - prevVec = prevVec.addVector(stepLength*normVec.xCoord, stepLength*normVec.yCoord, normVec.zCoord); - - this.destroySphereOfMundane(world, prevVec.xCoord + x, prevVec.yCoord + y, prevVec.zCoord + z, this.getRandomRadius()); - - distanceTravelled = prevVec.lengthVector(); - } - } -} diff --git a/src-backup/main/java/WayofTime/alchemicalWizardry/common/spell/complex/effect/impactEffects/tool/SummonToolEffect.java b/src-backup/main/java/WayofTime/alchemicalWizardry/common/spell/complex/effect/impactEffects/tool/SummonToolEffect.java deleted file mode 100644 index e8bb04a4..00000000 --- a/src-backup/main/java/WayofTime/alchemicalWizardry/common/spell/complex/effect/impactEffects/tool/SummonToolEffect.java +++ /dev/null @@ -1,15 +0,0 @@ -package WayofTime.alchemicalWizardry.common.spell.complex.effect.impactEffects.tool; - -public abstract class SummonToolEffect implements IOnSummonTool -{ - protected int powerUpgrades; - protected int potencyUpgrades; - protected int costUpgrades; - - public SummonToolEffect(int power, int potency, int cost) - { - this.powerUpgrades = power; - this.potencyUpgrades = potency; - this.costUpgrades = cost; - } -} diff --git a/src-backup/main/java/WayofTime/alchemicalWizardry/common/spell/complex/effect/impactEffects/wind/MeleeDefaultWind.java b/src-backup/main/java/WayofTime/alchemicalWizardry/common/spell/complex/effect/impactEffects/wind/MeleeDefaultWind.java deleted file mode 100644 index 31b324ef..00000000 --- a/src-backup/main/java/WayofTime/alchemicalWizardry/common/spell/complex/effect/impactEffects/wind/MeleeDefaultWind.java +++ /dev/null @@ -1,40 +0,0 @@ -package WayofTime.alchemicalWizardry.common.spell.complex.effect.impactEffects.wind; - -import net.minecraft.entity.Entity; -import net.minecraft.entity.EntityLiving; -import net.minecraft.entity.player.EntityPlayer; -import net.minecraft.world.World; -import WayofTime.alchemicalWizardry.common.spell.complex.effect.impactEffects.ExtrapolatedMeleeEntityEffect; - -public class MeleeDefaultWind extends ExtrapolatedMeleeEntityEffect -{ - public MeleeDefaultWind(int power, int potency, int cost) - { - super(power, potency, cost); - this.setRange(4+2.0f*potency); - this.setRadius(4+2.0f*potency); - this.setMaxNumberHit(potency+1); - } - - @Override - protected boolean entityEffect(World world, Entity entity, EntityPlayer player) - { - double wantedVel = -(0.5d+0.7d*this.powerUpgrades); - - if(entity instanceof EntityLiving) - { - double dist = Math.sqrt(entity.getDistanceToEntity(player)); - double xVel = wantedVel*(entity.posX - player.posX)/dist; - double yVel = wantedVel*(entity.posY - player.posY)/dist; - double zVel = wantedVel*(entity.posZ - player.posZ)/dist; - - entity.motionX = xVel; - entity.motionY = yVel; - entity.motionZ = zVel; - - return true; - } - - return false; - } -} diff --git a/src-backup/main/java/WayofTime/alchemicalWizardry/common/spell/complex/effect/impactEffects/wind/MeleeDefensiveWind.java b/src-backup/main/java/WayofTime/alchemicalWizardry/common/spell/complex/effect/impactEffects/wind/MeleeDefensiveWind.java deleted file mode 100644 index 5f146e25..00000000 --- a/src-backup/main/java/WayofTime/alchemicalWizardry/common/spell/complex/effect/impactEffects/wind/MeleeDefensiveWind.java +++ /dev/null @@ -1,33 +0,0 @@ -package WayofTime.alchemicalWizardry.common.spell.complex.effect.impactEffects.wind; - -import net.minecraft.entity.Entity; -import net.minecraft.entity.EntityLiving; -import net.minecraft.entity.player.EntityPlayer; -import net.minecraft.world.World; -import WayofTime.alchemicalWizardry.common.spell.complex.effect.impactEffects.ExtrapolatedMeleeEntityEffect; - -public class MeleeDefensiveWind extends ExtrapolatedMeleeEntityEffect -{ - public MeleeDefensiveWind(int power, int potency, int cost) - { - super(power, potency, cost); - this.setRange(3+0.3f*potency); - this.setRadius(2+0.3f*potency); - this.setMaxNumberHit(potency+1); - } - - @Override - protected boolean entityEffect(World world, Entity entity, EntityPlayer player) - { - double wantedVel = 0.5d+0.5d*this.powerUpgrades; - - if(entity instanceof EntityLiving) - { - entity.motionY = wantedVel; - - return true; - } - - return false; - } -} diff --git a/src-backup/main/java/WayofTime/alchemicalWizardry/common/spell/complex/effect/impactEffects/wind/MeleeEnvironmentalWind.java b/src-backup/main/java/WayofTime/alchemicalWizardry/common/spell/complex/effect/impactEffects/wind/MeleeEnvironmentalWind.java deleted file mode 100644 index 2eed2c73..00000000 --- a/src-backup/main/java/WayofTime/alchemicalWizardry/common/spell/complex/effect/impactEffects/wind/MeleeEnvironmentalWind.java +++ /dev/null @@ -1,36 +0,0 @@ -package WayofTime.alchemicalWizardry.common.spell.complex.effect.impactEffects.wind; - -import java.util.List; - -import net.minecraft.entity.Entity; -import net.minecraft.entity.item.EntityItem; -import net.minecraft.entity.player.EntityPlayer; -import net.minecraft.world.World; -import WayofTime.alchemicalWizardry.common.spell.complex.effect.SpellHelper; -import WayofTime.alchemicalWizardry.common.spell.complex.effect.impactEffects.MeleeSpellCenteredWorldEffect; - -public class MeleeEnvironmentalWind extends MeleeSpellCenteredWorldEffect -{ - public MeleeEnvironmentalWind(int power, int potency, int cost) - { - super(power, potency, cost); - this.setRange(5*power + 5); - } - - @Override - public void onCenteredWorldEffect(EntityPlayer player, World world, int posX, int posY, int posZ) - { - int radius = 5*this.potencyUpgrades + 3; - - List entities = SpellHelper.getEntitiesInRange(world, posX, posY, posZ, radius, radius); - - for(Entity entity : entities) - { - if(entity instanceof EntityItem) - { - ((EntityItem)entity).delayBeforeCanPickup = 0; - entity.onCollideWithPlayer((EntityPlayer)player); - } - } - } -} diff --git a/src-backup/main/java/WayofTime/alchemicalWizardry/common/spell/complex/effect/impactEffects/wind/MeleeOffensiveWind.java b/src-backup/main/java/WayofTime/alchemicalWizardry/common/spell/complex/effect/impactEffects/wind/MeleeOffensiveWind.java deleted file mode 100644 index dd283246..00000000 --- a/src-backup/main/java/WayofTime/alchemicalWizardry/common/spell/complex/effect/impactEffects/wind/MeleeOffensiveWind.java +++ /dev/null @@ -1,40 +0,0 @@ -package WayofTime.alchemicalWizardry.common.spell.complex.effect.impactEffects.wind; - -import net.minecraft.entity.Entity; -import net.minecraft.entity.EntityLiving; -import net.minecraft.entity.player.EntityPlayer; -import net.minecraft.world.World; -import WayofTime.alchemicalWizardry.common.spell.complex.effect.impactEffects.ExtrapolatedMeleeEntityEffect; - -public class MeleeOffensiveWind extends ExtrapolatedMeleeEntityEffect -{ - public MeleeOffensiveWind(int power, int potency, int cost) - { - super(power, potency, cost); - this.setRange(3+0.3f*potency); - this.setRadius(2+0.3f*potency); - this.setMaxNumberHit(potency+1); - } - - @Override - protected boolean entityEffect(World world, Entity entity, EntityPlayer player) - { - double wantedVel = 1.0d+1.0d*this.powerUpgrades; - - if(entity instanceof EntityLiving) - { - double dist = Math.sqrt(entity.getDistanceToEntity(player)); - double xVel = wantedVel*(entity.posX - player.posX)/dist; - double yVel = wantedVel*(entity.posY - player.posY+0.5f)/dist; - double zVel = wantedVel*(entity.posZ - player.posZ)/dist; - - entity.motionX = xVel; - entity.motionY = yVel; - entity.motionZ = zVel; - - return true; - } - - return false; - } -} diff --git a/src-backup/main/java/WayofTime/alchemicalWizardry/common/spell/complex/effect/impactEffects/wind/ProjectileDefaultWind.java b/src-backup/main/java/WayofTime/alchemicalWizardry/common/spell/complex/effect/impactEffects/wind/ProjectileDefaultWind.java deleted file mode 100644 index a50dcbd3..00000000 --- a/src-backup/main/java/WayofTime/alchemicalWizardry/common/spell/complex/effect/impactEffects/wind/ProjectileDefaultWind.java +++ /dev/null @@ -1,33 +0,0 @@ -package WayofTime.alchemicalWizardry.common.spell.complex.effect.impactEffects.wind; - -import net.minecraft.entity.Entity; -import net.minecraft.entity.EntityLiving; -import net.minecraft.potion.PotionEffect; -import net.minecraft.util.MovingObjectPosition; -import net.minecraft.world.World; -import WayofTime.alchemicalWizardry.AlchemicalWizardry; -import WayofTime.alchemicalWizardry.common.spell.complex.effect.impactEffects.ProjectileImpactEffect; - -public class ProjectileDefaultWind extends ProjectileImpactEffect -{ - public ProjectileDefaultWind(int power, int potency, int cost) - { - super(power, potency, cost); - } - - @Override - public void onEntityImpact(Entity mop, Entity proj) - { - float wantedYVel = (float)((0.5)*(0.5*this.potencyUpgrades + 1)); - - mop.motionX = proj.motionX; - mop.motionY = mop.motionY += wantedYVel; - mop.motionZ = proj.motionZ; - } - - @Override - public void onTileImpact(World world, MovingObjectPosition mop) - { - return; - } -} diff --git a/src-backup/main/java/WayofTime/alchemicalWizardry/common/spell/complex/effect/impactEffects/wind/ProjectileEnvironmentalWind.java b/src-backup/main/java/WayofTime/alchemicalWizardry/common/spell/complex/effect/impactEffects/wind/ProjectileEnvironmentalWind.java deleted file mode 100644 index e1871678..00000000 --- a/src-backup/main/java/WayofTime/alchemicalWizardry/common/spell/complex/effect/impactEffects/wind/ProjectileEnvironmentalWind.java +++ /dev/null @@ -1,53 +0,0 @@ -package WayofTime.alchemicalWizardry.common.spell.complex.effect.impactEffects.wind; - -import java.util.List; - -import net.minecraft.entity.Entity; -import net.minecraft.entity.item.EntityItem; -import net.minecraft.entity.player.EntityPlayer; -import net.minecraft.util.Vec3; -import net.minecraft.world.World; -import WayofTime.alchemicalWizardry.common.spell.complex.EntitySpellProjectile; -import WayofTime.alchemicalWizardry.common.spell.complex.effect.SpellHelper; -import WayofTime.alchemicalWizardry.common.spell.complex.effect.impactEffects.ProjectileUpdateEffect; - -public class ProjectileEnvironmentalWind extends ProjectileUpdateEffect -{ - public ProjectileEnvironmentalWind(int power, int potency, int cost) - { - super(power, potency, cost); - } - - @Override - public void onUpdateEffect(Entity projectile) - { - Vec3 posVec = SpellHelper.getEntityBlockVector(projectile); - - int horizRange = this.powerUpgrades+1; - int vertRange = 1*this.potencyUpgrades+1; - - World worldObj = projectile.worldObj; - - if(projectile instanceof EntitySpellProjectile) - { - Entity shooter = ((EntitySpellProjectile) projectile).shootingEntity; - if(shooter instanceof EntityPlayer) - { - List entitylist = SpellHelper.getEntitiesInRange(worldObj, projectile.posX, projectile.posY, projectile.posZ, horizRange, vertRange); - if(entitylist !=null) - { - for(Entity entity : entitylist) - { - if(entity instanceof EntityItem) - { - ((EntityItem)entity).delayBeforeCanPickup = 0; - entity.onCollideWithPlayer((EntityPlayer)shooter); - } - } - } - } - } - - - } -} diff --git a/src-backup/main/java/WayofTime/alchemicalWizardry/common/spell/complex/effect/impactEffects/wind/ProjectileOffensiveWind.java b/src-backup/main/java/WayofTime/alchemicalWizardry/common/spell/complex/effect/impactEffects/wind/ProjectileOffensiveWind.java deleted file mode 100644 index 661fa367..00000000 --- a/src-backup/main/java/WayofTime/alchemicalWizardry/common/spell/complex/effect/impactEffects/wind/ProjectileOffensiveWind.java +++ /dev/null @@ -1,33 +0,0 @@ -package WayofTime.alchemicalWizardry.common.spell.complex.effect.impactEffects.wind; - -import net.minecraft.entity.Entity; -import net.minecraft.entity.EntityLiving; -import net.minecraft.potion.PotionEffect; -import net.minecraft.util.MovingObjectPosition; -import net.minecraft.world.World; -import WayofTime.alchemicalWizardry.AlchemicalWizardry; -import WayofTime.alchemicalWizardry.common.spell.complex.effect.impactEffects.ProjectileImpactEffect; - -public class ProjectileOffensiveWind extends ProjectileImpactEffect -{ - - public ProjectileOffensiveWind(int power, int potency, int cost) - { - super(power, potency, cost); - } - - @Override - public void onEntityImpact(Entity mop, Entity proj) - { - if(mop instanceof EntityLiving) - { - ((EntityLiving) mop).addPotionEffect(new PotionEffect(AlchemicalWizardry.customPotionHeavyHeart.id,(int)(100*(2*this.powerUpgrades+1)*(1/(this.potencyUpgrades+1))),this.potencyUpgrades)); - } - } - - @Override - public void onTileImpact(World world, MovingObjectPosition mop) - { - return; - } -} diff --git a/src-backup/main/java/WayofTime/alchemicalWizardry/common/spell/complex/effect/impactEffects/wind/SelfDefaultWind.java b/src-backup/main/java/WayofTime/alchemicalWizardry/common/spell/complex/effect/impactEffects/wind/SelfDefaultWind.java deleted file mode 100644 index 3e13568a..00000000 --- a/src-backup/main/java/WayofTime/alchemicalWizardry/common/spell/complex/effect/impactEffects/wind/SelfDefaultWind.java +++ /dev/null @@ -1,27 +0,0 @@ -package WayofTime.alchemicalWizardry.common.spell.complex.effect.impactEffects.wind; - -import java.util.List; - -import net.minecraft.entity.Entity; -import net.minecraft.entity.EntityLiving; -import net.minecraft.entity.player.EntityPlayer; -import net.minecraft.potion.PotionEffect; -import net.minecraft.world.World; -import WayofTime.alchemicalWizardry.AlchemicalWizardry; -import WayofTime.alchemicalWizardry.common.spell.complex.effect.SpellHelper; -import WayofTime.alchemicalWizardry.common.spell.complex.effect.impactEffects.SelfSpellEffect; - -public class SelfDefaultWind extends SelfSpellEffect -{ - public SelfDefaultWind(int power, int potency, int cost) - { - super(power, potency, cost); - } - - @Override - public void onSelfUse(World world, EntityPlayer player) - { - player.extinguish(); - player.fallDistance = 0; - } -} diff --git a/src-backup/main/java/WayofTime/alchemicalWizardry/common/spell/complex/effect/impactEffects/wind/SelfDefensiveWind.java b/src-backup/main/java/WayofTime/alchemicalWizardry/common/spell/complex/effect/impactEffects/wind/SelfDefensiveWind.java deleted file mode 100644 index 125ef17d..00000000 --- a/src-backup/main/java/WayofTime/alchemicalWizardry/common/spell/complex/effect/impactEffects/wind/SelfDefensiveWind.java +++ /dev/null @@ -1,39 +0,0 @@ -package WayofTime.alchemicalWizardry.common.spell.complex.effect.impactEffects.wind; - -import java.util.List; - -import net.minecraft.entity.Entity; -import net.minecraft.entity.EntityLiving; -import net.minecraft.entity.player.EntityPlayer; -import net.minecraft.potion.PotionEffect; -import net.minecraft.world.World; -import WayofTime.alchemicalWizardry.AlchemicalWizardry; -import WayofTime.alchemicalWizardry.common.spell.complex.effect.SpellHelper; -import WayofTime.alchemicalWizardry.common.spell.complex.effect.impactEffects.SelfSpellEffect; - -public class SelfDefensiveWind extends SelfSpellEffect -{ - public SelfDefensiveWind(int power, int potency, int cost) - { - super(power, potency, cost); - } - - @Override - public void onSelfUse(World world, EntityPlayer player) - { - double radius = 1.5d*this.powerUpgrades+1.5d; - double posX = player.posX; - double posY = player.posY; - double posZ = player.posZ; - - List entities = SpellHelper.getEntitiesInRange(world, posX, posY, posZ, radius, radius); - - for(Entity entity: entities) - { - if((!entity.equals(player))&&entity instanceof EntityLiving) - { - ((EntityLiving)entity).addPotionEffect(new PotionEffect(AlchemicalWizardry.customPotionHeavyHeart.id,200,this.potencyUpgrades)); - } - } - } -} diff --git a/src-backup/main/java/WayofTime/alchemicalWizardry/common/spell/complex/effect/impactEffects/wind/SelfEnvironmentalWind.java b/src-backup/main/java/WayofTime/alchemicalWizardry/common/spell/complex/effect/impactEffects/wind/SelfEnvironmentalWind.java deleted file mode 100644 index 3ea0f86b..00000000 --- a/src-backup/main/java/WayofTime/alchemicalWizardry/common/spell/complex/effect/impactEffects/wind/SelfEnvironmentalWind.java +++ /dev/null @@ -1,45 +0,0 @@ -package WayofTime.alchemicalWizardry.common.spell.complex.effect.impactEffects.wind; - -import java.util.List; - -import net.minecraft.entity.Entity; -import net.minecraft.entity.EntityLiving; -import net.minecraft.entity.player.EntityPlayer; -import net.minecraft.world.World; -import WayofTime.alchemicalWizardry.common.spell.complex.effect.SpellHelper; -import WayofTime.alchemicalWizardry.common.spell.complex.effect.impactEffects.SelfSpellEffect; - -public class SelfEnvironmentalWind extends SelfSpellEffect -{ - public SelfEnvironmentalWind(int power, int potency, int cost) - { - super(power, potency, cost); - } - - @Override - public void onSelfUse(World world, EntityPlayer player) - { - double radius = 1.5d*this.potencyUpgrades+1; - double posX = player.posX; - double posY = player.posY-0.7d; - double posZ = player.posZ; - double wantedVel = 0.7d+0.7d*this.powerUpgrades; - - List entities = SpellHelper.getEntitiesInRange(world, posX, posY, posZ, radius, radius); - - for(Entity entity: entities) - { - if((!entity.equals(player))&&entity instanceof EntityLiving) - { - double dist = Math.sqrt(entity.getDistanceToEntity(player)); - double xVel = wantedVel*(entity.posX - posX)/dist; - double yVel = wantedVel*(entity.posY - posY)/dist; - double zVel = wantedVel*(entity.posZ - posZ)/dist; - - entity.motionX = xVel; - entity.motionY = yVel; - entity.motionZ = zVel; - } - } - } -} diff --git a/src-backup/main/java/WayofTime/alchemicalWizardry/common/spell/complex/effect/impactEffects/wind/SelfOffensiveWind.java b/src-backup/main/java/WayofTime/alchemicalWizardry/common/spell/complex/effect/impactEffects/wind/SelfOffensiveWind.java deleted file mode 100644 index 74dd6e13..00000000 --- a/src-backup/main/java/WayofTime/alchemicalWizardry/common/spell/complex/effect/impactEffects/wind/SelfOffensiveWind.java +++ /dev/null @@ -1,32 +0,0 @@ -package WayofTime.alchemicalWizardry.common.spell.complex.effect.impactEffects.wind; - -import java.util.List; - -import net.minecraft.entity.Entity; -import net.minecraft.entity.EntityLiving; -import net.minecraft.entity.player.EntityPlayer; -import net.minecraft.potion.PotionEffect; -import net.minecraft.util.Vec3; -import net.minecraft.world.World; -import WayofTime.alchemicalWizardry.AlchemicalWizardry; -import WayofTime.alchemicalWizardry.common.spell.complex.effect.SpellHelper; -import WayofTime.alchemicalWizardry.common.spell.complex.effect.impactEffects.SelfSpellEffect; - -public class SelfOffensiveWind extends SelfSpellEffect -{ - public SelfOffensiveWind(int power, int potency, int cost) - { - super(power, potency, cost); - } - - @Override - public void onSelfUse(World world, EntityPlayer player) - { - Vec3 vec = player.getLookVec(); - double wantedVelocity = 1.5 + this.powerUpgrades*0.4; - - SpellHelper.setPlayerSpeedFromServer(player, vec.xCoord * wantedVelocity, vec.yCoord * wantedVelocity, vec.zCoord * wantedVelocity); - - player.fallDistance = 0; - } -} diff --git a/src-backup/main/java/WayofTime/alchemicalWizardry/common/spell/complex/effect/impactEffects/wind/ToolDefensiveWind.java b/src-backup/main/java/WayofTime/alchemicalWizardry/common/spell/complex/effect/impactEffects/wind/ToolDefensiveWind.java deleted file mode 100644 index 02dd42dc..00000000 --- a/src-backup/main/java/WayofTime/alchemicalWizardry/common/spell/complex/effect/impactEffects/wind/ToolDefensiveWind.java +++ /dev/null @@ -1,32 +0,0 @@ -package WayofTime.alchemicalWizardry.common.spell.complex.effect.impactEffects.wind; - -import net.minecraft.entity.EntityLivingBase; -import net.minecraft.item.ItemStack; -import net.minecraft.util.Vec3; -import WayofTime.alchemicalWizardry.common.spell.complex.effect.impactEffects.tool.LeftClickEffect; - -public class ToolDefensiveWind extends LeftClickEffect -{ - - public ToolDefensiveWind(int power, int potency, int cost) - { - super(power, potency, cost); - } - - @Override - public int onLeftClickEntity(ItemStack stack, EntityLivingBase attacked, EntityLivingBase weilder) - { - Vec3 vec = weilder.getLookVec(); - vec.yCoord = 0; - vec.normalize(); - - float velocity = 0.5f*(1+this.powerUpgrades*0.8f); - float ratio = 0.1f + 0.3f*this.potencyUpgrades; - - attacked.motionX += vec.xCoord*velocity; - attacked.motionY += velocity*ratio; - attacked.motionZ += vec.zCoord*velocity; - - return 0; - } -} diff --git a/src-backup/main/java/WayofTime/alchemicalWizardry/common/spell/complex/effect/impactEffects/wind/ToolEnvironmentalWind.java b/src-backup/main/java/WayofTime/alchemicalWizardry/common/spell/complex/effect/impactEffects/wind/ToolEnvironmentalWind.java deleted file mode 100644 index 082c27e2..00000000 --- a/src-backup/main/java/WayofTime/alchemicalWizardry/common/spell/complex/effect/impactEffects/wind/ToolEnvironmentalWind.java +++ /dev/null @@ -1,41 +0,0 @@ -package WayofTime.alchemicalWizardry.common.spell.complex.effect.impactEffects.wind; - -import java.util.List; - -import net.minecraft.block.Block; -import net.minecraft.entity.item.EntityItem; -import net.minecraft.entity.player.EntityPlayer; -import net.minecraft.item.ItemStack; -import net.minecraft.world.World; -import net.minecraftforge.common.util.ForgeDirection; -import WayofTime.alchemicalWizardry.common.spell.complex.effect.SpellHelper; -import WayofTime.alchemicalWizardry.common.spell.complex.effect.impactEffects.tool.OnBreakBlockEffect; - -public class ToolEnvironmentalWind extends OnBreakBlockEffect -{ - public ToolEnvironmentalWind(int power, int potency, int cost) - { - super(power, potency, cost); - } - - @Override - public int onBlockBroken(ItemStack container, World world, EntityPlayer player, Block block, int meta, int x, int y, int z, ForgeDirection sideBroken) - { - double vertRange = 0.5 + (this.powerUpgrades*this.powerUpgrades + this.powerUpgrades)/2; - double horizRange = vertRange; - - List itemList = SpellHelper.getItemsInRange(world, x + 0.5f, y + 0.5f, z + 0.5f, horizRange, vertRange); - - for(EntityItem entity : itemList) - { - if(!world.isRemote) - { - entity.delayBeforeCanPickup = 0; - entity.onCollideWithPlayer(player); - } - } - - return 0; - } - -} diff --git a/src-backup/main/java/WayofTime/alchemicalWizardry/common/spell/complex/effect/impactEffects/wind/ToolOffensiveWind.java b/src-backup/main/java/WayofTime/alchemicalWizardry/common/spell/complex/effect/impactEffects/wind/ToolOffensiveWind.java deleted file mode 100644 index 5d08d2df..00000000 --- a/src-backup/main/java/WayofTime/alchemicalWizardry/common/spell/complex/effect/impactEffects/wind/ToolOffensiveWind.java +++ /dev/null @@ -1,24 +0,0 @@ -package WayofTime.alchemicalWizardry.common.spell.complex.effect.impactEffects.wind; - -import net.minecraft.entity.EntityLiving; -import net.minecraft.entity.EntityLivingBase; -import net.minecraft.item.ItemStack; -import net.minecraft.potion.PotionEffect; -import WayofTime.alchemicalWizardry.AlchemicalWizardry; -import WayofTime.alchemicalWizardry.common.spell.complex.effect.impactEffects.tool.LeftClickEffect; - -public class ToolOffensiveWind extends LeftClickEffect -{ - public ToolOffensiveWind(int power, int potency, int cost) - { - super(power, potency, cost); - } - - @Override - public int onLeftClickEntity(ItemStack stack, EntityLivingBase attacked, EntityLivingBase weilder) - { - attacked.addPotionEffect(new PotionEffect(AlchemicalWizardry.customPotionHeavyHeart.id,(int)(100*(2*this.powerUpgrades+1)*(1/(this.potencyUpgrades+1))),this.potencyUpgrades)); - - return (int)(100*(0.5*this.potencyUpgrades+1)*(this.powerUpgrades+1)*Math.pow(0.85, costUpgrades)); - } -} diff --git a/src-backup/main/java/WayofTime/alchemicalWizardry/common/spell/complex/enhancement/SpellEnhancement.java b/src-backup/main/java/WayofTime/alchemicalWizardry/common/spell/complex/enhancement/SpellEnhancement.java deleted file mode 100644 index b17c5659..00000000 --- a/src-backup/main/java/WayofTime/alchemicalWizardry/common/spell/complex/enhancement/SpellEnhancement.java +++ /dev/null @@ -1,20 +0,0 @@ -package WayofTime.alchemicalWizardry.common.spell.complex.enhancement; - -public class SpellEnhancement -{ - public static final int POWER = 0; - public static final int EFFICIENCY = 1; - public static final int POTENCY = 2; - - private int state = this.POWER; - - protected SpellEnhancement(int state) - { - this.state = state; - } - - public int getState() - { - return this.state; - } -} diff --git a/src-backup/main/java/WayofTime/alchemicalWizardry/common/spell/complex/enhancement/SpellEnhancementCost.java b/src-backup/main/java/WayofTime/alchemicalWizardry/common/spell/complex/enhancement/SpellEnhancementCost.java deleted file mode 100644 index 2e0df1fb..00000000 --- a/src-backup/main/java/WayofTime/alchemicalWizardry/common/spell/complex/enhancement/SpellEnhancementCost.java +++ /dev/null @@ -1,10 +0,0 @@ -package WayofTime.alchemicalWizardry.common.spell.complex.enhancement; - -public class SpellEnhancementCost extends SpellEnhancement -{ - - public SpellEnhancementCost() - { - super(SpellEnhancement.EFFICIENCY); - } -} diff --git a/src-backup/main/java/WayofTime/alchemicalWizardry/common/spell/complex/enhancement/SpellEnhancementPotency.java b/src-backup/main/java/WayofTime/alchemicalWizardry/common/spell/complex/enhancement/SpellEnhancementPotency.java deleted file mode 100644 index 6231c8a7..00000000 --- a/src-backup/main/java/WayofTime/alchemicalWizardry/common/spell/complex/enhancement/SpellEnhancementPotency.java +++ /dev/null @@ -1,10 +0,0 @@ -package WayofTime.alchemicalWizardry.common.spell.complex.enhancement; - -public class SpellEnhancementPotency extends SpellEnhancement -{ - public SpellEnhancementPotency() - { - super(SpellEnhancement.POTENCY); - } - -} diff --git a/src-backup/main/java/WayofTime/alchemicalWizardry/common/spell/complex/enhancement/SpellEnhancementPower.java b/src-backup/main/java/WayofTime/alchemicalWizardry/common/spell/complex/enhancement/SpellEnhancementPower.java deleted file mode 100644 index 527dfe46..00000000 --- a/src-backup/main/java/WayofTime/alchemicalWizardry/common/spell/complex/enhancement/SpellEnhancementPower.java +++ /dev/null @@ -1,10 +0,0 @@ -package WayofTime.alchemicalWizardry.common.spell.complex.enhancement; - -public class SpellEnhancementPower extends SpellEnhancement -{ - - public SpellEnhancementPower() - { - super(SpellEnhancement.POWER); - } -} diff --git a/src-backup/main/java/WayofTime/alchemicalWizardry/common/spell/simple/HomSpell.java b/src-backup/main/java/WayofTime/alchemicalWizardry/common/spell/simple/HomSpell.java deleted file mode 100644 index 903f4fb9..00000000 --- a/src-backup/main/java/WayofTime/alchemicalWizardry/common/spell/simple/HomSpell.java +++ /dev/null @@ -1,143 +0,0 @@ -package WayofTime.alchemicalWizardry.common.spell.simple; - -import net.minecraft.entity.player.EntityPlayer; -import net.minecraft.item.ItemStack; -import net.minecraft.nbt.NBTTagCompound; -import net.minecraft.world.World; - -public abstract class HomSpell implements ISimpleSpell -{ - private int offensiveRangedEnergy; - private int offensiveMeleeEnergy; - private int defensiveEnergy; - private int environmentalEnergy; - - public HomSpell() - { - //super(id); - //this.setMaxStackSize(1); - // TODO Auto-generated constructor stub - } - - @Override - public abstract ItemStack onOffensiveRangedRightClick(ItemStack par1ItemStack, World par2World, EntityPlayer par3EntityPlayer); - - ; - - @Override - public abstract ItemStack onOffensiveMeleeRightClick(ItemStack par1ItemStack, World par2World, EntityPlayer par3EntityPlayer); - - @Override - public abstract ItemStack onDefensiveRightClick(ItemStack par1ItemStack, World par2World, EntityPlayer par3EntityPlayer); - - @Override - public abstract ItemStack onEnvironmentalRightClick(ItemStack par1ItemStack, World par2World, EntityPlayer par3EntityPlayer); - - public int getOffensiveRangedEnergy() - { - return offensiveRangedEnergy; - } - - public int getOffensiveMeleeEnergy() - { - return offensiveMeleeEnergy; - } - - public int getDefensiveEnergy() - { - return defensiveEnergy; - } - - public int getEnvironmentalEnergy() - { - return environmentalEnergy; - } - - public void setEnergies(int offensiveRanged, int offensiveMelee, int defensive, int environmental) - { - this.offensiveRangedEnergy = offensiveRanged; - this.offensiveMeleeEnergy = offensiveMelee; - this.defensiveEnergy = defensive; - this.environmentalEnergy = environmental; - } - - public void setSpellParadigm(ItemStack itemStack, int paradigm) - { - if (itemStack.stackTagCompound == null) - { - itemStack.setTagCompound(new NBTTagCompound()); - } - - itemStack.stackTagCompound.setInteger("paradigm", paradigm); - } - - public int getSpellParadigm(ItemStack itemStack) - { - if (itemStack.stackTagCompound == null) - { - itemStack.setTagCompound(new NBTTagCompound()); - } - - return (itemStack.stackTagCompound.getInteger("paradigm")); - } - - //@Override - public ItemStack useSpell(ItemStack par1ItemStack, World par2World, EntityPlayer par3EntityPlayer) - { - int paradigm = getSpellParadigm(par1ItemStack); - - if (par3EntityPlayer.isSneaking()) - { - if (paradigm < 3) - { - this.setSpellParadigm(par1ItemStack, paradigm + 1); - } else - { - this.setSpellParadigm(par1ItemStack, 0); - } - - return par1ItemStack; - } - - switch (paradigm) - { - case 0: - return this.onOffensiveRangedRightClick(par1ItemStack, par2World, par3EntityPlayer); - - case 1: - return this.onOffensiveMeleeRightClick(par1ItemStack, par2World, par3EntityPlayer); - - case 2: - return this.onDefensiveRightClick(par1ItemStack, par2World, par3EntityPlayer); - - case 3: - return this.onEnvironmentalRightClick(par1ItemStack, par2World, par3EntityPlayer); - } - - return par1ItemStack; - } - -// @Override -// public void addInformation(ItemStack par1ItemStack, EntityPlayer par2EntityPlayer, List par3List, boolean par4) -// { -// if (!(par1ItemStack.stackTagCompound == null)) -// { -// if (!par1ItemStack.stackTagCompound.getString("ownerName").equals("")) -// { -// par3List.add("Current owner: " + par1ItemStack.stackTagCompound.getString("ownerName")); -// } -// -// par3List.add("Current paradigm: " + this.getSpellParadigm(par1ItemStack)); -// } -// } - - public int getDimensionID(ItemStack itemStack) - { - if (itemStack.stackTagCompound == null) - { - itemStack.setTagCompound(new NBTTagCompound()); - } - - return itemStack.stackTagCompound.getInteger("dimensionId"); - } -} diff --git a/src-backup/main/java/WayofTime/alchemicalWizardry/common/spell/simple/HomSpellComponent.java b/src-backup/main/java/WayofTime/alchemicalWizardry/common/spell/simple/HomSpellComponent.java deleted file mode 100644 index 41cfcaab..00000000 --- a/src-backup/main/java/WayofTime/alchemicalWizardry/common/spell/simple/HomSpellComponent.java +++ /dev/null @@ -1,26 +0,0 @@ -package WayofTime.alchemicalWizardry.common.spell.simple; - -import net.minecraft.item.ItemStack; - -public class HomSpellComponent -{ - public HomSpell spell; - public ItemStack item; - public int blockID; - - public HomSpellComponent(ItemStack item, HomSpell spell) - { - this.item = item; - this.spell = spell; - } - - public HomSpell getSpell() - { - return spell; - } - - public ItemStack getItemStack() - { - return this.item; - } -} diff --git a/src-backup/main/java/WayofTime/alchemicalWizardry/common/spell/simple/HomSpellRegistry.java b/src-backup/main/java/WayofTime/alchemicalWizardry/common/spell/simple/HomSpellRegistry.java deleted file mode 100644 index 645bd99c..00000000 --- a/src-backup/main/java/WayofTime/alchemicalWizardry/common/spell/simple/HomSpellRegistry.java +++ /dev/null @@ -1,55 +0,0 @@ -package WayofTime.alchemicalWizardry.common.spell.simple; - -import java.util.ArrayList; -import java.util.List; - -import net.minecraft.item.ItemBlock; -import net.minecraft.item.ItemStack; - -public class HomSpellRegistry -{ - public static List spellList = new ArrayList(); - - public static void registerBasicSpell(ItemStack item, HomSpell spell) - { - spellList.add(new HomSpellComponent(item, spell)); - } - - public static HomSpell getSpellForItemStack(ItemStack testItem) - { - if (testItem == null) - { - return null; - } - - for (HomSpellComponent hsc : spellList) - { - ItemStack item = hsc.getItemStack(); - - if (item != null) - { - if (item.getItem() instanceof ItemBlock) - { - if (testItem.getItem() instanceof ItemBlock) - { - if (testItem.getItem() == item.getItem()) - { - return hsc.getSpell(); - } - } - } else - { - if (!(testItem.getItem() instanceof ItemBlock)) - { - if (testItem.getItem() == item.getItem()) - { - return hsc.getSpell(); - } - } - } - } - } - - return null; - } -} diff --git a/src-backup/main/java/WayofTime/alchemicalWizardry/common/spell/simple/ISimpleSpell.java b/src-backup/main/java/WayofTime/alchemicalWizardry/common/spell/simple/ISimpleSpell.java deleted file mode 100644 index 77a8799d..00000000 --- a/src-backup/main/java/WayofTime/alchemicalWizardry/common/spell/simple/ISimpleSpell.java +++ /dev/null @@ -1,16 +0,0 @@ -package WayofTime.alchemicalWizardry.common.spell.simple; - -import net.minecraft.entity.player.EntityPlayer; -import net.minecraft.item.ItemStack; -import net.minecraft.world.World; - -public interface ISimpleSpell -{ - public abstract ItemStack onOffensiveRangedRightClick(ItemStack par1ItemStack, World par2World, EntityPlayer par3EntityPlayer); - - public abstract ItemStack onOffensiveMeleeRightClick(ItemStack par1ItemStack, World par2World, EntityPlayer par3EntityPlayer); - - public abstract ItemStack onDefensiveRightClick(ItemStack par1ItemStack, World par2World, EntityPlayer par3EntityPlayer); - - public abstract ItemStack onEnvironmentalRightClick(ItemStack par1ItemStack, World par2World, EntityPlayer par3EntityPlayer); -} diff --git a/src-backup/main/java/WayofTime/alchemicalWizardry/common/spell/simple/SpellEarthBender.java b/src-backup/main/java/WayofTime/alchemicalWizardry/common/spell/simple/SpellEarthBender.java deleted file mode 100644 index e4a31e55..00000000 --- a/src-backup/main/java/WayofTime/alchemicalWizardry/common/spell/simple/SpellEarthBender.java +++ /dev/null @@ -1,199 +0,0 @@ -package WayofTime.alchemicalWizardry.common.spell.simple; - -import java.util.Random; - -import net.minecraft.block.Block; -import net.minecraft.entity.player.EntityPlayer; -import net.minecraft.init.Blocks; -import net.minecraft.item.ItemStack; -import net.minecraft.world.World; -import WayofTime.alchemicalWizardry.common.PacketHandler; -import WayofTime.alchemicalWizardry.common.entity.projectile.MudProjectile; -import WayofTime.alchemicalWizardry.common.items.EnergyItems; -import WayofTime.alchemicalWizardry.common.spell.complex.effect.SpellHelper; - -public class SpellEarthBender extends HomSpell -{ - Random itemRand = new Random(); - - public SpellEarthBender() - { - super(); - this.setEnergies(100, 150, 350, 200); - //this.setCreativeTab(CreativeTabs.tabMisc); - } - - @Override - public ItemStack onOffensiveRangedRightClick(ItemStack par1ItemStack, World par2World, EntityPlayer par3EntityPlayer) - { - EnergyItems.checkAndSetItemOwner(par1ItemStack, par3EntityPlayer); - - if (par3EntityPlayer.isSneaking()) - { - return par1ItemStack; - } - - if (!par3EntityPlayer.capabilities.isCreativeMode) - { - EnergyItems.syphonAndDamageWhileInContainer(par1ItemStack, par3EntityPlayer, this.getOffensiveRangedEnergy()); - } - - par2World.spawnEntityInWorld(new MudProjectile(par2World, par3EntityPlayer, 8, false)); - par2World.playSoundAtEntity(par3EntityPlayer, "random.fizz", 0.5F, 0.4F / (itemRand.nextFloat() * 0.4F + 0.8F)); - return par1ItemStack; - } - - @Override - public ItemStack onOffensiveMeleeRightClick(ItemStack par1ItemStack, World par2World, EntityPlayer par3EntityPlayer) - { - EnergyItems.checkAndSetItemOwner(par1ItemStack, par3EntityPlayer); - - if (par3EntityPlayer.isSneaking()) - { - return par1ItemStack; - } - - if (!par3EntityPlayer.capabilities.isCreativeMode) - { - EnergyItems.syphonAndDamageWhileInContainer(par1ItemStack, par3EntityPlayer, this.getOffensiveMeleeEnergy()); - } - - if (!par2World.isRemote) - { - for (int i = -1; i <= 1; i++) - { - for (int j = -1; j <= 1; j++) - { - par2World.spawnEntityInWorld(new MudProjectile(par2World, par3EntityPlayer, 3, 3, par3EntityPlayer.posX, par3EntityPlayer.posY + par3EntityPlayer.getEyeHeight(), par3EntityPlayer.posZ, par3EntityPlayer.rotationYaw + i * 10F, par3EntityPlayer.rotationPitch + j * 5F, true)); - } - } - } - - return par1ItemStack; - } - - @Override - public ItemStack onDefensiveRightClick(ItemStack par1ItemStack, World par2World, EntityPlayer par3EntityPlayer) - { - EnergyItems.checkAndSetItemOwner(par1ItemStack, par3EntityPlayer); - - if (par3EntityPlayer.isSneaking()) - { - return par1ItemStack; - } - - if (!par3EntityPlayer.capabilities.isCreativeMode) - { - EnergyItems.syphonAndDamageWhileInContainer(par1ItemStack, par3EntityPlayer, this.getDefensiveEnergy()); - } - - double xCoord = par3EntityPlayer.posX; - double yCoord = par3EntityPlayer.posY; - double zCoord = par3EntityPlayer.posZ; - int posX = (int) xCoord; - int posY = (int) yCoord; - int posZ = (int) zCoord; - Block blockID = Blocks.stone; - - if (par2World.isAirBlock(posX, posY + 3, posZ)) - { - par2World.setBlock(posX, posY + 3, posZ, Blocks.glass); - } - - for (int i = 0; i < 4; i++) - { - for (int j = 0; j < 4; j++) - { - if (par2World.isAirBlock(posX + i - 1, posY + j, posZ - 2)) - { - par2World.setBlock(posX + i - 1, posY + j, posZ - 2, blockID); - } - - if (par2World.isAirBlock(posX + 2, posY + j, posZ - 1 + i)) - { - par2World.setBlock(posX + 2, posY + j, posZ - 1 + i, blockID); - } - - if (par2World.isAirBlock(posX - i + 1, posY + j, posZ + 2)) - { - par2World.setBlock(posX - i + 1, posY + j, posZ + 2, blockID); - } - - if (par2World.isAirBlock(posX - 2, posY + j, posZ + 1 - i)) - { - par2World.setBlock(posX - 2, posY + j, posZ + 1 - i, blockID); - } - - { - if (par2World.isAirBlock(posX - 1 + i, posY + 3, posZ - 1 + j)) - { - par2World.setBlock(posX - 1 + i, posY + 3, posZ - 1 + j, blockID); - } - } - } - } - - for (int i = 0; i < 20; i++) - { - //PacketDispatcher.sendPacketToAllAround(xCoord, yCoord, zCoord, 30, par2World.provider.dimensionId, PacketHandler.getCustomParticlePacket("mobSpell", xCoord + (itemRand.nextFloat() - itemRand.nextFloat()) * 3, yCoord + (itemRand.nextFloat() - itemRand.nextFloat()) * 3, zCoord + (itemRand.nextFloat() - itemRand.nextFloat()) * 3, 0.0F, 0.410F, 1.0F)); - SpellHelper.sendParticleToAllAround(par2World, xCoord, yCoord, zCoord, 30, par2World.provider.dimensionId, "mobSpell", xCoord + (itemRand.nextFloat() - itemRand.nextFloat()) * 3, yCoord + (itemRand.nextFloat() - itemRand.nextFloat()) * 3, zCoord + (itemRand.nextFloat() - itemRand.nextFloat()) * 3, 0.0F, 0.410F, 1.0F); - } - - return par1ItemStack; - } - - @Override - public ItemStack onEnvironmentalRightClick(ItemStack par1ItemStack, World par2World, EntityPlayer par3EntityPlayer) - { - EnergyItems.checkAndSetItemOwner(par1ItemStack, par3EntityPlayer); - - if (par3EntityPlayer.isSneaking()) - { - return par1ItemStack; - } - - if (!par3EntityPlayer.capabilities.isCreativeMode) - { - EnergyItems.syphonAndDamageWhileInContainer(par1ItemStack, par3EntityPlayer, this.getEnvironmentalEnergy()); - } - - int range = 3; - - if (!par2World.isRemote) - { - for (int i = -range; i <= range; i++) - { - for (int j = -1; j <= 1; j++) - { - for (int k = -range; k <= range; k++) - { - if (par2World.getBlock((int) par3EntityPlayer.posX + i, (int) par3EntityPlayer.posY + j, (int) par3EntityPlayer.posZ + k) == Blocks.water || par2World.getBlock((int) par3EntityPlayer.posX + i, (int) par3EntityPlayer.posY + j, (int) par3EntityPlayer.posZ + k) == Blocks.flowing_water) - { - int x = par2World.rand.nextInt(2); - - if (x == 0) - { - par2World.setBlock((int) par3EntityPlayer.posX + i, (int) par3EntityPlayer.posY + j, (int) par3EntityPlayer.posZ + k, Blocks.sand); - } else - { - par2World.setBlock((int) par3EntityPlayer.posX + i, (int) par3EntityPlayer.posY + j, (int) par3EntityPlayer.posZ + k, Blocks.dirt); - } - } - } - } - } - } - - double xCoord = par3EntityPlayer.posX; - double yCoord = par3EntityPlayer.posY; - double zCoord = par3EntityPlayer.posZ; - - for (int i = 0; i < 16; i++) - { - //PacketDispatcher.sendPacketToAllAround(xCoord, yCoord, zCoord, 30, par2World.provider.dimensionId, PacketHandler.getCustomParticlePacket("mobSpell", xCoord + (itemRand.nextFloat() - itemRand.nextFloat()) * 2, yCoord + (itemRand.nextFloat() - itemRand.nextFloat()) * 2, zCoord + (itemRand.nextFloat() - itemRand.nextFloat()) * 2, 0.0F, 0.410F, 1.0F)); - SpellHelper.sendParticleToAllAround(par2World, xCoord, yCoord, zCoord, 30, par2World.provider.dimensionId, "mobSpell", xCoord + (itemRand.nextFloat() - itemRand.nextFloat()) * 3, yCoord + (itemRand.nextFloat() - itemRand.nextFloat()) * 3, zCoord + (itemRand.nextFloat() - itemRand.nextFloat()) * 3, 0.0F, 0.410F, 1.0F); - } - - return par1ItemStack; - } -} diff --git a/src-backup/main/java/WayofTime/alchemicalWizardry/common/spell/simple/SpellExplosions.java b/src-backup/main/java/WayofTime/alchemicalWizardry/common/spell/simple/SpellExplosions.java deleted file mode 100644 index 44ede225..00000000 --- a/src-backup/main/java/WayofTime/alchemicalWizardry/common/spell/simple/SpellExplosions.java +++ /dev/null @@ -1,116 +0,0 @@ -package WayofTime.alchemicalWizardry.common.spell.simple; - -import WayofTime.alchemicalWizardry.common.entity.projectile.ExplosionProjectile; -import WayofTime.alchemicalWizardry.common.items.EnergyItems; -import net.minecraft.entity.player.EntityPlayer; -import net.minecraft.item.ItemStack; -import net.minecraft.world.World; - -import java.util.Random; - -public class SpellExplosions extends HomSpell -{ - Random itemRand = new Random(); - - public SpellExplosions() - { - super(); - this.setEnergies(400, 500, 1900, 1500); - //this.setCreativeTab(CreativeTabs.tabMisc); - } - - @Override - public ItemStack onOffensiveRangedRightClick(ItemStack par1ItemStack, World par2World, EntityPlayer par3EntityPlayer) - { - EnergyItems.checkAndSetItemOwner(par1ItemStack, par3EntityPlayer); - - if (par3EntityPlayer.isSneaking()) - { - return par1ItemStack; - } - - if (!par3EntityPlayer.capabilities.isCreativeMode) - { - EnergyItems.syphonAndDamageWhileInContainer(par1ItemStack, par3EntityPlayer, this.getOffensiveRangedEnergy()); - } - - par2World.playSoundAtEntity(par3EntityPlayer, "random.fizz", 0.5F, 0.4F / (itemRand.nextFloat() * 0.4F + 0.8F)); - - if (!par2World.isRemote) - { - //par2World.spawnEntityInWorld(new EnergyBlastProjectile(par2World, par3EntityPlayer, damage)); - par2World.spawnEntityInWorld(new ExplosionProjectile(par2World, par3EntityPlayer, 6, true)); - } - - return par1ItemStack; - } - - @Override - public ItemStack onOffensiveMeleeRightClick(ItemStack par1ItemStack, World par2World, EntityPlayer par3EntityPlayer) - { - EnergyItems.checkAndSetItemOwner(par1ItemStack, par3EntityPlayer); - - if (par3EntityPlayer.isSneaking()) - { - return par1ItemStack; - } - - if (!par3EntityPlayer.capabilities.isCreativeMode) - { - EnergyItems.syphonAndDamageWhileInContainer(par1ItemStack, par3EntityPlayer, this.getOffensiveMeleeEnergy()); - } - - int distance = 4; - double yaw = par3EntityPlayer.rotationYaw / 180 * Math.PI; - double pitch = par3EntityPlayer.rotationPitch / 180 * Math.PI; - par2World.createExplosion(par3EntityPlayer, par3EntityPlayer.posX + Math.sin(yaw) * Math.cos(pitch) * (-distance), par3EntityPlayer.posY + par3EntityPlayer.getEyeHeight() + Math.sin(-pitch) * distance, par3EntityPlayer.posZ + Math.cos(yaw) * Math.cos(pitch) * distance, (float) (3), true); - return par1ItemStack; - } - - @Override - public ItemStack onDefensiveRightClick(ItemStack par1ItemStack, World par2World, EntityPlayer par3EntityPlayer) - { - EnergyItems.checkAndSetItemOwner(par1ItemStack, par3EntityPlayer); - - if (par3EntityPlayer.isSneaking()) - { - return par1ItemStack; - } - - if (!par3EntityPlayer.capabilities.isCreativeMode) - { - EnergyItems.syphonAndDamageWhileInContainer(par1ItemStack, par3EntityPlayer, this.getDefensiveEnergy()); - } - - int distance = 4; -// double yaw = par3EntityPlayer.rotationYaw/180*Math.PI; -// double pitch = par3EntityPlayer.rotationPitch/180*Math.PI; - par2World.createExplosion(par3EntityPlayer, par3EntityPlayer.posX, par3EntityPlayer.posY + par3EntityPlayer.getEyeHeight(), par3EntityPlayer.posZ, (float) (distance), false); - return par1ItemStack; - } - - @Override - public ItemStack onEnvironmentalRightClick(ItemStack par1ItemStack, World par2World, EntityPlayer par3EntityPlayer) - { - EnergyItems.checkAndSetItemOwner(par1ItemStack, par3EntityPlayer); - - if (par3EntityPlayer.isSneaking()) - { - return par1ItemStack; - } - - if (!par3EntityPlayer.capabilities.isCreativeMode) - { - EnergyItems.syphonAndDamageWhileInContainer(par1ItemStack, par3EntityPlayer, this.getEnvironmentalEnergy()); - } - - int radius = 3; - - for (int i = 0; i < 360; i += 36) - { - par2World.createExplosion(par3EntityPlayer, par3EntityPlayer.posX + Math.cos(i) * radius, par3EntityPlayer.posY, par3EntityPlayer.posZ + Math.sin(i) * radius, (float) (2), true); - } - - return null; - } -} diff --git a/src-backup/main/java/WayofTime/alchemicalWizardry/common/spell/simple/SpellFireBurst.java b/src-backup/main/java/WayofTime/alchemicalWizardry/common/spell/simple/SpellFireBurst.java deleted file mode 100644 index 2d02fdaa..00000000 --- a/src-backup/main/java/WayofTime/alchemicalWizardry/common/spell/simple/SpellFireBurst.java +++ /dev/null @@ -1,175 +0,0 @@ -package WayofTime.alchemicalWizardry.common.spell.simple; - -import java.util.Iterator; -import java.util.List; -import java.util.Random; - -import net.minecraft.entity.EntityLivingBase; -import net.minecraft.entity.player.EntityPlayer; -import net.minecraft.init.Blocks; -import net.minecraft.item.ItemStack; -import net.minecraft.util.AxisAlignedBB; -import net.minecraft.util.DamageSource; -import net.minecraft.world.World; -import WayofTime.alchemicalWizardry.common.entity.projectile.FireProjectile; -import WayofTime.alchemicalWizardry.common.items.EnergyItems; - -public class SpellFireBurst extends HomSpell -{ - public Random itemRand = new Random(); - - public SpellFireBurst() - { - super(); - this.setEnergies(100, 300, 400, 100); - //this.setCreativeTab(CreativeTabs.tabMisc); - } - - @Override - public ItemStack onOffensiveRangedRightClick(ItemStack par1ItemStack, World par2World, EntityPlayer par3EntityPlayer) - { - EnergyItems.checkAndSetItemOwner(par1ItemStack, par3EntityPlayer); - - if (par3EntityPlayer.isSneaking()) - { - return par1ItemStack; - } - - if (!par3EntityPlayer.capabilities.isCreativeMode) - { - EnergyItems.syphonAndDamageWhileInContainer(par1ItemStack, par3EntityPlayer, this.getOffensiveRangedEnergy()); - } - - par2World.playSoundAtEntity(par3EntityPlayer, "random.fizz", 0.5F, 0.4F / (itemRand.nextFloat() * 0.4F + 0.8F)); - - if (!par2World.isRemote) - { - //par2World.spawnEntityInWorld(new EnergyBlastProjectile(par2World, par3EntityPlayer, damage)); - FireProjectile proj = new FireProjectile(par2World, par3EntityPlayer, 7); - par2World.spawnEntityInWorld(proj); - } - - return par1ItemStack; - } - - @Override - public ItemStack onOffensiveMeleeRightClick(ItemStack par1ItemStack, World par2World, EntityPlayer par3EntityPlayer) - { - EnergyItems.checkAndSetItemOwner(par1ItemStack, par3EntityPlayer); - - if (par3EntityPlayer.isSneaking()) - { - return par1ItemStack; - } - - if (!par3EntityPlayer.capabilities.isCreativeMode) - { - EnergyItems.syphonAndDamageWhileInContainer(par1ItemStack, par3EntityPlayer, this.getOffensiveMeleeEnergy()); - } - - par2World.playSoundAtEntity(par3EntityPlayer, "random.fizz", 0.5F, 0.4F / (itemRand.nextFloat() * 0.4F + 0.8F)); - - if (!par2World.isRemote) - { - for (int i = -1; i <= 1; i++) - { - for (int j = -1; j <= 1; j++) - { - par2World.spawnEntityInWorld(new FireProjectile(par2World, par3EntityPlayer, 8, 2, par3EntityPlayer.posX, par3EntityPlayer.posY + par3EntityPlayer.getEyeHeight(), par3EntityPlayer.posZ, par3EntityPlayer.rotationYaw + i * 10F, par3EntityPlayer.rotationPitch + j * 10F)); - } - } - } - - return par1ItemStack; - } - - @Override - public ItemStack onDefensiveRightClick(ItemStack par1ItemStack, World par2World, EntityPlayer par3EntityPlayer) - { - EnergyItems.checkAndSetItemOwner(par1ItemStack, par3EntityPlayer); - - if (par3EntityPlayer.isSneaking()) - { - return par1ItemStack; - } - - if (!par3EntityPlayer.capabilities.isCreativeMode) - { - EnergyItems.syphonAndDamageWhileInContainer(par1ItemStack, par3EntityPlayer, this.getDefensiveEnergy()); - } - - par2World.playSoundAtEntity(par3EntityPlayer, "random.fizz", 0.5F, 0.4F / (itemRand.nextFloat() * 0.4F + 0.8F)); - int d0 = 2; - AxisAlignedBB axisalignedbb = AxisAlignedBB.getBoundingBox((double) par3EntityPlayer.posX, (double) par3EntityPlayer.posY, (double) par3EntityPlayer.posZ, (double) (par3EntityPlayer.posX + 1), (double) (par3EntityPlayer.posY + 2), (double) (par3EntityPlayer.posZ + 1)).expand(d0, d0, d0); - //axisalignedbb.maxY = (double)this.worldObj.getHeight(); - List list = par3EntityPlayer.worldObj.getEntitiesWithinAABB(EntityLivingBase.class, axisalignedbb); - Iterator iterator = list.iterator(); - - while (iterator.hasNext()) - { - EntityLivingBase entityLiving = (EntityLivingBase) iterator.next(); - - if (entityLiving instanceof EntityPlayer) - { - if (entityLiving.equals(par3EntityPlayer)) - { - continue; - } - } - - entityLiving.setFire(100); - entityLiving.attackEntityFrom(DamageSource.inFire, 2); - } - -// if (!par2World.isRemote) -// { -// -// for(int i=0;i<10;i++) -// { -// for(int j=0;j<5;j++) -// { -// par2World.spawnEntityInWorld(new FireProjectile(par2World, par3EntityPlayer, 10,5,par3EntityPlayer.posX,par3EntityPlayer.posY+par3EntityPlayer.getEyeHeight(),par3EntityPlayer.posZ, par3EntityPlayer.rotationYaw+i*36F,par3EntityPlayer.rotationPitch+j*72F)); -// } -// } -// } - return par1ItemStack; - } - - @Override - public ItemStack onEnvironmentalRightClick(ItemStack par1ItemStack, World par2World, EntityPlayer par3EntityPlayer) - { - EnergyItems.checkAndSetItemOwner(par1ItemStack, par3EntityPlayer); - - if (par3EntityPlayer.isSneaking()) - { - return par1ItemStack; - } - - if (!par3EntityPlayer.capabilities.isCreativeMode) - { - EnergyItems.syphonAndDamageWhileInContainer(par1ItemStack, par3EntityPlayer, this.getEnvironmentalEnergy()); - } - - par2World.playSoundAtEntity(par3EntityPlayer, "random.fizz", 0.5F, 0.4F / (itemRand.nextFloat() * 0.4F + 0.8F)); - World worldObj = par2World; - - for (int i = -1; i <= 1; i++) - { - for (int j = -1; j <= 1; j++) - { - for (int k = -1; k <= 1; k++) - { - if (worldObj.isAirBlock((int) par3EntityPlayer.posX + i, (int) par3EntityPlayer.posY + j, (int) par3EntityPlayer.posZ + k)) - { - if (worldObj.rand.nextFloat() < 0.8F) - { - worldObj.setBlock((int) par3EntityPlayer.posX + i, (int) par3EntityPlayer.posY + j, (int) par3EntityPlayer.posZ + k, Blocks.fire); - } - } - } - } - } - - return par1ItemStack; - } -} diff --git a/src-backup/main/java/WayofTime/alchemicalWizardry/common/spell/simple/SpellFrozenWater.java b/src-backup/main/java/WayofTime/alchemicalWizardry/common/spell/simple/SpellFrozenWater.java deleted file mode 100644 index bfa441eb..00000000 --- a/src-backup/main/java/WayofTime/alchemicalWizardry/common/spell/simple/SpellFrozenWater.java +++ /dev/null @@ -1,208 +0,0 @@ -package WayofTime.alchemicalWizardry.common.spell.simple; - -import java.util.Random; - -import net.minecraft.block.Block; -import net.minecraft.entity.player.EntityPlayer; -import net.minecraft.init.Blocks; -import net.minecraft.item.ItemStack; -import net.minecraft.world.World; -import WayofTime.alchemicalWizardry.common.entity.projectile.IceProjectile; -import WayofTime.alchemicalWizardry.common.items.EnergyItems; - -public class SpellFrozenWater extends HomSpell -{ - public Random itemRand = new Random(); - - public SpellFrozenWater() - { - super(); - this.setEnergies(100, 200, 150, 100); - //this.setCreativeTab(CreativeTabs.tabMisc); - } - - @Override - public ItemStack onOffensiveRangedRightClick(ItemStack par1ItemStack, World par2World, EntityPlayer par3EntityPlayer) - { - EnergyItems.checkAndSetItemOwner(par1ItemStack, par3EntityPlayer); - - if (par3EntityPlayer.isSneaking()) - { - return par1ItemStack; - } - - if (!par3EntityPlayer.capabilities.isCreativeMode) - { - EnergyItems.syphonAndDamageWhileInContainer(par1ItemStack, par3EntityPlayer, this.getOffensiveRangedEnergy()); - } - - par2World.playSoundAtEntity(par3EntityPlayer, "random.fizz", 0.5F, 0.4F / (itemRand.nextFloat() * 0.4F + 0.8F)); - - if (!par2World.isRemote) - { - //par2World.spawnEntityInWorld(new EnergyBlastProjectile(par2World, par3EntityPlayer, damage)); - par2World.spawnEntityInWorld(new IceProjectile(par2World, par3EntityPlayer, 6)); - } - - return par1ItemStack; - } - - @Override - public ItemStack onOffensiveMeleeRightClick(ItemStack par1ItemStack, World par2World, EntityPlayer par3EntityPlayer) - { - EnergyItems.checkAndSetItemOwner(par1ItemStack, par3EntityPlayer); - - if (par3EntityPlayer.isSneaking()) - { - return par1ItemStack; - } - - if (!par3EntityPlayer.capabilities.isCreativeMode) - { - EnergyItems.syphonAndDamageWhileInContainer(par1ItemStack, par3EntityPlayer, this.getOffensiveMeleeEnergy()); - } - - for (int i = -2; i <= 2; i++) - { - par2World.spawnEntityInWorld(new IceProjectile(par2World, par3EntityPlayer, 6, 2, par3EntityPlayer.posX, par3EntityPlayer.posY + par3EntityPlayer.getEyeHeight(), par3EntityPlayer.posZ, par3EntityPlayer.rotationYaw + i * 5F, par3EntityPlayer.rotationPitch)); - } - - return par1ItemStack; - } - - @Override - public ItemStack onDefensiveRightClick(ItemStack par1ItemStack, World par2World, EntityPlayer par3EntityPlayer) - { - if (!par3EntityPlayer.capabilities.isCreativeMode) - { - EnergyItems.syphonAndDamageWhileInContainer(par1ItemStack, par3EntityPlayer, getDefensiveEnergy()); - } - - float yaw = par3EntityPlayer.rotationYaw; - float pitch = par3EntityPlayer.rotationPitch; - int range = 2; - - if (pitch > 40F) - { - for (int i = -range; i <= range; i++) - { - for (int j = -range; j <= range; j++) - { - if (par2World.isAirBlock((int) par3EntityPlayer.posX + i, (int) par3EntityPlayer.posY - 1, (int) par3EntityPlayer.posZ + j)) - { - par2World.setBlock((int) par3EntityPlayer.posX + i, (int) par3EntityPlayer.posY - 1, (int) par3EntityPlayer.posZ + j, Blocks.ice); - } - } - } - - return par1ItemStack; - } else if (pitch < -40F) - { - for (int i = -range; i <= range; i++) - { - for (int j = -range; j <= range; j++) - { - if (par2World.isAirBlock((int) par3EntityPlayer.posX + i, (int) par3EntityPlayer.posY + 3, (int) par3EntityPlayer.posZ + j)) - { - par2World.setBlock((int) par3EntityPlayer.posX + i, (int) par3EntityPlayer.posY + 3, (int) par3EntityPlayer.posZ + j, Blocks.ice); - } - } - } - - return par1ItemStack; - } - - if ((yaw >= 315 && yaw < 360) || (yaw >= 0 && yaw < 45)) - { - for (int i = -range; i <= range; i++) - { - for (int j = 0; j < range * 2 + 1; j++) - { - if (par2World.isAirBlock((int) par3EntityPlayer.posX + i, (int) par3EntityPlayer.posY + j, (int) par3EntityPlayer.posZ + 2)) - { - par2World.setBlock((int) par3EntityPlayer.posX + i, (int) par3EntityPlayer.posY + j, (int) par3EntityPlayer.posZ + 2, Blocks.ice); - } - } - } - } else if (yaw >= 45 && yaw < 135) - { - for (int i = -range; i <= range; i++) - { - for (int j = 0; j < range * 2 + 1; j++) - { - if (par2World.isAirBlock((int) par3EntityPlayer.posX - 2, (int) par3EntityPlayer.posY + j, (int) par3EntityPlayer.posZ + i)) - { - par2World.setBlock((int) par3EntityPlayer.posX - 2, (int) par3EntityPlayer.posY + j, (int) par3EntityPlayer.posZ + i, Blocks.ice); - } - } - } - } else if (yaw >= 135 && yaw < 225) - { - for (int i = -range; i <= range; i++) - { - for (int j = 0; j < range * 2 + 1; j++) - { - if (par2World.isAirBlock((int) par3EntityPlayer.posX + i, (int) par3EntityPlayer.posY + j, (int) par3EntityPlayer.posZ - 2)) - { - par2World.setBlock((int) par3EntityPlayer.posX + i, (int) par3EntityPlayer.posY + j, (int) par3EntityPlayer.posZ - 2, Blocks.ice); - } - } - } - } else - { - for (int i = -range; i <= range; i++) - { - for (int j = 0; j < range * 2 + 1; j++) - { - if (par2World.isAirBlock((int) par3EntityPlayer.posX + 2, (int) par3EntityPlayer.posY + j, (int) par3EntityPlayer.posZ + i)) - { - par2World.setBlock((int) par3EntityPlayer.posX + 2, (int) par3EntityPlayer.posY + j, (int) par3EntityPlayer.posZ + i, Blocks.ice); - } - } - } - } - - return par1ItemStack; - } - - @Override - public ItemStack onEnvironmentalRightClick(ItemStack par1ItemStack, World par2World, EntityPlayer par3EntityPlayer) - { - EnergyItems.checkAndSetItemOwner(par1ItemStack, par3EntityPlayer); - - if (par3EntityPlayer.isSneaking()) - { - return par1ItemStack; - } - - int radius = 3; - int posX = (int) par3EntityPlayer.posX; - int posY = (int) par3EntityPlayer.posY; - int posZ = (int) par3EntityPlayer.posZ; - - for (int i = -radius; i <= radius; i++) - { - for (int j = -radius; j <= radius; j++) - { - for (int k = -radius; k <= radius; k++) - { - Block block = par2World.getBlock((int) par3EntityPlayer.posX + i - 1, (int) par3EntityPlayer.posY + j, (int) par3EntityPlayer.posZ + k); - - //Block block = Block.blocksList[blockID]; - if (block == Blocks.water || block == Blocks.flowing_water) - { - par2World.setBlock((int) par3EntityPlayer.posX + i - 1, (int) par3EntityPlayer.posY + j, (int) par3EntityPlayer.posZ + k, Blocks.ice); - } - } - } - } - -// int blockID = par2World.getBlockId((int)par3EntityPlayer.posX+i, (int)par3EntityPlayer.posY+j, (int)par3EntityPlayer.posZ+k); -// //Block block = Block.blocksList[blockID]; -// if(blockID==Block.waterMoving.blockID||blockID==Block.waterStill.blockID) -// { -// par2World.setBlock((int)par3EntityPlayer.posX+i, (int)par3EntityPlayer.posY+j, (int)par3EntityPlayer.posZ+k, Blocks.ice); -// } - return par1ItemStack; - } -} diff --git a/src-backup/main/java/WayofTime/alchemicalWizardry/common/spell/simple/SpellHolyBlast.java b/src-backup/main/java/WayofTime/alchemicalWizardry/common/spell/simple/SpellHolyBlast.java deleted file mode 100644 index f712073f..00000000 --- a/src-backup/main/java/WayofTime/alchemicalWizardry/common/spell/simple/SpellHolyBlast.java +++ /dev/null @@ -1,200 +0,0 @@ -package WayofTime.alchemicalWizardry.common.spell.simple; - -import java.util.Iterator; -import java.util.List; -import java.util.Random; - -import net.minecraft.entity.EntityLivingBase; -import net.minecraft.entity.player.EntityPlayer; -import net.minecraft.item.ItemStack; -import net.minecraft.util.AxisAlignedBB; -import net.minecraft.util.DamageSource; -import net.minecraft.world.World; -import WayofTime.alchemicalWizardry.common.PacketHandler; -import WayofTime.alchemicalWizardry.common.entity.projectile.HolyProjectile; -import WayofTime.alchemicalWizardry.common.items.EnergyItems; -import WayofTime.alchemicalWizardry.common.spell.complex.effect.SpellHelper; - -public class SpellHolyBlast extends HomSpell -{ - Random itemRand = new Random(); - - public SpellHolyBlast() - { - super(); - this.setEnergies(100, 300, 500, 400); - //this.setCreativeTab(CreativeTabs.tabMisc); - } - - @Override - public ItemStack onOffensiveRangedRightClick(ItemStack par1ItemStack, World par2World, EntityPlayer par3EntityPlayer) - { - EnergyItems.checkAndSetItemOwner(par1ItemStack, par3EntityPlayer); - - if (par3EntityPlayer.isSneaking()) - { - return par1ItemStack; - } - - if (!par3EntityPlayer.capabilities.isCreativeMode) - { - EnergyItems.syphonAndDamageWhileInContainer(par1ItemStack, par3EntityPlayer, this.getOffensiveRangedEnergy()); - } - - par2World.playSoundAtEntity(par3EntityPlayer, "random.fizz", 0.5F, 0.4F / (itemRand.nextFloat() * 0.4F + 0.8F)); - - if (!par2World.isRemote) - { - //par2World.spawnEntityInWorld(new EnergyBlastProjectile(par2World, par3EntityPlayer, damage)); - par2World.spawnEntityInWorld(new HolyProjectile(par2World, par3EntityPlayer, 8)); - } - - return par1ItemStack; - } - - @Override - public ItemStack onOffensiveMeleeRightClick(ItemStack par1ItemStack, World par2World, EntityPlayer par3EntityPlayer) - { - EnergyItems.checkAndSetItemOwner(par1ItemStack, par3EntityPlayer); - - if (par3EntityPlayer.isSneaking()) - { - return par1ItemStack; - } - - if (!par3EntityPlayer.capabilities.isCreativeMode) - { - EnergyItems.syphonAndDamageWhileInContainer(par1ItemStack, par3EntityPlayer, this.getOffensiveMeleeEnergy()); - } - - int distance = 2; - double yaw = par3EntityPlayer.rotationYaw / 180 * Math.PI; - double pitch = par3EntityPlayer.rotationPitch / 180 * Math.PI; - double xCoord = par3EntityPlayer.posX + Math.sin(yaw) * Math.cos(pitch) * (-distance); - double yCoord = par3EntityPlayer.posY + par3EntityPlayer.getEyeHeight() + Math.sin(-pitch) * distance; - double zCoord = par3EntityPlayer.posZ + Math.cos(yaw) * Math.cos(pitch) * distance; - float d0 = 0.5f; - AxisAlignedBB axisalignedbb = AxisAlignedBB.getBoundingBox(par3EntityPlayer.posX - 0.5 + Math.sin(yaw) * Math.cos(pitch) * (-distance), par3EntityPlayer.posY + par3EntityPlayer.getEyeHeight() + Math.sin(-pitch) * distance, par3EntityPlayer.posZ - 0.5 + Math.cos(yaw) * Math.cos(pitch) * distance, par3EntityPlayer.posX + Math.sin(yaw) * Math.cos(pitch) * (-distance) + 0.5, par3EntityPlayer.posY + par3EntityPlayer.getEyeHeight() + Math.sin(-pitch) * distance + 1, par3EntityPlayer.posZ + Math.cos(yaw) * Math.cos(pitch) * distance + 0.5).expand(d0, d0, d0); - //axisalignedbb.maxY = (double)this.worldObj.getHeight(); - List list = par3EntityPlayer.worldObj.getEntitiesWithinAABB(EntityLivingBase.class, axisalignedbb); - Iterator iterator = list.iterator(); - - while (iterator.hasNext()) - { - EntityLivingBase entityLiving = (EntityLivingBase) iterator.next(); - - if (entityLiving instanceof EntityPlayer) - { - if (entityLiving.equals(par3EntityPlayer)) - { - continue; - } - } - - int i = 1; - - if (entityLiving.isEntityUndead()) - { - i = 3; - } - - //entityLiving.setFire(50); - entityLiving.attackEntityFrom(DamageSource.causePlayerDamage(par3EntityPlayer), 5 * i); - //par2World.createExplosion(par3EntityPlayer, par3EntityPlayer.posX, par3EntityPlayer.posY, par3EntityPlayer.posZ, (float)(2), false); - } - - par2World.createExplosion(par3EntityPlayer, xCoord, yCoord, zCoord, (float) (1), false); - - for (int i = 0; i < 5; i++) - { - //PacketDispatcher.sendPacketToAllAround(xCoord, yCoord, zCoord, 30, par2World.provider.dimensionId, PacketHandler.getCustomParticlePacket("mobSpell", xCoord + itemRand.nextFloat() - itemRand.nextFloat(), yCoord + itemRand.nextFloat() - itemRand.nextFloat(), zCoord + itemRand.nextFloat() - itemRand.nextFloat(), 1.0F, 1.0F, 1.0F)); - SpellHelper.sendParticleToAllAround(par2World, xCoord, yCoord, zCoord, 30, par2World.provider.dimensionId, "mobSpell", xCoord + itemRand.nextFloat() - itemRand.nextFloat(), yCoord + itemRand.nextFloat() - itemRand.nextFloat(), zCoord + itemRand.nextFloat() - itemRand.nextFloat(), 1.0F, 1.0F, 1.0F); - } - - return par1ItemStack; - } - - @Override - public ItemStack onDefensiveRightClick(ItemStack par1ItemStack, World par2World, EntityPlayer par3EntityPlayer) - { - EnergyItems.checkAndSetItemOwner(par1ItemStack, par3EntityPlayer); - - if (par3EntityPlayer.isSneaking()) - { - return par1ItemStack; - } - - if (!par3EntityPlayer.capabilities.isCreativeMode) - { - EnergyItems.syphonAndDamageWhileInContainer(par1ItemStack, par3EntityPlayer, this.getDefensiveEnergy()); - } - - if (!par2World.isRemote) - { - for (int i = 0; i < 360; i += 18) - { - par2World.spawnEntityInWorld(new HolyProjectile(par2World, par3EntityPlayer, 8, 3, par3EntityPlayer.posX, par3EntityPlayer.posY + (par3EntityPlayer.height / 2), par3EntityPlayer.posZ, i, 0)); - } - } - - return par1ItemStack; - } - - @Override - public ItemStack onEnvironmentalRightClick(ItemStack par1ItemStack, World par2World, EntityPlayer par3EntityPlayer) - { - EnergyItems.checkAndSetItemOwner(par1ItemStack, par3EntityPlayer); - - if (par3EntityPlayer.isSneaking()) - { - return par1ItemStack; - } - - if (!par3EntityPlayer.capabilities.isCreativeMode) - { - EnergyItems.syphonAndDamageWhileInContainer(par1ItemStack, par3EntityPlayer, this.getEnvironmentalEnergy()); - } - - int d0 = 3; - AxisAlignedBB axisalignedbb = AxisAlignedBB.getBoundingBox((double) par3EntityPlayer.posX, (double) par3EntityPlayer.posY, (double) par3EntityPlayer.posZ, (double) (par3EntityPlayer.posX + 1), (double) (par3EntityPlayer.posY + 2), (double) (par3EntityPlayer.posZ + 1)).expand(d0, d0, d0); - //axisalignedbb.maxY = (double)this.worldObj.getHeight(); - List list = par3EntityPlayer.worldObj.getEntitiesWithinAABB(EntityLivingBase.class, axisalignedbb); - Iterator iterator = list.iterator(); - - while (iterator.hasNext()) - { - EntityLivingBase entityLiving = (EntityLivingBase) iterator.next(); - - if (entityLiving instanceof EntityPlayer) - { - if (entityLiving.equals(par3EntityPlayer)) - { - continue; - } - } - - int i = 1; - - if (entityLiving.isEntityUndead()) - { - i = 3; - } - - //entityLiving.setFire(50); - entityLiving.attackEntityFrom(DamageSource.causePlayerDamage(par3EntityPlayer), 5 * i); - //par2World.createExplosion(par3EntityPlayer, par3EntityPlayer.posX, par3EntityPlayer.posY, par3EntityPlayer.posZ, (float)(2), false); - } - - par2World.createExplosion(par3EntityPlayer, par3EntityPlayer.posX, par3EntityPlayer.posY, par3EntityPlayer.posZ, (float) (2), false); - double xCoord = par3EntityPlayer.posX; - double yCoord = par3EntityPlayer.posY; - double zCoord = par3EntityPlayer.posZ; - - for (int i = 0; i < 20; i++) - { - SpellHelper.sendParticleToAllAround(par2World, xCoord, yCoord, zCoord, 30, par2World.provider.dimensionId, "mobSpell", xCoord + itemRand.nextFloat() - itemRand.nextFloat(), yCoord + itemRand.nextFloat() - itemRand.nextFloat(), zCoord + itemRand.nextFloat() - itemRand.nextFloat(), 1.0F, 1.0F, 1.0F); - } - - return par1ItemStack; - } -} diff --git a/src-backup/main/java/WayofTime/alchemicalWizardry/common/spell/simple/SpellLightningBolt.java b/src-backup/main/java/WayofTime/alchemicalWizardry/common/spell/simple/SpellLightningBolt.java deleted file mode 100644 index 576b9884..00000000 --- a/src-backup/main/java/WayofTime/alchemicalWizardry/common/spell/simple/SpellLightningBolt.java +++ /dev/null @@ -1,141 +0,0 @@ -package WayofTime.alchemicalWizardry.common.spell.simple; - -import java.util.Random; - -import net.minecraft.entity.effect.EntityLightningBolt; -import net.minecraft.entity.player.EntityPlayer; -import net.minecraft.item.ItemStack; -import net.minecraft.world.World; -import WayofTime.alchemicalWizardry.common.PacketHandler; -import WayofTime.alchemicalWizardry.common.entity.projectile.LightningBoltProjectile; -import WayofTime.alchemicalWizardry.common.items.EnergyItems; -import WayofTime.alchemicalWizardry.common.spell.complex.effect.SpellHelper; - -public class SpellLightningBolt extends HomSpell -{ - Random itemRand = new Random(); - - public SpellLightningBolt() - { - super(); - this.setEnergies(75, 200, 700, 700); - //this.setCreativeTab(CreativeTabs.tabMisc); - } - - @Override - public ItemStack onOffensiveRangedRightClick(ItemStack par1ItemStack, World par2World, EntityPlayer par3EntityPlayer) - { - EnergyItems.checkAndSetItemOwner(par1ItemStack, par3EntityPlayer); - - if (par3EntityPlayer.isSneaking()) - { - return par1ItemStack; - } - - if (!par3EntityPlayer.capabilities.isCreativeMode) - { - EnergyItems.syphonAndDamageWhileInContainer(par1ItemStack, par3EntityPlayer, this.getOffensiveRangedEnergy()); - } - - par2World.playSoundAtEntity(par3EntityPlayer, "random.fizz", 0.5F, 0.4F / (itemRand.nextFloat() * 0.4F + 0.8F)); - - if (!par2World.isRemote) - { - //par2World.spawnEntityInWorld(new EnergyBlastProjectile(par2World, par3EntityPlayer, damage)); - par2World.spawnEntityInWorld(new LightningBoltProjectile(par2World, par3EntityPlayer, 8, false)); - } - - return par1ItemStack; - } - - @Override - public ItemStack onOffensiveMeleeRightClick(ItemStack par1ItemStack, World par2World, EntityPlayer par3EntityPlayer) - { - //TODO Make it work better...? - EnergyItems.checkAndSetItemOwner(par1ItemStack, par3EntityPlayer); - - if (par3EntityPlayer.isSneaking()) - { - return par1ItemStack; - } - - if (!par3EntityPlayer.capabilities.isCreativeMode) - { - EnergyItems.syphonAndDamageWhileInContainer(par1ItemStack, par3EntityPlayer, this.getOffensiveMeleeEnergy()); - } - - double xCoord = par3EntityPlayer.posX; - double yCoord = par3EntityPlayer.posY; - double zCoord = par3EntityPlayer.posZ; - par2World.getWorldInfo().setRaining(true); - //par2World.setRainStrength(1.0F); - par2World.setRainStrength(1.0f); - par2World.setThunderStrength(1.0f); - par2World.getWorldInfo().setThunderTime(0); - par2World.getWorldInfo().setThundering(true); - - for (int i = 0; i < 5; i++) - { - //PacketDispatcher.sendPacketToAllAround(xCoord, yCoord, zCoord, 30, par2World.provider.dimensionId, PacketHandler.getCustomParticlePacket("mobSpell", xCoord + itemRand.nextFloat() - itemRand.nextFloat(), yCoord + itemRand.nextFloat() - itemRand.nextFloat(), zCoord + itemRand.nextFloat() - itemRand.nextFloat(), 1.0F, 1.0F, 1.0F)); - SpellHelper.sendParticleToAllAround(par2World, xCoord, yCoord, zCoord, 30, par2World.provider.dimensionId, "mobSpell", xCoord + itemRand.nextFloat() - itemRand.nextFloat(), yCoord + itemRand.nextFloat() - itemRand.nextFloat(), zCoord + itemRand.nextFloat() - itemRand.nextFloat(), 1.0F, 1.0F, 1.0F); - } - - return par1ItemStack; - } - - @Override - public ItemStack onDefensiveRightClick(ItemStack par1ItemStack, World par2World, EntityPlayer par3EntityPlayer) - { - EnergyItems.checkAndSetItemOwner(par1ItemStack, par3EntityPlayer); - - if (par3EntityPlayer.isSneaking()) - { - return par1ItemStack; - } - - if (!par3EntityPlayer.capabilities.isCreativeMode) - { - EnergyItems.syphonAndDamageWhileInContainer(par1ItemStack, par3EntityPlayer, this.getDefensiveEnergy()); - } - - double xCoord = par3EntityPlayer.posX; - double yCoord = par3EntityPlayer.posY; - double zCoord = par3EntityPlayer.posZ; - - for (int i = 0; i < 5; i++) - { - par2World.addWeatherEffect(new EntityLightningBolt(par2World, xCoord + itemRand.nextInt(64) - 32, yCoord + itemRand.nextInt(8) - 8, zCoord + itemRand.nextInt(64) - 32)); - } - - for (int i = 0; i < 8; i++) - { - SpellHelper.sendParticleToAllAround(par2World, xCoord, yCoord, zCoord, 30, par2World.provider.dimensionId, "mobSpell", xCoord + itemRand.nextFloat() - itemRand.nextFloat(), yCoord + itemRand.nextFloat() - itemRand.nextFloat(), zCoord + itemRand.nextFloat() - itemRand.nextFloat(), 1.0F, 1.0F, 1.0F); - } - - return par1ItemStack; - } - - @Override - public ItemStack onEnvironmentalRightClick(ItemStack par1ItemStack, World par2World, EntityPlayer par3EntityPlayer) - { - EnergyItems.checkAndSetItemOwner(par1ItemStack, par3EntityPlayer); - - if (par3EntityPlayer.isSneaking()) - { - return par1ItemStack; - } - - if (!par3EntityPlayer.capabilities.isCreativeMode) - { - EnergyItems.syphonAndDamageWhileInContainer(par1ItemStack, par3EntityPlayer, this.getEnvironmentalEnergy()); - } - - if (!par2World.isRemote) - { - //par2World.spawnEntityInWorld(new EnergyBlastProjectile(par2World, par3EntityPlayer, damage)); - par2World.spawnEntityInWorld(new LightningBoltProjectile(par2World, par3EntityPlayer, 8, true)); - } - - return par1ItemStack; - } -} \ No newline at end of file diff --git a/src-backup/main/java/WayofTime/alchemicalWizardry/common/spell/simple/SpellTeleport.java b/src-backup/main/java/WayofTime/alchemicalWizardry/common/spell/simple/SpellTeleport.java deleted file mode 100644 index b1276d95..00000000 --- a/src-backup/main/java/WayofTime/alchemicalWizardry/common/spell/simple/SpellTeleport.java +++ /dev/null @@ -1,289 +0,0 @@ -package WayofTime.alchemicalWizardry.common.spell.simple; - -import java.util.Iterator; -import java.util.List; -import java.util.Random; - -import net.minecraft.block.Block; -import net.minecraft.entity.Entity; -import net.minecraft.entity.EntityLivingBase; -import net.minecraft.entity.monster.EntityEnderman; -import net.minecraft.entity.player.EntityPlayer; -import net.minecraft.entity.player.EntityPlayerMP; -import net.minecraft.item.ItemStack; -import net.minecraft.util.AxisAlignedBB; -import net.minecraft.util.MathHelper; -import net.minecraft.world.World; -import net.minecraftforge.common.MinecraftForge; -import net.minecraftforge.event.entity.living.EnderTeleportEvent; -import WayofTime.alchemicalWizardry.common.PacketHandler; -import WayofTime.alchemicalWizardry.common.entity.projectile.TeleportProjectile; -import WayofTime.alchemicalWizardry.common.items.EnergyItems; -import WayofTime.alchemicalWizardry.common.spell.complex.effect.SpellHelper; - -public class SpellTeleport extends HomSpell -{ - Random itemRand = new Random(); - - public SpellTeleport() - { - super(); - this.setEnergies(500, 300, 500, 1000); - //this.setCreativeTab(CreativeTabs.tabMisc); - } - - @Override - public ItemStack onOffensiveRangedRightClick(ItemStack par1ItemStack, World par2World, EntityPlayer par3EntityPlayer) - { - EnergyItems.checkAndSetItemOwner(par1ItemStack, par3EntityPlayer); - - if (par3EntityPlayer.isSneaking()) - { - return par1ItemStack; - } - - if (!par3EntityPlayer.capabilities.isCreativeMode) - { - EnergyItems.syphonAndDamageWhileInContainer(par1ItemStack, par3EntityPlayer, this.getOffensiveRangedEnergy()); - } - - par2World.spawnEntityInWorld(new TeleportProjectile(par2World, par3EntityPlayer, 8, true)); - par2World.playSoundAtEntity(par3EntityPlayer, "random.fizz", 0.5F, 0.4F / (itemRand.nextFloat() * 0.4F + 0.8F)); - EntityEnderman g; - return par1ItemStack; - } - - @Override - public ItemStack onOffensiveMeleeRightClick(ItemStack par1ItemStack, World par2World, EntityPlayer par3EntityPlayer) - { - EnergyItems.checkAndSetItemOwner(par1ItemStack, par3EntityPlayer); - - if (par3EntityPlayer.isSneaking()) - { - return par1ItemStack; - } - - if (!par3EntityPlayer.capabilities.isCreativeMode) - { - EnergyItems.syphonAndDamageWhileInContainer(par1ItemStack, par3EntityPlayer, this.getOffensiveMeleeEnergy()); - } - - par2World.spawnEntityInWorld(new TeleportProjectile(par2World, par3EntityPlayer, 8, false)); - return par1ItemStack; - } - - @Override - public ItemStack onDefensiveRightClick(ItemStack par1ItemStack, World par2World, EntityPlayer par3EntityPlayer) - { - EnergyItems.checkAndSetItemOwner(par1ItemStack, par3EntityPlayer); - - if (par3EntityPlayer.isSneaking()) - { - return par1ItemStack; - } - - if (!par3EntityPlayer.capabilities.isCreativeMode) - { - EnergyItems.syphonAndDamageWhileInContainer(par1ItemStack, par3EntityPlayer, this.getDefensiveEnergy()); - } - - double xCoord = par3EntityPlayer.posX; - double yCoord = par3EntityPlayer.posY; - double zCoord = par3EntityPlayer.posZ; - SpellTeleport.teleportRandomly(par3EntityPlayer, 128); - - for (int i = 0; i < 20; i++) - { - //PacketDispatcher.sendPacketToAllAround(xCoord, yCoord, zCoord, 30, par2World.provider.dimensionId, PacketHandler.getCustomParticlePacket("portal", xCoord + (itemRand.nextFloat() - itemRand.nextFloat()) * 2, yCoord + (itemRand.nextFloat() - itemRand.nextFloat()) * 2, zCoord + (itemRand.nextFloat() - itemRand.nextFloat()) * 2, itemRand.nextFloat(), itemRand.nextFloat(), itemRand.nextFloat())); - SpellHelper.sendParticleToAllAround(par2World, xCoord, yCoord, zCoord, 30, par2World.provider.dimensionId, "portal", xCoord + (itemRand.nextFloat() - itemRand.nextFloat()) * 2, yCoord + (itemRand.nextFloat() - itemRand.nextFloat()) * 2, zCoord + (itemRand.nextFloat() - itemRand.nextFloat()) * 2, itemRand.nextFloat(), itemRand.nextFloat(), itemRand.nextFloat()); - } - - return par1ItemStack; - } - - @Override - public ItemStack onEnvironmentalRightClick(ItemStack par1ItemStack, World par2World, EntityPlayer par3EntityPlayer) - { - EnergyItems.checkAndSetItemOwner(par1ItemStack, par3EntityPlayer); - - if (par3EntityPlayer.isSneaking()) - { - return par1ItemStack; - } - - if (!par3EntityPlayer.capabilities.isCreativeMode) - { - EnergyItems.syphonAndDamageWhileInContainer(par1ItemStack, par3EntityPlayer, this.getEnvironmentalEnergy()); - } - - if (!par2World.isRemote) - { - int d0 = 3; - AxisAlignedBB axisalignedbb = AxisAlignedBB.getBoundingBox((double) par3EntityPlayer.posX, (double) par3EntityPlayer.posY, (double) par3EntityPlayer.posZ, (double) (par3EntityPlayer.posX + 1), (double) (par3EntityPlayer.posY + 2), (double) (par3EntityPlayer.posZ + 1)).expand(d0, d0, d0); - //axisalignedbb.maxY = (double)this.worldObj.getHeight(); - List list = par3EntityPlayer.worldObj.getEntitiesWithinAABB(EntityLivingBase.class, axisalignedbb); - Iterator iterator = list.iterator(); - - while (iterator.hasNext()) - { - EntityLivingBase entityLiving = (EntityLivingBase) iterator.next(); - - if (entityLiving instanceof EntityPlayer) - { - if (entityLiving.equals(par3EntityPlayer)) - { - continue; - } - } - - SpellTeleport.teleportRandomly(entityLiving, 128); - //entityLiving.attackEntityFrom(DamageSource.inFire, 5); - } - } - - double xCoord = par3EntityPlayer.posX; - double yCoord = par3EntityPlayer.posY; - double zCoord = par3EntityPlayer.posZ; - - for (int i = 0; i < 32; i++) - { - SpellHelper.sendParticleToAllAround(par2World, xCoord, yCoord, zCoord, 30, par2World.provider.dimensionId, "portal", xCoord + (itemRand.nextFloat() - itemRand.nextFloat()) * 2, yCoord + (itemRand.nextFloat() - itemRand.nextFloat()) * 2, zCoord + (itemRand.nextFloat() - itemRand.nextFloat()) * 2, itemRand.nextFloat(), itemRand.nextFloat(), itemRand.nextFloat()); - } - - return par1ItemStack; - } - - public static boolean teleportRandomly(EntityLivingBase entityLiving, double distance) - { - double x = entityLiving.posX; - double y = entityLiving.posY; - double z = entityLiving.posZ; - Random rand = new Random(); - double d0 = x + (rand.nextDouble() - 0.5D) * distance; - double d1 = y + (double) (rand.nextInt((int) distance) - (distance) / 2); - double d2 = z + (rand.nextDouble() - 0.5D) * distance; - int i = 0; - - while (!SpellTeleport.teleportTo(entityLiving, d0, d1, d2, x, y, z) && i < 100) - { - d0 = x + (rand.nextDouble() - 0.5D) * distance; - d1 = y + (double) (rand.nextInt((int) distance) - (distance) / 2); - d2 = z + (rand.nextDouble() - 0.5D) * distance; - i++; - } - - if (i >= 100) - { - return false; - } - - return true; - //return SpellTeleport.teleportTo(entityLiving, d0, d1, d2,x,y,z); - } - - private static boolean teleportTo(EntityLivingBase entityLiving, double par1, double par3, double par5, double lastX, double lastY, double lastZ) - { - EnderTeleportEvent event = new EnderTeleportEvent(entityLiving, par1, par3, par5, 0); - - if (MinecraftForge.EVENT_BUS.post(event)) - { - return false; - } - - double d3 = lastX; - double d4 = lastY; - double d5 = lastZ; - SpellTeleport.moveEntityViaTeleport(entityLiving, event.targetX, event.targetY, event.targetZ); - boolean flag = false; - int i = MathHelper.floor_double(entityLiving.posX); - int j = MathHelper.floor_double(entityLiving.posY); - int k = MathHelper.floor_double(entityLiving.posZ); - Block l; - - if (entityLiving.worldObj.blockExists(i, j, k)) - { - boolean flag1 = false; - - while (!flag1 && j > 0) - { - l = entityLiving.worldObj.getBlock(i, j - 1, k); - - if (l != null && l.getMaterial().blocksMovement()) - { - flag1 = true; - } else - { - --entityLiving.posY; - --j; - } - } - - if (flag1) - { - SpellTeleport.moveEntityViaTeleport(entityLiving, entityLiving.posX, entityLiving.posY, entityLiving.posZ); - - if (entityLiving.worldObj.getCollidingBoundingBoxes(entityLiving, entityLiving.boundingBox).isEmpty() && !entityLiving.worldObj.isAnyLiquid(entityLiving.boundingBox)) - { - flag = true; - } - } - } - - if (!flag) - { - SpellTeleport.moveEntityViaTeleport(entityLiving, d3, d4, d5); - return false; - } else - { - short short1 = 128; - - for (j = 0; j < short1; ++j) - { - double d6 = (double) j / ((double) short1 - 1.0D); - float f = (entityLiving.worldObj.rand.nextFloat() - 0.5F) * 0.2F; - float f1 = (entityLiving.worldObj.rand.nextFloat() - 0.5F) * 0.2F; - float f2 = (entityLiving.worldObj.rand.nextFloat() - 0.5F) * 0.2F; - double d7 = d3 + (entityLiving.posX - d3) * d6 + (entityLiving.worldObj.rand.nextDouble() - 0.5D) * (double) entityLiving.width * 2.0D; - double d8 = d4 + (entityLiving.posY - d4) * d6 + entityLiving.worldObj.rand.nextDouble() * (double) entityLiving.height; - double d9 = d5 + (entityLiving.posZ - d5) * d6 + (entityLiving.worldObj.rand.nextDouble() - 0.5D) * (double) entityLiving.width * 2.0D; - entityLiving.worldObj.spawnParticle("portal", d7, d8, d9, (double) f, (double) f1, (double) f2); - } - -// this.worldObj.playSoundEffect(d3, d4, d5, "mob.endermen.portal", 1.0F, 1.0F); -// this.playSound("mob.endermen.portal", 1.0F, 1.0F); - return true; - } - } - - public static void moveEntityViaTeleport(EntityLivingBase entityLiving, double x, double y, double z) - { - if (entityLiving instanceof EntityPlayer) - { - if (entityLiving != null && entityLiving instanceof EntityPlayerMP) - { - EntityPlayerMP entityplayermp = (EntityPlayerMP) entityLiving; - - //if (!entityplayermp.playerNetServerHandler.connectionClosed && entityplayermp.worldObj == entityLiving.worldObj) - if (entityplayermp.worldObj == entityLiving.worldObj) - { - EnderTeleportEvent event = new EnderTeleportEvent(entityplayermp, x, y, z, 5.0F); - - if (!MinecraftForge.EVENT_BUS.post(event)) - { - if (entityLiving.isRiding()) - { - entityLiving.mountEntity((Entity) null); - } - - entityLiving.setPositionAndUpdate(event.targetX, event.targetY, event.targetZ); -// this.getThrower().fallDistance = 0.0F; -// this.getThrower().attackEntityFrom(DamageSource.fall, event.attackDamage); - } - } - } - } else if (entityLiving != null) - { - entityLiving.setPosition(x, y, z); - } - } -} diff --git a/src-backup/main/java/WayofTime/alchemicalWizardry/common/spell/simple/SpellWateryGrave.java b/src-backup/main/java/WayofTime/alchemicalWizardry/common/spell/simple/SpellWateryGrave.java deleted file mode 100644 index 58450299..00000000 --- a/src-backup/main/java/WayofTime/alchemicalWizardry/common/spell/simple/SpellWateryGrave.java +++ /dev/null @@ -1,180 +0,0 @@ -package WayofTime.alchemicalWizardry.common.spell.simple; - -import java.util.Iterator; -import java.util.List; -import java.util.Random; - -import net.minecraft.entity.EntityLivingBase; -import net.minecraft.entity.player.EntityPlayer; -import net.minecraft.init.Blocks; -import net.minecraft.item.ItemStack; -import net.minecraft.potion.PotionEffect; -import net.minecraft.util.AxisAlignedBB; -import net.minecraft.util.DamageSource; -import net.minecraft.world.World; -import WayofTime.alchemicalWizardry.AlchemicalWizardry; -import WayofTime.alchemicalWizardry.common.PacketHandler; -import WayofTime.alchemicalWizardry.common.entity.projectile.WaterProjectile; -import WayofTime.alchemicalWizardry.common.items.EnergyItems; -import WayofTime.alchemicalWizardry.common.spell.complex.effect.SpellHelper; - -public class SpellWateryGrave extends HomSpell -{ - Random itemRand = new Random(); - - public SpellWateryGrave() - { - super(); - this.setEnergies(250, 350, 500, 750); - //this.setCreativeTab(CreativeTabs.tabMisc); - } - - @Override - public ItemStack onOffensiveRangedRightClick(ItemStack par1ItemStack, World par2World, EntityPlayer par3EntityPlayer) - { - EnergyItems.checkAndSetItemOwner(par1ItemStack, par3EntityPlayer); - - if (par3EntityPlayer.isSneaking()) - { - return par1ItemStack; - } - - if (!par3EntityPlayer.capabilities.isCreativeMode) - { - EnergyItems.syphonAndDamageWhileInContainer(par1ItemStack, par3EntityPlayer, this.getOffensiveRangedEnergy()); - } - - par2World.spawnEntityInWorld(new WaterProjectile(par2World, par3EntityPlayer, 8)); - par2World.playSoundAtEntity(par3EntityPlayer, "random.fizz", 0.5F, 0.4F / (itemRand.nextFloat() * 0.4F + 0.8F)); - return par1ItemStack; - } - - @Override - public ItemStack onOffensiveMeleeRightClick(ItemStack par1ItemStack, World par2World, EntityPlayer par3EntityPlayer) - { - EnergyItems.checkAndSetItemOwner(par1ItemStack, par3EntityPlayer); - - if (par3EntityPlayer.isSneaking()) - { - return par1ItemStack; - } - - if (!par3EntityPlayer.capabilities.isCreativeMode) - { - EnergyItems.syphonAndDamageWhileInContainer(par1ItemStack, par3EntityPlayer, this.getOffensiveMeleeEnergy()); - } - - if (!par2World.isRemote) - { - for (int i = -1; i <= 1; i++) - { - for (int j = -1; j <= 1; j++) - { - par2World.spawnEntityInWorld(new WaterProjectile(par2World, par3EntityPlayer, 3, 3, par3EntityPlayer.posX, par3EntityPlayer.posY + par3EntityPlayer.getEyeHeight(), par3EntityPlayer.posZ, par3EntityPlayer.rotationYaw + i * 10F, par3EntityPlayer.rotationPitch + j * 5F)); - } - } - } - - return par1ItemStack; - } - - @Override - public ItemStack onDefensiveRightClick(ItemStack par1ItemStack, World par2World, EntityPlayer par3EntityPlayer) - { - EnergyItems.checkAndSetItemOwner(par1ItemStack, par3EntityPlayer); - - if (par3EntityPlayer.isSneaking()) - { - return par1ItemStack; - } - - if (!par3EntityPlayer.capabilities.isCreativeMode) - { - EnergyItems.syphonAndDamageWhileInContainer(par1ItemStack, par3EntityPlayer, this.getDefensiveEnergy()); - } - - int d0 = 3; - AxisAlignedBB axisalignedbb = AxisAlignedBB.getBoundingBox((double) par3EntityPlayer.posX, (double) par3EntityPlayer.posY, (double) par3EntityPlayer.posZ, (double) (par3EntityPlayer.posX + 1), (double) (par3EntityPlayer.posY + 2), (double) (par3EntityPlayer.posZ + 1)).expand(d0, d0, d0); - //axisalignedbb.maxY = (double)this.worldObj.getHeight(); - List list = par3EntityPlayer.worldObj.getEntitiesWithinAABB(EntityLivingBase.class, axisalignedbb); - Iterator iterator = list.iterator(); - - while (iterator.hasNext()) - { - EntityLivingBase entityLiving = (EntityLivingBase) iterator.next(); - - if (entityLiving instanceof EntityPlayer) - { - if (entityLiving.equals(par3EntityPlayer)) - { - continue; - } - } - - int x = 1; - - if (entityLiving.isImmuneToFire()) - { - x = 2; - } - - entityLiving.attackEntityFrom(DamageSource.drown, 2 * x); - entityLiving.addPotionEffect(new PotionEffect(AlchemicalWizardry.customPotionDrowning.id, 100, x - 1)); - } - - double xCoord = par3EntityPlayer.posX; - double yCoord = par3EntityPlayer.posY; - double zCoord = par3EntityPlayer.posZ; - - for (int i = 0; i < 20; i++) - { - //PacketDispatcher.sendPacketToAllAround(xCoord, yCoord, zCoord, 30, par2World.provider.dimensionId, PacketHandler.getCustomParticlePacket("mobSpell", xCoord + (itemRand.nextFloat() - itemRand.nextFloat()) * 3, yCoord + (itemRand.nextFloat() - itemRand.nextFloat()) * 3, zCoord + (itemRand.nextFloat() - itemRand.nextFloat()) * 3, 0.0F, 0.410F, 1.0F)); - SpellHelper.sendParticleToAllAround(par2World, xCoord, yCoord, zCoord, 30, par2World.provider.dimensionId, "mobSpell", xCoord + (itemRand.nextFloat() - itemRand.nextFloat()) * 3, yCoord + (itemRand.nextFloat() - itemRand.nextFloat()) * 3, zCoord + (itemRand.nextFloat() - itemRand.nextFloat()) * 3, 0.0F, 0.410F, 1.0F); - } - - return par1ItemStack; - } - - @Override - public ItemStack onEnvironmentalRightClick(ItemStack par1ItemStack, World par2World, EntityPlayer par3EntityPlayer) - { - EnergyItems.checkAndSetItemOwner(par1ItemStack, par3EntityPlayer); - - if (par3EntityPlayer.isSneaking()) - { - return par1ItemStack; - } - - if (!par3EntityPlayer.capabilities.isCreativeMode) - { - EnergyItems.syphonAndDamageWhileInContainer(par1ItemStack, par3EntityPlayer, this.getEnvironmentalEnergy()); - } - - int range = 2; - - if (!par2World.isRemote) - { - for (int i = -range; i <= range; i++) - { - for (int j = -range; j <= range; j++) - { - if (par2World.isAirBlock((int) par3EntityPlayer.posX + i, (int) par3EntityPlayer.posY, (int) par3EntityPlayer.posZ + j)) - { - par2World.setBlock((int) par3EntityPlayer.posX + i, (int) par3EntityPlayer.posY, (int) par3EntityPlayer.posZ + j, Blocks.water); - } - } - } - } - - double xCoord = par3EntityPlayer.posX; - double yCoord = par3EntityPlayer.posY; - double zCoord = par3EntityPlayer.posZ; - - for (int i = 0; i < 16; i++) - { - SpellHelper.sendParticleToAllAround(par2World, xCoord, yCoord, zCoord, 30, par2World.provider.dimensionId, "mobSpell", xCoord + (itemRand.nextFloat() - itemRand.nextFloat()) * 3, yCoord + (itemRand.nextFloat() - itemRand.nextFloat()) * 3, zCoord + (itemRand.nextFloat() - itemRand.nextFloat()) * 3, 0.0F, 0.410F, 1.0F); - } - - return par1ItemStack; - } -} diff --git a/src-backup/main/java/WayofTime/alchemicalWizardry/common/spell/simple/SpellWindGust.java b/src-backup/main/java/WayofTime/alchemicalWizardry/common/spell/simple/SpellWindGust.java deleted file mode 100644 index 0e9e831d..00000000 --- a/src-backup/main/java/WayofTime/alchemicalWizardry/common/spell/simple/SpellWindGust.java +++ /dev/null @@ -1,219 +0,0 @@ -package WayofTime.alchemicalWizardry.common.spell.simple; - -import ibxm.Player; - -import java.util.Iterator; -import java.util.List; -import java.util.Random; - -import net.minecraft.entity.EntityLivingBase; -import net.minecraft.entity.player.EntityPlayer; -import net.minecraft.item.ItemStack; -import net.minecraft.util.AxisAlignedBB; -import net.minecraft.util.Vec3; -import net.minecraft.world.World; -import WayofTime.alchemicalWizardry.common.PacketHandler; -import WayofTime.alchemicalWizardry.common.entity.projectile.WindGustProjectile; -import WayofTime.alchemicalWizardry.common.items.EnergyItems; -import WayofTime.alchemicalWizardry.common.spell.complex.effect.SpellHelper; - -public class SpellWindGust extends HomSpell -{ - Random itemRand = new Random(); - - public SpellWindGust() - { - super(); - this.setEnergies(300, 400, 300, 500); - //this.setCreativeTab(CreativeTabs.tabMisc); - } - - @Override - public ItemStack onOffensiveRangedRightClick(ItemStack par1ItemStack, World par2World, EntityPlayer par3EntityPlayer) - { - EnergyItems.checkAndSetItemOwner(par1ItemStack, par3EntityPlayer); - - if (par3EntityPlayer.isSneaking()) - { - return par1ItemStack; - } - - if (!par3EntityPlayer.capabilities.isCreativeMode) - { - EnergyItems.syphonAndDamageWhileInContainer(par1ItemStack, par3EntityPlayer, this.getOffensiveRangedEnergy()); - } - - par2World.playSoundAtEntity(par3EntityPlayer, "random.fizz", 0.5F, 0.4F / (itemRand.nextFloat() * 0.4F + 0.8F)); - - if (!par2World.isRemote) - { - //par2World.spawnEntityInWorld(new EnergyBlastProjectile(par2World, par3EntityPlayer, damage)); - par2World.spawnEntityInWorld(new WindGustProjectile(par2World, par3EntityPlayer, 8)); - } - - return par1ItemStack; - } - - @Override - public ItemStack onOffensiveMeleeRightClick(ItemStack par1ItemStack, World par2World, EntityPlayer par3EntityPlayer) - { - EnergyItems.checkAndSetItemOwner(par1ItemStack, par3EntityPlayer); - - if (par3EntityPlayer.isSneaking()) - { - return par1ItemStack; - } - - if (!par3EntityPlayer.capabilities.isCreativeMode) - { - EnergyItems.syphonAndDamageWhileInContainer(par1ItemStack, par3EntityPlayer, this.getOffensiveMeleeEnergy()); - } - - int distance = 3; - double yaw = par3EntityPlayer.rotationYaw / 180 * Math.PI; - double pitch = par3EntityPlayer.rotationPitch / 180 * Math.PI; - double xCoord = par3EntityPlayer.posX + Math.sin(yaw) * Math.cos(pitch) * (-distance); - double yCoord = par3EntityPlayer.posY + par3EntityPlayer.getEyeHeight() + Math.sin(-pitch) * distance; - double zCoord = par3EntityPlayer.posZ + Math.cos(yaw) * Math.cos(pitch) * distance; - float d0 = 0.5f; - AxisAlignedBB axisalignedbb = AxisAlignedBB.getBoundingBox(par3EntityPlayer.posX - 0.5 + Math.sin(yaw) * Math.cos(pitch) * (-distance), par3EntityPlayer.posY + par3EntityPlayer.getEyeHeight() + Math.sin(-pitch) * distance, par3EntityPlayer.posZ - 0.5 + Math.cos(yaw) * Math.cos(pitch) * distance, par3EntityPlayer.posX + Math.sin(yaw) * Math.cos(pitch) * (-distance) + 0.5, par3EntityPlayer.posY + par3EntityPlayer.getEyeHeight() + Math.sin(-pitch) * distance + 1, par3EntityPlayer.posZ + Math.cos(yaw) * Math.cos(pitch) * distance + 0.5).expand(d0, d0, d0); - //axisalignedbb.maxY = (double)this.worldObj.getHeight(); - List list = par3EntityPlayer.worldObj.getEntitiesWithinAABB(EntityLivingBase.class, axisalignedbb); - Iterator iterator = list.iterator(); - - while (iterator.hasNext()) - { - EntityLivingBase entityLiving = (EntityLivingBase) iterator.next(); - - if (entityLiving instanceof EntityPlayer) - { - if (entityLiving.equals(par3EntityPlayer)) - { - continue; - } - } - - //entityLiving.setFire(50); - //entityLiving.attackEntityFrom(DamageSource.causePlayerDamage(par3EntityPlayer), 5*i); - //entityLiving.setVelocity(Math.sin(-yaw)*2, 2, Math.cos(yaw)*2); - entityLiving.motionX = Math.sin(-yaw) * 2; - entityLiving.motionY = 2; - entityLiving.motionZ = Math.cos(yaw) * 2; - //par2World.createExplosion(par3EntityPlayer, par3EntityPlayer.posX, par3EntityPlayer.posY, par3EntityPlayer.posZ, (float)(2), false); - } - - //par2World.createExplosion(par3EntityPlayer, xCoord, yCoord, zCoord, (float)(1), false); - - for (int i = 0; i < 5; i++) - { - SpellHelper.sendParticleToAllAround(par2World, xCoord, yCoord, zCoord, 30, par2World.provider.dimensionId, "mobSpell", xCoord + (itemRand.nextFloat() - itemRand.nextFloat()) * 3, yCoord + (itemRand.nextFloat() - itemRand.nextFloat()) * 3, zCoord + (itemRand.nextFloat() - itemRand.nextFloat()) * 3, 0.0F, 0.410F, 1.0F); - - } - - return par1ItemStack; - } - - @Override - public ItemStack onDefensiveRightClick(ItemStack par1ItemStack, World par2World, EntityPlayer par3EntityPlayer) - { - EnergyItems.checkAndSetItemOwner(par1ItemStack, par3EntityPlayer); - - if (par3EntityPlayer.isSneaking()) - { - return par1ItemStack; - } - - if (!par3EntityPlayer.capabilities.isCreativeMode) - { - EnergyItems.syphonAndDamageWhileInContainer(par1ItemStack, par3EntityPlayer, this.getDefensiveEnergy()); - } - - int distance = 3; - double yaw = par3EntityPlayer.rotationYaw / 180 * Math.PI; - double pitch = par3EntityPlayer.rotationPitch / 180 * Math.PI; - double wantedVelocity = 5; - double xVel = Math.sin(yaw) * Math.cos(pitch) * (-wantedVelocity); - double yVel = Math.sin(-pitch) * wantedVelocity; - double zVel = Math.cos(yaw) * Math.cos(pitch) * wantedVelocity; - Vec3 vec = par3EntityPlayer.getLookVec(); - par3EntityPlayer.motionX = vec.xCoord * wantedVelocity; - par3EntityPlayer.motionY = vec.yCoord * wantedVelocity; - par3EntityPlayer.motionZ = vec.zCoord * wantedVelocity; - //PacketDispatcher.sendPacketToPlayer(PacketHandler.getPlayerVelocitySettingPacket(xVel, yVel, zVel), (Player) par3EntityPlayer); - SpellHelper.setPlayerSpeedFromServer(par3EntityPlayer, xVel, yVel, zVel); - par2World.playSoundEffect((double) ((float) par3EntityPlayer.posX + 0.5F), (double) ((float) par3EntityPlayer.posY + 0.5F), (double) ((float) par3EntityPlayer.posZ + 0.5F), "random.fizz", 0.5F, 2.6F + (par2World.rand.nextFloat() - par2World.rand.nextFloat()) * 0.8F); - par3EntityPlayer.fallDistance = 0; - //par2World.createExplosion(par3EntityPlayer, par3EntityPlayer.posX, par3EntityPlayer.posY, par3EntityPlayer.posZ, (float)(2), false); - double xCoord = par3EntityPlayer.posX; - double yCoord = par3EntityPlayer.posY; - double zCoord = par3EntityPlayer.posZ; - - for (int i = 0; i < 8; i++) - { - SpellHelper.sendParticleToAllAround(par2World, xCoord, yCoord, zCoord, 30, par2World.provider.dimensionId, "mobSpell", xCoord + (itemRand.nextFloat() - itemRand.nextFloat()) * 3, yCoord + (itemRand.nextFloat() - itemRand.nextFloat()) * 3, zCoord + (itemRand.nextFloat() - itemRand.nextFloat()) * 3, 0.0F, 0.410F, 1.0F); - } - - return par1ItemStack; - } - - @Override - public ItemStack onEnvironmentalRightClick(ItemStack par1ItemStack, World par2World, EntityPlayer par3EntityPlayer) - { - EnergyItems.checkAndSetItemOwner(par1ItemStack, par3EntityPlayer); - - if (par3EntityPlayer.isSneaking()) - { - return par1ItemStack; - } - - if (!par3EntityPlayer.capabilities.isCreativeMode) - { - EnergyItems.syphonAndDamageWhileInContainer(par1ItemStack, par3EntityPlayer, this.getEnvironmentalEnergy()); - } - - int d0 = 3; - AxisAlignedBB axisalignedbb = AxisAlignedBB.getBoundingBox((double) par3EntityPlayer.posX, (double) par3EntityPlayer.posY, (double) par3EntityPlayer.posZ, (double) (par3EntityPlayer.posX + 1), (double) (par3EntityPlayer.posY + 2), (double) (par3EntityPlayer.posZ + 1)).expand(d0, d0, d0); - //axisalignedbb.maxY = (double)this.worldObj.getHeight(); - List list = par3EntityPlayer.worldObj.getEntitiesWithinAABB(EntityLivingBase.class, axisalignedbb); - Iterator iterator = list.iterator(); - double xCoord = par3EntityPlayer.posX; - double yCoord = par3EntityPlayer.posY; - double zCoord = par3EntityPlayer.posZ; - double wantedVel = 2; - - while (iterator.hasNext()) - { - EntityLivingBase entityLiving = (EntityLivingBase) iterator.next(); - - if (entityLiving instanceof EntityPlayer) - { - if (entityLiving.equals(par3EntityPlayer)) - { - continue; - } - } - - double posXDif = entityLiving.posX - par3EntityPlayer.posX; - double posYDif = entityLiving.posY - par3EntityPlayer.posY + 1; - double posZDif = entityLiving.posZ - par3EntityPlayer.posZ; - double distance2 = Math.pow(posXDif, 2) + Math.pow(posYDif, 2) + Math.pow(posZDif, 2); - double distance = Math.sqrt(distance2); - //entityLiving.setVelocity(posXDif*wantedVel/distance, posYDif*wantedVel/distance, posZDif*wantedVel/distance); - entityLiving.motionX = posXDif * wantedVel / distance; - entityLiving.motionY = posYDif * wantedVel / distance; - entityLiving.motionZ = posZDif * wantedVel / distance; - //entityLiving.setFire(50); - //entityLiving.attackEntityFrom(DamageSource.causePlayerDamage(par3EntityPlayer), 5*i); - //par2World.createExplosion(par3EntityPlayer, par3EntityPlayer.posX, par3EntityPlayer.posY, par3EntityPlayer.posZ, (float)(2), false); - } - - //par2World.createExplosion(par3EntityPlayer, par3EntityPlayer.posX, par3EntityPlayer.posY, par3EntityPlayer.posZ, (float)(2), false); - - for (int i = 0; i < 20; i++) - { - SpellHelper.sendParticleToAllAround(par2World, xCoord, yCoord, zCoord, 30, par2World.provider.dimensionId, "mobSpell", xCoord + (itemRand.nextFloat() - itemRand.nextFloat()) * 3, yCoord + (itemRand.nextFloat() - itemRand.nextFloat()) * 3, zCoord + (itemRand.nextFloat() - itemRand.nextFloat()) * 3, 0.0F, 0.410F, 1.0F); - } - - return par1ItemStack; - } -} \ No newline at end of file diff --git a/src-backup/main/java/WayofTime/alchemicalWizardry/common/summoning/SummoningFallenAngel.java b/src-backup/main/java/WayofTime/alchemicalWizardry/common/summoning/SummoningFallenAngel.java deleted file mode 100644 index bade513d..00000000 --- a/src-backup/main/java/WayofTime/alchemicalWizardry/common/summoning/SummoningFallenAngel.java +++ /dev/null @@ -1,20 +0,0 @@ -package WayofTime.alchemicalWizardry.common.summoning; - -import WayofTime.alchemicalWizardry.api.summoningRegistry.SummoningHelper; -import WayofTime.alchemicalWizardry.common.entity.mob.EntityFallenAngel; -import net.minecraft.entity.EntityLivingBase; -import net.minecraft.world.World; - -public class SummoningFallenAngel extends SummoningHelper -{ - public SummoningFallenAngel(int id) - { - super(id); - // TODO Auto-generated constructor stub - } - - public EntityLivingBase getEntity(World worldObj) - { - return new EntityFallenAngel(worldObj); - } -} diff --git a/src-backup/main/java/WayofTime/alchemicalWizardry/common/summoning/SummoningHelperAW.java b/src-backup/main/java/WayofTime/alchemicalWizardry/common/summoning/SummoningHelperAW.java deleted file mode 100644 index 8d615cf1..00000000 --- a/src-backup/main/java/WayofTime/alchemicalWizardry/common/summoning/SummoningHelperAW.java +++ /dev/null @@ -1,109 +0,0 @@ -package WayofTime.alchemicalWizardry.common.summoning; - -import net.minecraft.entity.EntityLivingBase; -import net.minecraft.entity.passive.EntityPig; -import net.minecraft.world.World; -import WayofTime.alchemicalWizardry.AlchemicalWizardry; -import WayofTime.alchemicalWizardry.api.summoningRegistry.SummoningHelper; -import WayofTime.alchemicalWizardry.common.EntityAirElemental; -import WayofTime.alchemicalWizardry.common.entity.mob.EntityBileDemon; -import WayofTime.alchemicalWizardry.common.entity.mob.EntityBoulderFist; -import WayofTime.alchemicalWizardry.common.entity.mob.EntityEarthElemental; -import WayofTime.alchemicalWizardry.common.entity.mob.EntityFallenAngel; -import WayofTime.alchemicalWizardry.common.entity.mob.EntityFireElemental; -import WayofTime.alchemicalWizardry.common.entity.mob.EntityHolyElemental; -import WayofTime.alchemicalWizardry.common.entity.mob.EntityIceDemon; -import WayofTime.alchemicalWizardry.common.entity.mob.EntityLowerGuardian; -import WayofTime.alchemicalWizardry.common.entity.mob.EntityShade; -import WayofTime.alchemicalWizardry.common.entity.mob.EntityShadeElemental; -import WayofTime.alchemicalWizardry.common.entity.mob.EntitySmallEarthGolem; -import WayofTime.alchemicalWizardry.common.entity.mob.EntityWaterElemental; -import WayofTime.alchemicalWizardry.common.entity.mob.EntityWingedFireDemon; - -public class SummoningHelperAW extends SummoningHelper -{ - public SummoningHelperAW(int id) - { - super(id); - } - - public EntityLivingBase getEntity(World worldObj) - { - if (this.id == AlchemicalWizardry.entityFallenAngelID) - { - return new EntityFallenAngel(worldObj); - } - - if (this.id == AlchemicalWizardry.entityLowerGuardianID) - { - return new EntityLowerGuardian(worldObj); - } - - if (this.id == AlchemicalWizardry.entityBileDemonID) - { - return new EntityBileDemon(worldObj); - } - - if (this.id == AlchemicalWizardry.entityWingedFireDemonID) - { - return new EntityWingedFireDemon(worldObj); - } - - if (this.id == AlchemicalWizardry.entitySmallEarthGolemID) - { - return new EntitySmallEarthGolem(worldObj); - } - - if (this.id == AlchemicalWizardry.entityIceDemonID) - { - return new EntityIceDemon(worldObj); - } - - if (this.id == AlchemicalWizardry.entityBoulderFistID) - { - return new EntityBoulderFist(worldObj); - } - - if (this.id == AlchemicalWizardry.entityShadeID) - { - return new EntityShade(worldObj); - } - - if (this.id == AlchemicalWizardry.entityAirElementalID) - { - return new EntityAirElemental(worldObj); - } - - if (this.id == AlchemicalWizardry.entityWaterElementalID) - { - return new EntityWaterElemental(worldObj); - } - - if (this.id == AlchemicalWizardry.entityEarthElementalID) - { - return new EntityEarthElemental(worldObj); - } - - if (this.id == AlchemicalWizardry.entityFireElementalID) - { - return new EntityFireElemental(worldObj); - } - - if (this.id == AlchemicalWizardry.entityShadeElementalID) - { - return new EntityShadeElemental(worldObj); - } - - if (this.id == AlchemicalWizardry.entityHolyElementalID) - { - return new EntityHolyElemental(worldObj); - } - - return new EntityPig(worldObj); - } - - public int getSummoningHelperID() - { - return id; - } -} diff --git a/src-backup/main/java/WayofTime/alchemicalWizardry/common/summoning/meteor/MeteorParadigm.java b/src-backup/main/java/WayofTime/alchemicalWizardry/common/summoning/meteor/MeteorParadigm.java deleted file mode 100644 index 56a615e6..00000000 --- a/src-backup/main/java/WayofTime/alchemicalWizardry/common/summoning/meteor/MeteorParadigm.java +++ /dev/null @@ -1,160 +0,0 @@ -package WayofTime.alchemicalWizardry.common.summoning.meteor; - -import java.util.ArrayList; -import java.util.List; -import java.util.Random; - -import net.minecraft.block.Block; -import net.minecraft.init.Blocks; -import net.minecraft.item.Item; -import net.minecraft.item.ItemStack; -import net.minecraft.world.World; -import WayofTime.alchemicalWizardry.AlchemicalWizardry; - -public class MeteorParadigm -{ - public List componentList = new ArrayList(); - public ItemStack focusStack; - public int radius; - public static int maxChance = 1000; - - public static Random rand = new Random(); - - public MeteorParadigm(ItemStack focusStack, int radius) - { - this.focusStack = focusStack; - this.radius = radius; - } - - public void parseStringArray(String[] oreArray) - { - for (int i = 0; i + 1 < oreArray.length; i += 2) - { - String oreName = oreArray[i]; - int oreChance = Integer.parseInt(oreArray[i + 1]); - MeteorParadigmComponent mpc = new MeteorParadigmComponent(oreName, oreChance); - componentList.add(mpc); - } - } - - public void createMeteorImpact(World world, int x, int y, int z, boolean[] flags) - { - boolean hasTerrae = false; - boolean hasOrbisTerrae = false; - boolean hasCrystallos = false; - boolean hasIncendium = false; - boolean hasTennebrae = false; - - if(flags != null && flags.length >= 5) - { - hasTerrae = flags[0]; - hasOrbisTerrae = flags[1]; - hasCrystallos = flags[2]; - hasIncendium = flags[3]; - hasTennebrae = flags[4]; - } - - int newRadius = radius; - int chance = maxChance; - - if(hasOrbisTerrae) - { - newRadius += 2; - chance += 200; - }else if(hasTerrae) - { - newRadius += 1; - chance += 100; - } - - world.createExplosion(null, x, y, z, newRadius * 4, AlchemicalWizardry.doMeteorsDestroyBlocks); - - float iceChance = hasCrystallos ? 1 : 0; - float soulChance = hasIncendium ? 1 : 0; - float obsidChance = hasTennebrae ? 1 : 0; - - float totalChance = iceChance + soulChance + obsidChance; - - for (int i = -newRadius; i <= newRadius; i++) - { - for (int j = -newRadius; j <= newRadius; j++) - { - for (int k = -newRadius; k <= newRadius; k++) - { - if (i * i + j * j + k * k >= (newRadius + 0.50f) * (newRadius + 0.50f)) - { - continue; - } - - if (!world.isAirBlock(x + i, y + j, z + k)) - { - continue; - } - - int randNum = world.rand.nextInt(chance); - boolean hasPlacedBlock = false; - - for (MeteorParadigmComponent mpc : componentList) - { - if (mpc == null || !mpc.isValidBlockParadigm()) - { - continue; - } - - randNum -= mpc.getChance(); - - if (randNum < 0) - { - ItemStack blockStack = mpc.getValidBlockParadigm(); - world.setBlock(x + i, y + j, z + k, Block.getBlockById(Item.getIdFromItem(blockStack.getItem())), blockStack.getItemDamage(), 3); - hasPlacedBlock = true; - break; - } - } - - if (!hasPlacedBlock) - { - float randChance = rand.nextFloat() * totalChance; - - if(randChance < iceChance) - { - world.setBlock(x + i, y + j, z + k, Blocks.ice, 0, 3); - }else - { - randChance-=iceChance; - - if(randChance < soulChance) - { - switch(rand.nextInt(3)) - { - case 0: - world.setBlock(x + i, y + j, z + k, Blocks.soul_sand, 0, 3); - break; - case 1: - world.setBlock(x + i, y + j, z + k, Blocks.glowstone, 0, 3); - break; - case 2: - world.setBlock(x + i, y + j, z + k, Blocks.netherrack, 0, 3); - break; - } - }else - { - randChance-=soulChance; - - if(randChance < obsidChance) - { - world.setBlock(x + i, y + j, z + k, Blocks.obsidian, 0, 3); - }else - { - randChance-=obsidChance; - - world.setBlock(x + i, y + j, z + k, Blocks.stone, 0, 3); - } - } - } - } - } - } - } - } -} diff --git a/src-backup/main/java/WayofTime/alchemicalWizardry/common/summoning/meteor/MeteorParadigmComponent.java b/src-backup/main/java/WayofTime/alchemicalWizardry/common/summoning/meteor/MeteorParadigmComponent.java deleted file mode 100644 index 0daa43a1..00000000 --- a/src-backup/main/java/WayofTime/alchemicalWizardry/common/summoning/meteor/MeteorParadigmComponent.java +++ /dev/null @@ -1,54 +0,0 @@ -package WayofTime.alchemicalWizardry.common.summoning.meteor; - -import net.minecraft.item.ItemBlock; -import net.minecraft.item.ItemStack; -import net.minecraftforge.oredict.OreDictionary; - -import java.util.List; - -public class MeteorParadigmComponent -{ - public String oreDictName; - public int chance; - - public MeteorParadigmComponent(String dictName, int chance) - { - this.oreDictName = dictName; - this.chance = chance; - } - - public boolean isValidBlockParadigm() - { - if (this.getValidBlockParadigm() != null) - { - return true; - } - - return false; - } - - public String getOreDictName() - { - return this.oreDictName; - } - - public int getChance() - { - return this.chance; - } - - public ItemStack getValidBlockParadigm() - { - List list = OreDictionary.getOres(getOreDictName()); - - for (ItemStack stack : list) - { - if (stack != null && stack.getItem() instanceof ItemBlock) - { - return stack; - } - } - - return null; - } -} diff --git a/src-backup/main/java/WayofTime/alchemicalWizardry/common/summoning/meteor/MeteorRegistry.java b/src-backup/main/java/WayofTime/alchemicalWizardry/common/summoning/meteor/MeteorRegistry.java deleted file mode 100644 index eb26421a..00000000 --- a/src-backup/main/java/WayofTime/alchemicalWizardry/common/summoning/meteor/MeteorRegistry.java +++ /dev/null @@ -1,61 +0,0 @@ -package WayofTime.alchemicalWizardry.common.summoning.meteor; - -import net.minecraft.item.ItemStack; -import net.minecraft.world.World; -import net.minecraftforge.oredict.OreDictionary; - -import java.util.ArrayList; -import java.util.List; - -public class MeteorRegistry -{ - public static List paradigmList = new ArrayList(); - - public static void registerMeteorParadigm(MeteorParadigm paradigm) - { - paradigmList.add(paradigm); - } - - public static void registerMeteorParadigm(ItemStack stack, String[] oreList, int radius) - { - if (stack != null && oreList != null) - { - MeteorParadigm meteor = new MeteorParadigm(stack, radius); - meteor.parseStringArray(oreList); - paradigmList.add(meteor); - } - } - - public static void createMeteorImpact(World world, int x, int y, int z, int paradigmID, boolean[] flags) - { - if (paradigmID < paradigmList.size()) - { - paradigmList.get(paradigmID).createMeteorImpact(world, x, y, z, flags); - } - } - - public static int getParadigmIDForItem(ItemStack stack) - { - if (stack == null) - { - return -1; - } - - for (int i = 0; i < paradigmList.size(); i++) - { - ItemStack focusStack = paradigmList.get(i).focusStack; - - if (focusStack != null && focusStack.getItem()== stack.getItem() && (focusStack.getItemDamage() == OreDictionary.WILDCARD_VALUE || focusStack.getItemDamage() == stack.getItemDamage())) - { - return i; - } - } - - return -1; - } - - public static boolean isValidParadigmItem(ItemStack stack) - { - return getParadigmIDForItem(stack) != -1; - } -} diff --git a/src-backup/main/java/WayofTime/alchemicalWizardry/common/tileEntity/TEAlchemicCalcinator.java b/src-backup/main/java/WayofTime/alchemicalWizardry/common/tileEntity/TEAlchemicCalcinator.java deleted file mode 100644 index cdca4619..00000000 --- a/src-backup/main/java/WayofTime/alchemicalWizardry/common/tileEntity/TEAlchemicCalcinator.java +++ /dev/null @@ -1,376 +0,0 @@ -package WayofTime.alchemicalWizardry.common.tileEntity; - -import net.minecraft.entity.player.EntityPlayer; -import net.minecraft.inventory.IInventory; -import net.minecraft.item.ItemStack; -import net.minecraft.nbt.NBTTagCompound; -import net.minecraft.nbt.NBTTagList; -import net.minecraft.network.NetworkManager; -import net.minecraft.network.Packet; -import net.minecraft.network.play.server.S35PacketUpdateTileEntity; -import net.minecraftforge.common.util.Constants; -import net.minecraftforge.common.util.ForgeDirection; -import WayofTime.alchemicalWizardry.api.alchemy.energy.Reagent; -import WayofTime.alchemicalWizardry.api.alchemy.energy.ReagentContainer; -import WayofTime.alchemicalWizardry.api.alchemy.energy.ReagentRegistry; -import WayofTime.alchemicalWizardry.api.alchemy.energy.ReagentStack; -import WayofTime.alchemicalWizardry.api.items.interfaces.IBloodOrb; -import WayofTime.alchemicalWizardry.api.soulNetwork.SoulNetworkHandler; -import WayofTime.alchemicalWizardry.common.spell.complex.effect.SpellHelper; - -public class TEAlchemicCalcinator extends TEReagentConduit implements IInventory -{ - protected ItemStack[] inv; - protected ReagentContainer bufferTank = new ReagentContainer(Reagent.REAGENT_SIZE * 2); - - protected int bufferTransferRate = 20; - - private int lpPerTick = 10; - private int ticksPerReagent = 200; - - public int progress; - - public TEAlchemicCalcinator() - { - super(1, Reagent.REAGENT_SIZE * 4); - this.inv = new ItemStack[2]; - this.tickRate = 20; - this.maxConnextions = 1; - this.progress = 0; - } - - @Override - public void readFromNBT(NBTTagCompound tag) - { - super.readFromNBT(tag); - bufferTransferRate = tag.getInteger("bufferTransferRate"); - progress = tag.getInteger("progress"); - - NBTTagCompound bufferTankTag = tag.getCompoundTag("bufferTank"); - - this.bufferTank = ReagentContainer.readFromNBT(bufferTankTag); - - NBTTagList tagList = tag.getTagList("Inventory",Constants.NBT.TAG_COMPOUND); - - for (int i = 0; i < tagList.tagCount(); i++) - { - NBTTagCompound savedTag = (NBTTagCompound) tagList.getCompoundTagAt(i); - - if(savedTag.getBoolean("Empty")) - { - inv[i] = null; - }else - { - inv[i] = ItemStack.loadItemStackFromNBT(savedTag); - } - } - } - - @Override - public void writeToNBT(NBTTagCompound tag) - { - super.writeToNBT(tag); - tag.setInteger("bufferTransferRate", bufferTransferRate); - tag.setInteger("progress", progress); - - NBTTagCompound bufferTankTag = new NBTTagCompound(); - - this.bufferTank.writeToNBT(bufferTankTag); - - tag.setTag("bufferTank", bufferTankTag); - - NBTTagList itemList = new NBTTagList(); - - for (int i = 0; i < inv.length; i++) - { - ItemStack stack = inv[i]; - NBTTagCompound savedTag = new NBTTagCompound(); - - if (inv[i] != null) - { - inv[i].writeToNBT(savedTag); - }else - { - savedTag.setBoolean("Empty", true); - } - - itemList.appendTag(savedTag); - } - - tag.setTag("Inventory", itemList); - } - - @Override - public void updateEntity() - { - super.updateEntity(); - - if(!worldObj.isRemote) - { - moveBufferToMain(); - tickProgress(); - } - } - - public void moveBufferToMain() - { - ReagentStack amountStack = this.bufferTank.drain(bufferTransferRate, false); - int drainAmount = this.fill(ForgeDirection.UNKNOWN, amountStack, false); - - if(drainAmount > 0) - { - ReagentStack drainedStack = this.bufferTank.drain(drainAmount, true); - this.fill(ForgeDirection.UNKNOWN, drainedStack, true); - } - } - - public void tickProgress() - { - ItemStack reagentItemStack = this.getStackInSlot(1); - if(reagentItemStack == null) - { - progress = 0; - return; - } - - ReagentStack possibleReagent = ReagentRegistry.getReagentStackForItem(reagentItemStack); - if(possibleReagent == null || !this.canReagentFitBuffer(possibleReagent)) - { - return; - } - - ItemStack orbStack = this.getStackInSlot(0); - if(orbStack == null || !(orbStack.getItem() instanceof IBloodOrb)) - { - return; - } - - if(!SoulNetworkHandler.canSyphonFromOnlyNetwork(orbStack, lpPerTick)) - { - SoulNetworkHandler.causeNauseaToPlayer(orbStack); - return; - } - - SoulNetworkHandler.syphonFromNetwork(orbStack, lpPerTick); - progress++; - - if (worldObj.getWorldTime() % 4 == 0) - { - SpellHelper.sendIndexedParticleToAllAround(worldObj, xCoord, yCoord, zCoord, 20, worldObj.provider.dimensionId, 1, xCoord, yCoord, zCoord); - } - - if(progress >= this.ticksPerReagent) - { - progress = 0; - this.bufferTank.fill(possibleReagent, true); - this.decrStackSize(1, 1); - } - } - - public boolean canReagentFitBuffer(ReagentStack stack) - { - int amount = this.bufferTank.fill(stack, false); - - return amount >= stack.amount; - } - - @Override - public void readClientNBT(NBTTagCompound tag) - { - super.readClientNBT(tag); - - NBTTagList tagList = tag.getTagList("reagentTanks", Constants.NBT.TAG_COMPOUND); - - int size = tagList.tagCount(); - this.tanks = new ReagentContainer[size]; - - for(int i=0; i getInventoryStackLimit()) - { - stack.stackSize = getInventoryStackLimit(); - } - - worldObj.markBlockForUpdate(xCoord, yCoord, zCoord); - } - - @Override - public ItemStack decrStackSize(int slot, int amt) - { - ItemStack stack = getStackInSlot(slot); - - if (stack != null) - { - if (stack.stackSize <= amt) - { - setInventorySlotContents(slot, null); - } else - { - stack = stack.splitStack(amt); - - if (stack.stackSize == 0) - { - setInventorySlotContents(slot, null); - } - } - } - - return stack; - } - - @Override - public ItemStack getStackInSlotOnClosing(int slot) - { - ItemStack stack = getStackInSlot(slot); - - if (stack != null) - { - setInventorySlotContents(slot, null); - } - - return stack; - } - - @Override - public int getInventoryStackLimit() - { - return 64; - } - - @Override - public boolean isUseableByPlayer(EntityPlayer player) - { - return worldObj.getTileEntity(xCoord, yCoord, zCoord) == this && player.getDistanceSq(xCoord + 0.5, yCoord + 0.5, zCoord + 0.5) < 64; - } - - @Override - public void openInventory() - { - } - - @Override - public void closeInventory() - { - } - - @Override - public String getInventoryName() - { - return "AlchemicCalcinator"; - } - - @Override - public boolean hasCustomInventoryName() - { - return false; - } - - @Override - public boolean isItemValidForSlot(int slot, ItemStack itemStack) - { - return true; - } - - @Override - public int fill(ForgeDirection from, ReagentStack resource, boolean doFill) - { - if(doFill && !worldObj.isRemote) - { - worldObj.markBlockForUpdate(xCoord, yCoord, zCoord); - } - - return super.fill(from, resource, doFill); - } -} diff --git a/src-backup/main/java/WayofTime/alchemicalWizardry/common/tileEntity/TEAltar.java b/src-backup/main/java/WayofTime/alchemicalWizardry/common/tileEntity/TEAltar.java deleted file mode 100644 index 5ef267a6..00000000 --- a/src-backup/main/java/WayofTime/alchemicalWizardry/common/tileEntity/TEAltar.java +++ /dev/null @@ -1,1179 +0,0 @@ -package WayofTime.alchemicalWizardry.common.tileEntity; - -import java.util.List; - -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.nbt.NBTTagCompound; -import net.minecraft.nbt.NBTTagList; -import net.minecraft.network.Packet; -import net.minecraft.potion.Potion; -import net.minecraft.potion.PotionEffect; -import net.minecraft.server.MinecraftServer; -import net.minecraft.tileentity.TileEntity; -import net.minecraft.util.ChatComponentText; -import net.minecraft.world.World; -import net.minecraftforge.common.util.Constants; -import net.minecraftforge.common.util.ForgeDirection; -import net.minecraftforge.fluids.Fluid; -import net.minecraftforge.fluids.FluidContainerRegistry; -import net.minecraftforge.fluids.FluidEvent; -import net.minecraftforge.fluids.FluidStack; -import net.minecraftforge.fluids.FluidTank; -import net.minecraftforge.fluids.FluidTankInfo; -import net.minecraftforge.fluids.IFluidHandler; -import net.minecraftforge.fluids.IFluidTank; -import WayofTime.alchemicalWizardry.AlchemicalWizardry; -import WayofTime.alchemicalWizardry.api.altarRecipeRegistry.AltarRecipe; -import WayofTime.alchemicalWizardry.api.altarRecipeRegistry.AltarRecipeRegistry; -import WayofTime.alchemicalWizardry.api.items.interfaces.IBloodOrb; -import WayofTime.alchemicalWizardry.api.soulNetwork.LifeEssenceNetwork; -import WayofTime.alchemicalWizardry.api.tile.IBloodAltar; -import WayofTime.alchemicalWizardry.common.NewPacketHandler; -import WayofTime.alchemicalWizardry.common.bloodAltarUpgrade.AltarUpgradeComponent; -import WayofTime.alchemicalWizardry.common.bloodAltarUpgrade.UpgradedAltars; -import WayofTime.alchemicalWizardry.common.spell.complex.effect.SpellHelper; - -public class TEAltar extends TileEntity implements IInventory, IFluidTank, IFluidHandler, IBloodAltar -{ - public static final int sizeInv = 1; - private ItemStack[] inv; - private int resultID; - private int resultDamage; - private int upgradeLevel; - //public final LiquidTank tank = new LiquidTank(LiquidContainerRegistry.BUCKET_VOLUME * 10); - protected FluidStack fluid; - public int capacity; - private boolean isActive; - private int liquidRequired; //mB - private boolean canBeFilled; - private int consumptionRate; - private int drainRate; - private float consumptionMultiplier; - private float efficiencyMultiplier; - private float sacrificeEfficiencyMultiplier; - private float selfSacrificeEfficiencyMultiplier; - private float capacityMultiplier; - private float orbCapacityMultiplier; - private float dislocationMultiplier; - private boolean isUpgraded; - private boolean isResultBlock; - private int bufferCapacity; - protected FluidStack fluidOutput; - protected FluidStack fluidInput; - private int progress; - private int hasChanged = 0; - - private int lockdownDuration; - - public TEAltar() - { - this.inv = new ItemStack[1]; - resultID = 0; - resultDamage = 0; - this.capacity = FluidContainerRegistry.BUCKET_VOLUME * 10; - fluid = new FluidStack(AlchemicalWizardry.lifeEssenceFluid, 0); - fluidOutput = new FluidStack(AlchemicalWizardry.lifeEssenceFluid, 0); - fluidInput = new FluidStack(AlchemicalWizardry.lifeEssenceFluid, 0); - bufferCapacity = FluidContainerRegistry.BUCKET_VOLUME; - isActive = false; - consumptionRate = 0; - drainRate = 0; - consumptionMultiplier = 0; - efficiencyMultiplier = 0; - capacityMultiplier = 1; - isUpgraded = false; - upgradeLevel = 0; - isResultBlock = false; - progress = 0; - this.lockdownDuration = 0; - } - - public int getRSPowerOutput() - { - return 5; - } - - @Override - public void readFromNBT(NBTTagCompound par1NBTTagCompound) - { - super.readFromNBT(par1NBTTagCompound); - NBTTagList tagList = par1NBTTagCompound.getTagList("Inventory",Constants.NBT.TAG_COMPOUND); - - for (int i = 0; i < tagList.tagCount(); i++) - { - NBTTagCompound tag = (NBTTagCompound) tagList.getCompoundTagAt(i); - int slot = tag.getByte("Slot"); - - if (slot >= 0 && slot < inv.length) - { - inv[slot] = ItemStack.loadItemStackFromNBT(tag); - } - } - - resultID = par1NBTTagCompound.getInteger("resultID"); - resultDamage = par1NBTTagCompound.getInteger("resultDamage"); - - if (!par1NBTTagCompound.hasKey("Empty")) - { - FluidStack fluid = this.fluid.loadFluidStackFromNBT(par1NBTTagCompound); - - if (fluid != null) - { - setMainFluid(fluid); - } - - FluidStack fluidOut = new FluidStack(AlchemicalWizardry.lifeEssenceFluid, par1NBTTagCompound.getInteger("outputAmount")); - - if (fluidOut != null) - { - setOutputFluid(fluidOut); - } - - FluidStack fluidIn = new FluidStack(AlchemicalWizardry.lifeEssenceFluid, par1NBTTagCompound.getInteger("inputAmount")); - - if (fluidIn != null) - { - setInputFluid(fluidIn); - } - } - - upgradeLevel = par1NBTTagCompound.getInteger("upgradeLevel"); - isActive = par1NBTTagCompound.getBoolean("isActive"); - liquidRequired = par1NBTTagCompound.getInteger("liquidRequired"); - canBeFilled = par1NBTTagCompound.getBoolean("canBeFilled"); - isUpgraded = par1NBTTagCompound.getBoolean("isUpgraded"); - consumptionRate = par1NBTTagCompound.getInteger("consumptionRate"); - drainRate = par1NBTTagCompound.getInteger("drainRate"); - consumptionMultiplier = par1NBTTagCompound.getFloat("consumptionMultiplier"); - efficiencyMultiplier = par1NBTTagCompound.getFloat("efficiencyMultiplier"); - selfSacrificeEfficiencyMultiplier = par1NBTTagCompound.getFloat("selfSacrificeEfficiencyMultiplier"); - sacrificeEfficiencyMultiplier = par1NBTTagCompound.getFloat("sacrificeEfficiencyMultiplier"); - capacityMultiplier = par1NBTTagCompound.getFloat("capacityMultiplier"); - orbCapacityMultiplier = par1NBTTagCompound.getFloat("orbCapacityMultiplier"); - dislocationMultiplier = par1NBTTagCompound.getFloat("dislocationMultiplier"); - capacity = par1NBTTagCompound.getInteger("capacity"); - bufferCapacity = par1NBTTagCompound.getInteger("bufferCapacity"); - progress = par1NBTTagCompound.getInteger("progress"); - isResultBlock = par1NBTTagCompound.getBoolean("isResultBlock"); - lockdownDuration = par1NBTTagCompound.getInteger("lockdownDuration"); - } - - public void setMainFluid(FluidStack fluid) - { - this.fluid = fluid; - } - - public void setOutputFluid(FluidStack fluid) - { - this.fluidOutput = fluid; - } - - public void setInputFluid(FluidStack fluid) - { - this.fluidInput = fluid; - } - - @Override - public void writeToNBT(NBTTagCompound par1NBTTagCompound) - { - super.writeToNBT(par1NBTTagCompound); - NBTTagList itemList = new NBTTagList(); - - for (int i = 0; i < inv.length; i++) - { - ItemStack stack = inv[i]; - - if (inv[i] != null) - { - NBTTagCompound tag = new NBTTagCompound(); - tag.setByte("Slot", (byte) i); - inv[i].writeToNBT(tag); - itemList.appendTag(tag); - } - } - - par1NBTTagCompound.setInteger("resultID", resultID); - par1NBTTagCompound.setInteger("resultDamage", resultDamage); - par1NBTTagCompound.setTag("Inventory", itemList); - - if (fluid != null) - { - fluid.writeToNBT(par1NBTTagCompound); - } else - { - par1NBTTagCompound.setString("Empty", ""); - } - - if (fluidOutput != null) - { - par1NBTTagCompound.setInteger("outputAmount", fluidOutput.amount); - } - - if (fluidInput != null) - { - par1NBTTagCompound.setInteger("inputAmount", fluidInput.amount); - } - - par1NBTTagCompound.setInteger("upgradeLevel", upgradeLevel); - par1NBTTagCompound.setBoolean("isActive", isActive); - par1NBTTagCompound.setInteger("liquidRequired", liquidRequired); - par1NBTTagCompound.setBoolean("canBeFilled", canBeFilled); - par1NBTTagCompound.setBoolean("isUpgraded", isUpgraded); - par1NBTTagCompound.setInteger("consumptionRate", consumptionRate); - par1NBTTagCompound.setInteger("drainRate", drainRate); - par1NBTTagCompound.setFloat("consumptionMultiplier", consumptionMultiplier); - par1NBTTagCompound.setFloat("efficiencyMultiplier", efficiencyMultiplier); - par1NBTTagCompound.setFloat("sacrificeEfficiencyMultiplier", sacrificeEfficiencyMultiplier); - par1NBTTagCompound.setFloat("selfSacrificeEfficiencyMultiplier", selfSacrificeEfficiencyMultiplier); - par1NBTTagCompound.setBoolean("isResultBlock", isResultBlock); - par1NBTTagCompound.setFloat("capacityMultiplier", capacityMultiplier); - par1NBTTagCompound.setFloat("orbCapacityMultiplier", orbCapacityMultiplier); - par1NBTTagCompound.setFloat("dislocationMultiplier", dislocationMultiplier); - par1NBTTagCompound.setInteger("capacity", capacity); - par1NBTTagCompound.setInteger("progress", progress); - par1NBTTagCompound.setInteger("bufferCapacity", bufferCapacity); - par1NBTTagCompound.setInteger("lockdownDuration", lockdownDuration); - } - - @Override - public int getSizeInventory() - { - return inv.length; - } - - @Override - public ItemStack getStackInSlot(int slot) - { - return inv[slot]; - } - - @Override - public ItemStack decrStackSize(int slot, int amt) - { - ItemStack stack = getStackInSlot(slot); - - if (stack != null) - { - if (stack.stackSize <= amt) - { - setInventorySlotContents(slot, null); - } else - { - stack = stack.splitStack(amt); - - if (stack.stackSize == 0) - { - setInventorySlotContents(slot, null); - } - } - } - - return stack; - } - - @Override - public ItemStack getStackInSlotOnClosing(int slot) - { - ItemStack stack = getStackInSlot(slot); - - if (stack != null) - { - setInventorySlotContents(slot, null); - } - - return stack; - } - - @Override - public void setInventorySlotContents(int slot, ItemStack itemStack) - { - inv[slot] = itemStack; - this.worldObj.markBlockForUpdate(xCoord, yCoord, zCoord); - - if (itemStack != null && itemStack.stackSize > getInventoryStackLimit()) - { - itemStack.stackSize = getInventoryStackLimit(); - } - } - - @Override - public String getInventoryName() - { - return "TEAltar"; - } - - @Override - public boolean hasCustomInventoryName() - { - return false; - } - - @Override - public int getInventoryStackLimit() - { - return 64; - } - - @Override - public boolean isUseableByPlayer(EntityPlayer entityPlayer) - { - return worldObj.getTileEntity(xCoord, yCoord, zCoord) == this && entityPlayer.getDistanceSq(xCoord + 0.5, yCoord + 0.5, zCoord + 0.5) < 64; - } - - @Override - public void openInventory() - { - // TODO Auto-generated method stub - } - - @Override - public void closeInventory() - { - // TODO Auto-generated method stub - } - - //IFluidTank methods - @Override - public FluidStack getFluid() - { - return fluid; - } - - public FluidStack getInputFluid() - { - return fluidInput; - } - - public FluidStack getOutputFluid() - { - return fluidOutput; - } - - @Override - public int getFluidAmount() - { - if (fluid == null) - { - return 0; - } - - return fluid.amount; - } - - @Override - public int getCapacity() - { - return capacity; - } - - @Override - public int getCurrentBlood() - { - return getFluidAmount(); - } - - @Override - public int getTier() - { - return upgradeLevel; - } - - @Override - public int getProgress() - { - return progress; - } - - @Override - public float getSacrificeMultiplier() - { - return sacrificeEfficiencyMultiplier; - } - - @Override - public float getSelfSacrificeMultiplier() - { - return selfSacrificeEfficiencyMultiplier; - } - - @Override - public float getOrbMultiplier() - { - return orbCapacityMultiplier; - } - - @Override - public float getDislocationMultiplier() - { - return dislocationMultiplier; - } - - @Override - public int getBufferCapacity() - { - return bufferCapacity; - } - - @Override - public FluidTankInfo getInfo() - { - return new FluidTankInfo(this); - } - - @Override - public int fill(FluidStack resource, boolean doFill) - { - TileEntity tile = this; - - if (resource == null) - { - return 0; - } - - if (resource.fluidID != (new FluidStack(AlchemicalWizardry.lifeEssenceFluid, 1)).fluidID) - { - return 0; - } - - if (!doFill) - { - if (fluidInput == null) - { - return Math.min(bufferCapacity, resource.amount); - } - - if (!fluidInput.isFluidEqual(resource)) - { - return 0; - } - - return Math.min(bufferCapacity - fluidInput.amount, resource.amount); - } - - if (fluidInput == null) - { - fluidInput = new FluidStack(resource, Math.min(bufferCapacity, resource.amount)); - - //The tile is never null, so we dont need this - if (tile != null) - { - FluidEvent.fireEvent(new FluidEvent.FluidFillingEvent(fluidInput, tile.getWorldObj(), tile.xCoord, tile.yCoord, tile.zCoord, this)); - } - - return fluidInput.amount; - } - - if (!fluidInput.isFluidEqual(resource)) - { - return 0; - } - - int filled = bufferCapacity - fluidInput.amount; - - if (resource.amount < filled) - { - fluidInput.amount += resource.amount; - filled = resource.amount; - } else - { - fluidInput.amount = bufferCapacity; - } - - //Never null, so not needed :P - if (tile != null) - { - FluidEvent.fireEvent(new FluidEvent.FluidFillingEvent(fluidInput, tile.getWorldObj(), tile.xCoord, tile.yCoord, tile.zCoord, this)); - } - - return filled; - } - - @Override - public FluidStack drain(int maxDrain, boolean doDrain) - { - if (fluidOutput == null) - { - return null; - } - - int drained = maxDrain; - - if (fluidOutput.amount < drained) - { - drained = fluidOutput.amount; - } - - FluidStack stack = new FluidStack(fluidOutput, drained); - - if (doDrain) - { - fluidOutput.amount -= drained; - - if (fluidOutput.amount <= 0) - { - fluidOutput = null; - } - - //This is never null, so its un needed :D - if (this != null) - { - FluidEvent.fireEvent(new FluidEvent.FluidDrainingEvent(fluidOutput, this.worldObj, this.xCoord, this.yCoord, this.zCoord, this)); - } - } - - if (fluidOutput == null) - { - fluidOutput = new FluidStack(AlchemicalWizardry.lifeEssenceFluid, 0); - } - - if (worldObj != null) - { - worldObj.markBlockForUpdate(xCoord, yCoord, zCoord); - } - - return stack; - } - - //Logic for the actual block is under here - @Override - public void updateEntity() - { - //this.capacity=(int) (10000*this.capacityMultiplier); - if(this.lockdownDuration > 0) - { - this.lockdownDuration --; - } - - if (!worldObj.isRemote && worldObj.getWorldTime() % 20 == 0) - { - //TODO - { - Block block = worldObj.getBlock(xCoord+1, yCoord, zCoord); - block.onNeighborBlockChange(worldObj, xCoord+1, yCoord, zCoord, block); - block = worldObj.getBlock(xCoord-1, yCoord, zCoord); - block.onNeighborBlockChange(worldObj, xCoord-1, yCoord, zCoord, block); - block = worldObj.getBlock(xCoord, yCoord+1, zCoord); - block.onNeighborBlockChange(worldObj, xCoord, yCoord+1, zCoord, block); - block = worldObj.getBlock(xCoord, yCoord-1, zCoord); - block.onNeighborBlockChange(worldObj, xCoord, yCoord-1, zCoord, block); - block = worldObj.getBlock(xCoord, yCoord, zCoord+1); - block.onNeighborBlockChange(worldObj, xCoord, yCoord, zCoord+1, block); - block = worldObj.getBlock(xCoord, yCoord, zCoord-1); - block.onNeighborBlockChange(worldObj, xCoord, yCoord, zCoord-1, block); - } - - int syphonMax = (int) (20 * this.dislocationMultiplier); - int fluidInputted = 0; - int fluidOutputted = 0; - fluidInputted = Math.min(syphonMax, -this.fluid.amount + capacity); - fluidInputted = Math.min(this.fluidInput.amount, fluidInputted); - this.fluid.amount += fluidInputted; - this.fluidInput.amount -= fluidInputted; - fluidOutputted = Math.min(syphonMax, this.bufferCapacity - this.fluidOutput.amount); - fluidOutputted = Math.min(this.fluid.amount, fluidOutputted); - this.fluidOutput.amount += fluidOutputted; - this.fluid.amount -= fluidOutputted; - - if(AlchemicalWizardry.lockdownAltar) - { - List list = SpellHelper.getPlayersInRange(worldObj, xCoord+0.5, yCoord+0.5, zCoord+0.5, 15, 15); - boolean hasHighRegen = false; - for(EntityPlayer player : list) - { - PotionEffect regenEffect = player.getActivePotionEffect(Potion.regeneration); - if(regenEffect != null && regenEffect.getAmplifier() >= 2) - { - this.lockdownDuration += 20; - } - } - } - - if(AlchemicalWizardry.causeHungerWithRegen) - { - List list = SpellHelper.getPlayersInRange(worldObj, xCoord+0.5, yCoord+0.5, zCoord+0.5, 15, 15); - for(EntityPlayer player : list) - { - PotionEffect regenEffect = player.getActivePotionEffect(Potion.regeneration); - if(regenEffect != null && regenEffect.getAmplifier() > 0) - { - player.addPotionEffect(new PotionEffect(Potion.hunger.id, 40, regenEffect.getAmplifier()*2 - 2)); - } - } - } - } - - if (worldObj.getWorldTime() % 100 == 0) - { - startCycle(); - } - - if (!isActive) - { - return; - } - - if (getStackInSlot(0) == null) - { - return; - } - - int worldTime = (int) (worldObj.getWorldTime() % 24000); - - if (worldObj.isRemote) - { - return; - } -// -// int range = 5; -// -// for(int i=-range; i<=range; i++) -// { -// for(int j=-range; j<=range; j++) -// { -// for(int k=-range; k<=range; k++) -// { -// Block block = worldObj.getBlock(xCoord + i, yCoord + j, zCoord + k); -// int meta = worldObj.getBlockMetadata(xCoord + i, yCoord + j, zCoord + k); -// -// List list = block.getDrops(worldObj, xCoord + i, yCoord + j, zCoord + k, meta, 1); -// for(ItemStack stack : list) -// { -// String str = stack.getUnlocalizedName(); -// if(str.contains("fallenKanade")) -// { -// System.out.println("" + str); -// } -// } -// } -// } -// } - - //o,o this is always true - if (worldTime % 1 == 0) - { - if (!canBeFilled) - { - if (fluid != null && fluid.amount >= 1) - { - int stackSize = getStackInSlot(0).stackSize; - int liquidDrained = Math.min((int) (upgradeLevel >= 2 ? consumptionRate * (1 + consumptionMultiplier) : consumptionRate), fluid.amount); - - if (liquidDrained > (liquidRequired * stackSize - progress)) - { - liquidDrained = liquidRequired * stackSize - progress; - } - - fluid.amount = fluid.amount - liquidDrained; - progress += liquidDrained; - - //getStackInSlot(0).setItemDamage(getStackInSlot(0).getItemDamage() + liquidDrained); - - if (worldTime % 4 == 0) - { - SpellHelper.sendIndexedParticleToAllAround(worldObj, xCoord, yCoord, zCoord, 20, worldObj.provider.dimensionId, 1, xCoord, yCoord, zCoord); - } - - if (progress >= liquidRequired * stackSize) - { - ItemStack result = null; - result = AltarRecipeRegistry.getItemForItemAndTier(this.getStackInSlot(0), this.upgradeLevel); - if(result!=null) - { - result.stackSize*=stackSize; - } - -// if (!isResultBlock) -// { -// result = new ItemStack(resultID, stackSize, resultDamage); -// } else -// { -// result = new ItemStack(Block.blocksList[resultID], stackSize, 0); -// } - - setInventorySlotContents(0, result); - progress = 0; - - for (int i = 0; i < 8; i++) - { - SpellHelper.sendIndexedParticleToAllAround(worldObj, xCoord, yCoord, zCoord, 20, worldObj.provider.dimensionId, 4, xCoord+0.5f, yCoord+1.0f, zCoord+0.5f); - } - - //setInventorySlotContents(1, null); - this.isActive = false; - } - } else if (progress > 0) - { - progress -= (int) (efficiencyMultiplier * drainRate); - - if (worldTime % 2 == 0) - { - SpellHelper.sendIndexedParticleToAllAround(worldObj, xCoord, yCoord, zCoord, 20, worldObj.provider.dimensionId, 2, xCoord, yCoord, zCoord); - } - } - } else - { - ItemStack returnedItem = getStackInSlot(0); - - if (!(returnedItem.getItem() instanceof IBloodOrb)) - { - return; - } - - IBloodOrb item = (IBloodOrb) (returnedItem.getItem()); - NBTTagCompound itemTag = returnedItem.stackTagCompound; - - if (itemTag == null) - { - return; - } - - String ownerName = itemTag.getString("ownerName"); - - if (ownerName.equals("")) - { - return; - } - - //EntityPlayer owner = MinecraftServer.getServer().getConfigurationManager().getPlayerForUsername(itemTag.getString("ownerName")); - World world = MinecraftServer.getServer().worldServers[0]; - LifeEssenceNetwork data = (LifeEssenceNetwork) world.loadItemData(LifeEssenceNetwork.class, ownerName); - - if (data == null) - { - data = new LifeEssenceNetwork(ownerName); - world.setItemData(ownerName, data); - } - - int currentEssence = data.currentEssence; -// if(owner==null){return;} -// NBTTagCompound playerTag = owner.getEntityData(); -// if(playerTag==null){return;} - //int currentEssence=playerTag.getInteger("currentEssence"); - - if (fluid != null && fluid.amount >= 1) - { - int liquidDrained = Math.min((int) (upgradeLevel >= 2 ? consumptionRate * (1 + consumptionMultiplier) : consumptionRate), fluid.amount); - - if (liquidDrained > (item.getMaxEssence() * this.orbCapacityMultiplier - currentEssence)) - { - liquidDrained = (int) (item.getMaxEssence() * this.orbCapacityMultiplier - currentEssence); - } - - if (liquidDrained <= 0) - { - return; - } - - fluid.amount = fluid.amount - liquidDrained; -// int maxAmount = (int) Math.min(item.getMaxEssence() - consumptionRate * (1 + consumptionMultiplier), consumptionRate * (1 + consumptionMultiplier)); -// fluid.amount -= maxAmount; - data.currentEssence = liquidDrained + data.currentEssence; - data.markDirty(); -// playerTag.setInteger("currentEssence", currentEssence+maxAmount); - - if (worldTime % 4 == 0) - { - //PacketDispatcher.sendPacketToAllAround(xCoord, yCoord, zCoord, 20, worldObj.provider.dimensionId, getParticlePacket(xCoord, yCoord, zCoord, (short) 3)); - SpellHelper.sendIndexedParticleToAllAround(world, xCoord, yCoord, zCoord, 20, worldObj.provider.dimensionId, 3, xCoord, yCoord, zCoord); - } - } - } - - if (worldObj != null) - { - worldObj.markBlockForUpdate(xCoord, yCoord, zCoord); - } - - //AlchemicalWizardry.proxy.getClientWorld().markBlockForUpdate(xCoord, yCoord, zCoord); - //PacketDispatcher.sendPacketToAllAround(xCoord, yCoord, zCoord, 10, 1, getDescriptionPacket()); - /* - progress++; - - if(progress>=liquidRequired) - { - setActive(); - setInventorySlotContents(0, new ItemStack(AlchemicalWizardry.weakBloodOrb)); - } - */ - } - } - - public void setActive() - { - isActive = false; - } - - public boolean isActive() - { - return isActive; - } - - public void sacrificialDaggerCall(int amount, boolean isSacrifice) - { - if(!isSacrifice && this.lockdownDuration > 0) - { - int amt = (int) Math.min(bufferCapacity - fluidInput.amount, (isSacrifice ? 1 + sacrificeEfficiencyMultiplier : 1 + selfSacrificeEfficiencyMultiplier) * amount); - fluidInput.amount += amt; - }else - { - fluid.amount += Math.min(capacity - fluid.amount, (isSacrifice ? 1 + sacrificeEfficiencyMultiplier : 1 + selfSacrificeEfficiencyMultiplier) * amount); - } - } - - @Override - public Packet getDescriptionPacket() - { - return NewPacketHandler.getPacket(this); - } - - public void handlePacketData(int[] intData, int[] fluidData, int capacity) - { - if (intData == null) - { - return; - } - - if (intData.length == 3) - { - for (int i = 0; i < 1; i++) - { - if (intData[i * 3 + 2] != 0) - { - ItemStack is = new ItemStack(Item.getItemById(intData[i * 3]), intData[i * 3 + 2], intData[i * 3 + 1]); - inv[i] = is; - } else - { - inv[i] = null; - } - } - } - - FluidStack flMain = new FluidStack(fluidData[0],fluidData[1]); - FluidStack flIn = new FluidStack(fluidData[2],fluidData[3]); - FluidStack flOut = new FluidStack(fluidData[4],fluidData[5]); - - this.setMainFluid(flMain); - this.setInputFluid(flIn); - this.setOutputFluid(flOut); - - this.capacity = capacity; - } - - public int[] buildIntDataList() - { - int[] sortList = new int[1 * 3]; - int pos = 0; - - for (ItemStack is : inv) - { - if (is != null) - { - sortList[pos++] = Item.getIdFromItem(is.getItem()); - sortList[pos++] = is.getItemDamage(); - sortList[pos++] = is.stackSize; - } else - { - sortList[pos++] = 0; - sortList[pos++] = 0; - sortList[pos++] = 0; - } - } - - return sortList; - } - - public void startCycle() - { - if (worldObj != null) - { - worldObj.markBlockForUpdate(xCoord, yCoord, zCoord); - } - - this.checkAndSetAltar(); - - if (fluid == null || fluid.amount <= 0) - { - return; - } - - if (getStackInSlot(0) == null) - { - return; - } - - if (!isActive) - { - progress = 0; - } - - if(AltarRecipeRegistry.isRequiredItemValid(getStackInSlot(0), upgradeLevel)) - { - AltarRecipe recipe = AltarRecipeRegistry.getAltarRecipeForItemAndTier(getStackInSlot(0), upgradeLevel); - this.isActive = true; - this.liquidRequired = recipe.getLiquidRequired(); - this.canBeFilled = recipe.getCanBeFilled(); - this.consumptionRate = recipe.getConsumptionRate(); - this.drainRate = recipe.drainRate; - return; - } - - isActive = false; - } - - public void checkAndSetAltar() - { - boolean checkUpgrade = true; - int upgradeState = UpgradedAltars.isAltarValid(worldObj, xCoord, yCoord, zCoord); - - if (upgradeState <= 1) - { - upgradeLevel = 1; - isUpgraded = false; - this.consumptionMultiplier = 0; - this.efficiencyMultiplier = 1; - this.sacrificeEfficiencyMultiplier = 0; - this.selfSacrificeEfficiencyMultiplier = 0; - this.capacityMultiplier = 1; - this.orbCapacityMultiplier = 1; - this.dislocationMultiplier = 1; - return; - } - - AltarUpgradeComponent upgrades = UpgradedAltars.getUpgrades(worldObj, xCoord, yCoord, zCoord, upgradeState); - - if (upgrades == null) - { - upgradeLevel = 1; - isUpgraded = false; - this.consumptionMultiplier = 0; - this.efficiencyMultiplier = 1; - this.sacrificeEfficiencyMultiplier = 0; - this.selfSacrificeEfficiencyMultiplier = 0; - this.capacityMultiplier = 1; - this.orbCapacityMultiplier = 1; - this.dislocationMultiplier = 1; - this.upgradeLevel = upgradeState; - return; - } - - this.isUpgraded = checkUpgrade; - this.upgradeLevel = upgradeState; - this.consumptionMultiplier = (float) (0.20 * upgrades.getSpeedUpgrades()); - this.efficiencyMultiplier = (float) Math.pow(0.85, upgrades.getSpeedUpgrades()); - this.sacrificeEfficiencyMultiplier = (float) (0.10 * upgrades.getSacrificeUpgrades()); - this.selfSacrificeEfficiencyMultiplier = (float) (0.10 * upgrades.getSelfSacrificeUpgrades()); - this.capacityMultiplier = (float) ((1*Math.pow(1.10,upgrades.getBetterCapacitiveUpgrades()) + 0.20 * upgrades.getAltarCapacitiveUpgrades())); - //TODO finalize values - this.dislocationMultiplier = (float) (Math.pow(1.2, upgrades.getDisplacementUpgrades())); - this.orbCapacityMultiplier = (float) (1 + 0.02 * upgrades.getOrbCapacitiveUpgrades()); - this.capacity = (int) (FluidContainerRegistry.BUCKET_VOLUME * 10 * capacityMultiplier); - this.bufferCapacity = (int) (FluidContainerRegistry.BUCKET_VOLUME * 1 * capacityMultiplier); - - if (this.fluid.amount > this.capacity) - { - this.fluid.amount = this.capacity; - } - - if (this.fluidOutput.amount > this.bufferCapacity) - { - this.fluidOutput.amount = this.bufferCapacity; - } - - if (this.fluidInput.amount > this.bufferCapacity) - { - this.fluidInput.amount = this.bufferCapacity; - } - - worldObj.markBlockForUpdate(xCoord, yCoord, zCoord); -// for (int x = -1; x <= 1; x++) -// { -// for (int z = -1; z <= 1; z++) -// { -// if (!(x == 0 && z == 0)) -// { -// Block block = Block.blocksList[worldObj.getBlockId(xCoord + x, yCoord - 1, zCoord + z)]; -// -// if (!(block instanceof BloodRune)) -// { -// checkUpgrade = false; -// this.isUpgraded = false; -// return; -// } -// -// if ((z == 0 && (x == -1 || x == 1)) || (x == 0 && (z == -1 || z == 1))) -// { -// switch (((BloodRune)block).getRuneEffect()) -// { -// case 1: -// speedUpgrades++; -// -// case 2: -// efficiencyUpgrades++; -// -// case 3: -// sacrificeUpgrades++; -// -// case 4: -// selfSacrificeUpgrades++; -// } -// } -// } -// } -// } -// this.isUpgraded = checkUpgrade; -// this.consumptionMultiplier = (float)(0.20 * speedUpgrades); -// this.efficiencyMultiplier = (float)Math.pow(0.80, efficiencyUpgrades); -// this.sacrificeEfficiencyMultiplier = (float)(0.10 * sacrificeUpgrades); -// this.selfSacrificeEfficiencyMultiplier = (float)(0.10 * sacrificeUpgrades); - } - - @Override - public boolean isItemValidForSlot(int slot, ItemStack itemstack) - { - return slot == 0; - } - - @Override - public int fill(ForgeDirection from, FluidStack resource, boolean doFill) - { - //TODO - if (resource == null) - { - return 0; - } - - resource = resource.copy(); - int totalUsed = 0; - //TileTank tankToFill = getBottomTank(); - int used = this.fill(resource, doFill); - resource.amount -= used; - totalUsed += used; - //FluidStack liquid = tankToFill.tank.getFluid(); -// if (liquid != null && liquid.amount > 0 && !liquid.isFluidEqual(resource)) -// { -// return 0; -// } -// while (tankToFill != null && resource.amount > 0) -// { -// int used = tankToFill.tank.fill(resource, doFill); -// resource.amount -= used; -// if (used > 0) -// { -// tankToFill.hasUpdate = true; -// } -// -// -// totalUsed += used; -// tankToFill = getTankAbove(tankToFill); -// } - this.startCycle(); - return totalUsed; - } - - @Override - public FluidStack drain(ForgeDirection from, FluidStack resource, boolean doDrain) - { - if (resource == null) - { - return null; - } - - if (!resource.isFluidEqual(fluidOutput)) - { - return null; - } - - return drain(from, resource.amount, doDrain); - } - - @Override - public FluidStack drain(ForgeDirection from, int maxEmpty, boolean doDrain) - { - return this.drain(maxEmpty, doDrain); - } - - @Override - public boolean canFill(ForgeDirection from, Fluid fluid) - { - // TODO Auto-generated method stub - //I changed this, since fluidstack != fluid... :p dunno if it was a accident? so you might wanna check this - return this.fluidInput != null && this.fluid.getFluid().equals(fluidInput.getFluid()); - } - - @Override - public boolean canDrain(ForgeDirection from, Fluid fluid) - { - // TODO Auto-generated method stub - return true; - } - - @Override - public FluidTankInfo[] getTankInfo(ForgeDirection from) - { - // TODO Auto-generated method stub - FluidTank compositeTank = new FluidTank(capacity); - compositeTank.setFluid(fluid); - return new FluidTankInfo[]{compositeTank.getInfo()}; - } - - public int[] buildFluidList() - { - int[] sortList = new int[6]; - - if(this.fluid == null) - { - sortList[0] = AlchemicalWizardry.lifeEssenceFluid.getID(); - sortList[1] = 0; - }else - { - sortList[0] = this.fluid.fluidID; - sortList[1] = this.fluid.amount; - } - - if(this.fluidInput == null) - { - sortList[2] = AlchemicalWizardry.lifeEssenceFluid.getID(); - sortList[3] = 0; - }else - { - sortList[2] = this.fluidInput.fluidID; - sortList[3] = this.fluidInput.amount; - } - - if(this.fluidOutput == null) - { - sortList[4] = AlchemicalWizardry.lifeEssenceFluid.getID(); - sortList[5] = 0; - }else - { - sortList[4] = this.fluidOutput.fluidID; - sortList[5] = this.fluidOutput.amount; - } - - return sortList; - } - - public void sendChatInfoToPlayer(EntityPlayer player) - { - player.addChatMessage(new ChatComponentText("Altar's Current Essence: " + this.fluid.amount + "LP")); - player.addChatMessage(new ChatComponentText("Altar's Current Tier: " + UpgradedAltars.isAltarValid(worldObj, xCoord, yCoord, zCoord))); - player.addChatMessage(new ChatComponentText("Capacity: " + this.getCapacity() + "LP")); - } - - public void sendMoreChatInfoToPlayer(EntityPlayer player) - { - if(getStackInSlot(0) != null) - { - int stackSize = getStackInSlot(0).stackSize; - player.addChatMessage(new ChatComponentText("Altar's Progress: " + progress + "LP/" + liquidRequired * stackSize + "LP")); - player.addChatMessage(new ChatComponentText("Consumption rate: " + (int)(consumptionRate * (1+consumptionMultiplier)) + "LP/t")); - } - player.addChatMessage(new ChatComponentText("Altar's Current Essence: " + this.fluid.amount + "LP")); - player.addChatMessage(new ChatComponentText(" Input tank: " + this.fluidInput.amount + "LP")); - player.addChatMessage(new ChatComponentText(" Output tank: " + this.fluidOutput.amount + "LP")); - } -} diff --git a/src-backup/main/java/WayofTime/alchemicalWizardry/common/tileEntity/TEBellJar.java b/src-backup/main/java/WayofTime/alchemicalWizardry/common/tileEntity/TEBellJar.java deleted file mode 100644 index 8db83a89..00000000 --- a/src-backup/main/java/WayofTime/alchemicalWizardry/common/tileEntity/TEBellJar.java +++ /dev/null @@ -1,158 +0,0 @@ -package WayofTime.alchemicalWizardry.common.tileEntity; - -import net.minecraft.block.Block; -import net.minecraft.item.ItemBlock; -import net.minecraft.item.ItemStack; -import net.minecraft.nbt.NBTTagCompound; -import net.minecraft.nbt.NBTTagList; -import net.minecraftforge.common.util.Constants; -import WayofTime.alchemicalWizardry.ModBlocks; -import WayofTime.alchemicalWizardry.api.alchemy.energy.ReagentContainer; -import WayofTime.alchemicalWizardry.api.alchemy.energy.ReagentContainerInfo; -import WayofTime.alchemicalWizardry.api.alchemy.energy.ReagentStack; - -public class TEBellJar extends TEReagentConduit -{ - public TEBellJar() - { - super(1, 16000); - this.maxConnextions = 1; - this.affectedByRedstone = false; - } - - public int getRSPowerOutput() - { - ReagentContainer thisTank = this.tanks[0]; - if(thisTank != null) - { - ReagentStack stack = thisTank.getReagent(); - if(stack != null) - { - return (15*stack.amount/thisTank.getCapacity()); - } - } - return 0; - } - - public static ReagentContainerInfo[] getContainerInfoFromItem(ItemStack stack) - { - if(stack != null && stack.getItem() instanceof ItemBlock && ModBlocks.blockCrystalBelljar == ((ItemBlock)stack.getItem()).field_150939_a) - { - NBTTagCompound tag = stack.getTagCompound(); - if(tag != null) - { - NBTTagList tagList = tag.getTagList("reagentTanks", Constants.NBT.TAG_COMPOUND); - - int size = tagList.tagCount(); - ReagentContainer[] tanks = new ReagentContainer[size]; - - ReagentContainerInfo[] infos = new ReagentContainerInfo[size]; - - for(int i=0; i buildingList = new ArrayList(); - public Random rand = new Random(); - private GridSpace[][] area; - - private int negXRadius; //These variables indicate how much the grid has expanded from the 1x1 - private int posXRadius; //matrix in each direction - private int negZRadius; - private int posZRadius; - - private boolean isInitialized; - - public int houseCooldown; - public int roadCooldown; - public int tier; //Tier of the demon portal - Should select buildings 2 below to this - public int totalPoints; - - public int yLevelDestination; - public boolean hasLocationChanged; - - public TEDemonPortal() - { - super(); - - negXRadius = posXRadius = negZRadius = posZRadius = 1; - - area = new GridSpace[negXRadius + posXRadius + 1][negZRadius + posZRadius + 1]; - for(int xIndex = -negXRadius; xIndex <= posXRadius; xIndex++) - { - for(int zIndex = -negZRadius; zIndex <= posZRadius; zIndex++) - { - if(Math.abs(xIndex) == 1 || Math.abs(zIndex) == 1) - { - this.setGridSpace(xIndex, zIndex, new GridSpace(GridSpace.ROAD,4)); - }else - { - this.setGridSpace(xIndex, zIndex, new GridSpace()); - } - } - } - - isInitialized = false; - - this.setGridSpace(0, 0, new GridSpace(GridSpace.MAIN_PORTAL, yCoord)); - - this.houseCooldown = 0; - this.roadCooldown = 0; - this.tier = 0; - - this.yLevelDestination = 0; - this.hasLocationChanged = false; - } - - public void initialize() - { - if(isInitialized) - { - return; - } - - for(int xIndex = -negXRadius; xIndex <= posXRadius; xIndex++) - { - for(int zIndex = -negZRadius; zIndex <= posZRadius; zIndex++) - { - if(Math.abs(xIndex) == 1 || Math.abs(zIndex) == 1) - { - this.setGridSpace(xIndex, zIndex, new GridSpace(GridSpace.ROAD,yCoord)); - }else if(xIndex == 0 && zIndex == 0) - { - this.setGridSpace(0, 0, new GridSpace(GridSpace.MAIN_PORTAL, yCoord)); - }else - { - this.setGridSpace(xIndex, zIndex, new GridSpace()); - } - } - } - - this.houseCooldown = TEDemonPortal.buildingGridDelay; - this.roadCooldown = TEDemonPortal.roadGridDelay; - - isInitialized = true; - } - - @Override - public void updateEntity() - { - if(!isInitialized) - { - return; - } - - if(this.hasLocationChanged) - { - if(this.changePortalLocation()) - { - return; - }else - { - this.hasLocationChanged = false; - } - } - - if(this.roadCooldown <= 0) - { - int roadsMade = this.createRandomRoad(); - if(roadsMade > 0) - { - this.roadCooldown = TEDemonPortal.roadGridDelay * roadsMade; - this.totalPoints += this.roadCooldown; - } - } - else if(this.houseCooldown <= 0) - { - int gridsUsed = this.createRandomBuilding(0, 0); - if(gridsUsed > 0) - { - this.houseCooldown = TEDemonPortal.buildingGridDelay * gridsUsed; - this.totalPoints += this.houseCooldown; - } - } - - if(this.tier < this.tierCostList.length && this.totalPoints > this.tierCostList[this.tier]) - { - this.tier++; - - if(this.createRandomBuilding(DemonBuilding.BUILDING_PORTAL, tier+1) >= 1) - { - } - } - - this.houseCooldown = Math.max(0, this.houseCooldown - 1); //Current dummy implementation of the increasing costs - this.roadCooldown = Math.max(0, this.roadCooldown - 1); - } - - @Override - public void readFromNBT(NBTTagCompound par1NBTTagCompound) - { - super.readFromNBT(par1NBTTagCompound); - this.negXRadius = par1NBTTagCompound.getInteger("negXRadius"); - this.negZRadius = par1NBTTagCompound.getInteger("negZRadius"); - this.posXRadius = par1NBTTagCompound.getInteger("posXRadius"); - this.posZRadius = par1NBTTagCompound.getInteger("posZRadius"); - this.houseCooldown = par1NBTTagCompound.getInteger("houseCooldown"); - this.roadCooldown = par1NBTTagCompound.getInteger("roadCooldown"); - - area = new GridSpace[negXRadius + posXRadius + 1][negZRadius + posZRadius + 1]; - - NBTTagList tagList = par1NBTTagCompound.getTagList("Grid",Constants.NBT.TAG_COMPOUND); - - for (int i = 0; i < tagList.tagCount(); i++) - { - int length = (negZRadius+posZRadius+1); - - int x = i/length; - int z = i%length; - - NBTTagCompound tag = (NBTTagCompound) tagList.getCompoundTagAt(i); - GridSpace space = GridSpace.getGridFromTag(tag); - - area[x][z] = space; - } - - this.isInitialized = par1NBTTagCompound.getBoolean("init"); - - this.tier = par1NBTTagCompound.getInteger("tier"); - this.totalPoints = par1NBTTagCompound.getInteger("totalPoints"); - this.yLevelDestination = par1NBTTagCompound.getInteger("yLevelDestination"); - this.hasLocationChanged = par1NBTTagCompound.getBoolean("hasLocationChanged"); - } - - @Override - public void writeToNBT(NBTTagCompound par1NBTTagCompound) - { - super.writeToNBT(par1NBTTagCompound); - par1NBTTagCompound.setInteger("negXRadius", negXRadius); - par1NBTTagCompound.setInteger("negZRadius", negZRadius); - par1NBTTagCompound.setInteger("posXRadius", posXRadius); - par1NBTTagCompound.setInteger("posZRadius", posZRadius); - par1NBTTagCompound.setInteger("houseCooldown", houseCooldown); - par1NBTTagCompound.setInteger("roadCooldown", roadCooldown); - - NBTTagList gridList = new NBTTagList(); - - for(int i=0; i<=negXRadius+posXRadius; i++) - { - for(int j=0; j<=negZRadius+posZRadius; j++) - { - int index = i + (negZRadius+posZRadius+1)*j; - - GridSpace space = area[i][j]; - NBTTagCompound nextTag; - - if(space == null) - { - nextTag = new GridSpace().getTag(); - }else - { - nextTag = space.getTag(); - } - - gridList.appendTag(nextTag); - } - } - - par1NBTTagCompound.setTag("Grid", gridList); - - par1NBTTagCompound.setBoolean("init", this.isInitialized); - par1NBTTagCompound.setInteger("tier", this.tier); - par1NBTTagCompound.setInteger("totalPoints", this.totalPoints); - par1NBTTagCompound.setInteger("yLevelDestination", this.yLevelDestination); - par1NBTTagCompound.setBoolean("hasLocationChanged", this.hasLocationChanged); - } - - public int createRandomRoad() //Return the number of road spaces - { - int next = rand.nextInt(4); - ForgeDirection dir; - - switch(next) - { - case 0: - dir = ForgeDirection.NORTH; - break; - case 1: - dir = ForgeDirection.SOUTH; - break; - case 2: - dir = ForgeDirection.EAST; - break; - case 3: - dir = ForgeDirection.WEST; - break; - default: - dir = ForgeDirection.NORTH; - } - - int length = 5; - - Int3 road = findRoadSpaceFromDirection(dir, (rand.nextInt(negXRadius + negZRadius + posXRadius + posZRadius))+1); - - int x = road.xCoord; - int yLevel = road.yCoord; - int z = road.zCoord; - - System.out.println("X: " + x + " Z: " + z + " Direction: " + dir.toString()); - - List directions = this.findValidExtentionDirection(x, z); - - if(directions.size() <= 0) - { - return 0; - } - - int maxDistance = 5; - - int distance = 0; - ForgeDirection dominantDirection = null; - - for(ForgeDirection direction: directions) - { - int amt = this.getLength(direction, maxDistance, x, z); - if(amt > distance) - { - distance = amt; - dominantDirection = direction; - }else if(amt == distance && rand.nextBoolean()) - { - dominantDirection = direction; - } - } - - if(dominantDirection == null) - { - return 0; - } - System.out.println("I got here!"); - System.out.println("Distance: " + distance + " Direction: " + dominantDirection.toString() + " yLevel: " + yLevel); - - this.createGriddedRoad(x, yLevel, z, dominantDirection, distance+1, true); - - return distance; - } - - public List findValidExtentionDirection(int x, int z) - { - List directions = new LinkedList(); - - if(this.getGridSpace(x, z) == null || !this.getGridSpace(x, z).isRoadSegment()) - { - return directions; - } - - GridSpace nextGrid = this.getGridSpace(x+1, z); - if(nextGrid.isEmpty()) - { - directions.add(ForgeDirection.EAST); - } - - nextGrid = this.getGridSpace(x-1, z); - if(nextGrid.isEmpty()) - { - directions.add(ForgeDirection.WEST); - } - - nextGrid = this.getGridSpace(x, z+1); - if(nextGrid.isEmpty()) - { - directions.add(ForgeDirection.SOUTH); - } - - nextGrid = this.getGridSpace(x, z-1); - if(nextGrid.isEmpty()) - { - directions.add(ForgeDirection.NORTH); - } - - return directions; - } - - public int getLength(ForgeDirection dir, int maxLength, int x, int z) //Number of spaces forward - { - for(int i=1; i<=maxLength; i++) - { - GridSpace space = this.getGridSpace(x + i*dir.offsetX, z + i*dir.offsetZ); - if(space.isEmpty()) - { - for(int k=1; k<=this.getRoadSpacer(); k++) - { - GridSpace space1 = this.getGridSpace(x + i*dir.offsetX + dir.offsetZ*k, z + i*dir.offsetZ + dir.offsetX*k); - GridSpace space2 = this.getGridSpace(x + i*dir.offsetX - dir.offsetZ*k, z + i*dir.offsetZ - dir.offsetX*k); - - if(space1.isRoadSegment() || space2.isRoadSegment()) - { - return i-1; - } - } - - continue; - } - if(space.isRoadSegment()) - { - return i; - }else - { - return i-1; - } - } - return maxLength; - } - - public Int3 findRoadSpaceFromDirection(ForgeDirection dir, int amount) - { - int index = 0; - if(dir == ForgeDirection.NORTH) - { - System.out.print("NORTH!"); - for(int i=0; i<= negZRadius + posZRadius; i++) - { - for(int j=0; j<= negXRadius + posXRadius; j++) - { - GridSpace space = area[j][i]; - if(space.isRoadSegment()) - { - index++; - if(index >= amount) - { - return new Int3(j-negXRadius,space.getYLevel(),i-negZRadius); - } - } - } - } - }else if(dir == ForgeDirection.SOUTH) - { - for(int i=negZRadius + posZRadius; i >= 0 ; i--) - { - for(int j=0; j<= negXRadius + posXRadius; j++) - { - GridSpace space = area[j][i]; - if(space.isRoadSegment()) - { - index++; - if(index >= amount) - { - return new Int3(j-negXRadius,space.getYLevel(),i-negZRadius); - } - } - } - } - }else if(dir == ForgeDirection.EAST) - { - for(int i=negXRadius + posXRadius; i >= 0; i--) - { - for(int j=0; j <= negZRadius + posZRadius ; j++) - { - GridSpace space = area[i][j]; - if(space.isRoadSegment()) - { - index++; - if(index >= amount) - { - return new Int3(i-negXRadius,space.getYLevel(),j-negZRadius); - } - } - } - } - }else if(dir == ForgeDirection.WEST) - { - for(int i=0; i <= negXRadius + posXRadius; i++) - { - for(int j=0; j <= negZRadius + posZRadius ; j++) - { - GridSpace space = area[i][j]; - if(space.isRoadSegment()) - { - index++; - if(index >= amount) - { - return new Int3(i-negXRadius,space.getYLevel(),j-negZRadius); - } - } - } - } - } - - return new Int3(0,0,0); - } - - public Int3 findEmptySpaceNearRoad(ForgeDirection dir, int amount, int closeness) - { - int index = 0; - if(dir == ForgeDirection.NORTH) - { - System.out.print("NORTH!"); - for(int i=0; i<= negZRadius + posZRadius; i++) - { - for(int j=0; j<= negXRadius + posXRadius; j++) - { - GridSpace space = area[j][i]; - if(space.isEmpty()) - { - int yLevel = this.findNearestRoadYLevel(j-negXRadius, i-negZRadius, closeness); - if(yLevel == -1) - { - continue; - } - index++; - if(index >= amount) - { - return new Int3(j-negXRadius,yLevel,i-negZRadius); - } - } - } - } - }else if(dir == ForgeDirection.SOUTH) - { - for(int i=negZRadius + posZRadius; i >= 0 ; i--) - { - for(int j=0; j<= negXRadius + posXRadius; j++) - { - GridSpace space = area[j][i]; - int yLevel = this.findNearestRoadYLevel(j-negXRadius, i-negZRadius, closeness); - if(yLevel == -1) - { - continue; - } - if(space.isEmpty()) - { - index++; - if(index >= amount) - { - return new Int3(j-negXRadius,yLevel,i-negZRadius); - } - } - } - } - }else if(dir == ForgeDirection.EAST) - { - for(int i=negXRadius + posXRadius; i >= 0; i--) - { - for(int j=0; j <= negZRadius + posZRadius ; j++) - { - GridSpace space = area[i][j]; - int yLevel = this.findNearestRoadYLevel(i-negXRadius, j-negZRadius, closeness); - if(yLevel == -1) - { - continue; - } - if(space.isEmpty()) - { - index++; - if(index >= amount) - { - return new Int3(i-negXRadius,yLevel,j-negZRadius); - } - } - } - } - }else if(dir == ForgeDirection.WEST) - { - for(int i=0; i <= negXRadius + posXRadius; i++) - { - for(int j=0; j <= negZRadius + posZRadius ; j++) - { - GridSpace space = area[i][j]; - int yLevel = this.findNearestRoadYLevel(i-negXRadius, j-negZRadius, closeness); - if(yLevel == -1) - { - continue; - } - if(space.isEmpty()) - { - index++; - if(index >= amount) - { - return new Int3(i-negXRadius,yLevel,j-negZRadius); - } - } - } - } - } - - return new Int3(0,0,0); - } - - public Int3 findEmptySpaceFromDirection(ForgeDirection dir, int amount) - { - int index = 0; - if(dir == ForgeDirection.NORTH) - { - System.out.print("NORTH!"); - for(int i=0; i<= negZRadius + posZRadius; i++) - { - for(int j=0; j<= negXRadius + posXRadius; j++) - { - GridSpace space = area[j][i]; - if(space.isEmpty()) - { - index++; - if(index >= amount) - { - return new Int3(j-negXRadius,space.getYLevel(),i-negZRadius); - } - } - } - } - }else if(dir == ForgeDirection.SOUTH) - { - for(int i=negZRadius + posZRadius; i >= 0 ; i--) - { - for(int j=0; j<= negXRadius + posXRadius; j++) - { - GridSpace space = area[j][i]; - if(space.isEmpty()) - { - index++; - if(index >= amount) - { - return new Int3(j-negXRadius,space.getYLevel(),i-negZRadius); - } - } - } - } - }else if(dir == ForgeDirection.EAST) - { - for(int i=negXRadius + posXRadius; i >= 0; i--) - { - for(int j=0; j <= negZRadius + posZRadius ; j++) - { - GridSpace space = area[i][j]; - if(space.isEmpty()) - { - index++; - if(index >= amount) - { - return new Int3(i-negXRadius,space.getYLevel(),j-negZRadius); - } - } - } - } - }else if(dir == ForgeDirection.WEST) - { - for(int i=0; i <= negXRadius + posXRadius; i++) - { - for(int j=0; j <= negZRadius + posZRadius ; j++) - { - GridSpace space = area[i][j]; - if(space.isEmpty()) - { - index++; - if(index >= amount) - { - return new Int3(i-negXRadius,space.getYLevel(),j-negZRadius); - } - } - } - } - } - - return new Int3(0,0,0); - } - - public void createGriddedRoad(int gridXi, int yi, int gridZi, ForgeDirection dir, int gridLength, boolean convertStarter) //Total grid length - { - if(gridLength == 0 || gridLength == 1) - { - return; - } - - if(convertStarter) - { - - } - - int initGridX = gridXi; - int initGridZ = gridZi; - int initY = yi; - - if(convertStarter) - { - this.setGridSpace(initGridX, initGridZ, new GridSpace(GridSpace.CROSSROAD,initY)); - - DemonCrosspath crosspath = new DemonCrosspath(xCoord + initGridX*5, initY, zCoord + initGridZ*5); - crosspath.createCrosspath(worldObj); - } - - for(int index=0; index posXRadius|| x < -negXRadius || z > posZRadius || z < -negZRadius) - { - return new GridSpace(); - }else - { - return (area[x + negXRadius][z + negZRadius]); - } - } - - public void setGridSpace(int x, int z, GridSpace space) - { - if(x > posXRadius) - { - this.expandAreaInPosX(); - this.setGridSpace(x, z, space); - return; - }else if(x < -negXRadius) - { - this.expandAreaInNegX(); - this.setGridSpace(x, z, space); - return; - }else if(z > posZRadius) - { - this.expandAreaInPosZ(); - this.setGridSpace(x, z, space); - return; - }else if(z < -negZRadius) - { - this.expandAreaInNegZ(); - this.setGridSpace(x, z, space); - return; - }else - { - area[x + negXRadius][z + negZRadius] = space; - } - } - - public void rightClickBlock(EntityPlayer player, int side) - { - if(worldObj.isRemote) - { - return; - } - - this.initialize(); - - if(ForgeDirection.getOrientation(side) == ForgeDirection.UP) - { - this.createRandomBuilding(DemonBuilding.BUILDING_HOUSE, 0); - }else if(ForgeDirection.getOrientation(side) == ForgeDirection.DOWN) - { - this.createRandomBuilding(DemonBuilding.BUILDING_PORTAL, 0); - }else - { - this.createRandomRoad(); - } - } - - public int createRandomBuilding(int type, int tier) - { - switch(type) - { - case DemonBuilding.BUILDING_HOUSE: - return this.createRandomHouse(tier); - case DemonBuilding.BUILDING_PORTAL: - return this.createPortalBuilding(tier); - } - - return 0; - } - - public int createPortalBuilding(int buildingTier) - { - int x = 0; - int z = 0; - - GridSpace home = this.getGridSpace(x, z); - int yLevel = home.getYLevel(); - - GridSpaceHolder grid = this.createGSH(); - - List directions = new ArrayList(); - - for(int i=2; i<6; i++) - { - ForgeDirection testDir = ForgeDirection.getOrientation(i); - //if(this.getGridSpace(x + testDir.offsetX, z + testDir.offsetZ).isEmpty()) - { - directions.add(testDir); - } - } - - if(directions.isEmpty()) - { - return 0; - } - - HashMap> schemMap = new HashMap(); - - for(ForgeDirection nextDir : directions) - { - for(DemonBuilding build : TEDemonPortal.buildingList) - { - if(build.buildingType != DemonBuilding.BUILDING_PORTAL) - { - continue; - } - if(schemMap.containsKey(nextDir)) - { - schemMap.get(nextDir).add(build); - }else - { - schemMap.put(nextDir, new ArrayList()); - schemMap.get(nextDir).add(build); - } - } - } - - if(schemMap.keySet().isEmpty()) - { - return 0; - } - - ForgeDirection chosenDirection = (ForgeDirection) schemMap.keySet().toArray()[new Random().nextInt(schemMap.keySet().size())]; - DemonBuilding build = schemMap.get(chosenDirection).get(new Random().nextInt(schemMap.get(chosenDirection).size())); - - build.destroyAllInField(worldObj, xCoord + (x)*5, yLevel, zCoord + (z)*5, chosenDirection.getOpposite()); - - Int3 portalSpace = build.getDoorSpace(chosenDirection); - int yOffset = portalSpace.yCoord; - - //TODO - -// for(int i=0; i<256; i++) -// { -// Block block = worldObj.getBlock(xCoord + (x)*5, i, zCoord + (z)*5); -// if(block == ModBlocks.blockDemonPortal) -// { -// BlockTeleposer.swapBlocks(worldObj, worldObj, xCoord, i, zCoord, xCoord, yLevel + yOffset, zCoord); -// break; -// } -// } - - build.buildAll(worldObj, xCoord + (x)*5, yLevel, zCoord + (z)*5, chosenDirection.getOpposite()); - build.setAllGridSpaces(x, z, yLevel, chosenDirection.getOpposite(), GridSpace.MAIN_PORTAL, grid); - this.loadGSH(grid); - - return build.getNumberOfGridSpaces(); - } - - public int createRandomHouse(int buildingTier) - { - int next = rand.nextInt(4); - ForgeDirection dir; - - switch(next) - { - case 0: - dir = ForgeDirection.NORTH; - break; - case 1: - dir = ForgeDirection.SOUTH; - break; - case 2: - dir = ForgeDirection.EAST; - break; - case 3: - dir = ForgeDirection.WEST; - break; - default: - dir = ForgeDirection.NORTH; - } - - boolean newProtocol = true; - - if(newProtocol) - { - Int3 space = this.findRoadSpaceFromDirection(dir, 1*(rand.nextInt(negXRadius + negZRadius + posXRadius + posZRadius))+1); - - int x = space.xCoord; - int z = space.zCoord; - int yLevel = space.yCoord; - - System.out.println("Road space - x: " + x + " z: " + z); - - GridSpaceHolder grid = this.createGSH(); - - if(!this.getGridSpace(x, z).isRoadSegment()) - { - return 0; - } - - List directions = new ArrayList(); - - for(int i=2; i<6; i++) - { - ForgeDirection testDir = ForgeDirection.getOrientation(i); - if(this.getGridSpace(x + testDir.offsetX, z + testDir.offsetZ).isEmpty()) - { - directions.add(testDir); - } - } - - if(directions.isEmpty()) - { - return 0; - } - - HashMap> schemMap = new HashMap(); - - for(ForgeDirection nextDir : directions) - { - for(DemonBuilding build : TEDemonPortal.buildingList) - { - if(build.buildingTier != buildingTier || build.buildingType != DemonBuilding.BUILDING_HOUSE) - { - continue; - } - Int3 offsetSpace = build.getGridOffsetFromRoad(nextDir, yLevel); - int xOff = offsetSpace.xCoord; - int zOff = offsetSpace.zCoord; - - if(build.isValid(grid, x + xOff, z + zOff, nextDir.getOpposite())) - { - if(schemMap.containsKey(nextDir)) - { - schemMap.get(nextDir).add(build); - }else - { - schemMap.put(nextDir, new ArrayList()); - schemMap.get(nextDir).add(build); - } - }else - { - System.out.println("This ISN'T valid!"); - } - } - } - - if(schemMap.keySet().isEmpty()) - { - return 0; - } - - ForgeDirection chosenDirection = (ForgeDirection) schemMap.keySet().toArray()[new Random().nextInt(schemMap.keySet().size())]; - DemonBuilding build = schemMap.get(chosenDirection).get(new Random().nextInt(schemMap.get(chosenDirection).size())); - - Int3 offsetSpace = build.getGridOffsetFromRoad(chosenDirection, yLevel); - int xOff = offsetSpace.xCoord; - int zOff = offsetSpace.zCoord; - - build.destroyAllInField(worldObj, xCoord + (x + xOff)*5, yLevel, zCoord + (z + zOff)*5, chosenDirection.getOpposite()); - build.buildAll(worldObj, xCoord + (x + xOff)*5, yLevel, zCoord + (z + zOff)*5, chosenDirection.getOpposite()); - build.setAllGridSpaces(x + xOff, z + zOff, yLevel, chosenDirection.getOpposite(), GridSpace.HOUSE, grid); - this.loadGSH(grid); - - return build.getNumberOfGridSpaces(); - }else - { - Int3 space = findEmptySpaceNearRoad(dir, 3*(rand.nextInt(negXRadius + negZRadius + posXRadius + posZRadius))+1, 2); - - int x = space.xCoord; - int z = space.zCoord; - int yLevel = space.yCoord; - - GridSpace newSpace = this.getGridSpace(x, z); - if(!newSpace.isEmpty()) - { - return 0; - } - - if(yLevel == -1) - { - return 0; - } - - GridSpaceHolder grid = this.createGSH(); - - ForgeDirection chosenDirection = ForgeDirection.NORTH; - - HashMap> bigList = new HashMap(); - - for(DemonBuilding build : TEDemonPortal.buildingList) - { - for(int i=2; i<6; i++) - { - chosenDirection = ForgeDirection.getOrientation(i); - System.out.println("" + chosenDirection.toString()); - if(build.isValid(grid, x, z, chosenDirection)) - { - System.out.println("Valid!"); - if(bigList.containsKey(chosenDirection)) - { - bigList.get(chosenDirection).add(build); - }else - { - bigList.put(chosenDirection, new ArrayList()); - bigList.get(chosenDirection).add(build); - } - } - } - } - - chosenDirection = ForgeDirection.getOrientation(new Random().nextInt(4) + 2); //Change to favour a direction with a road nearby - - List buildingList = bigList.get(chosenDirection); - DemonBuilding build; - - if(buildingList != null && buildingList.size() > 0) - { - build = buildingList.get(new Random().nextInt(buildingList.size())); - }else - { - return 0; - } - //TODO: Finish the selection algorythm - //TODO: Should favour those directions that have a road right next to them. - - build.buildAll(worldObj, xCoord + x*5, yLevel, zCoord + z*5, chosenDirection); - build.setAllGridSpaces(x, z, yLevel, chosenDirection, GridSpace.HOUSE, grid); - this.loadGSH(grid); - - return build.getNumberOfGridSpaces(); -// System.out.println("X: " + x + " Z: " + z + " Direction: " + chosenDirection.toString()); - } - } - - public int findNearestRoadYLevel(int xCoord, int zCoord, int maxDistance) - { - for(int l=1; l<=maxDistance; l++) - { - for(int i=-l; i<=l; i++) - { - for(int j=-l; j<=l; j++) - { - if(Math.abs(i)!=l && Math.abs(j)!=l) - { - continue; - } - - if(this.getGridSpace(xCoord + i, zCoord + j).isRoadSegment()) - { - return this.getGridSpace(xCoord + i, zCoord + j).getYLevel(); - } - } - } - } - - return -1; - } - - public void createRoad(int xi, int yi, int zi, ForgeDirection dir, int length, boolean doesNotDrop) - { - int curX = xi; - int curY = yi; - int curZ = zi; - int roadRadius = this.getRoadRadius(); - - if(dir.offsetY != 0) - { - return; - } - - DemonVillagePath path = new DemonVillagePath(xi, yi, zi, dir, length); - - path.constructFullPath(worldObj, this.getRoadStepClearance(), this.getRoadBlock(), this.getRoadMeta()); - } - - public int placeMaterialOnNextAvailable() - { - return 0; - } - - public int getRoadRadius() - { - return 1; - } - - public Block getRoadBlock() - { - return Blocks.nether_brick; - } - - public int getRoadMeta() - { - return 0; - } - - public int getRoadStepClearance() - { - return 10; - } - - public int getRoadSpacer() - { - return 1; - } - - public GridSpaceHolder createGSH() - { - GridSpaceHolder grid = new GridSpaceHolder(); - grid.area = this.area; - grid.negXRadius = this.negXRadius; - grid.negZRadius = this.negZRadius; - grid.posXRadius = this.posXRadius; - grid.posZRadius = this.posZRadius; - - return grid; - } - - public void loadGSH(GridSpaceHolder grid) - { - this.area = grid.area; - this.negXRadius = grid.negXRadius; - this.negZRadius = grid.negZRadius; - this.posXRadius = grid.posXRadius; - this.posZRadius = grid.posZRadius; - } - - public static void loadBuildingList() - { - String folder = "config/BloodMagic/schematics"; - Gson gson = new GsonBuilder().setPrettyPrinting().create(); - - File file = new File(folder); - File[] files = file.listFiles(); - BufferedReader br; - - try{ - for(File f : files) - { - br = new BufferedReader(new FileReader(f)); - BuildingSchematic schema = gson.fromJson(br, BuildingSchematic.class); - TEDemonPortal.buildingList.add(new DemonBuilding(schema)); - } - }catch(FileNotFoundException e) - { - e.printStackTrace(); - } -// -// try { -// br = new BufferedReader(new FileReader(folder + "test3.json")); -// BuildingSchematic schema = gson.fromJson(br, BuildingSchematic.class); -// TEDemonPortal.buildingList.add(new DemonBuilding(schema)); -// } catch (FileNotFoundException e) { -// // TODO Auto-generated catch block -// e.printStackTrace(); -// } - - - } - - public int getTotalPoints() - { - return this.totalPoints; - } - - public void addToPoints(int addition) - { - this.totalPoints += addition; - } - - public void setPortalDestination(int yLevel) - { - if(yLevel != this.yCoord) - { - this.hasLocationChanged = true; - this.yLevelDestination = yLevel; - } - } - - public boolean changePortalLocation() - { - if(yLevelDestination == yCoord) - { - return false; - } - - BlockTeleposer.swapBlocks(worldObj, worldObj, xCoord, yCoord, zCoord, xCoord, yLevelDestination, zCoord); - - return true; - } -} diff --git a/src-backup/main/java/WayofTime/alchemicalWizardry/common/tileEntity/TEHomHeart.java b/src-backup/main/java/WayofTime/alchemicalWizardry/common/tileEntity/TEHomHeart.java deleted file mode 100644 index 180b0d35..00000000 --- a/src-backup/main/java/WayofTime/alchemicalWizardry/common/tileEntity/TEHomHeart.java +++ /dev/null @@ -1,167 +0,0 @@ -package WayofTime.alchemicalWizardry.common.tileEntity; - -import net.minecraft.block.Block; -import net.minecraft.entity.player.EntityPlayer; -import net.minecraft.init.Blocks; -import net.minecraft.item.ItemStack; -import net.minecraft.tileentity.TileEntity; -import net.minecraft.tileentity.TileEntitySkull; -import net.minecraft.world.World; -import WayofTime.alchemicalWizardry.common.spell.simple.HomSpell; -import WayofTime.alchemicalWizardry.common.spell.simple.HomSpellRegistry; - -public class TEHomHeart extends TileEntity -{ - public boolean canCastSpell(ItemStack par1ItemStack, World par2World, EntityPlayer par3EntityPlayer) - { - return true; - } - - public int castSpell(ItemStack par1ItemStack, World par2World, EntityPlayer par3EntityPlayer) - { - HomSpell spell = getSpell(); - - if (spell != null) - { - switch (getModifiedParadigm()) - { - case 0: - spell.onOffensiveRangedRightClick(par1ItemStack, par2World, par3EntityPlayer); - break; - - case 1: - spell.onOffensiveMeleeRightClick(par1ItemStack, par2World, par3EntityPlayer); - break; - - case 2: - spell.onDefensiveRightClick(par1ItemStack, par2World, par3EntityPlayer); - break; - - case 3: - spell.onEnvironmentalRightClick(par1ItemStack, par2World, par3EntityPlayer); - break; - } - - //spell.onOffensiveRangedRightClick(par1ItemStack, par2World, par3EntityPlayer); - } - - return 0; - } - - public HomSpell getSpell() - { - TileEntity tileEntity = worldObj.getTileEntity(xCoord - 1, yCoord, zCoord); - - if (tileEntity instanceof TEAltar) - { - ItemStack itemStack = ((TEAltar) tileEntity).getStackInSlot(0); - - if (itemStack != null) - { - HomSpell spell = HomSpellRegistry.getSpellForItemStack(itemStack); - - if (spell != null) - { - return spell; - } - } - } - - tileEntity = worldObj.getTileEntity(xCoord + 1, yCoord, zCoord); - - if (tileEntity instanceof TEAltar) - { - ItemStack itemStack = ((TEAltar) tileEntity).getStackInSlot(0); - - if (itemStack != null) - { - HomSpell spell = HomSpellRegistry.getSpellForItemStack(itemStack); - - if (spell != null) - { - return spell; - } - } - } - - tileEntity = worldObj.getTileEntity(xCoord, yCoord, zCoord - 1); - - if (tileEntity instanceof TEAltar) - { - ItemStack itemStack = ((TEAltar) tileEntity).getStackInSlot(0); - - if (itemStack != null) - { - HomSpell spell = HomSpellRegistry.getSpellForItemStack(itemStack); - - if (spell != null) - { - return spell; - } - } - } - - tileEntity = worldObj.getTileEntity(xCoord, yCoord, zCoord + 1); - - if (tileEntity instanceof TEAltar) - { - ItemStack itemStack = ((TEAltar) tileEntity).getStackInSlot(0); - - if (itemStack != null) - { - HomSpell spell = HomSpellRegistry.getSpellForItemStack(itemStack); - - if (spell != null) - { - return spell; - } - } - } - - return null; - } - - public int getModifiedParadigm() - { - //TODO change so that it works with a Tile Entity for a custom head or whatnot - Block block = worldObj.getBlock(xCoord, yCoord + 1, zCoord); - - if (block == Blocks.glowstone) - { - return 0; - } else if (block == Blocks.redstone_block) - { - return 1; - } else if (block == Blocks.anvil) - { - return 2; - } else if (block == Blocks.glass) - { - return 3; - } - - TileEntity tileEntity = worldObj.getTileEntity(xCoord, yCoord + 1, zCoord); - - if (tileEntity instanceof TileEntitySkull) - { - int skullType = ((TileEntitySkull) tileEntity).func_145904_a(); - - switch (skullType) - { - case 0: - return 0; - - case 1: - return 1; - - case 2: - return 2; - - case 4: - return 3; - } - } - - return -1; - } -} diff --git a/src-backup/main/java/WayofTime/alchemicalWizardry/common/tileEntity/TEImperfectRitualStone.java b/src-backup/main/java/WayofTime/alchemicalWizardry/common/tileEntity/TEImperfectRitualStone.java deleted file mode 100644 index 110996ea..00000000 --- a/src-backup/main/java/WayofTime/alchemicalWizardry/common/tileEntity/TEImperfectRitualStone.java +++ /dev/null @@ -1,11 +0,0 @@ -package WayofTime.alchemicalWizardry.common.tileEntity; - -import net.minecraft.tileentity.TileEntity; - -public class TEImperfectRitualStone extends TileEntity -{ - public TEImperfectRitualStone() - { - // TODO Auto-generated constructor stub - } -} diff --git a/src-backup/main/java/WayofTime/alchemicalWizardry/common/tileEntity/TEMasterStone.java b/src-backup/main/java/WayofTime/alchemicalWizardry/common/tileEntity/TEMasterStone.java deleted file mode 100644 index 94b4458a..00000000 --- a/src-backup/main/java/WayofTime/alchemicalWizardry/common/tileEntity/TEMasterStone.java +++ /dev/null @@ -1,638 +0,0 @@ -package WayofTime.alchemicalWizardry.common.tileEntity; - -import java.util.HashMap; -import java.util.Map; -import java.util.Map.Entry; - -import net.minecraft.entity.player.EntityPlayer; -import net.minecraft.nbt.NBTTagCompound; -import net.minecraft.nbt.NBTTagList; -import net.minecraft.network.NetworkManager; -import net.minecraft.network.Packet; -import net.minecraft.network.play.server.S35PacketUpdateTileEntity; -import net.minecraft.server.MinecraftServer; -import net.minecraft.tileentity.TileEntity; -import net.minecraft.util.AxisAlignedBB; -import net.minecraft.util.ChatComponentText; -import net.minecraft.world.World; -import net.minecraftforge.common.util.Constants; -import net.minecraftforge.common.util.ForgeDirection; -import WayofTime.alchemicalWizardry.api.alchemy.energy.Reagent; -import WayofTime.alchemicalWizardry.api.alchemy.energy.ReagentContainer; -import WayofTime.alchemicalWizardry.api.alchemy.energy.ReagentContainerInfo; -import WayofTime.alchemicalWizardry.api.alchemy.energy.ReagentRegistry; -import WayofTime.alchemicalWizardry.api.alchemy.energy.ReagentStack; -import WayofTime.alchemicalWizardry.api.rituals.IMasterRitualStone; -import WayofTime.alchemicalWizardry.api.rituals.Rituals; -import WayofTime.alchemicalWizardry.api.soulNetwork.LifeEssenceNetwork; -import WayofTime.alchemicalWizardry.common.NewPacketHandler; -import WayofTime.alchemicalWizardry.common.spell.complex.effect.SpellHelper; - -public class TEMasterStone extends TileEntity implements IMasterRitualStone -{ - private String currentRitualString; - private boolean isActive; - private String owner; - private String varString1; - private int cooldown; - private int var1; - private int direction; - public boolean isRunning; - public int runningTime; - - private NBTTagCompound customRitualTag; - - protected ReagentContainer[] tanks; - protected Map attunedTankMap; - - public TEMasterStone() - { - tanks = new ReagentContainer[]{new ReagentContainer(1000),new ReagentContainer(1000),new ReagentContainer(1000)}; - this.attunedTankMap = new HashMap(); - - isActive = false; - owner = ""; - cooldown = 0; - var1 = 0; - direction = 0; - varString1 = ""; - currentRitualString = ""; - isRunning = false; - runningTime = 0; - - this.customRitualTag = new NBTTagCompound(); - } - - public void readClientNBT(NBTTagCompound tag) - { - currentRitualString = tag.getString("currentRitualString"); - isRunning = tag.getBoolean("isRunning"); - runningTime = tag.getInteger("runningTime"); - - NBTTagList tagList = tag.getTagList("reagentTanks", Constants.NBT.TAG_COMPOUND); - - int size = tagList.tagCount(); - this.tanks = new ReagentContainer[size]; - - for(int i=0; i entry : this.attunedTankMap.entrySet()) - { - NBTTagCompound savedTag = new NBTTagCompound(); - savedTag.setString("reagent", ReagentRegistry.getKeyForReagent(entry.getKey())); - savedTag.setInteger("amount", entry.getValue()); - attunedTagList.appendTag(savedTag); - } - - tag.setTag("attunedTankMap", attunedTagList); - - tag.setTag("customRitualTag", customRitualTag); - } - - public void activateRitual(World world, int crystalLevel, EntityPlayer player) - { - if (world.isRemote) - { - return; - } - - String testRitual = Rituals.checkValidRitual(world, xCoord, yCoord, zCoord); - - if (testRitual.equals("")) - { - player.addChatMessage(new ChatComponentText("Nothing appears to have happened...")); - return; - } - - boolean testLevel = Rituals.canCrystalActivate(testRitual, crystalLevel); - - if (!testLevel) - { - player.addChatMessage(new ChatComponentText("Your crystal vibrates pathetically.")); - - return; - } - - World worldSave = MinecraftServer.getServer().worldServers[0]; - LifeEssenceNetwork data = (LifeEssenceNetwork) worldSave.loadItemData(LifeEssenceNetwork.class, owner); - - if (data == null) - { - data = new LifeEssenceNetwork(owner); - worldSave.setItemData(owner, data); - } - - int currentEssence = data.currentEssence; - - if (currentEssence < Rituals.getCostForActivation(testRitual)) - { - player.addChatMessage(new ChatComponentText("You feel a pull, but you are too weak to push any further.")); - - return; - } - - if (!world.isRemote) - { - if(!Rituals.startRitual(this, testRitual, player)) - { - player.addChatMessage(new ChatComponentText("The ritual appears to actively resist you!")); - - return; - }else - { - data.currentEssence = currentEssence - Rituals.getCostForActivation(testRitual); - data.markDirty(); - - player.addChatMessage(new ChatComponentText("A rush of energy flows through the ritual!")); - - for (int i = 0; i < 12; i++) - { - SpellHelper.sendIndexedParticleToAllAround(world, xCoord, yCoord, zCoord, 20, worldObj.provider.dimensionId, 1, xCoord, yCoord, zCoord); - } - } - } - - cooldown = Rituals.getInitialCooldown(testRitual); - var1 = 0; - currentRitualString = testRitual; - isActive = true; - isRunning = true; - direction = Rituals.getDirectionOfRitual(world, xCoord, yCoord, zCoord, testRitual); - worldObj.markBlockForUpdate(xCoord, yCoord, zCoord); - } - - public void setOwner(String owner) - { - this.owner = owner; - } - - public void useOnRitualBroken() - { - Rituals.onRitualBroken(this, this.currentRitualString); - } - - @Override - public void updateEntity() - { - if(isRunning && runningTime < 100) - { - runningTime++; - }else if(!isRunning && runningTime > 0) - { - runningTime--; - } - - if (!isActive) - { - return; - } - - int worldTime = (int) (worldObj.getWorldTime() % 24000); - - if (worldObj.isRemote) - { - return; - } - - if (worldTime % 100 == 0) - { - boolean testRunes = Rituals.checkDirectionOfRitualValid(worldObj, xCoord, yCoord, zCoord, currentRitualString, direction); - SpellHelper.sendIndexedParticleToAllAround(worldObj, xCoord, yCoord, zCoord, 20, worldObj.provider.dimensionId, 1, xCoord, yCoord, zCoord); - - if (!testRunes) - { - Rituals.onRitualBroken(this, currentRitualString); - isActive = false; - currentRitualString = ""; - worldObj.markBlockForUpdate(xCoord, yCoord, zCoord); - return; - } - } - - if (worldObj.getBlockPowerInput(xCoord, yCoord, zCoord) > 0) - { - if(isRunning) - { - isRunning = false; - worldObj.markBlockForUpdate(xCoord, yCoord, zCoord); - } - return; - }else - { - if(!isRunning) - { - isRunning = true; - worldObj.markBlockForUpdate(xCoord, yCoord, zCoord); - } - } - - performRitual(worldObj, xCoord, yCoord, zCoord, currentRitualString); - } - - public void performRitual(World world, int x, int y, int z, String currentRitualString2) - { - Rituals.performEffect(this, currentRitualString2); - } - - public String getOwner() - { - return owner; - } - - public void setCooldown(int newCooldown) - { - this.cooldown = newCooldown; - } - - public int getCooldown() - { - return this.cooldown; - } - - public void setVar1(int newVar1) - { - this.var1 = newVar1; - } - - public int getVar1() - { - return this.var1; - } - - public void setActive(boolean active) - { - this.isActive = active; - this.isRunning = active; - worldObj.markBlockForUpdate(xCoord, yCoord, zCoord); - } - - public int getDirection() - { - return this.direction; - } - - @Override - public World getWorld() - { - return this.getWorldObj(); - } - - @Override - public int getXCoord() - { - return xCoord; - } - - @Override - public int getYCoord() - { - return yCoord; - } - - @Override - public int getZCoord() - { - return zCoord; - } - - public String getCurrentRitual() - { - return this.currentRitualString; - } - - public void setCurrentRitual(String str) - { - this.currentRitualString = str; - } - -// @Override -// public Packet getDescriptionPacket() -// { -// return NewPacketHandler.getPacket(this); -// } - - @Override - public Packet getDescriptionPacket() - { - NBTTagCompound nbttagcompound = new NBTTagCompound(); - writeClientNBT(nbttagcompound); - return new S35PacketUpdateTileEntity(xCoord, yCoord, zCoord, -999, nbttagcompound); - } - - @Override - public void onDataPacket(NetworkManager net, S35PacketUpdateTileEntity packet) - { - super.onDataPacket(net, packet); - readClientNBT(packet.func_148857_g()); - } - - public AxisAlignedBB getRenderBoundingBox() - { - double renderExtention = 1.0d; - AxisAlignedBB bb = AxisAlignedBB. getBoundingBox(xCoord-renderExtention, yCoord-renderExtention, zCoord-renderExtention, xCoord+1+renderExtention, yCoord+1+renderExtention, zCoord+1+renderExtention); - return bb; - } - - /* ISegmentedReagentHandler */ - @Override - public int fill(ForgeDirection from, ReagentStack resource, boolean doFill) - { - if(doFill) - { - worldObj.markBlockForUpdate(xCoord, yCoord, zCoord); - } - - int totalFill = 0; - - boolean useTankLimit = !this.attunedTankMap.isEmpty(); - - if(resource != null) - { - int totalTanksFillable = useTankLimit ? this.getTanksTunedToReagent(resource.reagent) : this.tanks.length; - int tanksFilled = 0; - - int maxFill = resource.amount; - - for(int i=this.tanks.length-1; i>=0; i--) - { - ReagentStack remainingStack = resource.copy(); - remainingStack.amount = maxFill - totalFill; - - boolean doesReagentMatch = tanks[i].getReagent() == null ? false : tanks[i].getReagent().isReagentEqual(remainingStack); - - if(doesReagentMatch) - { - totalFill += tanks[i].fill(remainingStack, doFill); - tanksFilled++; - }else - { - continue; - } - - if(totalFill >= maxFill || tanksFilled >= totalTanksFillable) - { - return totalFill; - } - } - - if(tanksFilled >= totalTanksFillable) - { - return totalFill; - } - - for(int i=this.tanks.length-1; i>=0; i--) - { - ReagentStack remainingStack = resource.copy(); - remainingStack.amount = maxFill - totalFill; - - boolean isTankEmpty = tanks[i].getReagent() == null; - - if(isTankEmpty) - { - totalFill += tanks[i].fill(remainingStack, doFill); - tanksFilled++; - }else - { - continue; - } - - if(totalFill >= maxFill || tanksFilled >= totalTanksFillable) - { - return totalFill; - } - } - } - return totalFill; - } - - @Override - public ReagentStack drain(ForgeDirection from, ReagentStack resource, boolean doDrain) - { - if(resource == null) - { - return null; - } - - if(doDrain) - { - worldObj.markBlockForUpdate(xCoord, yCoord, zCoord); - } - - int maxDrain = resource.amount; - Reagent reagent = resource.reagent; - int drained = 0; - - for(int i=0; i= maxDrain) - { - break; - } - - if (resource.isReagentEqual(tanks[i].getReagent())) - { - ReagentStack drainStack = tanks[i].drain(maxDrain-drained, doDrain); - if(drainStack != null) - { - drained += drainStack.amount; - } - } - } - - return new ReagentStack(reagent, drained); - } - - /* Only returns the amount from the first available tank */ - @Override - public ReagentStack drain(ForgeDirection from, int maxDrain, boolean doDrain) - { - for(int i=0; i getAttunedTankMap() - { - return this.attunedTankMap; - } - - public boolean areTanksEmpty() - { - for(int i=0; i= 0 && slot < inv.length) - { - inv[slot] = ItemStack.loadItemStackFromNBT(tag); - } - } - - resultID = par1NBTTagCompound.getInteger("resultID"); - resultDamage = par1NBTTagCompound.getInteger("resultDamage"); - isActive = par1NBTTagCompound.getBoolean("isActive"); - } - - @Override - public void writeToNBT(NBTTagCompound par1NBTTagCompound) - { - super.writeToNBT(par1NBTTagCompound); - NBTTagList itemList = new NBTTagList(); - - for (int i = 0; i < inv.length; i++) - { - ItemStack stack = inv[i]; - - if (inv[i] != null) - { - NBTTagCompound tag = new NBTTagCompound(); - tag.setByte("Slot", (byte) i); - inv[i].writeToNBT(tag); - itemList.appendTag(tag); - } - } - - par1NBTTagCompound.setInteger("resultID", resultID); - par1NBTTagCompound.setInteger("resultDamage", resultDamage); - par1NBTTagCompound.setTag("Inventory", itemList); - par1NBTTagCompound.setBoolean("isActive", isActive); - } - - @Override - public int getSizeInventory() - { - return 1; - } - - @Override - public ItemStack getStackInSlot(int slot) - { - return inv[slot]; - } - - @Override - public ItemStack decrStackSize(int slot, int amt) - { - ItemStack stack = getStackInSlot(slot); - - if (stack != null) - { - if (stack.stackSize <= amt) - { - setInventorySlotContents(slot, null); - } else - { - stack = stack.splitStack(amt); - - if (stack.stackSize == 0) - { - setInventorySlotContents(slot, null); - } - } - } - - return stack; - } - - @Override - public ItemStack getStackInSlotOnClosing(int slot) - { - ItemStack stack = getStackInSlot(slot); - - if (stack != null) - { - setInventorySlotContents(slot, null); - } - - return stack; - } - - @Override - public void setInventorySlotContents(int slot, ItemStack itemStack) - { - inv[slot] = itemStack; - - if (itemStack != null && itemStack.stackSize > getInventoryStackLimit()) - { - itemStack.stackSize = getInventoryStackLimit(); - } - } - - @Override - public String getInventoryName() - { - return "TEPedestal"; - } - - @Override - public boolean hasCustomInventoryName() - { - return false; - } - - @Override - public int getInventoryStackLimit() - { - return 1; - } - - @Override - public boolean isUseableByPlayer(EntityPlayer entityPlayer) - { - return worldObj.getTileEntity(xCoord, yCoord, zCoord) == this && entityPlayer.getDistanceSq(xCoord + 0.5, yCoord + 0.5, zCoord + 0.5) < 64; - } - - @Override - public void openInventory() - { - // TODO Auto-generated method stub - } - - @Override - public void closeInventory() - { - // TODO Auto-generated method stub - } - - //Logic for the actual block is under here - @Override - public void updateEntity() - { - super.updateEntity(); - } - - public void setActive() - { - isActive = false; - } - - public boolean isActive() - { - return isActive; - } - - @Override - public Packet getDescriptionPacket() - { - return NewPacketHandler.getPacket(this); - } - - public void handlePacketData(int[] intData) - { - if (intData == null) - { - return; - } - - if (intData.length == 3) - { - for (int i = 0; i < 1; i++) - { - if (intData[i * 3 + 2] != 0) - { - ItemStack is = new ItemStack(Item.getItemById(intData[i * 3]), intData[i * 3 + 2], intData[i * 3 + 1]); - inv[i] = is; - } else - { - inv[i] = null; - } - } - } - } - - public int[] buildIntDataList() - { - int[] sortList = new int[1 * 3]; - int pos = 0; - - for (ItemStack is : inv) - { - if (is != null) - { - sortList[pos++] = Item.getIdFromItem(is.getItem()); - sortList[pos++] = is.getItemDamage(); - sortList[pos++] = is.stackSize; - } else - { - sortList[pos++] = 0; - sortList[pos++] = 0; - sortList[pos++] = 0; - } - } - - return sortList; - } - - @Override - public boolean isItemValidForSlot(int slot, ItemStack itemstack) - { - if (slot == 0) - { - return true; - } - - return false; - } - - public void onItemDeletion() - { - //worldObj.createExplosion(null, xCoord+0.5, yCoord+0.5, zCoord+0.5, 1, false); - worldObj.addWeatherEffect(new EntityLightningBolt(worldObj, xCoord, yCoord, zCoord)); - - for (int i = 0; i < 16; i++) - { - SpellHelper.sendIndexedParticleToAllAround(worldObj, xCoord, yCoord, zCoord, 20, worldObj.provider.dimensionId, 2, xCoord, yCoord, zCoord); - } - } - -} diff --git a/src-backup/main/java/WayofTime/alchemicalWizardry/common/tileEntity/TEPlinth.java b/src-backup/main/java/WayofTime/alchemicalWizardry/common/tileEntity/TEPlinth.java deleted file mode 100644 index f9cfdbf4..00000000 --- a/src-backup/main/java/WayofTime/alchemicalWizardry/common/tileEntity/TEPlinth.java +++ /dev/null @@ -1,694 +0,0 @@ -package WayofTime.alchemicalWizardry.common.tileEntity; - -import java.util.ArrayList; -import java.util.List; - -import net.minecraft.entity.EntityLivingBase; -import net.minecraft.entity.player.EntityPlayer; -import net.minecraft.inventory.IInventory; -import net.minecraft.item.Item; -import net.minecraft.item.ItemBlock; -import net.minecraft.item.ItemStack; -import net.minecraft.nbt.NBTTagCompound; -import net.minecraft.nbt.NBTTagList; -import net.minecraft.network.Packet; -import net.minecraft.network.play.server.S35PacketUpdateTileEntity; -import net.minecraft.tileentity.TileEntity; -import net.minecraftforge.common.util.Constants; -import net.minecraftforge.oredict.OreDictionary; -import WayofTime.alchemicalWizardry.api.summoningRegistry.SummoningRegistry; -import WayofTime.alchemicalWizardry.api.summoningRegistry.SummoningRegistryComponent; -import WayofTime.alchemicalWizardry.common.IDemon; -import WayofTime.alchemicalWizardry.common.NewPacketHandler; -import WayofTime.alchemicalWizardry.common.PlinthComponent; -import WayofTime.alchemicalWizardry.common.items.EnergyBattery; - -public class TEPlinth extends TileEntity implements IInventory -{ - private ItemStack[] inv; - - private boolean isActive; - private boolean paradigm; - - private ItemStack[] ring1Inv; - private ItemStack[] ring2Inv; - private ItemStack[] ring3Inv; - - public static final int sizeInv = 1; - - private int progressInterval; - private int progress; - - public static List pedestalPositions = new ArrayList(); - - public TEPlinth() - { - this.inv = new ItemStack[1]; - this.ring1Inv = new ItemStack[6]; - this.ring2Inv = new ItemStack[6]; - this.ring3Inv = new ItemStack[6]; - isActive = false; - progress = 0; - progressInterval = 50; - } - - @Override - public void readFromNBT(NBTTagCompound par1NBTTagCompound) - { - super.readFromNBT(par1NBTTagCompound); - NBTTagList tagList = par1NBTTagCompound.getTagList("Inventory",Constants.NBT.TAG_COMPOUND); - - for (int i = 0; i < tagList.tagCount(); i++) - { - NBTTagCompound tag = (NBTTagCompound) tagList.getCompoundTagAt(i); - int slot = tag.getByte("Slot"); - - if (slot >= 0 && slot < inv.length) - { - inv[slot] = ItemStack.loadItemStackFromNBT(tag); - } - } - - NBTTagList ring1TagList = par1NBTTagCompound.getTagList("ring1Inv",Constants.NBT.TAG_COMPOUND); - - for (int i = 0; i < ring1TagList.tagCount(); i++) - { - NBTTagCompound tag = (NBTTagCompound) ring1TagList.getCompoundTagAt(i); - int slot = tag.getByte("Slot"); - - if (slot >= 0 && slot < inv.length) - { - ring1Inv[slot] = ItemStack.loadItemStackFromNBT(tag); - } - } - - NBTTagList ring2TagList = par1NBTTagCompound.getTagList("ring2Inv",Constants.NBT.TAG_COMPOUND); - - for (int i = 0; i < ring2TagList.tagCount(); i++) - { - NBTTagCompound tag = (NBTTagCompound) ring2TagList.getCompoundTagAt(i); - int slot = tag.getByte("Slot"); - - if (slot >= 0 && slot < inv.length) - { - ring2Inv[slot] = ItemStack.loadItemStackFromNBT(tag); - } - } - - NBTTagList ring3TagList = par1NBTTagCompound.getTagList("ring3Inv",Constants.NBT.TAG_COMPOUND); - - for (int i = 0; i < ring3TagList.tagCount(); i++) - { - NBTTagCompound tag = (NBTTagCompound) ring3TagList.getCompoundTagAt(i); - int slot = tag.getByte("Slot"); - - if (slot >= 0 && slot < inv.length) - { - ring3Inv[slot] = ItemStack.loadItemStackFromNBT(tag); - } - } - - progress = par1NBTTagCompound.getInteger("progress"); - progressInterval = par1NBTTagCompound.getInteger("progressInterval"); - isActive = par1NBTTagCompound.getBoolean("isActive"); - } - - @Override - public void writeToNBT(NBTTagCompound par1NBTTagCompound) - { - super.writeToNBT(par1NBTTagCompound); - NBTTagList itemList = new NBTTagList(); - - for (int i = 0; i < inv.length; i++) - { - ItemStack stack = inv[i]; - - if (inv[i] != null) - { - NBTTagCompound tag = new NBTTagCompound(); - tag.setByte("Slot", (byte) i); - inv[i].writeToNBT(tag); - itemList.appendTag(tag); - } - } - - par1NBTTagCompound.setTag("Inventory", itemList); - NBTTagList ring1ItemList = new NBTTagList(); - - for (int i = 0; i < ring1Inv.length; i++) - { - ItemStack stack = ring1Inv[i]; - - if (ring1Inv[i] != null) - { - NBTTagCompound tag = new NBTTagCompound(); - tag.setByte("Slot", (byte) i); - ring1Inv[i].writeToNBT(tag); - ring1ItemList.appendTag(tag); - } - } - - par1NBTTagCompound.setTag("ring1Inv", ring1ItemList); - NBTTagList ring2ItemList = new NBTTagList(); - - for (int i = 0; i < ring2Inv.length; i++) - { - ItemStack stack = ring2Inv[i]; - - if (ring2Inv[i] != null) - { - NBTTagCompound tag = new NBTTagCompound(); - tag.setByte("Slot", (byte) i); - ring2Inv[i].writeToNBT(tag); - ring2ItemList.appendTag(tag); - } - } - - par1NBTTagCompound.setTag("ring2Inv", ring1ItemList); - NBTTagList ring3ItemList = new NBTTagList(); - - for (int i = 0; i < ring3Inv.length; i++) - { - ItemStack stack = ring3Inv[i]; - - if (ring3Inv[i] != null) - { - NBTTagCompound tag = new NBTTagCompound(); - tag.setByte("Slot", (byte) i); - ring3Inv[i].writeToNBT(tag); - ring3ItemList.appendTag(tag); - } - } - - par1NBTTagCompound.setTag("ring3Inv", ring1ItemList); - par1NBTTagCompound.setInteger("progress", progress); - par1NBTTagCompound.setInteger("progressInterval", progressInterval); - par1NBTTagCompound.setBoolean("isActive", isActive); - } - - @Override - public int getSizeInventory() - { - return 1; - } - - @Override - public ItemStack getStackInSlot(int slot) - { - return inv[slot]; - } - - @Override - public ItemStack decrStackSize(int slot, int amt) - { - ItemStack stack = getStackInSlot(slot); - - if (stack != null) - { - if (stack.stackSize <= amt) - { - setInventorySlotContents(slot, null); - } else - { - stack = stack.splitStack(amt); - - if (stack.stackSize == 0) - { - setInventorySlotContents(slot, null); - } - } - } - - return stack; - } - - @Override - public ItemStack getStackInSlotOnClosing(int slot) - { - ItemStack stack = getStackInSlot(slot); - - if (stack != null) - { - setInventorySlotContents(slot, null); - } - - return stack; - } - - @Override - public void setInventorySlotContents(int slot, ItemStack itemStack) - { - inv[slot] = itemStack; - - if (itemStack != null && itemStack.stackSize > getInventoryStackLimit()) - { - itemStack.stackSize = getInventoryStackLimit(); - } - } - - @Override - public String getInventoryName() - { - return "TEPlinth"; - } - - @Override - public boolean hasCustomInventoryName() - { - return false; - } - - @Override - public int getInventoryStackLimit() - { - return 1; - } - - @Override - public boolean isUseableByPlayer(EntityPlayer entityPlayer) - { - return worldObj.getTileEntity(xCoord, yCoord, zCoord) == this && entityPlayer.getDistanceSq(xCoord + 0.5, yCoord + 0.5, zCoord + 0.5) < 64; - } - - @Override - public void openInventory() - { - // TODO Auto-generated method stub - } - - @Override - public void closeInventory() - { - // TODO Auto-generated method stub - } - - //Logic for the actual block is under here - @Override - public void updateEntity() - { - super.updateEntity(); - - if (worldObj.isRemote) - { - return; - } - - if (!isActive()) - { - if (getStackInSlot(0) != null && getStackInSlot(0).getItem() instanceof EnergyBattery) - { - int bloodOrbLevel = ((EnergyBattery) getStackInSlot(0).getItem()).getOrbLevel(); - - if (SummoningRegistry.isRecipeValid(bloodOrbLevel, composeItemsForRingAndParadigm(1, true), composeItemsForRingAndParadigm(2, true), composeItemsForRingAndParadigm(3, true))) - { - SummoningRegistryComponent src = SummoningRegistry.getRegistryComponent(bloodOrbLevel, composeItemsForRingAndParadigm(1, true), composeItemsForRingAndParadigm(2, true), composeItemsForRingAndParadigm(3, true)); - isActive = true; - paradigm = true; - progress = 0; - ring1Inv = src.getRingRecipeForRing(1); - ring2Inv = src.getRingRecipeForRing(2); - ring3Inv = src.getRingRecipeForRing(3); - } else if (SummoningRegistry.isRecipeValid(bloodOrbLevel, composeItemsForRingAndParadigm(1, false), composeItemsForRingAndParadigm(2, false), composeItemsForRingAndParadigm(3, false))) - { - SummoningRegistryComponent src = SummoningRegistry.getRegistryComponent(bloodOrbLevel, composeItemsForRingAndParadigm(1, false), composeItemsForRingAndParadigm(2, false), composeItemsForRingAndParadigm(3, false)); - isActive = true; - paradigm = false; - progress = 0; - ring1Inv = src.getRingRecipeForRing(1); - ring2Inv = src.getRingRecipeForRing(2); - ring3Inv = src.getRingRecipeForRing(3); - } else - { - isActive = false; - progress = 0; - } - } - } else - { - if (getStackInSlot(0) != null && getStackInSlot(0).getItem() instanceof EnergyBattery) - { - if (progress % progressInterval == 0) - { - int ring = (progress / progressInterval) / 6 + 1; - int slot = (progress / progressInterval) % 6; - ItemStack itemStack; - - switch (ring) - { - case 1: - itemStack = this.ring1Inv[slot]; - break; - - case 2: - itemStack = this.ring2Inv[slot]; - break; - - case 3: - itemStack = this.ring3Inv[slot]; - break; - - default: - itemStack = null; - } - - if (itemStack == null) - { - progress += progressInterval; - } else - { - if (this.deleteItemStackInRing(ring, itemStack)) - { - progress++; - } - } - } else - { - progress++; - } - - if (progress >= progressInterval * 18) - { - int bloodOrbLevel = ((EnergyBattery) getStackInSlot(0).getItem()).getOrbLevel(); - EntityLivingBase entity = SummoningRegistry.getEntity(worldObj, bloodOrbLevel, ring1Inv, ring2Inv, ring3Inv); - //EntityLivingBase entity = new EntityFallenAngel(worldObj); - - if (entity != null) - { - //entity.worldObj = worldObj; - entity.setPosition(xCoord + 0.5, yCoord + 1, zCoord + 0.5); - worldObj.spawnEntityInWorld(entity); - - if (entity instanceof IDemon) - { - ((IDemon) entity).setSummonedConditions(); - } - - worldObj.createExplosion(entity, entity.posX, entity.posY, entity.posZ, 3, false); - deleteItemsInRing(1); - isActive = false; - progress = 0; - - if (worldObj != null) - { - worldObj.markBlockForUpdate(xCoord, yCoord, zCoord); - } - } - } - } - } - } - - public void deleteItemsInRing(int ring) - { - if (paradigm) - { - int i = 0; - - for (PlinthComponent pc : pedestalPositions) - { - if (i < 6 && pc.getRing() == ring) - { - TileEntity tileEntity = worldObj.getTileEntity(xCoord + pc.xOffset, yCoord + pc.yOffset, zCoord + pc.zOffset); - - if (tileEntity instanceof TEPedestal) - { - ((TEPedestal) tileEntity).setInventorySlotContents(0, null); - worldObj.markBlockForUpdate(xCoord + pc.xOffset, yCoord + pc.yOffset, zCoord + pc.zOffset); - i++; - } - } - } - } else - { - int i = 0; - - for (PlinthComponent pc : pedestalPositions) - { - if (i < 6 && pc.getRing() == ring) - { - TileEntity tileEntity = worldObj.getTileEntity(xCoord + pc.zOffset, yCoord + pc.yOffset, zCoord + pc.xOffset); - - if (tileEntity instanceof TEPedestal) - { - ((TEPedestal) tileEntity).setInventorySlotContents(0, null); - worldObj.markBlockForUpdate(xCoord + pc.zOffset, yCoord + pc.yOffset, zCoord + pc.xOffset); - i++; - } - } - } - } - } - - public boolean deleteItemStackInRing(int ring, ItemStack itemStack) - { - if (itemStack == null) - { - return true; - } - - if (paradigm) - { - int i = 0; - - for (PlinthComponent pc : pedestalPositions) - { - if (i < 6 && pc.getRing() == ring) - { - TileEntity tileEntity = worldObj.getTileEntity(xCoord + pc.xOffset, yCoord + pc.yOffset, zCoord + pc.zOffset); - - if (tileEntity instanceof TEPedestal) - { - ItemStack possibleItem = ((TEPedestal) tileEntity).getStackInSlot(0); - - if (possibleItem == null) - { - i++; - continue; - } - - boolean test = false; - - if (possibleItem.getItem() instanceof ItemBlock) - { - if (itemStack.getItem() instanceof ItemBlock) - { - test = true; - } - } else if (!(itemStack.getItem() instanceof ItemBlock)) - { - test = true; - } - - if (test) - { - if (itemStack.getItem()== possibleItem.getItem() && (itemStack.getItemDamage() == possibleItem.getItemDamage() || itemStack.getItemDamage() == OreDictionary.WILDCARD_VALUE)) - { - ((TEPedestal) tileEntity).decrStackSize(0, 1); - if(((TEPedestal) tileEntity).getStackInSlot(0) !=null && ((TEPedestal) tileEntity).getStackInSlot(0).stackSize==0) - { - ((TEPedestal) tileEntity).setInventorySlotContents(0, null); - } - ((TEPedestal) tileEntity).onItemDeletion(); - worldObj.markBlockForUpdate(xCoord + pc.xOffset, yCoord + pc.yOffset, zCoord + pc.zOffset); - return true; - } - } - - i++; - } - } - } - } else - { - int i = 0; - - for (PlinthComponent pc : pedestalPositions) - { - if (i < 6 && pc.getRing() == ring) - { - TileEntity tileEntity = worldObj.getTileEntity(xCoord + pc.zOffset, yCoord + pc.yOffset, zCoord + pc.xOffset); - - if (tileEntity instanceof TEPedestal) - { - ItemStack possibleItem = ((TEPedestal) tileEntity).getStackInSlot(0); - - if (possibleItem == null) - { - i++; - continue; - } - - boolean test = false; - - if (possibleItem.getItem() instanceof ItemBlock) - { - if (itemStack.getItem() instanceof ItemBlock) - { - test = true; - } - } else if (!(itemStack.getItem() instanceof ItemBlock)) - { - test = true; - } - - if (test) - { - if (itemStack.getItem() == possibleItem.getItem() && (itemStack.getItemDamage() == possibleItem.getItemDamage() || itemStack.getItemDamage() == OreDictionary.WILDCARD_VALUE)) - { - ((TEPedestal) tileEntity).decrStackSize(0, 1); - ((TEPedestal) tileEntity).onItemDeletion(); - //worldObj.markBlockForUpdate(xCoord + pc.xOffset, yCoord + pc.yOffset, zCoord + pc.zOffset); - worldObj.markBlockForUpdate(xCoord + pc.zOffset, yCoord + pc.yOffset, zCoord + pc.zOffset); - return true; - } - } - - i++; - } - } - } - } - - return false; - } - - public ItemStack[] composeItemsForRingAndParadigm(int ring, boolean paradigm) - { - ItemStack[] composed = new ItemStack[6]; - - if (paradigm) - { - int i = 0; - - for (PlinthComponent pc : pedestalPositions) - { - if (i < 6 && pc.getRing() == ring) - { - TileEntity tileEntity = worldObj.getTileEntity(xCoord + pc.xOffset, yCoord + pc.yOffset, zCoord + pc.zOffset); - - if (tileEntity instanceof TEPedestal) - { - composed[i] = ((TEPedestal) tileEntity).getStackInSlot(0); - i++; - } - } - } - } else - { - int i = 0; - - for (PlinthComponent pc : pedestalPositions) - { - if (i < 6 && pc.getRing() == ring) - { - TileEntity tileEntity = worldObj.getTileEntity(xCoord + pc.zOffset, yCoord + pc.yOffset, zCoord + pc.xOffset); - - if (tileEntity instanceof TEPedestal) - { - composed[i] = ((TEPedestal) tileEntity).getStackInSlot(0); - i++; - } - } - } - } - - return composed; - } - - public void setActive() - { - isActive = false; - } - - public boolean isActive() - { - return isActive; - } - - @Override - public Packet getDescriptionPacket() - { - return NewPacketHandler.getPacket(this); - } - - public void handlePacketData(int[] intData) - { - if (intData == null) - { - return; - } - - if (intData.length == 3) - { - for (int i = 0; i < 1; i++) - { - if (intData[i * 3 + 2] != 0) - { - ItemStack is = new ItemStack(Item.getItemById(intData[i * 3]), intData[i * 3 + 2], intData[i * 3 + 1]); - inv[i] = is; - } else - { - inv[i] = null; - } - } - } - } - - public int[] buildIntDataList() - { - int[] sortList = new int[1 * 3]; - int pos = 0; - - for (ItemStack is : inv) - { - if (is != null) - { - sortList[pos++] = Item.getIdFromItem(is.getItem()); - sortList[pos++] = is.getItemDamage(); - sortList[pos++] = is.stackSize; - } else - { - sortList[pos++] = 0; - sortList[pos++] = 0; - sortList[pos++] = 0; - } - } - - return sortList; - } - - @Override - public boolean isItemValidForSlot(int slot, ItemStack itemstack) - { - if (slot == 0) - { - return true; - } - - return false; - } - - public static void initialize() - { - pedestalPositions.add(new PlinthComponent(1, 0, -2, 1)); - pedestalPositions.add(new PlinthComponent(2, 0, 0, 1)); - pedestalPositions.add(new PlinthComponent(1, 0, +2, 1)); - pedestalPositions.add(new PlinthComponent(-1, 0, -2, 1)); - pedestalPositions.add(new PlinthComponent(-2, 0, 0, 1)); - pedestalPositions.add(new PlinthComponent(-1, 0, +2, 1)); - pedestalPositions.add(new PlinthComponent(3, 1, -5, 2)); - pedestalPositions.add(new PlinthComponent(6, 1, 0, 2)); - pedestalPositions.add(new PlinthComponent(3, 1, +5, 2)); - pedestalPositions.add(new PlinthComponent(-3, 1, -5, 2)); - pedestalPositions.add(new PlinthComponent(-6, 1, 0, 2)); - pedestalPositions.add(new PlinthComponent(-3, 1, +5, 2)); - pedestalPositions.add(new PlinthComponent(0, 2, -9, 3)); - pedestalPositions.add(new PlinthComponent(7, 2, -4, 3)); - pedestalPositions.add(new PlinthComponent(7, 2, +4, 3)); - pedestalPositions.add(new PlinthComponent(0, 2, +9, 3)); - pedestalPositions.add(new PlinthComponent(-7, 2, -4, 3)); - pedestalPositions.add(new PlinthComponent(-7, 2, 4, 3)); - } - - -} diff --git a/src-backup/main/java/WayofTime/alchemicalWizardry/common/tileEntity/TEReagentConduit.java b/src-backup/main/java/WayofTime/alchemicalWizardry/common/tileEntity/TEReagentConduit.java deleted file mode 100644 index 2743ac9c..00000000 --- a/src-backup/main/java/WayofTime/alchemicalWizardry/common/tileEntity/TEReagentConduit.java +++ /dev/null @@ -1,544 +0,0 @@ -package WayofTime.alchemicalWizardry.common.tileEntity; - -import java.util.HashMap; -import java.util.LinkedList; -import java.util.List; -import java.util.Map; -import java.util.Map.Entry; - -import net.minecraft.client.Minecraft; -import net.minecraft.entity.player.EntityPlayer; -import net.minecraft.nbt.NBTTagCompound; -import net.minecraft.nbt.NBTTagList; -import net.minecraft.network.NetworkManager; -import net.minecraft.network.Packet; -import net.minecraft.network.play.server.S35PacketUpdateTileEntity; -import net.minecraft.tileentity.TileEntity; -import net.minecraft.world.World; -import net.minecraftforge.common.util.Constants; -import net.minecraftforge.common.util.ForgeDirection; -import WayofTime.alchemicalWizardry.api.ColourAndCoords; -import WayofTime.alchemicalWizardry.api.alchemy.energy.IReagentHandler; -import WayofTime.alchemicalWizardry.api.alchemy.energy.Reagent; -import WayofTime.alchemicalWizardry.api.alchemy.energy.ReagentContainer; -import WayofTime.alchemicalWizardry.api.alchemy.energy.ReagentRegistry; -import WayofTime.alchemicalWizardry.api.alchemy.energy.ReagentStack; -import WayofTime.alchemicalWizardry.api.alchemy.energy.TileSegmentedReagentHandler; -import WayofTime.alchemicalWizardry.common.Int3; -import WayofTime.alchemicalWizardry.common.entity.projectile.EntityParticleBeam; -import WayofTime.alchemicalWizardry.common.spell.complex.effect.SpellHelper; -import cpw.mods.fml.relauncher.Side; -import cpw.mods.fml.relauncher.SideOnly; - -public class TEReagentConduit extends TileSegmentedReagentHandler -{ - public List destinationList; //These are offsets - public Map> reagentTargetList; - public Map reagentTankDesignationList; - public int tickRate = 20; //Rate that the reagents are sent - - int hasChanged = 0; - public boolean affectedByRedstone = true; - - public int maxConnextions = 5; - - public int renderCount = 0; - - public TEReagentConduit() - { - this(2, 2000); - } - - public TEReagentConduit(int numberOfTanks, int size) - { - super(numberOfTanks, size); - - destinationList = new LinkedList(); - reagentTargetList = new HashMap(); - reagentTankDesignationList = new HashMap(); - } - - public Int3 getColour() - { - int[] redMap = new int[this.tanks.length]; - int[] greenMap = new int[this.tanks.length]; - int[] blueMap = new int[this.tanks.length]; - - for(int i=0; i> entry : reagentTargetList.entrySet()) - { - NBTTagCompound savedTag = new NBTTagCompound(); - savedTag.setString("reagent", ReagentRegistry.getKeyForReagent(entry.getKey())); - - NBTTagList coordinateTagList = new NBTTagList(); - - for(Int3 coord : entry.getValue()) - { - NBTTagCompound coordinateTag = new NBTTagCompound(); - - coord.writeToNBT(coordinateTag); - - coordinateTagList.appendTag(coordinateTag); - } - - savedTag.setTag("coordinateList", coordinateTagList); - - reagentTagList.appendTag(savedTag); - } - - tag.setTag("reagentTargetList", reagentTagList); - - NBTTagList tankDesignationList = new NBTTagList(); - - for(Entry entry : this.reagentTankDesignationList.entrySet()) - { - NBTTagCompound savedTag = new NBTTagCompound(); - - savedTag.setString("reagent", ReagentRegistry.getKeyForReagent(entry.getKey())); - savedTag.setInteger("integer", entry.getValue()); - - tankDesignationList.appendTag(savedTag); - } - - tag.setTag("tankDesignationList", tankDesignationList); - - } - - @Override - public void readFromNBT(NBTTagCompound tag) - { - super.readFromNBT(tag); - - hasChanged = tag.getInteger("hasChanged"); - - NBTTagList tagList = tag.getTagList("destinationList", Constants.NBT.TAG_COMPOUND); - - destinationList = new LinkedList(); - - for(int i=0; i coordList = new LinkedList(); - - NBTTagList coordinateList = savedTag.getTagList("coordinateList", Constants.NBT.TAG_COMPOUND); - - for(int j=0; j 1) - { - hasChanged = 1; - }else if(hasChanged == 1) - { - hasChanged = 0; - } - - if(worldObj.getWorldTime() % 100 == 99) - { - this.updateColourList(); - } - - if(affectedByRedstone && worldObj.isBlockIndirectlyGettingPowered(xCoord, yCoord, zCoord)) - { - return; - } - - int totalTransfered = 0; - - for(Entry> entry : this.reagentTargetList.entrySet()) - { - for(Int3 coord : entry.getValue()) - { - if(totalTransfered >= this.tickRate) - { - break; - } - - ReagentStack maxDrainAmount = this.drain(ForgeDirection.UNKNOWN, new ReagentStack(entry.getKey(), this.tickRate - totalTransfered), false); - - if(maxDrainAmount == null) - { - continue; - } - - int amountLeft = maxDrainAmount.amount; - - if(amountLeft <= 0) - { - continue; - } - - int x = xCoord + coord.xCoord; - int y = yCoord + coord.yCoord; - int z = zCoord + coord.zCoord; - - TileEntity tile = worldObj.getTileEntity(x, y, z); - if(tile instanceof IReagentHandler) - { - int amount = Math.min(((IReagentHandler) tile).fill(ForgeDirection.UNKNOWN, maxDrainAmount, false), amountLeft); - if(amount > 0) - { - amountLeft -= amount; - totalTransfered += amount; - - ReagentStack stack = this.drain(ForgeDirection.UNKNOWN, new ReagentStack(entry.getKey(), amount), true); - ((IReagentHandler) tile).fill(ForgeDirection.UNKNOWN, stack, true); - } - } - } - } - }else - { - if(affectedByRedstone && worldObj.isBlockIndirectlyGettingPowered(xCoord, yCoord, zCoord)) - { - return; - } - - renderCount++; - - if(worldObj.getWorldTime() % 100 != 0) - { - return; - } - - this.sendPlayerStuffs(); - } - } - - - @SideOnly(Side.CLIENT) - public void sendPlayerStuffs() - { - Minecraft mc = Minecraft.getMinecraft(); - EntityPlayer player = mc.thePlayer; - World world = mc.theWorld; - if(SpellHelper.canPlayerSeeAlchemy(player)) - { - for(ColourAndCoords colourSet : this.destinationList) - { - if(!(worldObj.getTileEntity(xCoord + colourSet.xCoord, yCoord + colourSet.yCoord, zCoord + colourSet.zCoord) instanceof IReagentHandler)) - { - continue; - } - EntityParticleBeam beam = new EntityParticleBeam(worldObj, xCoord + 0.5, yCoord + 0.5, zCoord + 0.5); - double velocity = Math.sqrt(Math.pow(colourSet.xCoord, 2) + Math.pow(colourSet.yCoord, 2) + Math.pow(colourSet.zCoord, 2)); - double wantedVel = 0.3d; - beam.setVelocity(wantedVel*colourSet.xCoord/velocity, wantedVel*colourSet.yCoord/velocity, wantedVel*colourSet.zCoord/velocity); - beam.setColour(colourSet.colourRed / 255f, colourSet.colourGreen/255f, colourSet.colourBlue/255f); - beam.setDestination(xCoord + colourSet.xCoord, yCoord + colourSet.yCoord, zCoord + colourSet.zCoord); - worldObj.spawnEntityInWorld(beam); - } - } - } - - public void updateColourList() - { - if(worldObj.isRemote) - { - return; - } - - List newList = this.compileListForReagentTargets(this.reagentTargetList); - - if(newList != null && !newList.equals(destinationList)) - { - this.destinationList = newList; - worldObj.markBlockForUpdate(xCoord, yCoord, zCoord); - } - } - - public List compileListForReagentTargets(Map> map) - { - List list = new LinkedList(); - - for(Entry> entry : map.entrySet()) - { - if(entry.getValue() != null) - { - Reagent reagent = entry.getKey(); - if(reagent == null) - { - continue; - } - List coords = entry.getValue(); - for(Int3 coord : coords) - { - if(coord == null) - { - continue; - } - list.add(new ColourAndCoords(reagent.getColourRed(), reagent.getColourGreen(), reagent.getColourBlue(), reagent.getColourIntensity(), coord.xCoord, coord.yCoord, coord.zCoord)); - } - } - } - - return list; - } - - public boolean addDestinationViaOffset(int red, int green, int blue, int intensity, int xOffset, int yOffset, int zOffset) - { - if(xOffset == 0 && yOffset == 0 && zOffset == 0) - { - return false; - } - - this.destinationList.add(new ColourAndCoords(red, green, blue, intensity, xOffset, yOffset, zOffset)); - - return true; - } - - public boolean addDestinationViaActual(int red, int green, int blue, int intensity, int x, int y, int z) - { - return this.addDestinationViaOffset(red, green, blue, intensity, x - this.xCoord, y - this.yCoord, z - this.zCoord); - } - - @Override - public Packet getDescriptionPacket() - { - NBTTagCompound nbttagcompound = new NBTTagCompound(); - writeClientNBT(nbttagcompound); - return new S35PacketUpdateTileEntity(xCoord, yCoord, zCoord, 90210, nbttagcompound); - } - - @Override - public void onDataPacket(NetworkManager net, S35PacketUpdateTileEntity packet) - { - super.onDataPacket(net, packet); - readClientNBT(packet.func_148857_g()); - } - - public boolean addReagentDestinationViaOffset(Reagent reagent, int xOffset, int yOffset, int zOffset) - { - int totalConnections = 0; - - for(Entry> entry : this.reagentTargetList.entrySet()) - { - if(entry.getValue() != null) - { - totalConnections += entry.getValue().size(); - } - } - - if(totalConnections >= this.maxConnextions) - { - //Send message that it cannot be done? Maybe add a Player instance - return false; - } - - if(xOffset == 0 && yOffset == 0 && zOffset == 0) - { - return false; - } - - Int3 newCoord = new Int3(xOffset, yOffset, zOffset); - - if(this.reagentTargetList.containsKey(reagent)) - { - List coordList = this.reagentTargetList.get(reagent); - if(coordList == null) - { - List newCoordList = new LinkedList(); - newCoordList.add(newCoord); - this.reagentTargetList.put(reagent, newCoordList); - }else - { - coordList.add(newCoord); - } - - return true; - }else - { - List newCoordList = new LinkedList(); - newCoordList.add(newCoord); - this.reagentTargetList.put(reagent, newCoordList); - - return true; - } - } - - public boolean addReagentDestinationViaActual(Reagent reagent, int x, int y, int z) - { - return (this.addReagentDestinationViaOffset(reagent, x-xCoord, y-yCoord, z-zCoord)); - } - - public boolean removeReagentDestinationViaOffset(Reagent reagent, int xOffset, int yOffset, int zOffset) - { - if(this.reagentTargetList.containsKey(reagent)) - { - List coords = this.reagentTargetList.get(reagent); - if(coords != null) - { - Int3 reference = new Int3(xOffset, yOffset, zOffset); - - return coords.remove(reference); - } - } - return false; - } - - public boolean removeReagentDestinationViaActual(Reagent reagent, int x, int y, int z) - { - return this.removeReagentDestinationViaOffset(reagent, x-xCoord, y-yCoord, z-zCoord); - } - - @Override - public int fill(ForgeDirection from, ReagentStack resource, boolean doFill) - { - if(doFill && !worldObj.isRemote) - { - worldObj.markBlockForUpdate(xCoord, yCoord, zCoord); - hasChanged = 2; - } - - return super.fill(from, resource, doFill); - } - - @Override - public ReagentStack drain(ForgeDirection from, ReagentStack resource, boolean doDrain) - { - if(doDrain && !worldObj.isRemote) - { - worldObj.markBlockForUpdate(xCoord, yCoord, zCoord); - hasChanged = 2; - } - - return super.drain(from, resource, doDrain); - } -} \ No newline at end of file diff --git a/src-backup/main/java/WayofTime/alchemicalWizardry/common/tileEntity/TESchematicSaver.java b/src-backup/main/java/WayofTime/alchemicalWizardry/common/tileEntity/TESchematicSaver.java deleted file mode 100644 index 8558b667..00000000 --- a/src-backup/main/java/WayofTime/alchemicalWizardry/common/tileEntity/TESchematicSaver.java +++ /dev/null @@ -1,158 +0,0 @@ -package WayofTime.alchemicalWizardry.common.tileEntity; - -import java.io.FileWriter; -import java.io.IOException; -import java.io.Writer; -import java.util.Random; - -import net.minecraft.block.Block; -import net.minecraft.entity.player.EntityPlayer; -import net.minecraft.tileentity.TileEntity; -import WayofTime.alchemicalWizardry.ModBlocks; -import WayofTime.alchemicalWizardry.common.demonVillage.BuildingSchematic; - -import com.google.gson.Gson; -import com.google.gson.GsonBuilder; - -public class TESchematicSaver extends TileEntity -{ - public Block targetBlock = ModBlocks.largeBloodStoneBrick; - - public void rightClickBlock(EntityPlayer player, int side) - { - BuildingSchematic schematic = new BuildingSchematic(); - - int negX = this.getNegXLimit(); - int negY = this.getNegYLimit(); - int negZ = this.getNegZLimit(); - int posX = this.getPosXLimit(); - int posY = this.getPosYLimit(); - int posZ = this.getPosZLimit(); - - for(int i=-negX+1; i<=posX-1; i++) - { - for(int j=-negY+1; j<=posY-1; j++) - { - for(int k=-negZ+1; k<=posZ-1; k++) - { - int meta = worldObj.getBlockMetadata(xCoord + i, yCoord + j, zCoord + k); - Block block = worldObj.getBlock(xCoord + i, yCoord + j, zCoord + k); - - if(!block.isAir(worldObj, xCoord + i, yCoord + j, zCoord + k)) - { - schematic.addBlockWithMeta(block, meta, i, j, k); - } - - } - } - - System.out.println("" + i); - } - - System.out.println("I got here!"); - Gson gson = new GsonBuilder().setPrettyPrinting().create(); - String json = gson.toJson(schematic); - System.out.println("Here, too!"); - Writer writer; - try - { - writer = new FileWriter("config/BloodMagic/schematics/" + new Random().nextInt() + ".json"); - writer.write(json); - writer.close(); - } - catch (IOException e) - { - e.printStackTrace(); - } - } - - public int getPosYLimit() - { - int i=1; - while(i<100) - { - if(targetBlock == (worldObj.getBlock(xCoord, yCoord + i, zCoord))) - { - return i; - } - - i++; - } - return 1; - } - - public int getNegYLimit() - { - int i=1; - while(i<100) - { - if(targetBlock == (worldObj.getBlock(xCoord, yCoord - i, zCoord))) - { - return i; - } - - i++; - } - return 1; - } - - public int getPosXLimit() - { - int i=1; - while(i<100) - { - if(targetBlock == (worldObj.getBlock(xCoord + i, yCoord, zCoord))) - { - return i; - } - - i++; - } - return 1; - } - - public int getNegXLimit() - { - int i=1; - while(i<100) - { - if(targetBlock == (worldObj.getBlock(xCoord - i, yCoord, zCoord))) - { - return i; - } - - i++; - } - return 1; - } - - public int getPosZLimit() - { - int i=1; - while(i<100) - { - if(targetBlock == (worldObj.getBlock(xCoord, yCoord, zCoord + i))) - { - return i; - } - - i++; - } - return 1; - } - - public int getNegZLimit() - { - int i=1; - while(i<100) - { - if(targetBlock == (worldObj.getBlock(xCoord, yCoord, zCoord - i))) - { - return i; - } - - i++; - } - return 1; - } -} \ No newline at end of file diff --git a/src-backup/main/java/WayofTime/alchemicalWizardry/common/tileEntity/TESocket.java b/src-backup/main/java/WayofTime/alchemicalWizardry/common/tileEntity/TESocket.java deleted file mode 100644 index 9f43b483..00000000 --- a/src-backup/main/java/WayofTime/alchemicalWizardry/common/tileEntity/TESocket.java +++ /dev/null @@ -1,255 +0,0 @@ -package WayofTime.alchemicalWizardry.common.tileEntity; - -import net.minecraft.entity.player.EntityPlayer; -import net.minecraft.inventory.IInventory; -import net.minecraft.item.Item; -import net.minecraft.item.ItemStack; -import net.minecraft.nbt.NBTTagCompound; -import net.minecraft.nbt.NBTTagList; -import net.minecraft.network.Packet; -import net.minecraft.network.play.server.S35PacketUpdateTileEntity; -import net.minecraft.tileentity.TileEntity; -import net.minecraftforge.common.util.Constants; -import WayofTime.alchemicalWizardry.common.NewPacketHandler; - -public class TESocket extends TileEntity implements IInventory -{ - private ItemStack[] inv; - private int resultID; - private int resultDamage; - - public static final int sizeInv = 1; - - private boolean isActive; - - public TESocket() - { - this.inv = new ItemStack[1]; - resultID = 0; - resultDamage = 0; - isActive = false; - } - - @Override - public void readFromNBT(NBTTagCompound par1NBTTagCompound) - { - super.readFromNBT(par1NBTTagCompound); - NBTTagList tagList = par1NBTTagCompound.getTagList("Inventory",Constants.NBT.TAG_COMPOUND); - - for (int i = 0; i < tagList.tagCount(); i++) - { - NBTTagCompound tag = (NBTTagCompound) tagList.getCompoundTagAt(i); - int slot = tag.getByte("Slot"); - - if (slot >= 0 && slot < inv.length) - { - inv[slot] = ItemStack.loadItemStackFromNBT(tag); - } - } - - resultID = par1NBTTagCompound.getInteger("resultID"); - resultDamage = par1NBTTagCompound.getInteger("resultDamage"); - isActive = par1NBTTagCompound.getBoolean("isActive"); - } - - @Override - public void writeToNBT(NBTTagCompound par1NBTTagCompound) - { - super.writeToNBT(par1NBTTagCompound); - NBTTagList itemList = new NBTTagList(); - - for (int i = 0; i < inv.length; i++) - { - ItemStack stack = inv[i]; - - if (inv[i] != null) - { - NBTTagCompound tag = new NBTTagCompound(); - tag.setByte("Slot", (byte) i); - inv[i].writeToNBT(tag); - itemList.appendTag(tag); - } - } - - par1NBTTagCompound.setInteger("resultID", resultID); - par1NBTTagCompound.setInteger("resultDamage", resultDamage); - par1NBTTagCompound.setTag("Inventory", itemList); - par1NBTTagCompound.setBoolean("isActive", isActive); - } - - @Override - public int getSizeInventory() - { - return 1; - } - - @Override - public ItemStack getStackInSlot(int slot) - { - return inv[slot]; - } - - @Override - public ItemStack decrStackSize(int slot, int amt) - { - ItemStack stack = getStackInSlot(slot); - - if (stack != null) - { - if (stack.stackSize <= amt) - { - setInventorySlotContents(slot, null); - } else - { - stack = stack.splitStack(amt); - - if (stack.stackSize == 0) - { - setInventorySlotContents(slot, null); - } - } - } - - return stack; - } - - @Override - public ItemStack getStackInSlotOnClosing(int slot) - { - ItemStack stack = getStackInSlot(slot); - - if (stack != null) - { - setInventorySlotContents(slot, null); - } - - return stack; - } - - @Override - public void setInventorySlotContents(int slot, ItemStack itemStack) - { - inv[slot] = itemStack; - - if (itemStack != null && itemStack.stackSize > getInventoryStackLimit()) - { - itemStack.stackSize = getInventoryStackLimit(); - } - } - - @Override - public String getInventoryName() - { - return "TESocket"; - } - - @Override - public boolean hasCustomInventoryName() - { - return false; - } - - @Override - public int getInventoryStackLimit() - { - return 1; - } - - @Override - public boolean isUseableByPlayer(EntityPlayer entityPlayer) - { - return worldObj.getTileEntity(xCoord, yCoord, zCoord) == this && entityPlayer.getDistanceSq(xCoord + 0.5, yCoord + 0.5, zCoord + 0.5) < 64; - } - - @Override - public void openInventory() - { - // TODO Auto-generated method stub - } - - @Override - public void closeInventory() - { - // TODO Auto-generated method stub - } - - //Logic for the actual block is under here - @Override - public void updateEntity() - { - super.updateEntity(); - } - - public void setActive() - { - isActive = false; - } - - public boolean isActive() - { - return isActive; - } - - @Override - public Packet getDescriptionPacket() - { - return NewPacketHandler.getPacket(this); - } - - public void handlePacketData(int[] intData) - { - if (intData == null) - { - return; - } - - if (intData.length == 3) - { - for (int i = 0; i < 1; i++) - { - if (intData[i * 3 + 2] != 0) - { - ItemStack is = new ItemStack(Item.getItemById(intData[i * 3]), intData[i * 3 + 2], intData[i * 3 + 1]); - inv[i] = is; - } else - { - inv[i] = null; - } - } - } - } - - public int[] buildIntDataList() - { - int[] sortList = new int[1 * 3]; - int pos = 0; - - for (ItemStack is : inv) - { - if (is != null) - { - sortList[pos++] = Item.getIdFromItem(is.getItem()); - sortList[pos++] = is.getItemDamage(); - sortList[pos++] = is.stackSize; - } else - { - sortList[pos++] = 0; - sortList[pos++] = 0; - sortList[pos++] = 0; - } - } - - return sortList; - } - - @Override - public boolean isItemValidForSlot(int slot, ItemStack itemstack) - { - if (slot == 0) - { - return true; - } - - return false; - } -} diff --git a/src-backup/main/java/WayofTime/alchemicalWizardry/common/tileEntity/TESpectralBlock.java b/src-backup/main/java/WayofTime/alchemicalWizardry/common/tileEntity/TESpectralBlock.java deleted file mode 100644 index bf182598..00000000 --- a/src-backup/main/java/WayofTime/alchemicalWizardry/common/tileEntity/TESpectralBlock.java +++ /dev/null @@ -1,90 +0,0 @@ -package WayofTime.alchemicalWizardry.common.tileEntity; - -import net.minecraft.block.Block; -import net.minecraft.item.ItemBlock; -import net.minecraft.item.ItemStack; -import net.minecraft.nbt.NBTTagCompound; -import net.minecraft.nbt.NBTTagList; -import net.minecraft.tileentity.TileEntity; -import net.minecraft.world.World; -import net.minecraftforge.common.util.Constants; -import net.minecraftforge.fluids.IFluidBlock; -import WayofTime.alchemicalWizardry.ModBlocks; - -public class TESpectralBlock extends TileEntity -{ - private int ticksRemaining; - - public TESpectralBlock() - { - ticksRemaining = 0; - } - - @Override - public void readFromNBT(NBTTagCompound par1NBTTagCompound) - { - super.readFromNBT(par1NBTTagCompound); - - ticksRemaining = par1NBTTagCompound.getInteger("ticksRemaining"); - } - - @Override - public void writeToNBT(NBTTagCompound par1NBTTagCompound) - { - super.writeToNBT(par1NBTTagCompound); - - par1NBTTagCompound.setInteger("ticksRemaining", ticksRemaining); - } - - @Override - public void updateEntity() - { - super.updateEntity(); - - if(worldObj.isRemote) - { - return; - } - - this.ticksRemaining--; - - if(this.ticksRemaining<=0) - { - worldObj.setBlockToAir(xCoord, yCoord, zCoord); - } - } - - public static boolean createSpectralBlockAtLocation(World world, int x, int y, int z, int duration) - { - if(!world.isAirBlock(x, y, z)) - { - return false; - } - - //if(world.getTileEntity(x, y, z)==null) - { - world.setBlock(x, y, z, ModBlocks.spectralBlock); - TileEntity tile = world.getTileEntity(x, y, z); - if(tile instanceof TESpectralBlock) - { - ((TESpectralBlock) tile).setDuration(duration); - return true; - } - } - - return false; - } - - public void setDuration(int dur) - { - this.ticksRemaining = dur; - } - - public void resetDuration(int dur) - { - if(this.ticksRemaining= 0 && slot < inv.length) - { - inv[slot] = ItemStack.loadItemStackFromNBT(tag); - } - } - - ticksRemaining = par1NBTTagCompound.getInteger("ticksRemaining"); - } - - @Override - public void writeToNBT(NBTTagCompound par1NBTTagCompound) - { - super.writeToNBT(par1NBTTagCompound); - NBTTagList itemList = new NBTTagList(); - - for (int i = 0; i < inv.length; i++) - { - ItemStack stack = inv[i]; - - if (inv[i] != null) - { - NBTTagCompound tag = new NBTTagCompound(); - tag.setByte("Slot", (byte) i); - inv[i].writeToNBT(tag); - itemList.appendTag(tag); - } - } - - par1NBTTagCompound.setTag("Inventory", itemList); - par1NBTTagCompound.setInteger("ticksRemaining", ticksRemaining); - } - - @Override - public void updateEntity() - { - super.updateEntity(); - - this.ticksRemaining--; - - if(this.ticksRemaining<=0) - { - this.returnContainedBlock(); - } - } - - public static boolean createSpectralBlockAtLocation(World world, int x, int y, int z, int duration) - { - Block block = world.getBlock(x, y, z); - - if(block==null) - { - return false; - } - - if(world.getTileEntity(x, y, z)==null || block instanceof IFluidBlock) - { - int meta = world.getBlockMetadata(x, y, z); - ItemStack item = new ItemStack(block, 1, meta); - - world.setBlock(x, y, z, ModBlocks.blockSpectralContainer); - TileEntity tile = world.getTileEntity(x, y, z); - if(tile instanceof TESpectralContainer) - { - ((TESpectralContainer) tile).setContainedItem(item); - ((TESpectralContainer) tile).setDuration(duration); - return true; - } - } - - return false; - } - - public void setDuration(int dur) - { - this.ticksRemaining = dur; - } - - public void resetDuration(int dur) - { - if(this.ticksRemaining stringList = parad.effectList; -// SpellParadigmSelf spellParadSelf = SpellParadigmSelf.getParadigmForStringArray(stringList); -// for(String str : stringList) -// { -// ChatMessageComponent chat = new ChatMessageComponent(); -// chat.addText(str); -// entity.sendChatToPlayer(chat); -// } -// spellParadSelf.castSpell(world, entity, spellCasterStack); -// } -// else if(parad instanceof SpellParadigmProjectile) -// { -// List stringList = parad.effectList; -// SpellParadigmProjectile spellParadSelf = SpellParadigmProjectile.getParadigmForStringArray(stringList); -// for(String str : stringList) -// { -// ChatMessageComponent chat = new ChatMessageComponent(); -// chat.addText(str); -// entity.sendChatToPlayer(chat); -// } -// spellParadSelf.castSpell(world, entity, spellCasterStack); -// }else - { - parad.applyAllSpellEffects(); - parad.castSpell(world, entity, spellCasterStack); - } - - } - - @Override - public String getResourceLocationForMeta(int meta) - { - switch(meta) - { - case 0: return "alchemicalwizardry:textures/models/SpellParadigmProjectile.png"; - case 1: return "alchemicalwizardry:textures/models/SpellParadigmSelf.png"; - case 2: return "alchemicalwizardry:textures/models/SpellParadigmMelee.png"; - case 3: return "alchemicalwizardry:textures/models/SpellParadigmTool.png"; - } - return "alchemicalwizardry:textures/models/SpellParadigmProjectile.png"; - } - - @Override - public void setInputDirection(ForgeDirection direction) - { - - } - - @Override - public ForgeDirection getInputDirection() - { - return ForgeDirection.UNKNOWN; - } -} diff --git a/src-backup/main/java/WayofTime/alchemicalWizardry/common/tileEntity/TETeleposer.java b/src-backup/main/java/WayofTime/alchemicalWizardry/common/tileEntity/TETeleposer.java deleted file mode 100644 index 946b1ddb..00000000 --- a/src-backup/main/java/WayofTime/alchemicalWizardry/common/tileEntity/TETeleposer.java +++ /dev/null @@ -1,377 +0,0 @@ -package WayofTime.alchemicalWizardry.common.tileEntity; - -import java.util.Iterator; -import java.util.List; - -import net.minecraft.entity.EntityLivingBase; -import net.minecraft.entity.player.EntityPlayer; -import net.minecraft.inventory.IInventory; -import net.minecraft.item.Item; -import net.minecraft.item.ItemStack; -import net.minecraft.nbt.NBTTagCompound; -import net.minecraft.nbt.NBTTagList; -import net.minecraft.network.Packet; -import net.minecraft.network.play.server.S35PacketUpdateTileEntity; -import net.minecraft.tileentity.TileEntity; -import net.minecraft.util.AxisAlignedBB; -import net.minecraft.world.World; -import net.minecraftforge.common.util.Constants; -import WayofTime.alchemicalWizardry.common.NewPacketHandler; -import WayofTime.alchemicalWizardry.common.block.BlockTeleposer; -import WayofTime.alchemicalWizardry.common.items.EnergyItems; -import WayofTime.alchemicalWizardry.common.items.TelepositionFocus; - -public class TETeleposer extends TileEntity implements IInventory -{ - private ItemStack[] inv; - private int resultID; - private int resultDamage; - private int previousInput; - - public static final int sizeInv = 1; - - private boolean isActive; - - public TETeleposer() - { - this.inv = new ItemStack[1]; - resultID = 0; - resultDamage = 0; - isActive = false; - previousInput = 0; - } - - @Override - public void readFromNBT(NBTTagCompound par1NBTTagCompound) - { - super.readFromNBT(par1NBTTagCompound); - NBTTagList tagList = par1NBTTagCompound.getTagList("Inventory", Constants.NBT.TAG_COMPOUND); - - for (int i = 0; i < tagList.tagCount(); i++) - { - NBTTagCompound tag = (NBTTagCompound) tagList.getCompoundTagAt(i); - int slot = tag.getByte("Slot"); - - if (slot >= 0 && slot < inv.length) - { - inv[slot] = ItemStack.loadItemStackFromNBT(tag); - } - } - - resultID = par1NBTTagCompound.getInteger("resultID"); - resultDamage = par1NBTTagCompound.getInteger("resultDamage"); - isActive = par1NBTTagCompound.getBoolean("isActive"); - previousInput = par1NBTTagCompound.getInteger("previousInput"); - } - - @Override - public void writeToNBT(NBTTagCompound par1NBTTagCompound) - { - super.writeToNBT(par1NBTTagCompound); - NBTTagList itemList = new NBTTagList(); - - for (int i = 0; i < inv.length; i++) - { - ItemStack stack = inv[i]; - - if (inv[i] != null) - { - NBTTagCompound tag = new NBTTagCompound(); - tag.setByte("Slot", (byte) i); - inv[i].writeToNBT(tag); - itemList.appendTag(tag); - } - } - - par1NBTTagCompound.setInteger("resultID", resultID); - par1NBTTagCompound.setInteger("resultDamage", resultDamage); - par1NBTTagCompound.setTag("Inventory", itemList); - par1NBTTagCompound.setBoolean("isActive", isActive); - par1NBTTagCompound.setInteger("previousInput", previousInput); - } - - @Override - public int getSizeInventory() - { - return 1; - } - - @Override - public ItemStack getStackInSlot(int slot) - { - return inv[slot]; - } - - @Override - public ItemStack decrStackSize(int slot, int amt) - { - ItemStack stack = getStackInSlot(slot); - - if (stack != null) - { - if (stack.stackSize <= amt) - { - setInventorySlotContents(slot, null); - } else - { - stack = stack.splitStack(amt); - - if (stack.stackSize == 0) - { - setInventorySlotContents(slot, null); - } - } - } - - return stack; - } - - @Override - public ItemStack getStackInSlotOnClosing(int slot) - { - ItemStack stack = getStackInSlot(slot); - - if (stack != null) - { - setInventorySlotContents(slot, null); - } - - return stack; - } - - @Override - public void setInventorySlotContents(int slot, ItemStack itemStack) - { - inv[slot] = itemStack; - - if (itemStack != null && itemStack.stackSize > getInventoryStackLimit()) - { - itemStack.stackSize = getInventoryStackLimit(); - } - } - - @Override - public String getInventoryName() - { - return "TETeleposer"; - } - - @Override - public boolean hasCustomInventoryName() - { - return false; - } - - @Override - public int getInventoryStackLimit() - { - return 1; - } - - @Override - public boolean isUseableByPlayer(EntityPlayer entityPlayer) - { - return worldObj.getTileEntity(xCoord, yCoord, zCoord) == this && entityPlayer.getDistanceSq(xCoord + 0.5, yCoord + 0.5, zCoord + 0.5) < 64; - } - - @Override - public void openInventory() - { - // TODO Auto-generated method stub - } - - @Override - public void closeInventory() - { - // TODO Auto-generated method stub - } - - //Logic for the actual block is under here - @Override - public void updateEntity() - { - super.updateEntity(); - EntityPlayer d; - - if (worldObj.isRemote) - { - return; - } - - int currentInput = worldObj.getBlockPowerInput(xCoord, yCoord, zCoord); - - if (previousInput == 0 && currentInput != 0) - { - ItemStack focus = this.getStackInSlot(0); - - if (focus != null && focus.getItem() instanceof TelepositionFocus) - { - TelepositionFocus focusItem = (TelepositionFocus) (focus.getItem()); - int xf = focusItem.xCoord(focus); - int yf = focusItem.yCoord(focus); - int zf = focusItem.zCoord(focus); - World worldF = focusItem.getWorld(focus); - int damage = (int) (0.5f * Math.sqrt((xCoord - xf) * (xCoord - xf) + (yCoord - yf + 1) * (yCoord - yf + 1) + (zCoord - zf) * (zCoord - zf))); - int focusLevel = ((TelepositionFocus) focusItem).getFocusLevel(); - int transportCount = 0; - int entityCount = 0; - - if (worldF != null && worldF.getTileEntity(xf, yf, zf) instanceof TETeleposer && !worldF.getTileEntity(xf, yf, zf).equals(this)) - { - //Prime the teleportation - int d0 = focusLevel - 1; - AxisAlignedBB axisalignedbb1 = AxisAlignedBB.getBoundingBox((double) this.xCoord, (double) this.yCoord + d0 + 1, (double) this.zCoord, (double) (this.xCoord + 1), (double) (this.yCoord + 2 + d0), (double) (this.zCoord + 1)).expand(d0, d0, d0); - axisalignedbb1.maxY = Math.min((double) this.worldObj.getHeight(), this.yCoord + 2 + d0 + d0); - List list1 = this.worldObj.getEntitiesWithinAABB(EntityLivingBase.class, axisalignedbb1); - Iterator iterator1 = list1.iterator(); - EntityLivingBase entityplayer1; - - while (iterator1.hasNext()) - { - entityplayer1 = (EntityLivingBase) iterator1.next(); - entityCount++; - } - - //int d0 = focusLevel-1; - AxisAlignedBB axisalignedbb2 = AxisAlignedBB.getBoundingBox(xf, yf + d0 + 1, zf, xf + 1, yf + 2 + d0, zf).expand(d0, d0, d0); - //axisalignedbb2.maxY = Math.min((double)worldF.getHeight(),yf+1+d0+d0); - List list2 = worldF.getEntitiesWithinAABB(EntityLivingBase.class, axisalignedbb2); - Iterator iterator2 = list2.iterator(); - EntityLivingBase entityplayer2; - - while (iterator2.hasNext()) - { - entityplayer2 = (EntityLivingBase) iterator2.next(); - entityCount++; - } - - if (EnergyItems.canSyphonInContainer(focus, damage * (focusLevel * 2 - 1) * (focusLevel * 2 - 1) * (focusLevel * 2 - 1) + damage * entityCount)) - { - for (int k = 0; k <= (focusLevel * 2 - 2); k++) - //for(int k=(focusLevel*2-1);k>=0;k--) - { - for (int i = -(focusLevel - 1); i <= (focusLevel - 1); i++) - { - for (int j = -(focusLevel - 1); j <= (focusLevel - 1); j++) - { - { - if (BlockTeleposer.swapBlocks(worldObj, worldF, xCoord + i, yCoord + 1 + k, zCoord + j, xf + i, yf + 1 + k, zf + j)) - { - transportCount++; - } - } - } - } - } - - if (!worldF.equals(worldObj)) - { - entityCount = 0; - } - - EnergyItems.syphonWhileInContainer(focus, damage * transportCount + damage * entityCount); - //Teleport - - if (worldF.equals(worldObj)) - { - iterator1 = list1.iterator(); - iterator2 = list2.iterator(); - - while (iterator1.hasNext()) - { - entityplayer1 = (EntityLivingBase) iterator1.next(); - entityplayer1.worldObj = worldF; - entityplayer1.setPositionAndUpdate(entityplayer1.posX - this.xCoord + xf, entityplayer1.posY - this.yCoord + yf, entityplayer1.posZ - this.zCoord + zf); - //entityplayer1.travelToDimension(worldF.provider.dimensionId); - } - - while (iterator2.hasNext()) - { - entityplayer2 = (EntityLivingBase) iterator2.next(); - entityplayer2.worldObj = worldF; - entityplayer2.setPositionAndUpdate(entityplayer2.posX + this.xCoord - xf, entityplayer2.posY + this.yCoord - yf, entityplayer2.posZ + this.zCoord - zf); - //entityplayer2.travelToDimension(worldObj.provider.dimensionId); - } - } - } - } - } - } - - previousInput = currentInput; - } - - public void setActive() - { - isActive = false; - } - - public boolean isActive() - { - return isActive; - } - - @Override - public Packet getDescriptionPacket() - { - return NewPacketHandler.getPacket(this); - } - - public void handlePacketData(int[] intData) - { - if (intData == null) - { - return; - } - - if (intData.length == 3) - { - for (int i = 0; i < 1; i++) - { - if (intData[i * 3 + 2] != 0) - { - ItemStack is = new ItemStack(Item.getItemById(intData[i * 3]), intData[i * 3 + 2], intData[i * 3 + 1]); - inv[i] = is; - } else - { - inv[i] = null; - } - } - } - } - - public int[] buildIntDataList() - { - int[] sortList = new int[1 * 3]; - int pos = 0; - - for (ItemStack is : inv) - { - if (is != null) - { - sortList[pos++] = Item.getIdFromItem(is.getItem()); - sortList[pos++] = is.getItemDamage(); - sortList[pos++] = is.stackSize; - } else - { - sortList[pos++] = 0; - sortList[pos++] = 0; - sortList[pos++] = 0; - } - } - - return sortList; - } - - @Override - public boolean isItemValidForSlot(int slot, ItemStack itemstack) - { - if (slot == 0) - { - return true; - } - - return false; - } - -} diff --git a/src-backup/main/java/WayofTime/alchemicalWizardry/common/tileEntity/TEWritingTable.java b/src-backup/main/java/WayofTime/alchemicalWizardry/common/tileEntity/TEWritingTable.java deleted file mode 100644 index 1ed5ae95..00000000 --- a/src-backup/main/java/WayofTime/alchemicalWizardry/common/tileEntity/TEWritingTable.java +++ /dev/null @@ -1,916 +0,0 @@ -package WayofTime.alchemicalWizardry.common.tileEntity; - -import net.minecraft.entity.player.EntityPlayer; -import net.minecraft.inventory.IInventory; -import net.minecraft.item.Item; -import net.minecraft.item.ItemBlock; -import net.minecraft.item.ItemStack; -import net.minecraft.nbt.NBTTagCompound; -import net.minecraft.nbt.NBTTagList; -import net.minecraft.tileentity.TileEntity; -import net.minecraftforge.common.util.Constants; -import net.minecraftforge.oredict.OreDictionary; -import WayofTime.alchemicalWizardry.ModItems; -import WayofTime.alchemicalWizardry.api.alchemy.AlchemicalPotionCreationHandler; -import WayofTime.alchemicalWizardry.api.alchemy.AlchemyRecipe; -import WayofTime.alchemicalWizardry.api.alchemy.AlchemyRecipeRegistry; -import WayofTime.alchemicalWizardry.api.items.interfaces.IBloodOrb; -import WayofTime.alchemicalWizardry.common.IBindingAgent; -import WayofTime.alchemicalWizardry.common.ICatalyst; -import WayofTime.alchemicalWizardry.common.IFillingAgent; -import WayofTime.alchemicalWizardry.common.NewPacketHandler; -import WayofTime.alchemicalWizardry.common.alchemy.CombinedPotionRegistry; -import WayofTime.alchemicalWizardry.common.alchemy.ICombinationalCatalyst; -import WayofTime.alchemicalWizardry.common.items.EnergyItems; -import WayofTime.alchemicalWizardry.common.items.potion.AlchemyFlask; -import WayofTime.alchemicalWizardry.common.spell.complex.effect.SpellHelper; - -public class TEWritingTable extends TileEntity implements IInventory -{ - private ItemStack[] inv; - private int progress; - private int progressNeeded = 100; - private int amountUsed; - - private int accelerationTime; - - public static final int sizeInv = 7; - - public TEWritingTable() - { - inv = new ItemStack[7]; - } - - @Override - public int getSizeInventory() - { - return inv.length; - } - - @Override - public ItemStack getStackInSlot(int slot) - { - return inv[slot]; - } - - @Override - public void setInventorySlotContents(int slot, ItemStack stack) - { - inv[slot] = stack; - - if (stack != null && stack.stackSize > getInventoryStackLimit()) - { - stack.stackSize = getInventoryStackLimit(); - } - } - - @Override - public ItemStack decrStackSize(int slot, int amt) - { - ItemStack stack = getStackInSlot(slot); - - if (stack != null) - { - if (stack.stackSize <= amt) - { - setInventorySlotContents(slot, null); - } else - { - stack = stack.splitStack(amt); - - if (stack.stackSize == 0) - { - setInventorySlotContents(slot, null); - } - } - } - - return stack; - } - - @Override - public ItemStack getStackInSlotOnClosing(int slot) - { - ItemStack stack = getStackInSlot(slot); - - if (stack != null) - { - setInventorySlotContents(slot, null); - } - - return stack; - } - - @Override - public int getInventoryStackLimit() - { - return 64; - } - - @Override - public boolean isUseableByPlayer(EntityPlayer player) - { - return worldObj.getTileEntity(xCoord, yCoord, zCoord) == this && player.getDistanceSq(xCoord + 0.5, yCoord + 0.5, zCoord + 0.5) < 64; - } - - @Override - public void openInventory() - { - } - - @Override - public void closeInventory() - { - } - - @Override - public void readFromNBT(NBTTagCompound tagCompound) - { - super.readFromNBT(tagCompound); - NBTTagList tagList = tagCompound.getTagList("Inventory",Constants.NBT.TAG_COMPOUND); - - for (int i = 0; i < tagList.tagCount(); i++) - { - NBTTagCompound tag = (NBTTagCompound) tagList.getCompoundTagAt(i); - byte slot = tag.getByte("Slot"); - - if (slot >= 0 && slot < inv.length) - { - inv[slot] = ItemStack.loadItemStackFromNBT(tag); - } - } - - progress = tagCompound.getInteger("progress"); - amountUsed = tagCompound.getInteger("amountUsed"); - - accelerationTime = tagCompound.getInteger("accelerationTime"); - } - - @Override - public void writeToNBT(NBTTagCompound tagCompound) - { - super.writeToNBT(tagCompound); - NBTTagList itemList = new NBTTagList(); - - for (int i = 0; i < inv.length; i++) - { - ItemStack stack = inv[i]; - - if (stack != null) - { - NBTTagCompound tag = new NBTTagCompound(); - tag.setByte("Slot", (byte) i); - stack.writeToNBT(tag); - itemList.appendTag(tag); - } - } - - tagCompound.setTag("Inventory", itemList); - tagCompound.setInteger("progress", progress); - tagCompound.setInteger("amountUsed", amountUsed); - - tagCompound.setInteger("accelerationTime", accelerationTime); - } - - @Override - public String getInventoryName() - { - return "aw.TEWritingTable"; - } - - @Override - public boolean hasCustomInventoryName() - { - // TODO Auto-generated method stub - return false; - } - - @Override - public boolean isItemValidForSlot(int i, ItemStack itemstack) - { - // TODO Auto-generated method stub - return false; - } - - @Override - public net.minecraft.network.Packet getDescriptionPacket() - { - return NewPacketHandler.getPacket(this); - } - - public void handlePacketData(int[] intData) - { - if (intData == null) - { - return; - } - - if (intData.length == 3 * 7) - { - for (int i = 0; i < 7; i++) - { - if (intData[i * 3 + 2] != 0) - { - ItemStack is = new ItemStack(Item.getItemById(intData[i * 3]), intData[i * 3 + 2], intData[i * 3 + 1]); - inv[i] = is; - } else - { - inv[i] = null; - } - } - } - } - - public int[] buildIntDataList() - { - int[] sortList = new int[7 * 3]; - int pos = 0; - - for (ItemStack is : inv) - { - if (is != null) - { - sortList[pos++] = Item.getIdFromItem(is.getItem()); - sortList[pos++] = is.getItemDamage(); - sortList[pos++] = is.stackSize; - } else - { - sortList[pos++] = 0; - sortList[pos++] = 0; - sortList[pos++] = 0; - } - } - - return sortList; - } - - public ItemStack getResultingItemStack() - { - ItemStack[] composedRecipe = new ItemStack[5]; - - for (int i = 0; i < 5; i++) - { - composedRecipe[i] = inv[i + 1]; - } - - return AlchemyRecipeRegistry.getResult(composedRecipe, inv[0]); - } - - public boolean isRecipeValid() - { - return (getResultingItemStack() != null); - } - - public int getAmountNeeded(ItemStack bloodOrb) - { - ItemStack[] composedRecipe = new ItemStack[5]; - - for (int i = 0; i < 5; i++) - { - composedRecipe[i] = inv[i + 1]; - } - - return AlchemyRecipeRegistry.getAmountNeeded(composedRecipe, bloodOrb); - } - - public boolean containsPotionFlask() - { - if (getPotionFlaskPosition() != -1) - { - return true; - } else - { - return false; - } - } - - public int getPotionFlaskPosition() - { - for (int i = 1; i <= 5; i++) - { - if (inv[i] != null && !(inv[i].getItem() instanceof ItemBlock) && inv[i].getItem() == ModItems.alchemyFlask) - { - return i; - } - } - - return -1; - } - - public boolean containsCombinationCatalyst() - { - if (getCombinationCatalystPosition() != -1) - { - return true; - } else - { - return false; - } - } - - public int getCombinationCatalystPosition() - { - for (int i = 1; i <= 5; i++) - { - if (inv[i] != null && inv[i].getItem() instanceof ICombinationalCatalyst) - { - return i; - } - } - - return -1; - } - - public boolean containsRegisteredPotionIngredient() - { - if (getRegisteredPotionIngredientPosition() != -1) - { - return true; - } else - { - return false; - } - } - - public int getRegisteredPotionIngredientPosition() - { - ItemStack[] composedRecipe = new ItemStack[5]; - - for (int i = 0; i < 5; i++) - { - composedRecipe[i] = inv[i + 1]; - } - - int location = AlchemicalPotionCreationHandler.getRegisteredPotionIngredientPosition(composedRecipe); - - if (location != -1) - { - return location + 1; - } - - return -1; - } - - public boolean containsCatalyst() - { - if (getCatalystPosition() != -1) - { - return true; - } - - return false; - } - - public int getCatalystPosition() - { - for (int i = 0; i < 5; i++) - { - if (inv[i + 1] != null && inv[i + 1].getItem() instanceof ICatalyst) - { - return i + 1; - } - } - - return -1; - } - - public boolean containsBindingAgent() - { - if (getBindingAgentPosition() != -1) - { - return true; - } - - return false; - } - - public int getBindingAgentPosition() - { - for (int i = 0; i < 5; i++) - { - if (inv[i + 1] != null && inv[i + 1].getItem() instanceof IBindingAgent) - { - return i + 1; - } - } - - return -1; - } - - public boolean containsFillingAgent() - { - if (getFillingAgentPosition() != -1) - { - return true; - } - - return false; - } - - public int getFillingAgentPosition() - { - for (int i = 0; i < 5; i++) - { - if (inv[i + 1] != null && inv[i + 1].getItem() instanceof IFillingAgent) - { - return i + 1; - } - } - - return -1; - } - - public boolean containsBlankSlate() - { - if (getBlankSlatePosition() != -1) - { - return true; - } - - return false; - } - - public int getBlankSlatePosition() - { - for (int i = 0; i < 5; i++) - { - if (inv[i + 1] != null && inv[i + 1].getItem() == ModItems.blankSlate) - { - return i + 1; - } - } - - return -1; - } - - @Override - public void updateEntity() - { - long worldTime = worldObj.getWorldTime(); - - if (worldObj.isRemote) - { - return; - } - -// if(worldTime%100==0) -// { -// if (worldObj != null) -// { -// worldObj.markBlockForUpdate(xCoord, yCoord, zCoord); -// } -// } - - if(accelerationTime > 0) - { - accelerationTime--; - } - - if (containsPotionFlask() && containsRegisteredPotionIngredient()) - { - if (containsCatalyst()) - { - if (getStackInSlot(6) == null) - { - progress++; - - if (worldTime % 4 == 0) - { - SpellHelper.sendIndexedParticleToAllAround(worldObj, xCoord, yCoord, zCoord, 20, worldObj.provider.dimensionId, 1, xCoord, yCoord, zCoord); - } - - if (progress >= progressNeeded) - { - ItemStack flaskStack = inv[this.getPotionFlaskPosition()]; - ItemStack ingredientStack = inv[this.getRegisteredPotionIngredientPosition()]; - ItemStack catalystStack = inv[this.getCatalystPosition()]; - - if (flaskStack == null || ingredientStack == null || catalystStack == null) - { - progress = 0; - - if (worldObj != null) - { - worldObj.markBlockForUpdate(xCoord, yCoord, zCoord); - } - - return; - } - - int potionID = AlchemicalPotionCreationHandler.getPotionIDForStack(ingredientStack); - int catalystLevel = ((ICatalyst) catalystStack.getItem()).getCatalystLevel(); - boolean isConcentration = ((ICatalyst) catalystStack.getItem()).isConcentration(); - - if (potionID == -1 || catalystLevel < 0) - { - progress = 0; - - if (worldObj != null) - { - worldObj.markBlockForUpdate(xCoord, yCoord, zCoord); - } - - return; - } - - if (isConcentration) - { - ((AlchemyFlask) flaskStack.getItem()).setConcentrationOfPotion(flaskStack, potionID, catalystLevel); - } else - { - ((AlchemyFlask) flaskStack.getItem()).setDurationFactorOfPotion(flaskStack, potionID, catalystLevel); - } - - //((AlchemyFlask)flaskStack.getItem()).setConcentrationOfPotion(flaskStack, Potion.regeneration.id, 2); - this.setInventorySlotContents(6, flaskStack); - this.decrStackSize(this.getPotionFlaskPosition(), 1); - this.decrStackSize(this.getCatalystPosition(), 1); - this.decrStackSize(this.getRegisteredPotionIngredientPosition(), 1); - progress = 0; - - if (worldObj != null) - { - worldObj.markBlockForUpdate(xCoord, yCoord, zCoord); - } - } - } - } else if (containsBindingAgent()) - { - if (getStackInSlot(6) == null) - { - progress++; - - if (worldTime % 4 == 0) - { - SpellHelper.sendIndexedParticleToAllAround(worldObj, xCoord, yCoord, zCoord, 20, worldObj.provider.dimensionId, 1, xCoord, yCoord, zCoord); - } - - if (progress >= progressNeeded) - { - ItemStack flaskStack = inv[this.getPotionFlaskPosition()]; - ItemStack ingredientStack = inv[this.getRegisteredPotionIngredientPosition()]; - ItemStack agentStack = inv[this.getBindingAgentPosition()]; - - if (flaskStack == null || ingredientStack == null || agentStack == null) - { - progress = 0; - - if (worldObj != null) - { - worldObj.markBlockForUpdate(xCoord, yCoord, zCoord); - } - - return; - } - - int potionEffectNumber = ((AlchemyFlask) flaskStack.getItem()).getNumberOfPotionEffects(flaskStack); - int potionID = AlchemicalPotionCreationHandler.getPotionIDForStack(ingredientStack); - int tickDuration = AlchemicalPotionCreationHandler.getPotionTickDurationForStack(ingredientStack); - float successChance = ((IBindingAgent) agentStack.getItem()).getSuccessRateForPotionNumber(potionEffectNumber); - //boolean isConcentration = ((ICatalyst)catalystStack.getItem()).isConcentration(); - - if (potionID == -1) - { - progress = 0; - - if (worldObj != null) - { - worldObj.markBlockForUpdate(xCoord, yCoord, zCoord); - } - - return; - } - - ((AlchemyFlask) flaskStack.getItem()).addPotionEffect(flaskStack, potionID, tickDuration); - - //((AlchemyFlask)flaskStack.getItem()).addPotionEffect(flaskStack, Potion.regeneration.id, 1000); - - if (successChance > worldObj.rand.nextFloat()) - { - this.setInventorySlotContents(6, flaskStack); - } else - { - worldObj.createExplosion(null, xCoord + 0.5, yCoord + 1, zCoord + 0.5, 2, false); - } - - this.decrStackSize(this.getPotionFlaskPosition(), 1); - this.decrStackSize(this.getBindingAgentPosition(), 1); - this.decrStackSize(this.getRegisteredPotionIngredientPosition(), 1); - progress = 0; - - if (worldObj != null) - { - worldObj.markBlockForUpdate(xCoord, yCoord, zCoord); - } - } - } - } - } else if (this.containsBlankSlate() && this.containsPotionFlask()) - { - if (getStackInSlot(6) == null) - { - progress++; - - if (worldTime % 4 == 0) - { - SpellHelper.sendIndexedParticleToAllAround(worldObj, xCoord, yCoord, zCoord, 20, worldObj.provider.dimensionId, 1, xCoord, yCoord, zCoord); - } - - if (progress >= progressNeeded) - { - ItemStack flaskStack = inv[this.getPotionFlaskPosition()]; - //ItemStack ingredientStack = inv[this.getRegisteredPotionIngredientPosition()]; - ItemStack blankSlate = inv[this.getBlankSlatePosition()]; - - if (flaskStack == null || blankSlate == null) - { - progress = 0; - - if (worldObj != null) - { - worldObj.markBlockForUpdate(xCoord, yCoord, zCoord); - } - - return; - } - - //boolean isConcentration = ((ICatalyst)catalystStack.getItem()).isConcentration(); - ((AlchemyFlask) flaskStack.getItem()).setIsPotionThrowable(true, flaskStack); - //((AlchemyFlask)flaskStack.getItem()).addPotionEffect(flaskStack, Potion.regeneration.id, 1000); - //if(successChance>worldObj.rand.nextFloat()) - this.setInventorySlotContents(6, flaskStack); - this.decrStackSize(this.getPotionFlaskPosition(), 1); - this.decrStackSize(this.getBlankSlatePosition(), 1); - //this.decrStackSize(this.getRegisteredPotionIngredientPosition(), 1); - progress = 0; - - if (worldObj != null) - { - worldObj.markBlockForUpdate(xCoord, yCoord, zCoord); - } - } - } - } else if (this.containsFillingAgent() && this.containsPotionFlask()) - { - if (getStackInSlot(6) == null) - { - progress++; - - if (worldTime % 4 == 0) - { - SpellHelper.sendIndexedParticleToAllAround(worldObj, xCoord, yCoord, zCoord, 20, worldObj.provider.dimensionId, 1, xCoord, yCoord, zCoord); - } - - if (progress >= progressNeeded) - { - ItemStack flaskStack = inv[this.getPotionFlaskPosition()]; - //ItemStack ingredientStack = inv[this.getRegisteredPotionIngredientPosition()]; - ItemStack fillingAgent = inv[this.getFillingAgentPosition()]; - - if (flaskStack == null || fillingAgent == null) - { - progress = 0; - - if (worldObj != null) - { - worldObj.markBlockForUpdate(xCoord, yCoord, zCoord); - } - - return; - } - - //boolean isConcentration = ((ICatalyst)catalystStack.getItem()).isConcentration(); - int potionEffects = ((AlchemyFlask) flaskStack.getItem()).getNumberOfPotionEffects(flaskStack); - int potionFillAmount = ((IFillingAgent) fillingAgent.getItem()).getFilledAmountForPotionNumber(potionEffects); - flaskStack.setItemDamage(Math.max(0, flaskStack.getItemDamage() - potionFillAmount)); - //((AlchemyFlask)flaskStack.getItem()).addPotionEffect(flaskStack, Potion.regeneration.id, 1000); - //if(successChance>worldObj.rand.nextFloat()) - this.setInventorySlotContents(6, flaskStack); - this.decrStackSize(this.getPotionFlaskPosition(), 1); - this.decrStackSize(this.getFillingAgentPosition(), 1); - //this.decrStackSize(this.getRegisteredPotionIngredientPosition(), 1); - progress = 0; - - if (worldObj != null) - { - worldObj.markBlockForUpdate(xCoord, yCoord, zCoord); - } - } - } - } - else if (this.containsPotionFlask() && this.containsCombinationCatalyst()) - { - //TODO - if (getStackInSlot(6) == null && CombinedPotionRegistry.hasCombinablePotionEffect(inv[this.getPotionFlaskPosition()])) - { - progress++; - - if (worldTime % 4 == 0) - { - SpellHelper.sendIndexedParticleToAllAround(worldObj, xCoord, yCoord, zCoord, 20, worldObj.provider.dimensionId, 1, xCoord, yCoord, zCoord); - } - - if (progress >= progressNeeded) - { - ItemStack flaskStack = inv[this.getPotionFlaskPosition()]; - //ItemStack ingredientStack = inv[this.getRegisteredPotionIngredientPosition()]; - ItemStack combinationCatalyst = inv[this.getCombinationCatalystPosition()]; - - if (flaskStack == null || combinationCatalyst == null) - { - progress = 0; - - if (worldObj != null) - { - worldObj.markBlockForUpdate(xCoord, yCoord, zCoord); - } - - return; - } - - ItemStack newFlask = CombinedPotionRegistry.applyPotionEffect(flaskStack); - if(newFlask != null) - { - this.setInventorySlotContents(6, newFlask); - this.decrStackSize(this.getPotionFlaskPosition(), 1); - this.decrStackSize(this.getCombinationCatalystPosition(), 1); - - progress = 0; - - if (worldObj != null) - { - worldObj.markBlockForUpdate(xCoord, yCoord, zCoord); - } - } - } - } - } - else - { - if (!isRecipeValid()) - { - progress = 0; - return; - } - - if (progress <= 0) - { - progress = 0; - amountUsed = this.getAmountNeeded(getStackInSlot(0)); - - if (worldObj != null) - { - worldObj.markBlockForUpdate(xCoord, yCoord, zCoord); - } - } - - int acceleration = this.getSpeedIncrease(); - - if (getStackInSlot(6) == null) - { - if (!EnergyItems.syphonWhileInContainer(getStackInSlot(0), amountUsed*acceleration)) - { - return; - } - - if (worldTime % 4 == 0) - { - SpellHelper.sendIndexedParticleToAllAround(worldObj, xCoord, yCoord, zCoord, 20, worldObj.provider.dimensionId, 1, xCoord, yCoord, zCoord); - } - - progress+=acceleration; - - if (progress >= progressNeeded) - { - progress = 0; - this.setInventorySlotContents(6, getResultingItemStack()); - - ItemStack[] composedRecipe = new ItemStack[5]; - - for (int i = 0; i < 5; i++) - { - composedRecipe[i] = inv[i + 1]; - } - - this.decrementSlots(this.getRecipeForItems(composedRecipe, inv[0])); - - if (worldObj != null) - { - worldObj.markBlockForUpdate(xCoord, yCoord, zCoord); - } - } - } else if (getStackInSlot(6).getItem() == getResultingItemStack().getItem() && getResultingItemStack().stackSize <= (getStackInSlot(6).getMaxStackSize() - getStackInSlot(6).stackSize)) - { - if (worldTime % 4 == 0) - { - SpellHelper.sendIndexedParticleToAllAround(worldObj, xCoord, yCoord, zCoord, 20, worldObj.provider.dimensionId, 1, xCoord, yCoord, zCoord); - } - - if (!EnergyItems.syphonWhileInContainer(getStackInSlot(0), amountUsed*acceleration)) - { - return; - } - - progress+=acceleration; - - if (progress >= progressNeeded) - { - progress = 0; - ItemStack result = getResultingItemStack().copy(); - result.stackSize += getStackInSlot(6).stackSize; - this.setInventorySlotContents(6, result); - - ItemStack[] composedRecipe = new ItemStack[5]; - - for (int i = 0; i < 5; i++) - { - composedRecipe[i] = inv[i + 1]; - } - - this.decrementSlots(this.getRecipeForItems(composedRecipe, inv[0])); - - if (worldObj != null) - { - worldObj.markBlockForUpdate(xCoord, yCoord, zCoord); - } - } - } - } - - //worldObj.markBlockForUpdate(xCoord, yCoord, zCoord); - } - - public void decrementSlots(ItemStack[] recipe) //TODO Fix this. This doesn't work. - { - boolean[] decrementedList = new boolean[]{false,false,false,false,false}; - - for(int i=0; i<(Math.min(recipe.length,5)); i++) - { - ItemStack decStack = recipe[i]; - - if(decStack == null) - { - continue; - } - - for(int j=0; j<5; j++) - { - ItemStack testStack = this.getStackInSlot(j+1); - - if(testStack != null && (testStack.isItemEqual(decStack) || (testStack.getItem() == decStack.getItem() && decStack.getItemDamage() == OreDictionary.WILDCARD_VALUE)) && !(decrementedList[j])) - { - if(testStack.getItem().hasContainerItem(testStack)) - { - this.inv[j+1] = testStack.getItem().getContainerItem(testStack); - }else - { - this.decrStackSize(j+1, 1); - } - - decrementedList[j] = true; - break; - } - } - } - } - - public ItemStack[] getRecipeForItems(ItemStack[] recipe, ItemStack bloodOrb) - { - if (bloodOrb == null) - { - return null; - } - - if (!(bloodOrb.getItem() instanceof IBloodOrb)) - { - return null; - } - - int bloodOrbLevel = ((IBloodOrb) bloodOrb.getItem()).getOrbLevel(); - - for (AlchemyRecipe ar : AlchemyRecipeRegistry.recipes) - { - if (ar.doesRecipeMatch(recipe, bloodOrbLevel)) - { - return ar.getRecipe(); - } - } - - return null; - } - - public int getSpeedIncrease() - { - return accelerationTime > 0 ? 5 : 1; - } - - public boolean isWorking() - { - return this.progress > 0; - } - - public void setAccelerationTime(int accelerationTime) - { - this.accelerationTime = accelerationTime; - } -} \ No newline at end of file diff --git a/src-backup/main/java/WayofTime/alchemicalWizardry/common/tileEntity/container/ContainerAltar.java b/src-backup/main/java/WayofTime/alchemicalWizardry/common/tileEntity/container/ContainerAltar.java deleted file mode 100644 index 9f926427..00000000 --- a/src-backup/main/java/WayofTime/alchemicalWizardry/common/tileEntity/container/ContainerAltar.java +++ /dev/null @@ -1,96 +0,0 @@ -package WayofTime.alchemicalWizardry.common.tileEntity.container; - -import WayofTime.alchemicalWizardry.common.tileEntity.TEAltar; -import net.minecraft.entity.player.EntityPlayer; -import net.minecraft.entity.player.InventoryPlayer; -import net.minecraft.inventory.Container; -import net.minecraft.inventory.Slot; -import net.minecraft.item.ItemStack; - -public class ContainerAltar extends Container -{ - protected TEAltar tileEntity; - - public ContainerAltar(InventoryPlayer inventoryPlayer, TEAltar te) - { - tileEntity = te; - - for (int i = 0; i < 3; i++) - { - for (int j = 0; j < 3; j++) - { - addSlotToContainer(new Slot(tileEntity, j + i * 3, 62 + j * 18, 17 + i * 18)); - } - } - - bindPlayerInventory(inventoryPlayer); - } - - @Override - public boolean canInteractWith(EntityPlayer entityplayer) - { - return tileEntity.isUseableByPlayer(entityplayer); - } - - protected void bindPlayerInventory(InventoryPlayer inventoryPlayer) - { - for (int i = 0; i < 3; i++) - { - for (int j = 0; j < 9; j++) - { - addSlotToContainer(new Slot(inventoryPlayer, j + i * 9 + 9, - 8 + j * 18, 84 + i * 18)); - } - } - - for (int i = 0; i < 9; i++) - { - addSlotToContainer(new Slot(inventoryPlayer, i, 8 + i * 18, 142)); - } - } - - @Override - public ItemStack transferStackInSlot(EntityPlayer player, int slot) - { - ItemStack stack = null; - Slot slotObject = (Slot) inventorySlots.get(slot); - - //null checks and checks if the item can be stacked (maxStackSize > 1) - if (slotObject != null && slotObject.getHasStack()) - { - ItemStack stackInSlot = slotObject.getStack(); - stack = stackInSlot.copy(); - - //merges the item into player inventory since its in the tileEntity - if (slot < 9) - { - if (!this.mergeItemStack(stackInSlot, 0, 35, true)) - { - return null; - } - } - //places it into the tileEntity is possible since its in the player inventory - else if (!this.mergeItemStack(stackInSlot, 0, 9, false)) - { - return null; - } - - if (stackInSlot.stackSize == 0) - { - slotObject.putStack(null); - } else - { - slotObject.onSlotChanged(); - } - - if (stackInSlot.stackSize == stack.stackSize) - { - return null; - } - - slotObject.onPickupFromSlot(player, stackInSlot); - } - - return stack; - } -} diff --git a/src-backup/main/java/WayofTime/alchemicalWizardry/common/tileEntity/container/ContainerTeleposer.java b/src-backup/main/java/WayofTime/alchemicalWizardry/common/tileEntity/container/ContainerTeleposer.java deleted file mode 100644 index 09104284..00000000 --- a/src-backup/main/java/WayofTime/alchemicalWizardry/common/tileEntity/container/ContainerTeleposer.java +++ /dev/null @@ -1,106 +0,0 @@ -package WayofTime.alchemicalWizardry.common.tileEntity.container; - -import WayofTime.alchemicalWizardry.common.tileEntity.TETeleposer; -import net.minecraft.entity.player.EntityPlayer; -import net.minecraft.entity.player.InventoryPlayer; -import net.minecraft.inventory.Container; -import net.minecraft.inventory.Slot; -import net.minecraft.item.ItemStack; - -public class ContainerTeleposer extends Container -{ - protected TETeleposer tileEntity; - - public ContainerTeleposer(InventoryPlayer inventoryPlayer, TETeleposer te) - { - tileEntity = te; - //the Slot constructor takes the IInventory and the slot number in that it binds to - //and the x-y coordinates it resides on-screen -// addSlotToContainer(new Slot(tileEntity, 0, 152, 110)); -// addSlotToContainer(new Slot(tileEntity, 1, 80, 18)); -// addSlotToContainer(new Slot(tileEntity, 2, 33, 52)); -// addSlotToContainer(new Slot(tileEntity, 3, 51, 110)); -// addSlotToContainer(new Slot(tileEntity, 4, 109, 110)); -// addSlotToContainer(new Slot(tileEntity, 5, 127, 52)); - addSlotToContainer(new Slot(tileEntity, 0, 80, 67)); - //commonly used vanilla code that adds the player's inventory - bindPlayerInventory(inventoryPlayer); - } - - @Override - public boolean canInteractWith(EntityPlayer player) - { - return tileEntity.isUseableByPlayer(player); - } - - protected void bindPlayerInventory(InventoryPlayer inventoryPlayer) - { - for (int i = 0; i < 3; i++) - { - for (int j = 0; j < 9; j++) - { - addSlotToContainer(new Slot(inventoryPlayer, j + i * 9 + 9, 8 + j * 18, 140 + i * 18)); - } - } - - for (int i = 0; i < 9; i++) - { - addSlotToContainer(new Slot(inventoryPlayer, i, 8 + i * 18, 198)); - } - } - - @Override - public ItemStack transferStackInSlot(EntityPlayer player, int slot) - { - ItemStack stack = null; - Slot slotObject = (Slot) inventorySlots.get(slot); - - //null checks and checks if the item can be stacked (maxStackSize > 1) - if (slotObject != null && slotObject.getHasStack()) - { - ItemStack stackInSlot = slotObject.getStack(); - stack = stackInSlot.copy(); - - if (slot == 7) - { - if (!this.mergeItemStack(stackInSlot, 7, 35, true)) - { - return null; - } - - slotObject.onSlotChange(stackInSlot, stack); - } - - //merges the item into player inventory since its in the tileEntity - if (slot < 1) - { - if (!this.mergeItemStack(stackInSlot, 7, 35, true)) - { - return null; - } - } - //places it into the tileEntity is possible since its in the player inventory - else if (!this.mergeItemStack(stackInSlot, 0, 0, false)) - { - return null; - } - - if (stackInSlot.stackSize == 0) - { - slotObject.putStack(null); - } else - { - slotObject.onSlotChanged(); - } - - if (stackInSlot.stackSize == stack.stackSize) - { - return null; - } - - slotObject.onPickupFromSlot(player, stackInSlot); - } - - return stack; - } -} \ No newline at end of file diff --git a/src-backup/main/java/WayofTime/alchemicalWizardry/common/tileEntity/container/ContainerWritingTable.java b/src-backup/main/java/WayofTime/alchemicalWizardry/common/tileEntity/container/ContainerWritingTable.java deleted file mode 100644 index 03c42933..00000000 --- a/src-backup/main/java/WayofTime/alchemicalWizardry/common/tileEntity/container/ContainerWritingTable.java +++ /dev/null @@ -1,104 +0,0 @@ -package WayofTime.alchemicalWizardry.common.tileEntity.container; - -import net.minecraft.entity.player.EntityPlayer; -import net.minecraft.entity.player.InventoryPlayer; -import net.minecraft.inventory.Container; -import net.minecraft.inventory.Slot; -import net.minecraft.item.ItemStack; -import WayofTime.alchemicalWizardry.api.items.interfaces.IBloodOrb; -import WayofTime.alchemicalWizardry.common.tileEntity.TEWritingTable; - -public class ContainerWritingTable extends Container -{ - protected TEWritingTable tileEntity; - - public ContainerWritingTable(InventoryPlayer inventoryPlayer, TEWritingTable te) - { - tileEntity = te; - //the Slot constructor takes the IInventory and the slot number in that it binds to - //and the x-y coordinates it resides on-screen - addSlotToContainer(new Slot(tileEntity, 0, 152, 110)); - addSlotToContainer(new Slot(tileEntity, 1, 80, 18)); - addSlotToContainer(new Slot(tileEntity, 2, 33, 52)); - addSlotToContainer(new Slot(tileEntity, 3, 51, 110)); - addSlotToContainer(new Slot(tileEntity, 4, 109, 110)); - addSlotToContainer(new Slot(tileEntity, 5, 127, 52)); - addSlotToContainer(new Slot(tileEntity, 6, 80, 67)); - //commonly used vanilla code that adds the player's inventory - bindPlayerInventory(inventoryPlayer); - } - - @Override - public boolean canInteractWith(EntityPlayer player) - { - return tileEntity.isUseableByPlayer(player); - } - - protected void bindPlayerInventory(InventoryPlayer inventoryPlayer) - { - for (int i = 0; i < 3; i++) - { - for (int j = 0; j < 9; j++) - { - addSlotToContainer(new Slot(inventoryPlayer, j + i * 9 + 9, 8 + j * 18, 140 + i * 18)); - } - } - - for (int i = 0; i < 9; i++) - { - addSlotToContainer(new Slot(inventoryPlayer, i, 8 + i * 18, 198)); - } - } - - @Override - public ItemStack transferStackInSlot(EntityPlayer player, int slot) - { - ItemStack stack = null; - Slot slotObject = (Slot) inventorySlots.get(slot); - - //null checks and checks if the item can be stacked (maxStackSize > 1) - if (slotObject != null && slotObject.getHasStack()) - { - ItemStack stackInSlot = slotObject.getStack(); - stack = stackInSlot.copy(); - - //merges the item into player inventory since its in the tileEntity - if (slot <= 6) - { - if (!this.mergeItemStack(stackInSlot, 7, 43, true)) - { - return null; - } - } - else if(stack.getItem() instanceof IBloodOrb) - { - if (!this.mergeItemStack(stackInSlot, 0, 1, false)) - { - return null; - } - } - //places it into the tileEntity is possible since its in the player inventory - else if (!this.mergeItemStack(stackInSlot, 1, 6, false)) - { - return null; - } - - if (stackInSlot.stackSize == 0) - { - slotObject.putStack(null); - } else - { - slotObject.onSlotChanged(); - } - - if (stackInSlot.stackSize == stack.stackSize) - { - return null; - } - - slotObject.onPickupFromSlot(player, stackInSlot); - } - - return stack; - } -} \ No newline at end of file diff --git a/src-backup/main/java/WayofTime/alchemicalWizardry/common/tileEntity/gui/GuiHandler.java b/src-backup/main/java/WayofTime/alchemicalWizardry/common/tileEntity/gui/GuiHandler.java deleted file mode 100644 index 2c50234a..00000000 --- a/src-backup/main/java/WayofTime/alchemicalWizardry/common/tileEntity/gui/GuiHandler.java +++ /dev/null @@ -1,73 +0,0 @@ -package WayofTime.alchemicalWizardry.common.tileEntity.gui; - -import WayofTime.alchemicalWizardry.common.tileEntity.TETeleposer; -import WayofTime.alchemicalWizardry.common.tileEntity.TEWritingTable; -import WayofTime.alchemicalWizardry.common.tileEntity.container.ContainerTeleposer; -import WayofTime.alchemicalWizardry.common.tileEntity.container.ContainerWritingTable; -import cpw.mods.fml.common.network.IGuiHandler; -import net.minecraft.entity.player.EntityPlayer; -import net.minecraft.tileentity.TileEntity; -import net.minecraft.world.World; - -public class GuiHandler implements IGuiHandler -{ - //returns an instance of the Container you made earlier - @Override - public Object getServerGuiElement(int id, EntityPlayer player, World world, int x, int y, int z) - { - TileEntity tileEntity; - - switch (id) - { - case 0: - tileEntity = world.getTileEntity(x, y, z); - - if (tileEntity instanceof TEWritingTable) - { - return new ContainerWritingTable(player.inventory, (TEWritingTable) tileEntity); - } - - case 1: - tileEntity = world.getTileEntity(x, y, z); - - if (tileEntity instanceof TETeleposer) - { - return new ContainerTeleposer(player.inventory, (TETeleposer) tileEntity); - } - } - - return null; - } - - //returns an instance of the Gui you made earlier - @Override - public Object getClientGuiElement(int id, EntityPlayer player, World world, int x, int y, int z) - { - TileEntity tileEntity; - - switch (id) - { - case 0: - tileEntity = world.getTileEntity(x, y, z); - - if (tileEntity instanceof TEWritingTable) - { - return new GuiWritingTable(player.inventory, (TEWritingTable) tileEntity); - } - - break; - - case 1: - tileEntity = world.getTileEntity(x, y, z); - - if (tileEntity instanceof TETeleposer) - { - return new GuiTeleposer(player.inventory, (TETeleposer) tileEntity); - } - - break; - } - - return null; - } -} \ No newline at end of file diff --git a/src-backup/main/java/WayofTime/alchemicalWizardry/common/tileEntity/gui/GuiTeleposer.java b/src-backup/main/java/WayofTime/alchemicalWizardry/common/tileEntity/gui/GuiTeleposer.java deleted file mode 100644 index a6d5f58a..00000000 --- a/src-backup/main/java/WayofTime/alchemicalWizardry/common/tileEntity/gui/GuiTeleposer.java +++ /dev/null @@ -1,47 +0,0 @@ -package WayofTime.alchemicalWizardry.common.tileEntity.gui; - -import net.minecraft.client.gui.inventory.GuiBrewingStand; -import net.minecraft.client.gui.inventory.GuiContainer; -import net.minecraft.entity.player.InventoryPlayer; -import net.minecraft.util.ResourceLocation; -import net.minecraft.util.StatCollector; - -import org.lwjgl.opengl.GL11; - -import WayofTime.alchemicalWizardry.common.tileEntity.TETeleposer; -import WayofTime.alchemicalWizardry.common.tileEntity.container.ContainerTeleposer; - -public class GuiTeleposer extends GuiContainer -{ - public GuiTeleposer(InventoryPlayer inventoryPlayer, TETeleposer tileEntity) - { - //the container is instanciated and passed to the superclass for handling - super(new ContainerTeleposer(inventoryPlayer, tileEntity)); - xSize = 176; - ySize = 222; - } - - @Override - protected void drawGuiContainerForegroundLayer(int param1, int param2) - { - //draw text and stuff here - //the parameters for drawString are: string, x, y, color - fontRendererObj.drawString("Teleposer", 8, 6, 4210752); - //draws "Inventory" or your regional equivalent - fontRendererObj.drawString(StatCollector.translateToLocal("container.inventory"), 8, 130, 4210752); - } - - @Override - protected void drawGuiContainerBackgroundLayer(float par1, int par2, int par3) - { - //draw your Gui here, only thing you need to change is the path - //ResourceLocation texture = mc.renderEngine.getTexture("/gui/trap.png"); - ResourceLocation test = new ResourceLocation("alchemicalwizardry", "gui/Teleposer.png"); - GL11.glColor4f(1.0F, 1.0F, 1.0F, 1.0F); - this.mc.getTextureManager().bindTexture(test); - int x = (width - xSize) / 2; - int y = (height - ySize) / 2; - this.drawTexturedModalRect(x, y, 0, 0, xSize, ySize); - GuiBrewingStand d; - } -} \ No newline at end of file diff --git a/src-backup/main/java/WayofTime/alchemicalWizardry/common/tileEntity/gui/GuiWritingTable.java b/src-backup/main/java/WayofTime/alchemicalWizardry/common/tileEntity/gui/GuiWritingTable.java deleted file mode 100644 index 53a74f19..00000000 --- a/src-backup/main/java/WayofTime/alchemicalWizardry/common/tileEntity/gui/GuiWritingTable.java +++ /dev/null @@ -1,45 +0,0 @@ -package WayofTime.alchemicalWizardry.common.tileEntity.gui; - -import WayofTime.alchemicalWizardry.common.tileEntity.TEWritingTable; -import WayofTime.alchemicalWizardry.common.tileEntity.container.ContainerWritingTable; -import net.minecraft.client.gui.inventory.GuiBrewingStand; -import net.minecraft.client.gui.inventory.GuiContainer; -import net.minecraft.entity.player.InventoryPlayer; -import net.minecraft.util.ResourceLocation; -import net.minecraft.util.StatCollector; -import org.lwjgl.opengl.GL11; - -public class GuiWritingTable extends GuiContainer -{ - public GuiWritingTable(InventoryPlayer inventoryPlayer, TEWritingTable tileEntity) - { - //the container is instanciated and passed to the superclass for handling - super(new ContainerWritingTable(inventoryPlayer, tileEntity)); - xSize = 176; - ySize = 222; - } - - @Override - protected void drawGuiContainerForegroundLayer(int param1, int param2) - { - //draw text and stuff here - //the parameters for drawString are: string, x, y, color - fontRendererObj.drawString("Alchemic Chemistry Set", 8, 6, 4210752); - //draws "Inventory" or your regional equivalent - fontRendererObj.drawString(StatCollector.translateToLocal("container.inventory"), 8, 130, 4210752); - } - - @Override - protected void drawGuiContainerBackgroundLayer(float par1, int par2, int par3) - { - //draw your Gui here, only thing you need to change is the path - //ResourceLocation texture = mc.renderEngine.getTexture("/gui/trap.png"); - ResourceLocation test = new ResourceLocation("alchemicalwizardry", "gui/WritingTable.png"); - GL11.glColor4f(1.0F, 1.0F, 1.0F, 1.0F); - this.mc.getTextureManager().bindTexture(test); - int x = (width - xSize) / 2; - int y = (height - ySize) / 2; - this.drawTexturedModalRect(x, y, 0, 0, xSize, ySize); - GuiBrewingStand d; - } -} \ No newline at end of file diff --git a/src-backup/main/java/joshie/alchemicalWizardy/ShapedBloodOrbRecipe.java b/src-backup/main/java/joshie/alchemicalWizardy/ShapedBloodOrbRecipe.java deleted file mode 100644 index f508fe6a..00000000 --- a/src-backup/main/java/joshie/alchemicalWizardy/ShapedBloodOrbRecipe.java +++ /dev/null @@ -1,227 +0,0 @@ -package joshie.alchemicalWizardy; - -import java.util.ArrayList; -import java.util.HashMap; -import java.util.Iterator; -import java.util.Map; -import java.util.Map.Entry; - -import net.minecraft.block.Block; -import net.minecraft.inventory.InventoryCrafting; -import net.minecraft.item.Item; -import net.minecraft.item.ItemStack; -import net.minecraft.item.crafting.IRecipe; -import net.minecraft.item.crafting.ShapedRecipes; -import net.minecraft.world.World; -import net.minecraftforge.oredict.OreDictionary; -import WayofTime.alchemicalWizardry.api.items.interfaces.IBloodOrb; - -/** Shaped Blood Orb Recipe Handler by joshie **/ -public class ShapedBloodOrbRecipe implements IRecipe { - private static final int MAX_CRAFT_GRID_WIDTH = 3; - private static final int MAX_CRAFT_GRID_HEIGHT = 3; - - private ItemStack output = null; - private Object[] input = null; - public int width = 0; - public int height = 0; - private boolean mirrored = true; - - public ShapedBloodOrbRecipe(Block result, Object... recipe) { - this(new ItemStack(result), recipe); - } - - public ShapedBloodOrbRecipe(Item result, Object... recipe) { - this(new ItemStack(result), recipe); - } - - public ShapedBloodOrbRecipe(ItemStack result, Object... recipe) { - output = result.copy(); - - 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 IBloodOrb || (in instanceof ItemStack && ((ItemStack)in).getItem() instanceof IBloodOrb)) { //If the item is an instanceof IBloodOrb then save the level of the orb - if(in instanceof ItemStack) itemMap.put(chr, (Integer)(((IBloodOrb)((ItemStack)in).getItem()).getOrbLevel())); - else itemMap.put(chr, (Integer)(((IBloodOrb)in).getOrbLevel())); - } else 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); - } - } - - ShapedBloodOrbRecipe(ShapedRecipes recipe, Map replacements) { - output = recipe.getRecipeOutput(); - width = recipe.recipeWidth; - height = recipe.recipeHeight; - - input = new Object[recipe.recipeItems.length]; - - for (int i = 0; i < input.length; i++) { - ItemStack ingred = recipe.recipeItems[i]; - - if (ingred == null) - continue; - - input[i] = recipe.recipeItems[i]; - - for (Entry replace : replacements.entrySet()) { - if (OreDictionary.itemMatches(replace.getKey(), ingred, true)) { - input[i] = OreDictionary.getOres(replace.getValue()); - break; - } - } - } - } - - @Override - public ItemStack getCraftingResult(InventoryCrafting var1) { - return output.copy(); - } - - @Override - public int getRecipeSize() { - return input.length; - } - - @Override - public ItemStack getRecipeOutput() { - return output; - } - - @Override - public boolean matches(InventoryCrafting inv, World world) { - 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; - } - - @SuppressWarnings("unchecked") - private boolean checkMatch(InventoryCrafting 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 = inv.getStackInRowAndColumn(x, y); - //If target is integer, then we should be check the blood orb value of the item instead - if(target instanceof Integer) { - if(slot != null && slot.getItem() instanceof IBloodOrb) { - IBloodOrb orb = (IBloodOrb) slot.getItem(); - if(orb.getOrbLevel() < (Integer)target) { - return false; - } - } else return false; - } else if (target instanceof ItemStack) { - if (!OreDictionary.itemMatches((ItemStack) target, slot, false)) { - return false; - } - } else if (target instanceof ArrayList) { - boolean matched = false; - - Iterator itr = ((ArrayList) target).iterator(); - while (itr.hasNext() && !matched) { - matched = OreDictionary.itemMatches(itr.next(), slot, false); - } - - if (!matched) { - return false; - } - } else if (target == null && slot != null) { - return false; - } - } - } - - return true; - } - - public ShapedBloodOrbRecipe setMirrored(boolean mirror) { - mirrored = mirror; - return this; - } - - public Object[] getInput() { - return this.input; - } -} \ No newline at end of file diff --git a/src-backup/main/java/joshie/alchemicalWizardy/ShapelessBloodOrbRecipe.java b/src-backup/main/java/joshie/alchemicalWizardy/ShapelessBloodOrbRecipe.java deleted file mode 100644 index f33f9158..00000000 --- a/src-backup/main/java/joshie/alchemicalWizardy/ShapelessBloodOrbRecipe.java +++ /dev/null @@ -1,140 +0,0 @@ -package joshie.alchemicalWizardy; - -import java.util.ArrayList; -import java.util.Iterator; -import java.util.List; -import java.util.Map; -import java.util.Map.Entry; - -import net.minecraft.block.Block; -import net.minecraft.inventory.InventoryCrafting; -import net.minecraft.item.Item; -import net.minecraft.item.ItemStack; -import net.minecraft.item.crafting.IRecipe; -import net.minecraft.item.crafting.ShapelessRecipes; -import net.minecraft.world.World; -import net.minecraftforge.oredict.OreDictionary; -import WayofTime.alchemicalWizardry.api.items.interfaces.IBloodOrb; - -/** Shapeless Blood Orb Recipe Handler by joshie **/ -public class ShapelessBloodOrbRecipe implements IRecipe { - private ItemStack output = null; - private ArrayList input = new ArrayList(); - - public ShapelessBloodOrbRecipe(Block result, Object... recipe) { - this(new ItemStack(result), recipe); - } - - public ShapelessBloodOrbRecipe(Item result, Object... recipe) { - this(new ItemStack(result), recipe); - } - - public ShapelessBloodOrbRecipe(ItemStack result, Object... recipe) { - output = result.copy(); - for (Object in : recipe) { - if (in instanceof ItemStack) { - input.add(((ItemStack) in).copy()); - } else if (in instanceof IBloodOrb) { //If the item is an instanceof IBloodOrb then save the level of the orb - input.add((Integer)(((IBloodOrb)in).getOrbLevel())); - } 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); - } - } - } - - @SuppressWarnings("unchecked") - ShapelessBloodOrbRecipe(ShapelessRecipes recipe, Map replacements) { - output = recipe.getRecipeOutput(); - - for (ItemStack ingred : ((List) recipe.recipeItems)) { - Object finalObj = ingred; - for (Entry replace : replacements.entrySet()) { - if (OreDictionary.itemMatches(replace.getKey(), ingred, false)) { - finalObj = OreDictionary.getOres(replace.getValue()); - break; - } - } - input.add(finalObj); - } - } - - @Override - public int getRecipeSize() { - return input.size(); - } - - @Override - public ItemStack getRecipeOutput() { - return output; - } - - @Override - public ItemStack getCraftingResult(InventoryCrafting var1) { - return output.copy(); - } - - @SuppressWarnings("unchecked") - @Override - public boolean matches(InventoryCrafting var1, World world) { - ArrayList required = new ArrayList(input); - - for (int x = 0; x < var1.getSizeInventory(); 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 target is integer, then we should be check the blood orb value of the item instead - if(next instanceof Integer) { - if(slot != null && slot.getItem() instanceof IBloodOrb) { - IBloodOrb orb = (IBloodOrb) slot.getItem(); - if(orb.getOrbLevel() < (Integer)next) { - return false; - } - } else return false; - } else if (next instanceof ItemStack) { - match = OreDictionary.itemMatches((ItemStack) next, slot, false); - } else if (next instanceof ArrayList) { - Iterator itr = ((ArrayList) next).iterator(); - while (itr.hasNext() && !match) { - match = OreDictionary.itemMatches(itr.next(), slot, false); - } - } - - if (match) { - inRecipe = true; - required.remove(next); - break; - } - } - - if (!inRecipe) { - return false; - } - } - } - - return required.isEmpty(); - } - - public ArrayList getInput() { - return this.input; - } -} \ No newline at end of file diff --git a/src-backup/main/java/joshie/alchemicalWizardy/nei/NEIAlchemyRecipeHandler.java b/src-backup/main/java/joshie/alchemicalWizardy/nei/NEIAlchemyRecipeHandler.java deleted file mode 100644 index 64ce0980..00000000 --- a/src-backup/main/java/joshie/alchemicalWizardy/nei/NEIAlchemyRecipeHandler.java +++ /dev/null @@ -1,154 +0,0 @@ -package joshie.alchemicalWizardy.nei; - -import static joshie.alchemicalWizardy.nei.NEIConfig.bloodOrbs; - -import java.util.ArrayList; -import java.util.List; - -import net.minecraft.client.Minecraft; -import net.minecraft.item.Item; -import net.minecraft.item.ItemStack; -import net.minecraft.util.ResourceLocation; -import net.minecraft.util.StatCollector; -import WayofTime.alchemicalWizardry.api.alchemy.AlchemyRecipe; -import WayofTime.alchemicalWizardry.api.alchemy.AlchemyRecipeRegistry; -import WayofTime.alchemicalWizardry.api.items.interfaces.IBloodOrb; -import codechicken.nei.ItemList; -import codechicken.nei.NEIServerUtils; -import codechicken.nei.PositionedStack; -import codechicken.nei.recipe.TemplateRecipeHandler; -import codechicken.nei.recipe.TemplateRecipeHandler.CachedRecipe; - -public class NEIAlchemyRecipeHandler extends TemplateRecipeHandler { - public class CachedAlchemyRecipe extends CachedRecipe { - public class BloodOrbs { - public PositionedStack stack; - public BloodOrbs(ItemStack orb) { - this.stack = new PositionedStack(orb, 136, 47, false); - } - } - - ArrayList orbs; - PositionedStack output; - List inputs; - int lp; - - public CachedAlchemyRecipe(AlchemyRecipe recipe, ItemStack orb) { - this(recipe); - this.orbs = new ArrayList(); - orbs.add(new BloodOrbs(orb)); - } - - public CachedAlchemyRecipe(AlchemyRecipe recipe) { - List inputs = new ArrayList(); - ItemStack[] stacks = recipe.getRecipe(); - if(stacks.length > 0) - inputs.add(new PositionedStack(stacks[0], 76, 3)); - if(stacks.length > 1) - inputs.add(new PositionedStack(stacks[1], 51, 19)); - if(stacks.length > 2) - inputs.add(new PositionedStack(stacks[2], 101, 19)); - if(stacks.length > 3) - inputs.add(new PositionedStack(stacks[3], 64, 47)); - if(stacks.length > 4) - inputs.add(new PositionedStack(stacks[4], 88, 47)); - this.inputs = inputs; - this.output = new PositionedStack(recipe.getResult(), 76, 25); - this.lp = recipe.getAmountNeeded() * 100; - this.orbs = new ArrayList(); - for(Item orb: bloodOrbs) { - if(((IBloodOrb)orb).getOrbLevel() >= recipe.getOrbLevel()) { - orbs.add(new BloodOrbs(new ItemStack(orb))); - } - } - } - - @Override - public List getIngredients() { - return inputs; - } - - @Override - public PositionedStack getResult() { - return output; - } - - @Override - public PositionedStack getOtherStack() { - if(orbs == null || orbs.size() <= 0) return null; - return orbs.get((cycleticks/48) % orbs.size()).stack; - } - } - - @Override - public TemplateRecipeHandler newInstance() { - for(ItemStack item : ItemList.items) { - if(item != null && item.getItem() instanceof IBloodOrb) { - bloodOrbs.add(item.getItem()); - } - } - - return super.newInstance(); - } - - @Override - public void loadCraftingRecipes(ItemStack result) { - for(AlchemyRecipe recipe: AlchemyRecipeRegistry.recipes) { - ItemStack output = recipe.getResult(); - if(NEIServerUtils.areStacksSameTypeCrafting(result, recipe.getResult())) { - arecipes.add(new CachedAlchemyRecipe(recipe)); - } - } - } - - @Override - public void loadUsageRecipes(ItemStack ingredient) { - if(ingredient.getItem() instanceof IBloodOrb) { - for(AlchemyRecipe recipe: AlchemyRecipeRegistry.recipes) { - if(((IBloodOrb)ingredient.getItem()).getOrbLevel() >= recipe.getOrbLevel()) { - arecipes.add(new CachedAlchemyRecipe(recipe, ingredient)); - } - } - } else { - for(AlchemyRecipe recipe: AlchemyRecipeRegistry.recipes) { - ItemStack[] stacks = recipe.getRecipe(); - for(ItemStack stack: stacks) { - if(NEIServerUtils.areStacksSameTypeCrafting(stack, ingredient)) { - arecipes.add(new CachedAlchemyRecipe(recipe)); - break; - } - } - } - } - } - - @Override - public void drawExtras(int id) { - CachedAlchemyRecipe cache = (CachedAlchemyRecipe) arecipes.get(id); - Minecraft.getMinecraft().fontRenderer.drawString("\u00a77" + cache.lp + "LP", getLPX(cache.lp), 34, 0); - } - - public int getLPX(int lp) { - if(lp < 10) - return 122; - else if (lp < 100) - return 122; - else if (lp < 1000) - return 130; - else if (lp < 10000) - return 127; - else if (lp < 100000) - return 124; - return 122; - } - - @Override - public String getRecipeName() { - return StatCollector.translateToLocal("tile.blockWritingTable.name"); - } - - @Override - public String getGuiTexture() { - return new ResourceLocation("alchemicalwizardry", "gui/nei/alchemy.png").toString(); - } -} diff --git a/src-backup/main/java/joshie/alchemicalWizardy/nei/NEIAltarRecipeHandler.java b/src-backup/main/java/joshie/alchemicalWizardy/nei/NEIAltarRecipeHandler.java deleted file mode 100644 index 38b97903..00000000 --- a/src-backup/main/java/joshie/alchemicalWizardy/nei/NEIAltarRecipeHandler.java +++ /dev/null @@ -1,182 +0,0 @@ -package joshie.alchemicalWizardy.nei; - -import java.awt.Dimension; -import java.awt.Point; -import java.awt.Rectangle; -import java.lang.reflect.Field; -import java.util.List; - -import net.minecraft.client.Minecraft; -import net.minecraft.client.gui.ScaledResolution; -import net.minecraft.item.ItemStack; -import net.minecraft.util.ResourceLocation; -import net.minecraft.util.StatCollector; - -import org.lwjgl.input.Mouse; - -import WayofTime.alchemicalWizardry.api.altarRecipeRegistry.AltarRecipe; -import WayofTime.alchemicalWizardry.api.altarRecipeRegistry.AltarRecipeRegistry; -import codechicken.nei.NEIServerUtils; -import codechicken.nei.PositionedStack; -import codechicken.nei.recipe.GuiRecipe; -import codechicken.nei.recipe.TemplateRecipeHandler; - -public class NEIAltarRecipeHandler extends TemplateRecipeHandler { - public class CachedAltarRecipe extends CachedRecipe { - PositionedStack input; - PositionedStack output; - int tier, lp_amount, consumption, drain; - - public CachedAltarRecipe(AltarRecipe recipe) { - input = new PositionedStack(recipe.requiredItem, 38, 2, false); - output = new PositionedStack(recipe.result, 132, 32, false); - tier = recipe.minTier; - lp_amount = recipe.liquidRequired; - consumption = recipe.consumptionRate; - drain = recipe.drainRate; - } - - @Override - public PositionedStack getIngredient() { - return input; - } - - @Override - public PositionedStack getResult() { - return output; - } - } - - @Override - public void loadCraftingRecipes(String outputId, Object... results) { - if (outputId.equals("altarrecipes") && getClass() == NEIAltarRecipeHandler.class) { - for(AltarRecipe recipe: AltarRecipeRegistry.altarRecipes) { - if(recipe.result != null) arecipes.add(new CachedAltarRecipe(recipe)); - } - } else { - super.loadCraftingRecipes(outputId, results); - } - } - - @Override - public void loadCraftingRecipes(ItemStack result) { - for(AltarRecipe recipe: AltarRecipeRegistry.altarRecipes) { - if(NEIServerUtils.areStacksSameTypeCrafting(recipe.result, result)) { - if(recipe.result != null) arecipes.add(new CachedAltarRecipe(recipe)); - } - } - } - - @Override - public void loadUsageRecipes(ItemStack ingredient) { - for(AltarRecipe recipe: AltarRecipeRegistry.altarRecipes) { - if(NEIServerUtils.areStacksSameTypeCrafting(recipe.requiredItem, ingredient)) { - if(recipe.result != null) arecipes.add(new CachedAltarRecipe(recipe)); - } - } - } - - //Mouse Position helper - public Point getMouse(int width, int height) { - Point mousepos = this.getMousePosition(); - int guiLeft = (width - 176) / 2; - int guiTop = (height - 166) / 2; - Point relMouse = new Point(mousepos.x - guiLeft, mousepos.y - guiTop); - return relMouse; - } - - //width helper, getting width normal way hates me on compile - public int getGuiWidth(GuiRecipe gui) { - try { - Field f = gui.getClass().getField("width"); - return (Integer) f.get(gui); - } catch (NoSuchFieldException e) { - try { - Field f = gui.getClass().getField("field_146294_l"); - return (Integer) f.get(gui); - } catch (Exception e2) { - return 0; - } - } catch (Exception e) { - e.printStackTrace(); - return 0; - } - } - - //height helper, getting height normal way hates me on compile - public int getGuiHeight(GuiRecipe gui) { - try { - Field f = gui.getClass().getField("height"); - return (Integer) f.get(gui); - } catch (NoSuchFieldException e) { - try { - Field f = gui.getClass().getField("field_146295_m"); - return (Integer) f.get(gui); - } catch (Exception e2) { - return 0; - } - } catch (Exception e) { - e.printStackTrace(); - return 0; - } - } - - @Override - public void drawExtras(int id) { - CachedAltarRecipe recipe = (CachedAltarRecipe) arecipes.get(id); - Minecraft.getMinecraft().fontRenderer.drawString("\u00a77" + StatCollector.translateToLocal("bm.string.tier") + ": " + recipe.tier, 78, 5, 0); - Minecraft.getMinecraft().fontRenderer.drawString("\u00a77" + "LP: " + recipe.lp_amount, 78, 15, 0); - } - - @Override - public List handleTooltip(GuiRecipe gui, List currenttip, int id) { - currenttip = super.handleTooltip(gui, currenttip, id); - Point mouse = getMouse(getGuiWidth(gui), getGuiHeight(gui)); - CachedAltarRecipe recipe = (CachedAltarRecipe) arecipes.get(id); - int yLow = id % 2 == 0 ? 38 : 102; - int yHigh = id % 2 == 0 ? 72 : 136; - if(mouse.x >= 19 && mouse.x <= 80 && mouse.y >= yLow && mouse.y <= yHigh) { - currenttip.add(StatCollector.translateToLocal("bm.string.consume") + ": " + recipe.consumption + "LP/t"); - currenttip.add(StatCollector.translateToLocal("bm.string.drain") + ": " + recipe.drain + "LP/t"); - } - - return currenttip; - } - - @Override - public String getOverlayIdentifier() { - return "altarrecipes"; - } - - @Override - public void loadTransferRects() { - transferRects.add(new RecipeTransferRect(new Rectangle(90, 32, 22, 16), "altarrecipes")); - } - - @Override - public String getRecipeName() { - return " " + StatCollector.translateToLocal("tile.bloodAltar.name"); - } - - @Override - public String getGuiTexture() { - return new ResourceLocation("alchemicalwizardry", "gui/nei/altar.png").toString(); - } - - public static Point getMousePosition() { - Dimension size = displaySize(); - Dimension res = displayRes(); - return new Point(Mouse.getX() * size.width / res.width, size.height - Mouse.getY() * size.height / res.height - 1); - } - - public static Dimension displaySize() { - Minecraft mc = Minecraft.getMinecraft(); - ScaledResolution res = new ScaledResolution(mc, mc.displayWidth, mc.displayHeight); - return new Dimension(res.getScaledWidth(), res.getScaledHeight()); - } - - public static Dimension displayRes() { - Minecraft mc = Minecraft.getMinecraft(); - return new Dimension(mc.displayWidth, mc.displayHeight); - } -} diff --git a/src-backup/main/java/joshie/alchemicalWizardy/nei/NEIBloodOrbShapedHandler.java b/src-backup/main/java/joshie/alchemicalWizardy/nei/NEIBloodOrbShapedHandler.java deleted file mode 100644 index fafac295..00000000 --- a/src-backup/main/java/joshie/alchemicalWizardy/nei/NEIBloodOrbShapedHandler.java +++ /dev/null @@ -1,139 +0,0 @@ -package joshie.alchemicalWizardy.nei; - -import java.awt.Rectangle; -import java.util.ArrayList; -import java.util.List; - -import joshie.alchemicalWizardy.ShapedBloodOrbRecipe; -import net.minecraft.item.Item; -import net.minecraft.item.ItemStack; -import net.minecraft.item.crafting.CraftingManager; -import net.minecraft.item.crafting.IRecipe; -import net.minecraft.util.StatCollector; -import WayofTime.alchemicalWizardry.api.items.interfaces.IBloodOrb; -import codechicken.nei.NEIServerUtils; -import codechicken.nei.PositionedStack; -import codechicken.nei.recipe.ShapedRecipeHandler; - -/** Extended from the default recipe handler **/ -public class NEIBloodOrbShapedHandler extends ShapedRecipeHandler { - public class CachedBloodOrbRecipe extends CachedShapedRecipe { - public CachedBloodOrbRecipe(int width, int height, Object[] items, ItemStack out) { - super(width, height, items, out); - } - - @Override - public void setIngredients(int width, int height, Object[] items) { - for (int x = 0; x < width; x++) { - for (int y = 0; y < height; y++) { - if (items[y * width + x] == null) - continue; - - Object o = items[y * width + x]; - if (o instanceof ItemStack) { - PositionedStack stack = new PositionedStack(items[y * width + x], 25 + x * 18, 6 + y * 18, false); - stack.setMaxSize(1); - ingredients.add(stack); - } else if (o instanceof Integer) { - ArrayList orbs = new ArrayList(); - for (Item item : NEIConfig.bloodOrbs) { - if (((IBloodOrb) item).getOrbLevel() >= (Integer) o) { - orbs.add(new ItemStack(item)); - } - } - - PositionedStack stack = new PositionedStack(orbs, 25 + x * 18, 6 + y * 18, false); - stack.setMaxSize(1); - ingredients.add(stack); - } - } - } - } - } - - @Override - public void loadCraftingRecipes(String outputId, Object... results) { - if (outputId.equals("orbCrafting") && getClass() == NEIBloodOrbShapedHandler.class) { - for (IRecipe irecipe : (List) CraftingManager.getInstance().getRecipeList()) { - if (irecipe instanceof ShapedBloodOrbRecipe) { - CachedBloodOrbRecipe recipe = forgeShapedRecipe((ShapedBloodOrbRecipe) irecipe); - if (recipe == null) - continue; - - recipe.computeVisuals(); - arecipes.add(recipe); - } - } - } else { - super.loadCraftingRecipes(outputId, results); - } - } - - @Override - public void loadCraftingRecipes(ItemStack result) { - for (IRecipe irecipe : (List) CraftingManager.getInstance().getRecipeList()) { - if (irecipe instanceof ShapedBloodOrbRecipe) { - CachedBloodOrbRecipe recipe = forgeShapedRecipe((ShapedBloodOrbRecipe) irecipe); - if (recipe == null || !NEIServerUtils.areStacksSameTypeCrafting(recipe.result.item, result)) - continue; - - recipe.computeVisuals(); - arecipes.add(recipe); - } - } - } - - @Override - public void loadUsageRecipes(ItemStack ingredient) { - for (IRecipe irecipe : (List) CraftingManager.getInstance().getRecipeList()) { - CachedShapedRecipe recipe = null; - if (irecipe instanceof ShapedBloodOrbRecipe) - recipe = forgeShapedRecipe((ShapedBloodOrbRecipe) irecipe); - - if (recipe == null || !recipe.contains(recipe.ingredients, ingredient.getItem())) - continue; - - recipe.computeVisuals(); - if (recipe.contains(recipe.ingredients, ingredient)) { - recipe.setIngredientPermutation(recipe.ingredients, ingredient); - arecipes.add(recipe); - } - } - } - - private CachedBloodOrbRecipe forgeShapedRecipe(ShapedBloodOrbRecipe recipe) { - int width; - int height; - try { - width = recipe.width; - height = recipe.height; - } catch (Exception e) { - e.printStackTrace(); - return null; - } - - Object[] items = recipe.getInput(); - for (Object item : items) - if (item instanceof List && ((List) item).isEmpty())// ore - // handler, - // no ores - return null; - - return new CachedBloodOrbRecipe(width, height, items, recipe.getRecipeOutput()); - } - - @Override - public void loadTransferRects() { - transferRects.add(new RecipeTransferRect(new Rectangle(84, 23, 24, 18), "orbCrafting")); - } - - @Override - public String getOverlayIdentifier() { - return "orbCrafting"; - } - - @Override - public String getRecipeName() { - return StatCollector.translateToLocal("bm.string.crafting.orb.shaped"); - } -} diff --git a/src-backup/main/java/joshie/alchemicalWizardy/nei/NEIBloodOrbShapelessHandler.java b/src-backup/main/java/joshie/alchemicalWizardy/nei/NEIBloodOrbShapelessHandler.java deleted file mode 100644 index a82a6b35..00000000 --- a/src-backup/main/java/joshie/alchemicalWizardy/nei/NEIBloodOrbShapelessHandler.java +++ /dev/null @@ -1,130 +0,0 @@ -package joshie.alchemicalWizardy.nei; - -import java.awt.Rectangle; -import java.util.ArrayList; -import java.util.List; - -import joshie.alchemicalWizardy.ShapelessBloodOrbRecipe; -import net.minecraft.item.Item; -import net.minecraft.item.ItemStack; -import net.minecraft.item.crafting.CraftingManager; -import net.minecraft.item.crafting.IRecipe; -import net.minecraft.item.crafting.ShapelessRecipes; -import net.minecraft.util.StatCollector; -import net.minecraftforge.oredict.ShapelessOreRecipe; -import WayofTime.alchemicalWizardry.api.items.interfaces.IBloodOrb; -import codechicken.nei.NEIServerUtils; -import codechicken.nei.PositionedStack; -import codechicken.nei.recipe.ShapelessRecipeHandler; -import codechicken.nei.recipe.ShapelessRecipeHandler.CachedShapelessRecipe; - -public class NEIBloodOrbShapelessHandler extends ShapelessRecipeHandler { - public class CachedBloodOrbRecipe extends CachedShapelessRecipe { - public CachedBloodOrbRecipe(ArrayList items, ItemStack recipeOutput) { - super(items, recipeOutput); - } - - @Override - public void setIngredients(List items) { - ingredients.clear(); - for (int ingred = 0; ingred < items.size(); ingred++) { - Object o = items.get(ingred); - if (o instanceof ItemStack) { - PositionedStack stack = new PositionedStack(items.get(ingred), 25 + stackorder[ingred][0] * 18, 6 + stackorder[ingred][1] * 18); - stack.setMaxSize(1); - ingredients.add(stack); - } else if (o instanceof Integer) { - ArrayList orbs = new ArrayList(); - for (Item item : NEIConfig.bloodOrbs) { - if (((IBloodOrb) item).getOrbLevel() >= (Integer) o) { - orbs.add(new ItemStack(item)); - } - } - - PositionedStack stack = new PositionedStack(orbs, 25 + stackorder[ingred][0] * 18, 6 + stackorder[ingred][1] * 18); - stack.setMaxSize(1); - ingredients.add(stack); - } - } - } - } - - @Override - public void loadCraftingRecipes(String outputId, Object... results) { - if (outputId.equals("orbCrafting") && getClass() == NEIBloodOrbShapelessHandler.class) { - List allrecipes = CraftingManager.getInstance().getRecipeList(); - for (IRecipe irecipe : allrecipes) { - CachedBloodOrbRecipe recipe = null; - if (irecipe instanceof ShapelessBloodOrbRecipe) - recipe = forgeShapelessRecipe((ShapelessBloodOrbRecipe) irecipe); - - if (recipe == null) - continue; - - arecipes.add(recipe); - } - } else { - super.loadCraftingRecipes(outputId, results); - } - } - - @Override - public void loadCraftingRecipes(ItemStack result) { - List allrecipes = CraftingManager.getInstance().getRecipeList(); - for (IRecipe irecipe : allrecipes) { - if (NEIServerUtils.areStacksSameTypeCrafting(irecipe.getRecipeOutput(), result)) { - CachedBloodOrbRecipe recipe = null; - if (irecipe instanceof ShapelessBloodOrbRecipe) - recipe = forgeShapelessRecipe((ShapelessBloodOrbRecipe) irecipe); - - if (recipe == null) - continue; - - arecipes.add(recipe); - } - } - } - - @Override - public void loadUsageRecipes(ItemStack ingredient) { - List allrecipes = CraftingManager.getInstance().getRecipeList(); - for (IRecipe irecipe : allrecipes) { - CachedBloodOrbRecipe recipe = null; - if (irecipe instanceof ShapelessBloodOrbRecipe) - recipe = forgeShapelessRecipe((ShapelessBloodOrbRecipe) irecipe); - - if (recipe == null) - continue; - - if (recipe.contains(recipe.ingredients, ingredient)) { - recipe.setIngredientPermutation(recipe.ingredients, ingredient); - arecipes.add(recipe); - } - } - } - - public CachedBloodOrbRecipe forgeShapelessRecipe(ShapelessBloodOrbRecipe recipe) { - ArrayList items = recipe.getInput(); - - for (Object item : items) - if (item instanceof List && ((List) item).isEmpty())//ore handler, no ores - return null; - - return new CachedBloodOrbRecipe(items, recipe.getRecipeOutput()); - } - - @Override - public void loadTransferRects() { - transferRects.add(new RecipeTransferRect(new Rectangle(84, 23, 24, 18), "orbCrafting")); - } - - @Override - public String getOverlayIdentifier() { - return "orbCrafting"; - } - - @Override - public String getRecipeName() { - return StatCollector.translateToLocal("bm.string.crafting.orb.shapeless"); - } -} diff --git a/src-backup/main/java/joshie/alchemicalWizardy/nei/NEIConfig.java b/src-backup/main/java/joshie/alchemicalWizardy/nei/NEIConfig.java deleted file mode 100644 index 90703207..00000000 --- a/src-backup/main/java/joshie/alchemicalWizardy/nei/NEIConfig.java +++ /dev/null @@ -1,33 +0,0 @@ -package joshie.alchemicalWizardy.nei; - -import java.util.ArrayList; - -import net.minecraft.item.Item; -import codechicken.nei.api.API; -import codechicken.nei.api.IConfigureNEI; - -public class NEIConfig implements IConfigureNEI { - public static ArrayList bloodOrbs = new ArrayList(); - - @Override - public void loadConfig() { - API.registerRecipeHandler(new NEIAlchemyRecipeHandler()); - API.registerUsageHandler(new NEIAlchemyRecipeHandler()); - API.registerRecipeHandler(new NEIAltarRecipeHandler()); - API.registerUsageHandler(new NEIAltarRecipeHandler()); - API.registerRecipeHandler(new NEIBloodOrbShapedHandler()); - API.registerUsageHandler(new NEIBloodOrbShapedHandler()); - API.registerRecipeHandler(new NEIBloodOrbShapelessHandler()); - API.registerUsageHandler(new NEIBloodOrbShapelessHandler()); - } - - @Override - public String getName() { - return "Blood Magic NEI"; - } - - @Override - public String getVersion() { - return "1.2"; - } -} diff --git a/src-backup/main/resources/assets/alchemicalwizardry/altar.png b/src-backup/main/resources/assets/alchemicalwizardry/altar.png deleted file mode 100644 index 6b6ac12e2fc7b3b2884e97a899c6630c43da9e5a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 59034 zcmb^1bx<5lyC`rh1lQmeAV3K25M*(84estvunq3+?(XjH?(XjHwtMq_-?@LBTeq&B zsqLNJXS=6+yK1_spWlSY%Zec*;3GglKp;zq3oHIT^Z!%eVE?|Cn%i&wJ;68%N+`qq zJv`xzg8zPpw-Z-)gn&TA_@_Y5Zg{`{4H7zu{BlyVHF0v)cQA$!FtRl;{wiwjVC-t^ zVCnc(NQuq9VUPW9CmD7Qs%mcO7n&oH^Q(A|C8d?6n5`{Kfg0p_;&pD_89!&`TlHQIc3{$6+yt!IntTM=QXSWn7zilf{{kwhiWoF)z)>z zFU5OXgZ7A?YX%B;ITsM;bGB9+Gw){W&BM4#V9#c?iLL@e1n>3w;a`RpB*;&r-uwh( zkc5MYxC5^5kykBM*KPPHJH@0j8|AyY{It3K#!$)3avF4Rjo5&7BM?@n?++jB0W=$F z#qGwRfx_47LEgScrV)U;O1a)a@B&?#t<30B;;`!4OH{G1gr|w3e6sm#z&$J5dUC*-Gc+%zB~Oi%#WK2u^K2vG;u=uvfVE?R|5xl zk=ET+NkC!t?p7~73upj}n=xgf1_YRQ3acSX*YG*nQv$w%E|zl$G9zfO%q8T^(d zG0-2z(;*c!@J4ylz`=IXrRTm_O9<1Y0RD0552Ix#ND@bIKUHaptcj}7os*LShS<9q zz!f~U?B%HUT_AzeW2mP)m-8n%uSgb2&j0CYH2dSx2ZFf|8>AMx?xP*@8T3X8O3^0y zxeTeXoJG|wrG1fW%XY(XiyB2HApHF04e_M+h>*mS_f7^Bgga~_|EJ2ka3D+Y_Gz=y zLB5&olkOKZ!tQEI)}6Ou5-WP#EIE{gldS8CW!)8UxPKt!#}J=~Y_wijQ|e7bBoM=I zg^l3l$rJkplC~Su5StQ#AOy@>s&6^lY|w1EE>~=q7TATasLjc z>a}<_HUIProVLG81{xSpuF85d|62*9*P~%-R}) zW8DoWoJD9$tHAH2f*%KlA*W!ATVOd0Q5y7$ZBAOYOaZ95#BC33Rkj_Y^`%e;&!i;Ze~kepb_M2*Yo;rHywwF7SefyK z>UWRA_B_ues0+!kK3kk;sn7Q;VG7MwT>?a;Kh1cc7PqU&_>`mp?D+?$d=cO0 z-WmSDBm`KrIfZprE%NuhQ=_Skbh)tGBCUog69+a)Mi;*5ew8r{`|vyS7Tewg4KWP>z>yFLOn5cjRJ``|&`oj#y?y% zHD`L6nz$3Gr~|dy5{)%BSk*%HRSLzV{w{jOf?x`E_v|^Y!%|ZO>Yv!?Nb93Mar5iz z8dN0$ORIrh{s`c1?qP^)Om<`UyoxtoRvLLey9Ex}578=VPnBH=?hU@=lItx&u<2Ch zgl@ZA&+8Gdz&$+m(%Du|9tinV7p^-Yu;17lO~UwF$*SNqQTNkEo9jncf!-U7;?8h) zC(iv9-0_n*xY$Zb3y&aCIdRg6da9%77Wi^&%mALPG}|AfhG@A}<&}~_p%p>LHIG$S zyiArj8hJl`Kn2UfJa0DH>Uuw4?`#8GZ}dPhG^Q#mW@i3^yx2QYUsH*10ZTeyJ@8Vc zHs*&AAQQ=5 zhXnpw3Uh(*n*f;ltSbPV#pOr|@Oou^0cen1kS8>sOof7$+$%j<7=&~h0pbFauO`em zzzFMcV3Y0EqyVhL&v$?6P^8eH2PPQL?H`WMcvlvX%iNHARUt&`^dNHYpMdmT;7_mu zSS;n6uy(kmBzPr#H|rL)f)y8bvEoGN{S4H9d&PQ0GX2pPgnGABrE5qC0jjW)6pct+ zwpXzJs%4yx{NP4f^Ce)hJnuP6zi>E^?gG3&635kVu&o8aRLY$AqdmFi-)#9ZLg z;Gwx^gDkG(h$lAc4hDijUZC?8mVV0jZTIf=K$Y%yM*S%0GuJkk0r0}83c>o3fGtrf zs`#k+k38uWU$AzY%K<7e4?hS~l3RJ9yRxw^r|)%29Gtu$EeId#$0q;tT(8&n9hIi8 z1ccgv+D|mml@gas9_V2g!t?>7|#n__7TBEVP6HP9E+H(Avn z%#aejUxh3%3Q%e(i(L;V7@4crK_qJS?_yFSa@OJC?K}A=B7k@Loo=i+;{zKJqlmr# zHVX^Vqgwub(88Jf2XQ|biP_llZL8CZ`>5-iKH`@_gVBq~qR5eByIDq)<(2ACZv#)C zl2$6B60gsvYN@XR(cFBV&(T|Lt_)q?AMTw%uy;QdRP1tBbqTHu;Zpk%wJ&w{tJh`HQCogvJTb-rjzNpjxd;NB`pPa)Y}Oe8B4uwq9#Ih$80IaPchm_zKH^ z*#ZRf4Rr0sJQvn_els8r7*L_Hya@oyq_H1-Mj_08Pcj?B$x~&~`u&s{Yo;M}r^91; z1Bqz_(TIAL1HO;r%MU!enwk2wd9Z%VljlJfI65GsBX?1$Q(++&t%>FSqK_qi*(4~gPb#r`Y% zBL4TLXz=Amn`1HL45+`-8Y9f10GtOq?W7L=G?oOKk}4Geqy9#9mmBu+2Iab9d5*mf zwPxN`-6|8lXLFhmnO6d~K{(9DX|GS)J$@D-^j5@EFwz=0x(J~d2$E{O1UQ2^c0sn& z#lYha(o3PsF82ouV=&dND_(TN>3fN;g_~t==!Vz@)Yp%efFDNF&H)gRP_n$@pwLShw1{c z_mQ?f^#DBKIUl_vxuW^g#e5w03S9D*sQ{NAl4!}l6=Jk9>4Js8CogIlxu<}=Y3hj8 zMew!<4>$sCM@S2p0q5P|On1*=U0(BieTTx5cGHsx3s^eRq4 zaU0RFOqJkKGv(@dP}U)dM760R?-YPE;-LT>|EzQh7XG4r37)mm0P8Y=zdI#pV3se; zyCzuh32F3^JB>Qxop#B*E8Ru)Yu5N1WPv@wMSE2Tx6lBB8K7jwDeH&aB%uGo`uMcf zZ^5tf68x(SlSU26s@?t14Ukx^aS>diROANAd6jDf45{>f0PGqTpMdyT=T(+_4`kH2 zPNCqx7w`nh8I-_i>nd%5^&g*NMk@+lNHi_hK&basuUDLlFwKn!bGUn!;3Pp6N@tr2 z$U71fyvME#>gTw-sE}Oz*478@QgA*v&)#1de6JxVOmz-k2RF=vXY#~;gKFA`_TLSE zqwbKrqE!op4D3d^vy(pQsUqF_x;^ZVV1j}0b7lc~;H#I^;;br%B2Vz)1c7IeSE4T@ z%gfL3@2{2=qAi&=9)jRcop4SNG7P$%<70L3IZt~-QEtd?@+@Yn?7~7~Yqp3t2pE;JPJz>)VT&u;N+Z~T42@j2p zH~2YcOw~Cw8?8oirXW@z!PPk15R~b5$Q{|+)*G$PBe=SwU;y{wRub`t@ncf}VqxAc zx#!@y{;Qi8>8skLeH~g^moBgi#H)1`HYoxO^$w{$j#5Z_*s22RE`gyxcAB$k3Y?|? zZs^3VEd@niH%CGL>;V6k|F45OpCtzZ;wQberLxlB&7aqr>zZgRA3Nqy4DFbGt?8q_ zuG8e@)wvRLGp6Sk2?fPm#Gq^|E(X4@;{EH-?6u|nV}0NcHIHlrtoCtc z*)z|juVBf9F$!Cma#`;AHs%*MMx}WX=)f zmwQ6Gr(ju!HszyC`I(=2eigdKX1dp~k*)U~fb6(dy4S@ECHo$f){c>S^C=BzRW7{> zR4tb{$3&oMjs4#g=(WrOyaNX(w9v%1%4kC;^iQ&|&JNMj)ZUaEENd-Wknj z5V@y2VnLCoZ|V#s(_CV|v?h*;9H+_9DDw8L!f$Bjrcq8Df;fGa$sW-JgS|Iut9e2z z&meunM|w!MF+b>cAts0{M~Jo2&+?V1 z5ah+!-?eYYza>vI=9FmuHgo?p{e_hdRYqX0eIZiTce;@Rt+fNY%w9dk|6UWtJZx}J z_=YQciZh%358fYo;_qJ1_jr*J*pV94i5hy9F6;Q-1NLVLL`~|r7xv+@+t0`)Yk2dW zx=YP;OsMhQqS~nJQ-{^+ia=E!rA>gKha-7;?PIWESvY9@ZW)2PL+H4jbVKjibLd85 zewt%Gmo(awPxdv@A-a<^9hUKwQcr?MIXygKuO4&f9#VAe0@k!fE3KP@28As_AdlHh z88%`xTLF*NLclCjLghPUc~CL`>L`|(ZYW09_NbxLm6A8HAhyu30i3$j$qama=HI2| zceH3;qKhdlY}|m}Ev_`NAN57~xqUK2pV-tO7qBaOUzh$?} z`K;hFu@Yr{HcO?+ZEWYNtz|3a7Llh7Q{c1%qnxt$)G5NHU<-*81TxXG5cMnKiF#*t ze$qjYH`AiBt8Jn7QLBRfuE^21lLIS6Fz~9XG8O&48I$QXj0)p`#+FyDR9s^6Tcu7J zmQ;o(SU(!4Kpi<)GG5~~{3y(ntPYCAM=RMsDF@~iIfa>Z_1 zfi{Z+`VZ0aF!|g|ySvErSYJE5RwVkg9%GhfD|Vfg<9^gW{;wkGhObnPtxdQ?kQHXH zqgTePRcO%zw8mVqtR^wffiz3pWPJFgq|qPytbLT3KZ5xp30dV{yacS4^zGR3()a1U zZ7U}&NX6xhh*l{x*(YE@E;vFoxDjIVNMQf5aM;*SUL{ms8&{k%t6+g)xz3+oE)a&% zGQ-m|)52J2gA_-NcLbT2uYd7r3U9PnY!(+6<&&!#cCSB5+}6|=rd;zJAG-7(zvfsc z1PTT2M>ut49IE1OseC2NRSU3&wZK5zUkQ=|+f*{?*5GLsvA(y3Qm zD^A8z5D$9MB6bse4zsM`l9t&ol#Z}gqK6BslF;x}z!-H}PgNK3V)oT)nmV!v5gj?w z>4{tR2xhxt{?tWMts*NoVx{+8K$Fg&-bL!e6W(=%jaBXD>d(`TbV0 z#B_nk#Cp+-%NLS9fNU4Q^rIikH;G6=#Kw)iZ<@6w$DH{aau%sXfdB>RNML(B_OOOv z1clQZ(nYRTH9?Pu)FQ8mu-6X*v%s1wy9>Fy!LiB@d$tA`HW@j6&YG5Z#|&f}&gU>+ z0;r--F<>DG1n+63$So_re+S>5tamOvLteCU|m*h~g2l-R;a zQS|X;bt);o_vtQay$a^?0Ho<%T%5aIXEA&S@+Y$ZxFFef^ue|AU5GI{dZEL9rBy3c z18XkavE*_{l3M}y;m@0)l!e9{DYkpS1{+lZdLiT z@tHp`6EzDW3v#fV;)8!4<`ATYkrShf%Z^a5p{H z!_)UfEjaW0AkVnZYiTawCV+75MuRVXzY5W!G{>W>#HsI0lkSnU&9Iu#BF#eyC0R5- zsVV+!Gg6OJXWF^PAPI)p0*h*W*X4kw8+~`IRQW=++7_52vo7hx zZ+Vbhl+_hV8L?6`u%2rvIA}05D<>ytggDWbU_$L0EVm0g6&VoAcxZ{YK4El+wzL-C zAaNgUcbHMnpsVfzw~y#ax>*U8HM5^5-Fjas(0-2#|GKZ8qF{a$%QmfRt(ICTk^5!l_}vzv#ui3=cPSz70(!2Ul5qi zZ+|1^WVM*#+(;a!WQ}_qiZ~+=ev{u}dN~J{YcJ)`Nop*4mW1KS{xGLeUOT?_#1CNR zixvXG9-?LnB%`jMx*#6hq>@jF4Rk9*adt=(vLJGr*tOmf?~}niVZwnV6dIrrh!O^) zF)Ag`^@8nKao%McdGdE}Bz_yd0Xc;fsr8wbz)h-OxE|lLOhpJe+nx_8XE92H5 zV8gDnnGG`}+9mLwF~n?*FK-zwFIl9>aE1@vD;Ar|0eIg-g`&H<*kE2MJ%2&=%Brf) z={ct9@>>n8Dmy0bg4kwQEx%EE_FV7dsCHVRQB{83qE#pePB+fvj!H)Y{_3;8BYCF%{+iD(*8 z<1&C6OWy67zUya|!5a%fOU4{FiyS)AdU{BfP(AnnOp>lqP8}ID6wFj5#0uZ(Ootqz zn~!pmko(xjF(rD+6+AV>sbb1mN=)-QZ1Ybse1~M#GaBbbW&!NM>8|5&Y5WFi23Si`sN&EA^2SUJ-6JeP{ zw^R1Ci*+wtIY-pEB!~H)X*b_Jt84zmNcY2=hKZ{4Bb3&4ah>kt3lR+ z$35IwObTM{;<&_C^fWEym0b^tvoPBY%ld;pry^^ooX=YOw}@1@RR!&$x=`tN85N>a z2@wTgt%3EJl5m!#f@IE;bKHWt#{`09zj@Z4Kbw#{@;IG!KG}uzSL3lZQ_g2x3AUMx zW>s7F2&W43fd(PX_QlDz`WVL&%17}p(|uqugDICU(^_mO?omVJU0Z_ROKccq7N6WBi1e5Wp9Zq43f^r)frPPn3I zn>+3%+#-XEbrxA}cu_G^1iC_85~alwlfHU32HxoK<{$+)fS6`>GVwZD>grPmrkixBolGA5$CM(c z(oh#|0D*>(VX^V|bn7WghjP0-CXhr8KZWbJxv_sH!m=+;oPh6^7TxprP1^v{Pg}Cn zkx?$#(6dvh?dLA5u?;*z{WZ?axW(FY$2}aIcYNIdw z&aJi7I@AdE862&q{e8s?=oEcQr*s#@q3^vSd-7_?K-nbnin+jvK=$!mc55rx!i1cO zMvg}npC<#0G}~X89?E9lZJeLfaMk!uT`mj7Hu@b-lUeuUF{%`9>7Jh=b*#r&_dI6t z_77YYUVn0DnOK45zKZca*{qtA>;SsZ(nzQwFJeV00Yw}?GJa&J7kxlkfU}rY@RcoT z@ZU>9E8pR=yf}Tcu9t(oF{XSBk&6{hrgB*buB%|#o{@>E?Uyo|pGNs#d|BYT_PVGo zPRBR;Qy9#P2zhV-Pc-K-b}sK^wL-V+TcUK}Pm}Clq>h86_7F{(Ye?Kr$Eohwo150R zA_ge{Z#B2N{$yaxN+CF%fiw+zWCFLxnQ6^XchUclT3mg zW`rl;ErRh@@G2qu;@JOFwYDf~)*wcdx92IZ_7in$uef%NSXJp;{(I){PPd?6Z9m_6 zrHKnZQ8-J-@7DQ8W+>5L(1GFe;MHe$I#_ppG>Xx(%@(Y(_-2mPn`UkPxcMCQg^VNo zuyRYnk|aEe-)$Fj_W2zfBNedJ%aU4hE%W@RY_{P0%=*2G)9X;}Sc8q{CasH8p6YOgZ*mM0IyS?KFgNbRM zw0%xAx#AVgwuvgHI591Pw_1tUYI2;KV;Q&!Aw*Svnwo>iQm@M5G%?L4w1m_l8n}6Y z^g(m7P-Pdj)$Llv)%sm5jZJKcP}|XIVuqkP7n4w%#YsPq-6HTmF0?c}9mOTIM?kHg zzId*coUxFaVd+x2(qeLiT+L!L=B2wfNwK_A`cL4WUvyG4C}Q8K#@go^{p-%g+fwT+ zCo8!$Cs%5m5_isnQhqnlA!(a#E+GBwW@0)`?>H#oKZnkYj)PMFh6w+u_3vS&Rp*kZ z9&R);I%WJ;`}bd|ipwF<`5UTs{2QusoS0*k^RphhN(#+PQ-((ZJ*`VAcV-o%LG(aPqZ zq8imf{kM`f;}ac2@>ZPFIRQzv(Ni5WJiAMe=vEWN6rQp9b z5vhC4O50>LB-Js$;4iqogGOt)28*^tRK;{NDjK=1c0sEc8{rhC@c8xCiN`wQMcvaO zR9e0{Z+1cO5l0uMW--o||DJy!Md0S+ub#PNxda7zF@RJA2>O)n&Dy`IB-uwQSh|@0 z_ki59nonKO_CSgJ+P6z0Ow+V{8dB3d+oK*`2p%H$7q>>}Eoj^*a!$a+3K-ti0#XA~ zf5hpIE!#!tHDvYuvu9UCw5ZE-7hIi~(-HJL$HFQ30A}(lO>-SZ`X0kHw}N4(is;j+ zAziE)7Tt=>#b5szJqwiWIym_g4vC0c1Be}0Kos2QHWZqTRA40|s)c}>B}-ozc;WG& zWa9W4x9odKYx27WD3bD&Q=On?TWYqgQ(AD4n~L3p1zn3VlW5hQ1%ITr)LW|{BV}N_ zpfIuU%EW9fakfdU#|-uM$ntRim9*&^Cqwo)DIElBoz3=^av61p#LT~dHw!_;tT#vy zs~RDGmfG(p@zM8+UY|Ql8|uFLjlfozrQmp>+%#|+GPbhg10`{d8m2 zHEX&*hUDdqqBdoyxj%YkmT0KTWV$H0R3Ua0dMwFx@kaTw=#Sve4wX^EzrQlt&UJOW|a{~@ve)96fi9X{xN zn-Ugrngi4IMv!r^uP&?R(#?%p(IA(=233K8c?v!I*(Aa2j~@kI#cN08q8H~C^i7(a z8dKOEn$H|P|j>{23j^%9YE6Mz1b(NS_t6V~ME z+P-zg=PTSc&+sQ|au`PxJBq`v<=SK@A}D8y$Mby5krL<@VTVM*I0c3R+HtfD z@xuJWZv;Ib9)irCx6@FaF`_A5zQl#5ktEDjpwID{x9n_Bo&i4_Axn;=SadNvl_Gaa zr@pLYPPd-@s3*m{lg~>Is&US{-WqY0;`350%qa(mt>A14kpRi~ra*NZ%zbpR8lCg5 zxpk=Gz8ne6)^k>6;IWztqydrku%m#pwy`KyL^P*ile(P~t6B!AP7TXgTBu#^i06e| zTJG@(QIgplmUgZ+Z*B4m?cI^MJX-EMnQ$MY2F9$IrFFEcLy5nmdW_e_@}xRz!!i?y zy8;TetSQtB7TE`T>;>k3DyCw8@e!K+^M^+$;~h}{&XMzJtB32nWNfm1sz7b?s636X zr+%O0PAivSw8Wd_!b_Tjj=?#L6RQJ$Jld%9)7l*4l_o0)enm~V8t&BNBu{F>J9(*S z4v0M!Z$A6oYJ9?5UvwLQ16uio9n;TZcEfuStH<_PVbf9tTUwL+5L=TRNKqM<^}$v_ zOFdH@W=UL`=ha^wY9$^j(G&`QcL!CCKLR?J#e&1hhKAHZD)jpqw?q_ zk)rSrRR*)!;zLW9A6TP4iDq15sKrH^h5fZREybDF{dDP%_VfHe{Y8ivBr@vO>2HB2p^Zum&8>T#KBq#LkIm+{RqN)~_op8o!lCEv^Zqp0 z7wp1iE$g!JFC7vOk$vt%`o(9rUfd4!C|l5uf_aZZ6Mbx`IQu&?R|}YR>5V=?11rTQ zJ3-yOlf1Rp9M?v+Bab9L*a2;e)kWnE1cK=3oZ=bk)*Lg*E|RO;7tj4;&8Ij=nVkFN z`pT^(-=3WJfRGt&DbM$<9Tf+KfX!Q5Sy?~sL&`uFW z$*sW@Gs{F7=x?*x;l;4VqB~veD}vY)!KiBNcesTVxBk^6O7!&ZfAra{n&n!>yl3e~ z?jw3PFG6(2h$8CtJIay*c2cFbM+dWr%ZF1#oPHS8>jWb6}W(Q5Qo~KEI(;D1k z`d!VC_u1B?)LY`jSHX~MxEnnRvwnNPTXZjRzDJnI+L<#27$ECEnxka)c5NUSz@36` zXu5csE?YREe)dlI6XFx$qsd>gL-K&rQwH7L_}EAThPmEdQr1`ZwIHQrPnpDex#TtP4wN#s?gC~ekQ>0=a-)} zNVFy!xDB@E9kKpJhl{Lx8 zm71}V}{jkdC*xq7LpbY9@QEh&n4hphgtN~{B1=N;HJ#hJRv<}uLyyu3bT6ZVJq3_TZT zxyA4aDJr8y?U&Op`@>k6)k`iNmwA^PeR`di=ZoBetmLGaQ zTI^I76U%NCj|v11W<&_42nc6`3GQ_a>?2TfCsr$Heim(zRaiEmoR}R&cREjA6`F1c zFscA+P5j1)-=+ZvVj4;BedS&7*V+?`+5%8J}r(TTeIUEO7&&N4D< zpyWPmSC@U`r=;^qWyVorHltYCxZ`VmMhK8g8_Y&+6fw#qHNV@D;rYa857o`FP_C$_UF>7c5!SP6G&z@?kJHz84T=lQJ857m5E z)fqkZmw#R^{xv-8Hw`j=LY~oz$d-nS)$FnC>x66{7RU_8_H$0*xyWhwmMh!Zjc!SF zzsJ1iXjhDdOzDIq=+18W)(jV@S8HdCWWZ)$dVim@A#iBd&XJ2nXwX+4MD5K8_i5*D zX^fz=abLP#77isXJ;MzpRTbOqr0EO2g#O(gV|IhLLs6FVhKO2^?2nR!7wnH zY@JSKtvpXK)+XFD*w-87RL8A9gN~ z@2pMDD1@-724_Bqn9r58%}UKA=|Dp_b^KM4W=-cbwlPVg=W(@ppw(dfvQLN3e+4rV zukMv^me^72Z>C_-XgS=mTA^V1*&Bg??K8oa{xYt+xf5$#&mNN-4{TK5wmmM-4T9CQJRhA5&~#TO|$Mm2653w3pHj!_!sS3-~^U8JYrRqQY zqA7{{8HdAW%VGOVU#YS<`_X^uTtFnO5x=S;Pup_xH;20YFGZ7~@ocFmJgcdf@w}!3 zKWvF{){W`TYK9Z3*FLyTug4x&0WT=rWY&PiG(|u7%VD77cL%&Q=|0q8nlza{RIf?o z15z8Y7q}OfYPgz9sRYID=AERYpK(EXypc6b%u7%X?!9IKJtwo`s!Wgj(CN9L6}?yY z-;Cr+Q?q!f-Y{m;oRs2Xz)=NO z+pc^-&WxL@ePeEjPACKNuM;j=Ngg7#>d#AsrXw}@1b&?1Be+h36xW{Vsp^|mF1#&z z&2ri@#0nw$_&yXSgPwgot?~Q)_1{YtltfEpc<&6A{U_p9eLj`rvo<^As&)?9&Aq(u zocZE$?k2LZaN$S~LvRaC?Obyq0kVqlUkC-Z(2r2xr%?gpR1^1ks5vVeXLrYsDJ z#h)~@)rGzq!L-<9P3^sNPabJ>M=$yY@Ly3nb>f!mi2NEc(}F1@O%~4?zzbvv?mt5M zR`JI%Sgeikf?g;sKBb!bn?$Uv;VO=S*=hijCk9s-!8U@Saxl%`buBk^{n{!p$J{|^ z&PW`ePbgN>Pf{=z`8PFPbb~*>)bS(Usz{3-hi_5``2p{RBZJ=mrDZ-w5)dzmgC@tC zV&FB5V$^@Vg_TbloQ>nIQkx?Qhf2D4Dszgb{v;4#G&IeieYq9_Gy61*R%0{shZ$;( zhb{)@DAf5HevZ}Gg2$Z;rgM4pH#-?-jU5?CO67Cy6jQ^#DzPFOr!JDzEnOOG! zWSQ=LT`*%gDYeW(7c_<@hc@mxJ+z4CqsXLu&B%DEo#aoxsq0y`w|X9Pku&E(HDjvb z2DoEicJ0IPZn3D1LFciVIfxaz*u6|LF+%1hW!sXHrb)Dx%rungItKgIF}x`;a)DPp z-g1}^rnNnLu9l2wD{IuAqio=Q;2W){kYv=wm~QodjboOm>6j@FIT;oD{>q$>o*f+E zrHWy661&{Sy#4r&!3NmD31FSwdl35BBu=Gbop+KC?dKEEzt4oJ-!hj((-a;sKoo2* z9zAEr{B2-5=(E+YaJ_SfZNTm}fn<^3reI!gna1sLUm_F|rn~WDw8aIyBh={jmsIuh zPbId9R^hYxCcu^)8?2~kglIM#Ig1^PcD>X}xayAKWMJQ>zVMX*#@zprVd_86E;*m2 zI%!Cpr7}1(^+`}z2UrjgWyGs)%zr7yO_qcxN(wPF zfgD1Tb=~yS^56D`>H$!fy71@Z&EhKds)P_Bp+_DX0NQWQzD>{2Gg?vq*ys4BE*c-l z|G5`62YqF4k(ZB5(@!e-?F%r=dFrR@T!n|+FOHLe8k8I4uHzbbZOO&Ie5rgEJJ|{| zU_YOCG))3ns>}ME7*p*sT#?0#J zH=W-t``YP6-^mBGCV#sbt4DhxR~VUW`C%u^*5fW+twXnr;Jfh`BVg<7`DF0j1jwd| z7PSxNRWP$hV9XYwv_0VKCRNR%jPjLZi|T3DQ>)T0aa8nsy82-0+kJ0NIfQBa>1 zCEebC?76X(s7qU@($!P=FOoaX$(?JUy4^GKcqiDmr%vNbn?-1tNx@Z&d5co}Qhbs1 z{8x({E@?Aax_SgbkI?{^{--+cZ?jUX400{WMy6VHJb9_&Y0~)<8u?hlugPKcB9=8- zxmc@TSCw5bBLr^D*z8}VwY=#n5q4KY(gg{*&NI~ifyiKxr;&Ihs$%kQ{LWhUy z+4??w^8bgCU~zz#Yh3qGymRRaqxFOo>Nj%t zzzm#Sf7Px@m}L3=C!oyaTF#}Zc|a$6D73zgg6DA7L*NRAIPQnmoS7iF?#tx-4TIE9 z;Nmo{1s;Ow+FdFk&AM4QP?1)CglOdc_PP}~wR-(+HZY1u3PxAw-G<3;GA-D>)*;eo z*ZWK-(uV;*iIJ4zg=+39PLlw&{OYM3aVh{;lFYq!81O=UIfllMffVV6fcHs0qtYr= zEmTnJDB=?DhS9=Vc;q_XU8*gJtjlhOb6%w{Ywke&tX{t^2f40Th9J$y+}Nz{BEm~$ zyCZq^kYKT&7z;mCbK?VRFd?cnqs@GGs4fd*sZ&*!`UanZ`(-$jRBc zXKKxhoL@Y6=Nxun^`3m?*>Cyz?v{^mCXZxtFst8j`qMR!(~%dK*pWPDSmJ@`DD=jqwB87$a!Zvp>dXYRQpP5CG! zm+|7i3Hy}z);80;ZwgQag~{&&dlTrbb@0$>Mk|%~06XSdufHz=@lwXc?+kG>z9d*c zC^xS{W0-MFN9v$EcFc_oJKbTz#@&k^`!%k*+D>nGt+3|?nUZS$t8@M7eH+6j>p-@DTkHv?%QPMH<4_y(b3NK5x?`_{Q~nm!3Ex&a6!*o1J5&D#EZy5AidDWkg7GLU|J zTI1iYsLgVZkLRAma$l9N*44}F4ZYQIc$`aUz4&jyV-vIO4wbe03w{B3tHu8vD0Rq% z0Eb8sw)y_{8g-8PE~@|Gim4eK-IL99PhQsCNqVMb|8~X7mEYzriQ>0ew0E*=7?YJO zR~CO=vF*@`%XDZ~J+O|%mCIskN!gJaUY?Tdo97Q|XLu%Vn3+>6X~)z3wY!8oes5B`R^~W^7wJ^>vtj(V>zl z>cQd1S%-zHcR8nLHwvqnhn)5jSx7mtBo`w;-&sw;RO=<5%s%;3%uOu)Sw%jfvbZC; z{$LlxU)ceZjT6sgpk8k&mqmS%(>tx&o=mih?Bc%?j(AbU+bD}_5YJVqH{xjEU@fPq zBKY}{SOm=sORLup5@!~pgL8(CLYCkboe6dthJq6hvs1-6x;szlUq6;MKy0l`J{SOD z8E*#lsycL(S4Y%tBF>=6r8%g-O54}O{BgVj=QIeVJ=c8sF7C+zMU2^DO0`Qd&tlYz z{$3QDXd^haNFKxLeNYXi;W?N{clnS>e^cv+^zMgTU9|6J!G9YurDrbjmNP5L})V=V%?Of{eHVp&B zY_P~Oa`{b%qAe|0)NLrI*ZalcCJw93KzFt8o~;&i(Va33ceSmn;8(xS66b*Kia|A% zKBPL%CzVOZS3tSU?!byOa`n4V7CR=#ZHf80GN{RTT_Z9hi~qwkRFdS|nnr3)LvYT- zKMyec>j4CyMBwD^QZ2hvTIOjat0|k#0_SaMc*R}mqk*}SB}qK|3u%_g5HG|ip zPFBMWPMmIy0XE4TT^P{-DvN-h`FeS~jFz>AahjZ=ExVhuWVtSuHZ+m zM}!ccMe&V62=2+5T;9X&uO#yBqigf)cUY&(u=$w`6P_~9vRr{>d`d#Jm*oe&_WDJsC zMi9heXJ;<&e@2mjhPp*^z6DR;Zuw(-em<%$qUXNjOVatBRcF%(GZzaScMP%lUi9i! z|HR}~-#+iPt9(z%C=~mGZ6(*&Zaec#Wu%MVLsooM5Jk`SrmvGF3s&b*DwN2pX5x4Y z!1DoXJ)0V;3u8=W4?NXN`7RI&|E^L|XS9w;*0hRvPiUt1eq5?|xej^U+`?W5+zQDO zlvQiqttQs3vQ(<*} zY|8Gk=(`vWON9CvN59T6{^t^wvIE&jYKH$t+p%` z-(BlJ>#TE5vS;?0*=^3up4l^VWRhC*iQPfS>&NWHSS`Vpw5iUw0Q(!9Q|XScW3{xd zLhHvcG4iK7$u|+`A3NbY!vz(`m-V(B?I(ZiCz)ySwOKvbVC_^f)P&P!Rz0rDsZY#Z z;UzAHlBLTe9sCZ)&^0>KU?uu-~4^kLx21GVgw5EAKq{k z>zf18v09)7i}#f?zFVkk5jFhzPd&x&;V+y(Ga$FYTHFoyk01)r`bl$0E0`^{ZSG!G zlWmo`UlL!S_=l@Dm1|j-`K@K@?ZM0wNA`m6ZIF}RHA$mqWiX4|?up{JUV%o{Z3wS# zi_8%PHU6~nOt*I|x;?7i)_MBOdE|!rrtnEzK^bZCg}~v0SV*-rtzZ~%Dzp1DqE>_3 z5h(RIx0!WE6A95e;jOUi!W{?nFs5__WX~w~hFHdbC*@hed{i>Er=$7KT%YL~46eku{Jd>^QcB<|DK*Lbxw5f-t0L^>YMGi z!f%3K^97F!)U2(|zvq?a#i_W)^A<+yG%OyX=(WZs#>uQdXk6Rg>;_cCYifYd|D#FGne_O<_iaVv6Oe)IBe`vQd{<@0aNX54Ti3Ns4a&Pk7u ztZcv~+!yhM=CV5ad3nqkE#&l!W}BU=&~}Kte%91)C&X0LRhQkA99dFTXA_&MDs$p` zy!2GS+S6Tx^?t_4U-EiDf>aN*bFd-~OZ~D+t<uYYc zza+dgi;{w^)u_vVRP?P(m9Kna_>?43=49A&cw1EeSdh9}F#9Dz#oa9}yBgZQv-k*Y9HMAitLMoL^^*5SG^3_Z(9d zCyY^6yqwc{D3zU5Yomw=L?K?l|FO7?B1aAiaI7>H@H-=&VN@>QDMC5 zSF_uWwDs;6MuAmTUlig=RMM026>uHA_+gD>UQar6=-NBNgzH(4rWb{JaRRkmK(Nd8;`$Qvttql#gpNLia5b8>yw(i>rz)&ao6&?6t96K5h$s@;O3ma(zacc8& zBL2n+P&JwD7=zSRq(SPw3khJ&t>6%TS=SeRu=KR;U^VK&%28Y6zLRfn@?Zzh+h18u~U0Q?{$*r3&A6$&Z49jGIfrcJx<3} zCQc)5lPwV4w*}5t*~F4;3^Sal)&VYCZpgg6GmMBwKBBTD{bMw<4{m?-Mc+;o-i;m_ z1m1{ZNhK$j60SY`aQn$NdtrgS)rGCYmMkpCYY%Gjh>AE^R|~Od`oCIK`_Ie=>uIxM z6Q`BAbRX&q+`A}oIrc}w*(BWu`W^`x{sbJSevcJYcsf8ndu${6$I;W@SrVueAO5Ik z|8WM~I|yRHoW{fBMFHVvar3y~)P+gP_Ckjz3~CQ!7L%vioEa7>#atb<@D}7EY5NPa zvAHg8%u^gvu4i!~STmG9F+O&mi38jqRN^`c?TKz<(05n*Ak^<9zFO$6#B~|O3O^>% zm|;^sg{++Nq$K-gS-U*3AFF(ZypPCY%BWHxOgaUnxMu=LHGbwwP?38M!aQPjpG`wC z-S~*Eh%2D_GgF6F1WDLsd%4|x=-M(;c3B%z%a!O;%S*OehAYf#wy8#Gvh+G=$YLjZ zfKsLj#UIbL7PxE&DUrH>nyS0O=(p@a2eGWtQnGzJ27QbuVyGl@+f7YPE_&{O%TyY-@rX46`|=ukybACLt21L8*G1wpqqEGCo4IpJ)1 zK@981jxod3a3_xHMd$lBRy=XP<}$uzrOv@fw}DZCtD^L^Pm-{uaA0|(p23`&P~ zg9rWW$-sTJ%>ayNzw>?4Ceg|^X|8$`qE)xfCXFqTNL%pqg6Mpq!;(Q@w5ArEW|`BD zK!4p8m!h*QkMsc7S}hVmND?)ps$kMkq4SOQS7eavHxNX~Yn!mX zp2k2##Q{WSuxDLOCLoG$d;#IJN4H-;Qm+C6giB2OXP^qR%{E)stxJI+bCZYoJ1~2H zVwJN-k+b_b&MeC`SYL0YVem5OZ@S#%!tmSAyUMq>sj^$fCpf_USecnM<4@>g5u^L9mnf&R&dCTl>F++C#cF<;`Z4&@;$sklP=!oz7AU z`jnq*S?NTpSo!<`F&t?LI0>LeUR~Y}#W5{d*ZA9YyYz({#R2l`YW*t%$&AbuPsk<5 zU8=hDQg8Otj9(je*W`oxcafwu-{U#I3f!h86`QGOzZzVIdRi2Urvn;&qRmyw7Laip zaS*hA$}pKCQ3gH0ttiZH`nwW5XQEy&dNZ!_NIL3I(3^x)4R(I$WjP55NX^2%%X?2D zi!SWB>_8H&&SBmQ!h)!6U*i)^aO9u>a!hdJ)d~1TTBKuRkTmlry_u0kAK@GAyfg$I z+WG+@o@ktvrJo%qEdSckb4CGM!IH!AZ1qVHl!zP6U!9eq0oI#s#ZKvV6(!hFB}DhK z!t1a>_k>?B>%mg!oX{l$EKBKlCL(wsc(MoW*p26;rR$|Y5@qGq;nQVMq!+X>&BfQ< zi7z!-6DAECW6pw0%Lg`hGs{D>pJD&Sv5ItS-x^qk(m9?7CR-xyrDyszK;1gTwDXLIvLg^FzS};Pe5)I9GIJ{LjOKsMI{;pj?@8uXQ z<5fi0aP;wSu%3owh$gpcj>j+gbzaPIduzb{I%L!RO@)IywnImA+3N@JkXaLJn7q#e zKdN2@!kkw3_#Qt5^|%Q9*3=+lX4Q9F6yXpx$`ZVU=tC#3F=zgxxeA^S=!;3S>4eOE zoTY8N77oDFfo`HcweX1n3fbuS{h(F&P<&d11I)Idx+*u|q#bp`Eqb@*TMG9e{Ms3m z6QvSR4HeBP=o^{LvtxDp=EB|Sfl&}pfmZ+I%eH_cL+fqS&Q62;m>zMdTg@a)lA>e3 zcRqTE0V9|{e;DdVDP-o^HImJ_Oq5Knt%s;dQXV4L^@#LaA)pDTEzufakX&~i1ow_h zC0m3d<&d78#>_91IlTwg;2~25K!v`Ddsc$^irK}DN6+-2-OuWOQY2yB+bscWVD>&U zl93RK@R43RJ;fH7IRqrQN8FmMGnv`K^M+`P0A(-e*}LR@8O;79$5-aB=L*c}9$0rE zb9NtZ{vRs;Pn-A;%XqUz`j6?k)KKojqRi{#2w5#Xo5dX1@{B?6_8bq|+rSd|TI(YR zS**N<&fmo}#ogb;)}L!q{u~!0uDO_GskQi}zx?Es8v@M;&tKE`5jUqE1wkFLq?>S*R z!G3b}tLV_EOZB*5(bubuixfE(|1ibRLSr(6(n2{wQhr;iG)V>=$Rku41{2j&X+K z6Nj03ksd1Iw=-{CpAmg03!`*h+6q%5DCws<66mN#+*j@c7lf_@vmuf7RgxWvbCJeO z6-eIvY&$q5Si37*?9CDA`d3r{E@5e`%qQNm2j&Wmc~~m?cq@Z0GlpsQy|3Z9!KKH5 zZL5D8Yc>=I@~Q}irMs%!%Xe(66lY$QI%TEpIval7JRFoI1C^X;wGNI;Lkl-~Z_nxw zjmoW1UIn2GYu3#|!SR8gTJp+w2Lc6-Ik0yJ-G&v;5u1sLb7~_vfBd_W$}qS}YU!Dv z9-kl!*k_u4c_sl%cpUvKKptTE_Lh2K9(E;*h<!u(C*Xro&%Z63xQrpH{N(P zldOJ4L$kBpsadTpUo`RQd~rhL0de37G7`SCC*2p?A*7t@Z)9-OD5~ z-UeFIgLbEcA=P+D?Xt~v;5?zYp9#JK>9NMN3T+A`ztXW2pL*FOI$hikVLT6==4z7% zsdgDs2+u-cLOE0+1VZ!R(icJ^$A$Re=R&W8Xysq4x4Mzd1=e=K0pLKXt@W8ypPz~^ zLcqrLLvKKJV{20){UAKfH3QkJANouYnUh7OW89*=J^Y>L(GUV0zSy1Fh&KXXrG@2w}v@L@z~oryej+xGNf0c^(G6HN$2pBQoJi z#^O&@i_VdyQi9o*ruGe)O6iapcv5G~z{@Vj+RZ(iqE(hB5v^FK- z*EdHYHnlK*ysQ~u24N;+`(7!k?1`!b_qmd+beNuD)cB@d zkvK2|o>T_zZGgNJA{-!sair>Dmr9UaZSj)X_+&MbX>^kB}$#wKJ}H)rKu zlhQB1U#4vjpwsErK()(ZU_{|9fJgqZXF^{7(TKa(Nt3{*rl!u$%-CEP;l*=sa7aK@ zRaIxUw%mImi~)Zp3|%W0vfRvO}A_26MlLLG-8fd+=zfB}A8yg!xK$mnq$odvA>KjWNAAh{O zk7}Cxo{PEiQ0E%y1CX<4U)j*wn$-&{hCf=8I2oa|dl#jE8yFZ^-M0Wc4-M|Q?a1KK zImZ?O4hCv2bN6*oXGch>hDzr%%j(Va)fJwMFH~4t+uV;t_qbye&S>rwrB zQA=5q3FctjOBN0>GfRZZN3I?Ul#vq7FUi9}^R7uqP=4&-0#*NjShPa-LrT*PXJt(xmGIm~7`T z~4WmXot{nSfWk!-E|>Ak}() z137Rm!~P$jg2KXofMm&#mt{N(O40ik2g3huzYtg=Gb}WLl{qdv^sdgPR^H#L7DBfU zl7E!vGIOH!d|P()OG9JhCkl%q@E?ne{(3+xAURK|15dEL<=qKlh=TC2@x?E5F+4!j z92Z3NQ&cwlKd{iJW`;9P%?$_~6no(1(9s@9>DQGVPyYn9PPkI2+J{PjB*b9f|nYZ5~9Y?rp9d#LX%SrZo zW>mkFf@IVdnv!MvXt#9vu&qF=U4CD=^Hxi+=Id9OlAukj=!z@ax3R`ESR|c0kiD1* z4RqX#qve1gOmgs=)G%XzXNlYz5Y<#9!+A%wRb*ZM4m11e?)#QTKF1O}eLmD);Knx> zF&Ps*VPX(H7Fi6y(SMDGhvJT_(tL~@hjzt`J|pF=a>O*qa$dCjvJlmuiS`aFP_Fs)H$*sgjJ4eWiQA{h{ z&{NXdrc;VkDD2vdUq11IWC4lB4^XdxXBqJuia4)X#^pA#YEaOi;+J*pk)H!DeBF2w z9JFglUpYUZRDN+u9&2K61|G~|_1(j7c%DZKrHiDkTT?Z%^SR%+=68Rh?HjcNiCy@M z;$RuJy{_mNO@rQYlpcGy4mBFUR~6A!Q-2cIn}q)*CaTKh)LF>DuIDd}hIf+6QiNOJ z>ym4l951Es-z0!h@fiGdCuAbH=^C#{d3_C|_$>bjM#T>8dMnzK$r~6*adBs;661 zYV>ZejBA{+E0py1-Ju89ZW=yb8KX0gVa)SE62N24vf*Sx6heY3!j1_@hz!YOvsy15 z4)5Y^b{27g5SKD-Is;v1>>O6jsUy3d3nSMxPUUg7SN|qlB=j=>Y&|-cQaxgo&sGca zcG`7j0=**XXJ{6gsXpVqt&fE!Jt(7l*K;0EisCFOVk>7gfPUTX83v@74Ox-|NtLwD z6)2h4C5Cnevg?=F7^a5)U0{UCaCBbGOKze<_G~RI?tC`s5l0~j#=GG;FYwtP8uHNT zAcVrquaTV35XqeJb&2YFgxYz&8f?EV>&m(68a35`6SU2V9yobXLgu~6Lj-4F)uuT$ z`LEK;%^@7wdLp7>zY2fcO%kBO{H;?~mdr!%H>wCfVtND#$gEKzU z!c2_FM502Nhltf``3>?B%yUcsU@i#zqG&11fBfn!buW!}UcTH6^*MasxOCgh(GMkh zEZ&x*2-;QOM1ndy=tHS}*_iV%ZIkqJP*I z<=@v$Y=|%yx<_8Nz<7O**j6sXjiE62@-#WJBvbQtv{ta6xnHLdh0Hp076{#X4$LR1 z#q_LQo37&i4QgD=A3^i3Go@H`R{dey{$YyDzUmgR){B&Xfl=!zQFYc<>3)zE+fBrW z=vjoOq~cKi=S$>DHq~~Wg4A!r;}g*zov~Q^bqL1o6op#Y#}_!rh(iuDvpW~7cQv3{ z)$h#H#`c5*RZMz@(!G5go-X^}o2Ar|0A&Q}BM95#u`H*~ick#%qiZ$-yYS;NWQ z5@N07(nn79U%h~sBv@w2++SH6@!+LBvKPNR6w)j&f05h$i?@xExk`-t2KriX=TO$` zth6>i$C;Hw{)6k*v{GsSbn~QM5x%yc3X4PA0_aMRv)bMbj0bwSm2Jw?U%AP)ym}aw z!h|Bx&mm->8@B|a!c88pw`foro=n;k5M6*UEl&*Q=ST-Ftobz}jO{JDfUN2`-r_x& z_nehs*yfa{S{x6hA_pN`?Odhu`mtS#UTvsmnzj8w`UYc@`iErU^Etfo|7r_cAnlm7 zDZE)jQhl5Ck_f&HHPL>|&kPnPvQQd=Z=Rr--s%Z`z*0_bU0w&nk z`EgM8=jYlyE{C4m2A8&-gnO<9rO5N|41GP}eh}Jetz^m1ybHm!wQF{%F>d0XTWPQm zzD;Ttt04!(ZGJ9UKa{xo3f=qW&mLBY(~C2%)fQ{Ef+K#w7nE9uL1joZM6oA$EQbmWwH{>*i|iQFof9TW@Q@tV?bKdliM zVnEp4_v(scFpCuj~d0O>Lfe zO;hvK(xhg5?*6)dr!x77#&vvJPf5sEnBMk%VUq@(-W4_rTgn&SfH+y{ z>NI@qH*OXCyE%iEKNnB5G9EL$;7ry%Nbiz_-|#g|(bBixL@*Kyv({TVyh9Q8FUrip z!J7^VPZO7dr4}PRiLF924~1W#QtbP(@d#8zFLPgRWmH(r<$4-@GR_6E)v9aIZ zb`ntfCzJP^zisl{B4=DhCb#az_$IVTIu;t*mYl{T#^2&uJ#X8^V=8cJ8hQ_Mt3jD8 z>wZ{h<+*V+b@Dl4;M@8Op6B8(8{=dJF*WZsRMGjSxW`Mptl7RfdFnOr3+h)(=&%iW zgOb2AIzJouW%ww!zT^pc!zElaYMIw%LJ)Cw3ATM^jmCpnvR-j|jYnhi{WUupgI7`( zIMsEF_Xvbo#IMK99PcW*R*%U!H&0+9cA^j-Qt4jjnNfF0e9`MUwruPB$frJ>ch*x! z2zJBKsS@CgUsF7OlcUHjC@IJ1_MClHO9_7kj(a#jsd5}!pLZQ+4vxi@Jt)6II4{}S z0MjWyQ%Z+T+hdN^PvwN(vtgK#P@$Es5c-k8pGYzLdf=5ON9dhE^A+y)a=T(`_EQBQ zFZ*>&6UWLqnrkC2+Orm<`a@{!AQWnk4*XTKbA<5t&rZ3Q;frS!a8#CVDsx!!51Icau)wY_NK;MfYFu!E$J{`Ft5MtO8 zxwkmKcasD(%hH*DeWKzb-5B*B9mDF0<&-#Q)yQ&G(@x#Ttn8;2DDn;YK9eO-Noyjj zZE734jS9^)d>@4i9k8y*b2R~u(kv)0SUm^c&@PFkqr!ir)U!|e7qmz-;^n>i!71EJ z*${ERV&855%a1FQN<9RUhx`_HuT^bR#Js{bHc%Xy;< zDUYf1fs0+d9L){~Moeq^OWZ>d{{dxf4xyA?uksEYU`xy6(}-V};~=`lYmYc8J_b9I z$c^u_%Sv`1Fs{{4tatP+%pH5oL_7A9o;(uD-F$azmL`gS26^$l%u$YGE{P%Ov13I- zu0r;;_fnhU59K`adRP9C4nYBI&CHYN&+FZSq$!IQR)F5+Pqwo#vs``HIQ+nr1sR zR0r7VeehgGmVlT?6md6oJ+(N&&&q+4`&l+Ri{!lrvg77a6Na2`~Brt-#7hR z&#|zuHvhYe`#Ivj-;w>VQyz42r*3;h+~i>&6iQ`#fjp&rS}#xG_e(C9V}r+M+BzRT zk}!;92AEcecHC5-UyUl?OnRu0jl>Mz8W zKkWzg>^4$` ze-p7Cq(}qM(;7Nn4Kb?VO>RBnehHkLgQ8Y=;?&?ZQn&aWb zx#z9jfT?$R?NuiSCbe5ZlC=X%IV(?jRS=> z{nB@6KU%nAnYi*(*J;`7ZMt7kkY?PIeBmEM1Ii~grTV<7H8#?zV?Uey-mQefWKf%X zYsi)P7}aPnF31Gjf$@Gy!Vnq z`W<~b)9E*10j7!h3tZ65u}BqhZdsWD%4|Qm{)(e+gr1*ab5*RL-b%F37}G?Bj!)Cc zKz&|YlgU+zv#bBiNM~Tq)+ueUZ_Z^3nV>#}cc#MdMNnMw<%3z1pdeEH9@rJ9L4(8= zGJ;__p056xl%ck#djCjYt^TB04>j&aqs*Dv&x+q;TI074T+pNz@-)y|yU^xQ6D>O6 zTPGtlYC*o21W|Tp=nuDI4 zG@@%>&=ghND4|{MIdDjm=Lx`u=Dpqcz^=@ClAqc^g)jF2(FowLJERT?+NQ()s+Jl6 zBo`p}hq670vq;XpF~;dC$O4^Nf&oaZct_Rx$!b^`-r5KB6N<}teGv450-J=Gn8*js zYYtEV{En@wk2Pm8jqU%f6wHG|SS-C~gJO(+RUK?i6Zmfd`+l&&=>Pq3AYkbq+&2#d z%=UkqPx~IExbL9uraxKvVn3aO>rKL9WuMNaTC`;T=Lh#C{<<(wWHOn#x#@a85*<+` zl4?jhy>9=|JZIKJX@x-W0jN}}PiUWSp@{jolzAH@Fi>UUp#KXkBLXxUP3FFDX%Hw6 zaG@dRfiz7`&Cn?pA6ECga>*FKU%ruJiTk{WR;zU1e&y;KYPGNN`C-rx3scQr+50{} zK3cdu1~BwQhP|)B_FYln1G3@0jCW=~CGYop`^9u;gA@x}RAqMBz+EemT?e;b!VT+! zoJW~fg8I#m+74cKvMz%HY;A3A$Gry!6p-PDV&K~u7g~lFGf8^%?8m}=N-e30c4V+- zvdeIGQRG^9z3cMsr2)IPD;gVg=--^mewaFi8F+(tl%b4&-n@`n z@eC|D(B?`dkJ{Ig0&78~Dx>K=ZUaHF!vNS_3`WpH(+ylNmSzwMuGjihHuUIAvdys1 zb8A6gP&dlVU{`T&11^tOVILV)Gc+;#arNCy(r@`jM7H~7vYm?aiPT_~s}=s$S6il4 z`_eW)_{Q%!ji*za9z>E=$6F00-7Vn6^9dGqc_M{>g07J7rMBYo<#O_HscxQmOym>6 zIww$@>n)N+%M4snH?c$R_ErpOo*`F* z4&wX9_lA_$Z9~v{5;>*?>N2w9vY~QchO$vnIS*uh^DFJgvj~o~@%XrtA)-Fs@w;CE z3gi;u+8%8dsFuqqabO}Fh1H0mNxo8hI}+ds*!w>9I`e(mW@rAoWrix|S=Z~u=a?FW z;H-Ul^0oMs2#D*>MR#%c-t5V4AWtrbAl)5mJuU&(LnE4=#}8TFoiT)BP>f01uk_cy zzigyD8;xlEK~uu)4k_^?$r#CKN8iJMWa*WUQMdS9kgn!5C3h1@+1H6O%Myqfe{*CaEW+&Hp+~{>lB9<51$v$ zUk{Zn;hgma7lDt*FyT5GCbUf>H^jq({Yd`PDLUjOglWT@U{v~Q{mBQ`n(S$d@)3gj zq!+-ESboM0@@T8?xxOlOJNQj5NL%z9e3e5AxcZr2*#J$W7BZ#;W5(j_>o$WQt8C`1 z1Z9C~U6ZgTyAej8PaEDIKw$zyr$8ty0Ct=X!lCffbqs1h83SX$pi~hQxrD4$KITu$ zygQa7jB@>tqEX3zZ7TiWJNC6e$0?-^52mg=v9Mg{`!{(EAg0;m@T+{mbXhAKb+fEia!w{~oEK}8qQe7zBr_p&GhhE!uvb(aNBSSj~&xPm1kMpqB9TyzTzWmF7 zHhHr0-LIX25Fh%Ejwee>#_Vm$F)#VLHa8RAv-1I2S_{|KZ*D(pgi3N#h6AY~jPcCg1k)MJlgt_D2}%GJ@PP zpcZ<4gYh5L)7i;JzcbihOVsgR;3fUZloA>fk$c@P&K>P*;Pv!STg`xd{ruEwyXcrq zLmEwyeoI(AlqHh0Mnp;J;f7#1e8G5jOxp~#Fuq0DEG+u$Ycx*|j*p`$bYGFyE->!- z$jR@j%74r?!??Z0JzQmin~phjz0fz@yfZ|uC~ESG+7SL!ct(kEgRSnuGgOiUlC${1 z-7ESQ4mXXQ*}62F_a$WBxV%hu`norEY^cF9O0&0DsOWUx-M-GlTvA>#@eLG#bIK|j9V7u}vG*$AqiHxV+rVj^};X<2bzweXzAv8>_^#>giQtJ`_x z-x2yJ>Pn6#7=H6n%s{XiMObchQ?wl{v#!Fw-fung=CEV4bT8>Ny$E?sUYh@vIe&^OdcFstD8glQ3`f@`GcwU!q z((IM(pyw59(`Q2r*7u4Ge#_HVumSZ2zG4thk(K95mN4CHKKe~XrG@Y^QN{bZJE?ls z+mY=4eiG?OCD09_Wi9`>9C`u_(^*ABU99%SsG{PU>{{)x3JX$!*BFwt~@VIfM@jgtF&yVnkxqez^0! z;xv^WWxtTRzl6Wzy2JZ>!=IUJ4&43yJ4~K9Q}pX|VoH*7z@~Y7Rr;J~hXGz%Xnux)@G90)wTD11U zGDg%^?f##gTw5vcI3PeCmP{xqvO&9OBV(>yM{-dsMhz4lnAm zL#ZI%;e)jGklEkNGj0^ML-mknhhAI~$wPsqqJ!UKO6>+Crh8Vfj;{K3G5DJFlv#4mZ-epQl1N z#5h#CczMLjmX|e`1+1YTd5+8V@E}vZtCzoN2})V7YI*}ROV)tAWxa7ssSAFj7TwIi zZeV;){LxHU`Yyj;ho75Kv@RHOPAN*|dSDnk5nEhDIaLPYtG~t-d)0qdT1iJNR6F?S zTU+SJanxd}`KZOADlVn8VOhv4*U-0)pB?m?VczHZ;1topr8^VSf~PfzeFil%xXq)T zTC*0j@Jgf8Y_yvzVF_$Yw5_$}mYWEhBU8HpkOV@xAJPkL{Ny{Qrr6=G6A|xX=C$vp z9!txYNO{|IHE`lK_{|DPo3_Deg>}F7+v48qh47xr-LM_bhLBddRLM2Qyp3Ev>B82W zM1tFla{c%lH-2`ZUs_M3wOhmT@cf5U9Cso=#YQ}Mh$e=2MYwCe_+`$bNx{ttBVovmBSx3al_&m#TZn($GclW5=%8eklVc99ZH{pV+Nv?)nBN)W5 zBe?@xLfvUcxmWT&=}D{#jRv1q>h;|2>-2b0wEttRetRJ$Sj&6Q^s6RMm+No;7*|wl zTQ29pJ{+!=d`^Lhr^oNY$?4sR{8B~#8WXncgs|x(f;s=TT()ovqgOQMD(n2 z%GoioFZLd3(R%nFui0L6-gpuzavCuA%~0%4CU-n8$QY?;Sh;!EAW`XhNIiq!78;yI zS5nZmSs$%yrUsc!@O}%rxbPOvam<%jKTHz`5DI)>r&mpp_8v{gk2+8g*CxwD&q$C8@*gk|HMRpV}*C6`{LBUJ5t#Z?elzA+??u@Q}@&m7mDxr=>-Byv6rG2ucP?JmSa$MD( ziF>KuZN@B5J#iSUT6bNbt?!I4*B>YL2~}aO-jWCUY0_-FllYGniobVSDmxV8UL~xs z7CNlznY=cUI>AFNQxw+c8)i^vdLaf`J@;3q&D#;!bE-}E;Sp_F9~nJ<>drxNOEGJQ zcP{JzM`d-dd%34csU@Gdw;OwwMd<{HZBAs-1bfZO`^4l6NBD7MkM5CPz7s2H$A+mx z`M?+N&I$c5JfeNSo?+qe>D;w^P5v$(mK(V#4N!UDli(fflcS#+@9y+=m9q|ed2M4S zlwJ#lgBl{bW9AG>k0g*gubk{Iyd18^z1RX0VVISA^T#Syzcyu4dfM_VEvjMNPU9WN zJ4Vj~Or1Sn)LvS(gnQmQxMuquc`=dSd0Z{_;wLcon7@U4%6z#8KI#1Gm3k2C!Q;3D zeOFzDB#8R>q_pDgI zYo&$LiiNr_-TW(~TC`$@gSvthn@sJ~KwPYKC+=#b3I|363!0}xnJnGT&e)OapCjbhyeOEP_gQnI_Gxt z&Duyl-IiO~X&dbqj;+m~J4&cUH+I~;6%&5s;+JYK5RcpPSB`|e+vR&F-{+jOI#_(> zqw4-Zr1+X12T<_@9XO@u^-j|N<|zr|AQ}m?;QQW+DAjp2r7(W2{nB?Uo?{x~_o5gG z;RxmJ`ZfOG<}~;Bf`&4o?;7LJNBq9XjEBO2SKslr4Y}TjdGT+!uR1V_d;aHCtT#u+`bk(WlRtjK*dXkEx?%f3 ziNKU}&gRG_XxMwww!=&N;Ws-m&vUy>X}7Q|hl36+E{1zDEyd|q?Hopfs7UF_Y(Z_>z z9V^^r@pG&(!JLO?{o6R$41qDV1YxD3tCtfo%mAvx)PBd{%^c3~xNMJE(g(uU)l<|d z-%c$BADy+cI%AdYnLDD&`uq_~j!rxH#;!M9NeFe*`%eI3T!mIdJU)TaJp-%>=Qf|a zm1Pi89xwLvBp;aXS&r+e2gZxQH}TZad*&B^yY5=BhJ_o(WIRFb-T8Xh*dXOsK0CQT z*L>*+S6(La51BEmR+H}Be;RKX`s|wR3UuzG_A9@&YeP=E@IBEySR>J7Wk$)|eN?yX*Hvb&=1mLDl@7Oo~Aw_2;w zO~?5QuNV5qc!;dgpuj#gKK1aAAM&pamUfKSLsC^cKJOrWdlbFaN%krO$stSlN4da`cD+Ha4s$plR#25K*;P?!?q7 z$9CzTrL3sgoSVk#&RLtw5&LQ4?+bcy1B!X;(N}(T==IBvkJr0{ak+M{%00G*TSp!; zZgS}av3`PY8CpikGcvo)BS`Oz)a=+7nRdLPmJSuIabc{_SOwPn*!1+-eJ?FwPRM>F zxEiAj7?0k9ZoHqwct>d9X5ykO!HPQCJQj-6%`6GJXucvFoctH};9D1MRe*)&GStld zTOR9YC(bC`AMttT|8~ZXtN2b1`DGFJ+gM^u5b14mT^^dD45Z8pnQnfzO%2N8+a@&0 z)(HmWFNX55&};82i#fDi2}ib_DX(|X4SqpL6`V!02{*NR3X|V!`FGy@VCG{AU1~g? zZqM5vj<^6iDj%pV_a`AZqzzzKs4i@X2KQ+O1bbb32CJGLdiyLF#2ywm$TUm7vRl~i z_N$b1i}>~j@@;^-#XVG1nBEq&Kxa*0n241U9}==5n3))CdiP8GCV;yj`!Rhkk3IKg+&no88+ha< z`5{Y!;l=L2lLKaKrriD6JX>N9v_>kg-hw{MQQ_K>z#Rr4|84b2f_z7JNNVK zwSMc~dnF{#UhMsdnca~~b?*qvBzt)^`mf$O{^>^N{EDAK@1A*QND1+cgs)`vl7%K5 z%kA6z=$t?gyAqsdNhIR=%8Q9*1s=$LuK8i&pUr@ClGRw!p!P2hsnBD%HKY{r7H zEOwI6+sU^OanwtGy6HH9R5C>lp_Y5j<+nGl!>-2-xetiNcoFZkvk54x5$tQv!To!s zCcvE^`^wvmxN!kfdov8bEkQ@!_EA9%Xp66bv@e`IIfSF~(8|2zpT4!{!81%7NAf*b z-4-4<$hTONz^_%eM)OS|LdCzbWOhXOO68N zTfkJt&WD4RFpapK;LVKEPs?037dcnhm_OPS5d;Cw-WTyb_K?r?ZqbGpf5LwptfsEg zSjaI{UyC$pQO7;IuZL9lST2oeCe4=-lEmlKjJ=`|=88zpwt4Eb;~b_#75X|xB<6BH zm>-+doOd>`;d4%tlk*-iN4vlc`f$8LKAR|uV`LjjYuXcZ(jGjB5%DFV&=FJ{VZCZqkc$6R_UnUIzl!DknTW^bCN_6uB$$WQf=!A z+vf_`)Q%o)K?b?`T*_5LwiBs&)nRxvodm!;P7e3jIc`7+VfL8P-OlLQVxYKxfFjCz z8?8{or`Tp1bTI^(q2887PnR5%r6-eC3SE;b{nie2v8po2M?-%jpie4!bQ+8TlA;!!%qhhl3>a9&b-K(~O4`#mkV4 z^ji+5S>bmZrr;v)>U0CH1)gg2X(H9n!;F@plOt>1Y%{FffXN!_iP+PuUA`S-YyLMW zm{2wuKnGApz7C022cw${auLg2$Ja|u^lqO`01($tadn{SCJLF9WlD8F_qFjd_oW15 z8k1q=0(6cbld##{Ml{t%W&^8IGebjHcFwZs!n@Cb?Uqc9REpRogPjNp#wkn_C=(t0 z@(~2jjHQcG2MXk-?+cFCuP$@mJyW}q7OYmk@})*}#uy zBZ)B)8*>8kXw10j-3s_9k1B!=tvqGoDuC*7UoX)1=fsE<7o!z6+i>L6Q1GsUJ!Q?$ zvvh%jQoe-Y>R9B!wb~EuA-#9}uCKhl*=hQHVN%oq;{PfgnxS5%Ue9cV9!Wtc97J%v zIZShuu3nQjeU7#x?1m?c$s2jr#Yl~n-;@;XGxmsh|D(1Mrg%( zbz|{HqyNRNX`nX$oJqw(^Ci`sPvb{E@cJ0r{$g}&HTnf*2rW+xuVRjYy~%m+@nOi; zMHm+qpB<=BZpJoM7}c--^LuOn6Vp=OsHB~>%FwrzYTzWa+Ryz5Ya?i2Tl6~b0B?g z&C|_b@q=Asq~dR1>yNIoJkfjG@I(g%;Rw10jDINg?yU{!#@pFKg^$~I1E21nVna9* z$%E#jba`@TFZhpeg9jD@ySj9LID^U{UE8R%K7Yj zDpQ)Z^Vx32D`}*Vi+g{%E{!D4GDlSyb`nodWusB&*g~ZTL-_?-X!S@!r3q$d18Qi$ z$asa%k1Ta;aRq#c4~GFc`vVV8v<;sWLgA!B@KPm&bxh?v)wt;cl-Gcv>C>|&Y0<2V z+0>;|SfVupQ?1RL7r|>e7g4eeXjwM-Uu-fudKRO*93wMY;GdC*Czj`fZ=2b}(a|U` zeJ7S_0=w+rysD9k8)y@u9`j_)BvuQ;E7Vjkp6awSDQ7H>cvBK7^X5m}rT(Vl9oz8A z%obrF4R{FdPbKA)m-D#znm=L}eG|0A$Vbe(y;9u1*UOxWU~$iCdRVAaS_io*;&)); zku7@%xI5qwgOyqqNaivA#Ft#u=e*0+NWP4-nHaz$@NK?FJ^niA z4mtK8JWjR*WXo*c0c$n=6G@7w5^D} z-C^|Rcb)k`PmVH|I)02BY?9ua+K`1V&G@Y$Q+fmS!!f;3+BfL$typaf!gDJn8r-&G zp}rVN+AK1ObA$a7n9I({!wxuFDcUnp(hTd#wHg?{ds+o5LLP7Mc&-&g{T=YqgBoL6 z8~da7k!WOBl$cLg#1orP)h6c5dKD-8%D%2|ubxtBW31rr={M918_&%Wv$>8K_MV8;UkrOA$!2VGhziM zNEvhnqS;^68vlw}-wI<8|LXe!oR5}<8LhO86Mre^(byBa*~UZq))ryR53P6uq$hswz|M_4%>|ON2eu5okmDnCoR68aLtj!&3e6)2ZRk-9pxdh4S4^|BS zv{K6kwEB85FW)7!083SV?X?>)Jd%6}LR4|?u{P;APcQ_FdW$yfZtN3f4%OVVt=^Hc zwu^dF_RC%;{`yQx@cT!zljSJtN$-d;(T8_}j+xK!aB@E?nVmv=PxU?+HYio+ZDak+ z+{LvPE?tRB%6v=xZQ@gDxK!r`n%%@EhN}fFl9g_fxEh_4i2bcP`|r!|*r%T6V{ZO3 zsnSZe-%*CbqfGEn#0_uUo{Wco^Do)vmhPx7z9f$?i&hMtFlOh`9-JyQ{-PXD+ApZx zB!yIDO5e=79Z!xtn};xmt?&^!?xvTE&M`=9F%92MF&UKM><>7ghHO_eDxY; zsd+ZXlRDOFD{x~g{JRnGvA)u6%$q2*KKUgPE;-AR{MrQx!h$;gd<1Px>SSxkG`|}F zbEmvuG!R!Hq+4l|U_U0Qkr>mz!e}i$cr@+2>UfUu?)HvY(%MG4v&cX&7K7Lv?S!cF ztC+OjhI4TBq^7ObUTL|MCWz`xb-NZo=pjc+JHS6MFKyd^2yxzLK9|r4e;L@%rD01z z2JXnYKuQ-_@U9y#eXXG&+~UJddp$ozcF=$-gFm>x`97MZlQjk0Ac%;OG^+pEEBb_(uE)} zgr@=|^BSvVY$rlQ_0pHMrM_WkUAIiXcs({q8kx{NCcFUS)UQP;D|5}5q|o!6=E)%= zd)|l(IGblJ)!cu2Tp^NZ>ixN(t{=Af^P{9?rA^8_MC>f}?zE8_S>3iuI7e{^P zVD;|%l35OPV0YBdpU#`VlR48;2LXj< zS6wgh1YOZS!{5pK&3C9`kqQ#Xhka~sBO ze4915gUKZWT`rj%?JignW@*vpn?gduuoI5$aPurp39C3W@l`tHUyZn(fhFU~(Pxv& z{fPA;W#eDGwy^Nn6+3SEIE(3yTZ9#)36d2#ID@fFca4my>pt4qBdhpn8U&`O)8z?K z_QFKUomMqC!}O0nNEc3L+9#t$_6MyR9Ik?YezT^~&i}+0U<767K3!48_QjOrHf8(~ zand}1@Ftx&A20Z6rufLjG3S*9P~y@S<@;d{&6V42>PR(~j0e|dE6%49^zVAbkdFE- z(i%mlFC8}FF7gB7dV|OM*`aP*qqi$QSaODFSRe$VNrI1(ZcQP*Q=tMY?UzRC9mG-e zw%SOaCxp{rv6F2sf&2<+=T#gcrmd8LonuN6+8&eHlk-z@!oyyhCn=w7roV`z28Hf$ znG)08V#-adO-##MAh*S6YK*vze8n%=_#;@viSFJlL!uB5T+3wj0>^IplHqfl6%68{ z4Ss@Mh&|)?HD-$kXiY1;Vvu#av=~efJOq7Sf8TKLH*QuK)`$7TXVK!5lE<46l4dY! zk2GN>O{GhGs`rdgfv~!dJ!K^bk}aGGv#MSYy_}Toa{O7_{d3q#B<0d3^gv$y@adH7pbo30ps62D*6%AtlW6J2ST z>hS_!dr=_Z^Xl!Th1);>c*+(Mym}C%e&23wvl#d}F~U@sGxM&wiNED!&>tsJFK;}_ zg$f!=4wYLHu*&4OADZy}PKmuj7OgjNy$rIPig9q&c_kH^=S>F7C2Vpp#hRRiG8&S+ z`Lp#+K6LnAaNMr(V&ZI^l@a~?YcK3a(~3_@k6a{0U^f(9Gg+x7ynu6sn}Iqu$y>z7 zIn?r-kyD2F_|4M!N9LcJba!sB$(Y#emPwCVVV>u#J?a`#b9t?Hq{vaEE%lX=93I$_ z{tVJCTsZgDW^24alwo)e`h3IUN zW47S>$ML@WxBV3jx^yF~z?k1FcIR?<5=Zf%UoUbE>S=CiSUrufI{Mm=Ue`KHsEdms z;umQ7iEa;RaW^qe#co2~?l9=IUWZoIPHnpSjkYgG$QV8~S21M2z6ZX#?4dVmZ{9$& zwYscM(z~3DOFk+cxoo5Hlwc6U1*TE2^xi77G@HSYyJGdP_>#(*by0P)V!N`^dc^k! z8HCdII1U3DlAqjh_3Y~8KXu3m4eGWpw0wi^Sjku0EG5xb_ST0Vb9D>YnYh*?ra-6O-tcnnYtCy99^zy7EeD1nS=JA9ZEk3boqR?)JqqS9CX{#gEqs%D6YZ z;HgorVUj~?L0^VXnPslL{)H~Ji(O=k2 zdv_+c!}-H%A;W!!#By;2f%!w9pIlms4jS=1ZPlVgU(*r7;A}B7yg=_JygNPzJ!4l_ z0ujoZA@6f9plxhoy#et$P?CBatEhZRQcC~i+Kn*u_FZHu-xZfzLCl=G<=qSxO%k=O zJcGx_gzlLn{FP@Nvbbg|-#ZpmB%>HnI}tmsdv}Ga3p}@Vm3+TS%ohmOpePkM>w0um z7*!?|RS%*T&`Mx8qlCY);NiSdCLDO*LbjL`yH6`qu%TK^D!tT1_6ZLfux#Xr)-_b< z9|62ch|HmwZ1bVG59jor2`0(hH_!bxEKqrSVr>t@4q z?95a5v_mU4hMsC??oRSgrNx62TOpXs66a|~oNYZ{W===u>5YSu#b~I#7honry&wY{ z^PEQ5jx>jn?k2@XDz7u&X>)Bd=}JS`VgN*S+dVW?Ou!Tapc!W&I3ZDlA^2;BETDrk zem{aXCnjNG(yLYcE^&;bsrwRarZeSpd!MduX8F`y`JIL;c49n$O_WQD!q<`W>Ev_I z+vT}k(Y4fVYs)Ox29=}X<&=3RZXo#~i+o2mRkSuV|NOL6slcfhiv8KZ3$w@K>)?=3 zxC%2^-40$q<`$IyWhprx{< z+<#;1Glg`j)VBg_YMz)7)h`oX;SaqGW2(P9M8j7wfb=CmFp!6cKuMIszMXZ+BI{;=wrJY9eoct*ZdLCu*L)j!|&I za8RnF%ENb+L6qWv&igM4+TFzp-0J&SB`86VUBwq6``?qCI}2A|Smjtse#ZBLhC4ut zW5x+k0%X+~As9;#diaTY?`E|;=dBp$)}h+CjsNrui`?w(0&;ifvcF&kM*g2~_IItn zHUu{#;?O9Db=_{nhz4RWi5F&M-AapoiyVE5I~jhL);g{!rbDDsQn->Chng0<3A-7U zb$HUxjI`Y1_i_Iun&m$1ub9=|M5N0iG}-YFxE9zyvQE-tOuhtOfALJ6|yUw6@{Y$;|B)QV-|Nl)w zKN#vf_(huQ+rqypie~@y710Ih|N4uc|MO?yUlEZh88_L6E{!{a!5?$xn-K*Ft0^8@!xI^k2igP;mALf}MOMFEVzhxF-@^S(Ot`seL z0HUn+l`@PTjk$bxWx~X^E4qHUvz#YemPN#V^L2yc_B}5ie#8)`!AmpRwP(Qe5wa^c zoZtQZ67S!>znY5P(^;!b$TH)b-|8Jr6>vzZkQA=XgZ5Bpyr{%px!QCgD}_ri>k)>)Fbp%Ht>dk(1dDg-+>x z>5y`Lth@B`Z+8JVuxVth&xz0PHs_H!Ccb(~4ckwg`(_HVmbUErRuj%OG3B;F+g`IC z=#5top2H5I#~wyTH5Z^w@u71&Sfb#-94y1luK6Ms2($6bPAfdui|e0pzp-l^QY-r- z#8P_(sTHpLX}f=_i#n1(XrldrZmQ}%u3(6 z*=+f(yDO;`+v0_@*Gz7VS__d&zN0ME1zsorTsK-o1{Xx!L+8yFE4!ETGOL$*ikG0U zqC1Sh{q&5YTF9@x`$!-RbU*7g3{y{EgsFiSVd}GuvyfBYY($V!`>AiK%|vz6>&!bB zSiJ-ghVx$!>;L^35iB3%er_ez1I{5w1O#?!3l;bx^>QEhjqGfg4UFv!O_<$m?Ee-D z6n3*WFtRdnqB1lwv#=Ee95%H9s4R>H0qR_GtaA3^Cgv709*!o;9`Y(i9#%$t#sFa< zbf6nQJb{gglL3{RjkPU^-%Swkx4iuD?Z0-j0I2>Zak3Hwi2ijzDh;`hRN{7yCRAL^ ztV~9%+^kgGY|LyNoIE@{j8yEbY^*G->?~~TOl&;-9PIq8tW^Ja0EE!tTR=x+Q+_20 zsec>}{+A%Y+{wwFpM?c}n>J=w4rV(?GZr>JKEA)wu(LD46-*#^TPFiICR-5A-;?}X z9tjhWk)wsZlZBlv)n9oH4DFnq1Ob4*4)o8*Kl){3|IY*2g8sn{PLajUz@CMTnU&?A znc;yzI1_$xM-u}lJ4Y2eJ8Pl8_gu=t(Ztox(F#N*uFOTn29JXOaPo3esax0@+qr^( zEdM#~Uk&+JN)rhKClet!C=Mo8UM5yf6*dljc5Z%lHm!db|98=U3YW7pwlH=7kKsHj zY`pxe9Q8Tn{4fAn~KS9&tU0z=On(?s~-aAOa5(Kf3D?*MkT= zNc`xoM_dmg@F4M{yB={ph`@uykM4TJ^&kQd5k-$32s}vq=&nax464;V6@Q?^O2$WH zb3k&pcY^`G*`kZ&?aUa|*GK+34NuYWCD9`6RMs<+N1=4o%+~qt%*b z=F{fWgu*-ps|6CcR%?x9gjscmhWQp-HZwsR3wGQaKbVmc6BC)+Ln(bo@}e8;mjkT8 zw93lLHs`b0-4Y1Q+6_w{ZElzIuCwe@{r&HFQU?TU;A{J6662Q05tZBpiF(jUK>IxZBdL8+b!taYY z>5b2nI>03VGe38VvSzTm-OS9a-joQXNJn=!N_BO$ zE&NU@^xS-W+a)FR>f^f-s;cP0Vi=;uDq@q)e50%viePKn#GH?GS4b9M+7N@9qzoR` zYcC4F_;@@$TohycFJQ2vQ58wWt`c+V>v*2ppYR2^f{cE1@`ZVi-(+QFrIxY;p!bDi zv~FPH;d+;-&^sK=@$va;B7JKrLDH38K#TmNs!I4*cY$Hv8d0&ay%MmLCtKg(hew387j;pJlw_oi0$(%~%iRO)FD;0mMt`;v=$yF-W z*Gyrd!pFz|uE{NK>SqD|TJpY8J0YUCw3g+nv8>Fh&EL9U{Uz`Z;`pLDreV(Fqe=hoI1RlLl|=%@o# z7CXYwHk|#sqvk~H*4n~+Rs#!N?dA7a^mrXzW<{hr8>3n7bB_!OfM|>EWirCjuAJ`G zd;PZk3ZCSabV>)NKKD3p0cvnYE?vIT+iSkG55LCkCI`|*r&NjkHBrlPru9QXHAK4imgLImzX2K{+7MGPH0kEW~Qm3 zp;(HahPR0PjDY)L%(oY<(YU}X;Gy6~gjKLuhq@Tf7;(N|2_}_w zOWbQJHKj>sxHG&$JZV_&UxX}|7R1NLBhS|3!(9yZ5f&DP^!0@e9(V~YCIl8Bu?g!m`htqCw;LDoBqXi?9 zr#~tCC`vD~-{-tC!b`}%Z&0&od1LNaKAF8QP z_E!SHGot%lbYi-4xNb{$Zo-2Q2=W!D=-Y_SJ3=fa|H}Y%95f?Jc#(WkiT(53j7`cS ziY3+H+*abLflx+7JK{^1v24@l<0G9@^}7YK0!#Rk%lE%(cezsBR$m2NE&#lgHG!Hz70G+`F-%^f+q`s z^mwlkdxm`CkSW}@2-;09(W$x~;bJ-Mb8}>Qd3kgZV$#y63=9k>b4&{e$hQY)dT$+N z`R{rQgb|O`oZ89O+{4-Lt&r(wdI!^p^p8{5n0eN)3pFw@jt$=A`A{^f9Q58-3E+6xMb9)~Z; z4rmT}X*4*u3yDv3W4_8*f_qZ+e72kDlnzhU2jJ|6GX)1GCWv@!=R_2f1j8YTr_O); z{Sgu1EvAcc15)%Iqso8l$`FCarVN;bgoN-&K=hmX5(g!M_D zrhN$c^G7w?+4;Vo=S!!r5OHFSjQ~OK{%k!mUrCw6lR&)_Ck*K|1m2jgn;U*oQqs9b zP^e|?uaObl($Z3ml%KtnzJu{J(p%fxIclZ*+jKb1(H)Dxz*Fopaxw&%#%}S*>dr+Hg&_e(hS_)H5Y1{n?Lya3TOG=H)<1BE{*<4U*Q1`v4Fos_I@_ev{{}i_vVSCp-)IL z>96oy|3wI2u5HbBuNoq>+PImS*VdL59Q@=43PrYZG8@>yusvqLMxH(Sp^@>8Otdq6 zN#lu6U!Dc#mHb9LsP8H+nX)hr;R%ZiO)@nsBEa~GW`}^oS)PIbAt}a03&!jcKh%!HV6c2sE}nOqDlLZ zAYU{+HKh*%B~tp{;=xbjKb8cMl4+R>9je!rz3X>3-WStmh;&4eUgv+*+ikhw6WGcz zua%Y6T#G01r1Lt)aC9^lH#avDUyLlQoJ{f9S8}U}qFo_+YJjC}&k`&Jh;MfwgP;70 z1lOLVvvn4nFI7raEo)!)8z=Pl_kVmv>3xP*XOk#jWKtYX$>!wZ@(WBX>{_Zq-weBl z=I{bA01>&YK;RxegRb|v>RYuhK=%arwS$O=Xv8@qIhl~^i$;#cO9=2ZD%Qx_8dGNy zZi##iMs{xQo}w(D_i!)7tOjj_p=%=jG^|=57#&sI*w{eAqEy2jb=J9od;WMI{c_d3 ziOO)68-Bu@gD?6};@=m1ucSh{;_Y@{twIA#TXQFAPy;BW;2|wcxdSwK5}gr*DJF=^ zD0l%C+l}xf;0>Y1<{Fw(zzy$RwORI)rV8VY39Q&fC1SYX#{kOU_M29tZfNM~ z;jI1jT=(knM?*>WMrbLRH9$sMTAD6qVPQceMj8+{Zdv=$Fu2bTzP~`}+0UxlTEf0# z2{b_R`+}eEnx4dGFH#D!1%!PJ>O=z=@Nx6-T&`X9Kf$Y#!=eex|GkauK*r~YGVpyZ z?*iUNr4g7`TwI)ynHk>k%Y*sVu>#pxbzHa^ zmUjM>o+PEnyn@fQh9D6BZ_Y;NU80Cw{aJ4KS@Zlz$mim@ME8!hjSU+IN8l=Nw;@|f zN=jJo>iDj6g - - - - The Architect - -My name is Tiberius. I was a kid when the demons came for my village during The Wars. They ransacked the houses and turned the shacks into splinters, wielding fire and water to blast the land asunder. I woke up to some travelling merchants that were passing by, equipping the warriors who were futily trying to drive off the demons that still clawed the village. - -I was brought to a village nearby, where a magician named Magus helped tend to my wounds. The magic that he used was something that I had never seen before – it wasn’t Thaumaturgy, nor Alchemy, and it was definitely not Botany. He winked at me once he saw that my eyes were open, holding his finger to his lips. - - - - - Fast-forward several years, and I have learned almost everything from Master Magus, being his third student ever to master his arts. Against his wishes, I have recorded my research and put several wards and spells on this book. So welcome, apprentice. I am known as The Architect, and I am a Blood Mage. - -It took several years of pestering before I managed to convince Magus to teach me. He kept on telling me that, “Magic that uses the life essence of living beings requires patience and preparation in order to master it. One false move, go a little past your natural endurance, and you may find yourself taking a nice vacation in Tartarus.” The thing was, I wanted to go there – I had some unfinished business with the demons. - - - - - The process that Magus originally constructed required powerful artifacts that he constructed himself, but were rather lacking where teaching was concerned. After studying a bit of alchemy and the process of “Equivalent Exchange,” I managed to construct myself an altar that would transmute items inside of its basin into new powerful forms. The only issue was that it needed a worthy catalyst, and so with a prick of the finger I set the Blood Altar alight! - - - - - The Blood Altar - -To start any form of transmutation involving blood, you would need to construct a blood altar and a sacrificial knife, as well as have a solitary diamond in your possession. After placing the blood altar down, Magus advised me to be careful as I filled it slowly with my blood, and said that I would need to be really close to the altar (about a metre) for the knife to work. With about 2 buckets of blood in the altar, which Master Magus reminds me is about 10 hearts worth, I placed the diamond inside of the altar by activating it with the diamond in hand. - -The blood dissipated in a cloud of red swirls as I waited for the atoms of the diamond to shift and reform. There were a few - - - - - moments where the particles turned gray, which meant that the altar was empty and I had to hurry to fill it. After the diamond burst in a shower of red particles, what finally sat in the altar was a Weak Blood Orb. - - - - - - Blood Altar - - bloodAltar - three - - - - - Sacrificial Knife - - sacrificialKnife - three - - - - - The Soul Network - -One thing that I initially didn’t understand was the overarching connection between the blood orb and myself. When I initially met Magus, I could see many sparkling strands branching off of him, flowing throughout his house and linking with intricate stones and runic drawings. I asked Magus about the strands, but he had no clue what I was talking about. It took three years of thorough research to finally find the answer, and when I brought my notes to him he was really impressed with what I have found. - -When you send power into the orb, the energy is transmitted from the strand connecting the orb and into the very soul of the person the orb is bound to. Similarly, and Magus - - - - - - managed to show this effect with several of his rituals, when you use something that drains energy it will drain the energy directly from the soul. The thing is that if you use an item whose owner has no energy left, the item will instead grab the requisite energy from the user of the item. Directly. From his or her life force. As such, the unit of measurement is called “Life Points,” or LP. I experimented with this, and one heart equals 200 LP. - -I have christened this system to be the “Soul Network,” and is used in all branches of Blood Magic indirectly. - - - - - - Sigils - -Magus is a master at rituals. His power in the intricate layering of stones and inks is unmatched. The problem is that these rituals are rather… static in nature. Sure, being able to summon a meteor is all fine and dandy, but won’t exactly protect you when you are on fire. To this end, I decided to link my soul network to powerful items that I have created. To start, I decided to transmute a piece of smooth stone in the Blood Altar with just 1kLP to create a blank slate. - -The first thing I did was to arrange the blank slate with some reflective glass and my weak blood orb. Pouring my power into the configuration created a Divination Sigil, which I could link to my network and see - - - - - - how much power that my soul network holds. What is more, holding the sigil to the Blood Altar flooded my mind with information, giving me the knowledge about its current tier, capacity, and even how much it was holding. - - Happy with the sigil, I brought a fresh unbound one to Master Magus for him to use. When I took the divination sigil back in my hands and tried to use it to view his network, for some reason I could not gleam any information from him. I don’t really see why this is, considering that I used this same method for other people and I saw that they had no power at all, but to gleam actually … nothing from Magus is strange. - - - - - Divination Sigil - - divinationSigil - three - - - - - - - - - - - \ No newline at end of file diff --git a/src-backup/main/resources/assets/alchemicalwizardry/gui/Teleposer.png b/src-backup/main/resources/assets/alchemicalwizardry/gui/Teleposer.png deleted file mode 100644 index 394b08ad78281189973442d0c0532e437a8abc9e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 986 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 diff --git a/src-backup/main/resources/assets/alchemicalwizardry/gui/nei/alchemy.png b/src-backup/main/resources/assets/alchemicalwizardry/gui/nei/alchemy.png deleted file mode 100644 index 70819322dbb723c5af4eb70e5fdf6fd4631fb262..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1400 zcmeAS@N?(olHy`uVBq!ia0y~yU<5K5893O0R7}x|G$6%N?Bp530R%N1DIGvQXMsm# zF;M+_5N34R|6B_wC{yAZQ4*Y=R#Ki=l*-_klAn~S;FejGTAp8&U98|7Z1!T$rXHYK zpFCY0Ln`LHy&IS(>?z`KG3&^x4`x-$6Zi1zABl922s_K(oHog^@nGJix7FvwJs$3q zJsSSf>rce9ImtbS(^7waW52P}^7*HW*FR|3^?!VO^uI03hVuIQyd}$XfBP-|MmU(=bQP7pA_#fIm}=n3f*wtFZ(0# z-s=Av=bQglzF_Ft__zA&^-|gApMNep{zJ5kZ$oQ4|AA|M%O{JAwLj%yIK%=*a~SWO z;IwsDV<>;nGH-DaH$x&54#fX=c0>KEy}zQXr#wIS&!&Vy?&;oN{hw@Z$Zuy5P=ldw z7up-@n}nHbcw9Hd3hMRbf;ogm^)9){C=aB#VtJ0UD?t%ZG`lje}_itTXKfitl zYl8tJ(dajdS-FzQXDpvfBu892pctb!-SC*i_1C3mET{ADo8yeIAD6!{#ow=EsjjNp z^^@^hsqFdl=bz2^e7hJJKWB@7Y@Gj&CFc6qW$YI7&p-b8^QKI3U3Fh*>Fq+eFELHS z6nX!SIpTWhob%6T%O8;`zOg*D$M88Y-F=*Yl-rDH=H_E)B!A47S2^RRP+Vqz z+-<>I3udB22^gNzjc0EDmD!f8Ji&7J{AA?|WjQQH>EDZUSZ?(hGjIqKjW!FOm~;1h zqV@YcmL}Uxf-mae3G>G8_J(atvq7%j&Qxpc3A=#-P85s_tkvadO*LJp+f%j_xTLK zthY($^W6T{yB{9y?+<5Wh>~G)A~Np`17$bj+wPkF$>(xi1S};PJYD@<);T3K0RW;= B{^S4v diff --git a/src-backup/main/resources/assets/alchemicalwizardry/gui/nei/altar.png b/src-backup/main/resources/assets/alchemicalwizardry/gui/nei/altar.png deleted file mode 100644 index b1de616ac851daf73b82273aca4dbc6db7331e48..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4204 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 ZTx?p)lhxVw9Czqq@*Lvbix?D75Qy?JxyOtL#? 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 diff --git a/src-backup/main/resources/assets/alchemicalwizardry/models/armor/boundArmour_invisible_layer_2.png b/src-backup/main/resources/assets/alchemicalwizardry/models/armor/boundArmour_invisible_layer_2.png deleted file mode 100644 index 7fe14b5eb1e8124cefa080ffa6873913f1677e14..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3149 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 diff --git a/src-backup/main/resources/assets/alchemicalwizardry/models/armor/boundArmour_layer_1.png b/src-backup/main/resources/assets/alchemicalwizardry/models/armor/boundArmour_layer_1.png deleted file mode 100644 index d472d41df372757ba91ff3fbd3195e0038fec8d6..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3830 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 diff --git a/src-backup/main/resources/assets/alchemicalwizardry/shaders/beam.frag b/src-backup/main/resources/assets/alchemicalwizardry/shaders/beam.frag deleted file mode 100644 index 82fccbe1..00000000 --- a/src-backup/main/resources/assets/alchemicalwizardry/shaders/beam.frag +++ /dev/null @@ -1,12 +0,0 @@ - uniform sampler2D bgl_RenderedTexture; - uniform int time; - - void main() { - vec2 texcoord = vec2(gl_TexCoord[0]); - vec4 color = texture2D(bgl_RenderedTexture, texcoord); - - float gs = (color.r + color.g + color.b) / 3; - float r = sin(texcoord.x * 6 - 1.5 + sin(texcoord.y - time / 3.0)) * 1.1; //(sin((texcoord.x - texcoord.y) * 4 - time) + 1) / 2; - - gl_FragColor = vec4(gs, gs, max(gs, r), gl_Color.a); - } diff --git a/src-backup/main/resources/assets/alchemicalwizardry/textures/blocks/AirRitualStone.png b/src-backup/main/resources/assets/alchemicalwizardry/textures/blocks/AirRitualStone.png deleted file mode 100644 index 73be4924176ac30f7a92f85b61e20b7ce3fe4d9d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 706 zcmV;z0zLhSP)}G)+l_5W%dB5sAQn5Mzv0UB?jAOhky7x6{-QgLAHGnh+y9 zH(xBAa|ULrIcLqe+iY%cZYB}OMAJ0YbzRoAsrnEAAgMAl0uWJ3NkmjtL~=@ac5+hJ zHHSb%SyiS90GioMQ_3lcNKq7O1_0abwyG-k_vw28AR;g@)8p@-%Bo_-uJ6H&n71XE2Sj@gxE$pDDR%pzg{29|RU&Jh!siHMoCUB}J=qB}S^kZ~lUvMk%S_0Az6 onC&#~93Aa=vg+Y-d2o36AG}^-NYgg<(*OVf07*qoM6N<$f>IqaG5`Po diff --git a/src-backup/main/resources/assets/alchemicalwizardry/textures/blocks/AlchemicChemistrySet.png b/src-backup/main/resources/assets/alchemicalwizardry/textures/blocks/AlchemicChemistrySet.png deleted file mode 100644 index 23e179ab1e5bc2cc0132f2f1f6261e70f074b35a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 450 zcmV;z0X_bSP)mGh0000TX;fHrLvL+uWo~o;00000Lvm$d zbY)~9cWHEJAV*0}P-HG;2LJ#8I7vi7R5;7Eld(<$K@>&L>?|`Z$!aj6F(z6VdcJ{@ z-!LRvXd)0P_yf?=#y_y%e=yc2wAff6CSc*Z2=gpNA_R~GopLhw=FG`^N<`S?cD_mDodWMI2)OEW)Yf>s z(8ba(RI*v|!w{EFbD_0-e1)ZzBx`|f*H^=e8&brQN21i@h= zD)dgI5f$7CqJpCTO>jUP+=}4vBUF%f!h2sg zO`0T(F|k=XpMShq@PqPB)3lSxWVKp3=Zc~bLd@s$JJ%1q_uprGhzyBnI2D$XFap&N=pdZ>??i#r%c#-g89f?0Vg2S=P2q7>0FK*YEK7 zrThE$Uy>vuNs_WG$rB)Jnr86fg9pTCPlXWUPhWvCdHa@g$QRy*IS^>jEQqPp$0 zF&_Mnt5@F?Q5+cc;DR!!HfnpP=A z4<7&#B5JJwKybu$-(qcRd&kFp45i zWQ^flDAo79k}@*JY#tTIQYi(DIifU8vMj?mPK>dRymQuCr?lGeRaG?@3^?a?T@wHR zAaWw&mo8pNl6ZLYhPr$Sz;D`N7&_+wVB@pg+2+@-27ypYVHgHo*DV$ctu+w=fOD=a r%hS_SYpwTQDP@dVE|*HF*=+V7^X72Gm7@z|00000NkvXXu0mjfPRcM_*HG0000TX;fHrLvL+uWo~o;00000Lvm$d zbY)~9cWHEJAV*0}P-HG;2LJ#8B1uF+R5;76lf6msGOxm$0xRG;09gaP3PpK7fDXf0000TX;fHrLvL+uWo~o;00000Lvm$d zbY)~9cWHEJAV*0}P-HG;2LJ#8XGugsR5;6}lCg>tQ51&1GYQEgkx9V762wLe#YT*8 zu&~8~+ij6-v52<5mSSh@Oy>)TRmc$a) z3ZsbIIHr+htkV<~F*BeB`~`Zzq<{pwzkikti71N5^Be=h!VIt|Ad{*DTaDXoWt$Cw zL;}P>TD(nn%m7HLJi~rp7of+jma1xw0_MG*o`Ggi2?(m@dpa0M-<2tID_xjU zz{`GLmtn};^8kLr*=x80PD&sLfLG0?#zBC*=eKjb85*u=;yd8Q9^?R!0?BH{!a2sy zu`%O4umm0yV?4Tv0FP=leduSB74#A0Y3EmySH7})pgx84FD*mIOpDb zN+|#UfDj^tAcPpl(K$ys=gQcZO;fb{$XGJE$@^R?N2f_j)t1G9F`my5#`Nn{ ztk!Z0jMC9hA{DM}Cxl)Aj!Dw*+ne3kBHS+-x?-s#JjB-@A);ZxVWD$I5vlxHz7opU`Oi;v0kz08ne~d_Mon`|FoW5Xr;C zBX<6m&!0WO|G)h@4Ff{>!+L#Q6&N7^z>Kjx&#T$&^7a zW1k{~5JCj^l-|C6b<|pj6dBC{Nh!Vec)QzSj3odK@kNZ=?UqtHan3OAtu4!v5Mr&( zGBu7C05HK=8-tArjKr=JLL5hjoYM)7#>5Ec=Vy7IBaF2+06;nC#@NN>^OaGJ{3AO6|Z_0#na>#FoIOq`$Uy2&!m7zWUz zLseyp0wEkipnc!3fBvanURi7Xci-NHB_SlsGP7D~Df2w{-VehtON9#IbUM)_VaHP+ zpPr< z{|`Aib^^x|C2_UlvIk!WGxGt15&!=F8OQPY`T2Z413(DDTD$MN)*1i+plw@bZrgU- zHX_p2+Pm7ety0Q4M?}LgF!Sr{D**I;&&*Rw!FwTuzBldrZmo?mrZhi2J>71%QcB?=t5WK4h)Sta%DQBwlnx;*%Q{V| z);f;UAx0sDwRTxnCFQa#%=Hihfbib$`!3%v5fM?XFbt1f*9j@tH3NXO)>dXB`f@xX=5@_Y zV~FVfDCb&4?79vBLhvz0>6|CpmDY$zwBv?KDF7J9vFkdeR7xp?AcYh{GPC;q>!|yJ?zI3IJ%Wg%H>4)j4O3Mnv5-CZ+l9?ah17%=gtVm&=_{Yt1<$A|i$m b&gb)gc+5&GHlu-0 diff --git a/src-backup/main/resources/assets/alchemicalwizardry/textures/blocks/BlockBloodLight.png b/src-backup/main/resources/assets/alchemicalwizardry/textures/blocks/BlockBloodLight.png deleted file mode 100644 index 67bede34b0014ac5964d4adb386140460a1d1485..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 220 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 diff --git a/src-backup/main/resources/assets/alchemicalwizardry/textures/blocks/BloodAltar_Top.png b/src-backup/main/resources/assets/alchemicalwizardry/textures/blocks/BloodAltar_Top.png deleted file mode 100644 index 3bc3a60a69433c4b057d123d841eb6b352e17217..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2261 zcmV;`2rBo9P)KLZ*U+R`sCEkzKl)gj5&q@hY_5?)@_euSf22N!q0z{yc?Q2YY_Kym8e z5Fvwu2%hQO!{u_psMvL#(bD64NQRTZj^-}DnS22ry9f-;mW=gZvQj}U-ZdMsK&I8^7~DvX`q=iI&Sh-R*iMaebxT^cqSRbo0)-@Q z)3mfwCHMsJ4o|%H8}P_G5<+|eZUuyLaTB0eLJ^8msV$|A>!yim9A9R9X3p7rFCHdm zI&IlcXYaFad+q;P>o2cC1vg<8fRcx+`s{XccoS%azbL?zwec@AK0VWFPOqD-o3Ywh z^Gs{~i}I7T+Ui!|#!*!5>FQ^Ls@rV|8?XvhD?d@3mfwT7r+ff5heaqMz=~ljb45%Z z0&K%^$l!M2tB~?CTMF^sZ2rL7firW?Y=^WA75Mg+Z^60D_M(=s2+Lq!fw$lU^fLRl zG571Z4Z}`$V9iWO3GNm?q|}Kz6u#l)R7~$B6)SbrVP=D~b0Ph=@E?13JH(?i`A11l zTWO+txB>PoY{Mdal=)yxC$q1jr$T%j-OSydvoEE%DW-Pjyy~qcy;EdsG2TYjRJWZy zP}PvWEv$sN>dbq_7?A^G=0e zr3a-CF)4V&2?B-cx4ikCwLLEho@>H&XOCCS*gD|Kspqu_V3fY58N~}eBt^=Y)Y`vW zdp<Cg5xcjmY0J|JTf` z$VdbTDOn^yp_-Hw6A)md#eD_x(-v(v;hXSb;h&39L15jQq$qf6*P7;6N}-ydKz?9& z!@CeuLY>H3OydyOt{#cgv=H?1(o>*B?XCWhg`wE~6 zkvGL8!J=xUuR3WV_8fSag`u}0>IK!)s&_<^G5=`7k58T4A5@(pUnuh5e6YE<^I)m) zw+DxL*%|EZEgV_=dUyV3J3D>vP|l@zQuTeMH;N0e2gL-Y8F*{fG+oQHb?2Uq(HqGj z7fDTX|DeCUw|@}BQV3sp^2w(b<|CS5FdSJUxvID3yD46F_EwWFs4l?mu2tl>{f$8E>eY<=hPx0v2N{J z2pV`@%xsIIYElQly~3+7jM_0G$k`aY$mNiJbo|&z%;8|LRaH)@z0WmuM7o`_TNJ<8 z`tYK)*Q_mL0{X)2C>#|2@nQ22MW4<#rAg}HY>ZZ<=wm-j6dJpT=p&|O@e|KNg@MH@rcq)7xLg|q(})^~=()3Y;G(i9qu`Q_&3pZ51pW?s;w%qI1)k7gpJm`_4nhVf97 zpFj^b0C)tn@GrzDkl>OXUmNG_T4;V9ajGiRB0m(~@IHnps4-?OMgdWN>+H<1IRd>F zimunDXca!5$)B&AOU4L*J|E*15rOZG>OXq7;*1CeqC(TWJgWa-jDfWnuNVR8!>ch~ z?__Tu)}N;>551`h7-OuVLX5~TYZ7Yxidv1+>m z;P%>z*v(utvM%ym6M_{R<5g#k>Y)-;MNbMLy;IVNfZ?xTFw~pi7O@>4U87vK(@lzdzll{>&$vrtG z3_Laphf}1unxJSbRR2FFTTSuYvc<;u`>81&K5ev~3fhc$(ZftWP}r%;wK3s300000NkvXXu0mjfQYS!_ diff --git a/src-backup/main/resources/assets/alchemicalwizardry/textures/blocks/BloodSocket.png b/src-backup/main/resources/assets/alchemicalwizardry/textures/blocks/BloodSocket.png deleted file mode 100644 index ce0abab056d7672cba674c8f1a95853e86916a88..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 481 zcmV<70UrK|P)BH9Z+ifM+?dGx(;Cc@ z$Q&O>_4(st@V>V+m^p;SNy1O6_Fy!%MyTIuTNGh0L9%M zJIBoJ>+5HLl7y1Py}d<4MFfCDpwS3G2%#5A2mv7|NpA8SfXT8rzg{fPHX9B>O4)Pp z&Vl*r;Gnh^fUc@v#sH|Ty*@eubM*NDx~6%*;O~bAA;fSzKHF^K-TusGYB1I5!-Rm-qM4XS;1|>-Wniep>JU XwAsu-zt6@i00000NkvXXu0mjfb|c&5 diff --git a/src-backup/main/resources/assets/alchemicalwizardry/textures/blocks/BloodStoneBrick.png b/src-backup/main/resources/assets/alchemicalwizardry/textures/blocks/BloodStoneBrick.png deleted file mode 100644 index 1fd91f9e0a175ea2eff4a789bd7a8670603cd3ef..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 459 zcmV;+0W|)JP)b0000TX;fHrLvL+uWo~o;00000Lvm$d zbY)~9cWHEJAV*0}P-HG;2LJ#8K}keGR4C7N(M@g>K@>&db6>q`yB#?)QJ5kzVks#1d2pc)H#EB8Fl3 zEjcXEQaZZ7tZUa=gDeUd03D1CKZz_gI7CQLOW*1w*48rdB1@1=XP7}?&-t*pCvlZ3 zGFWoX-d%)QIum!M8jQgdDDZBXwXU<2VS#GtTuPuhXhbzDV4{N#O#de#t!6hF(X8vD ztaFRENfrF5F$8z;3uQQzB0@+2k}!AQl&@x9-BK7J85rE@fyO~D8m6ukP>azzO;vE-bQ@BQBM z@oDGxo{xJeo4=MPHp>ZvoF|MdU>002ovPDHLkV1l*U Bx>x`J diff --git a/src-backup/main/resources/assets/alchemicalwizardry/textures/blocks/DislocationRune.png b/src-backup/main/resources/assets/alchemicalwizardry/textures/blocks/DislocationRune.png deleted file mode 100644 index ed6c886f95969e1ae04bda4228251c1671f8456d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 741 zcmVXopTqOOBi_7zwcqbA zE-tp)EdXn6S(Y(Ir4#@FRaG%_RaMKfgb-9&mM2kz_bvtj1z>uUgA*D>=j zj@B3cu0C#rg{p_r*>q<&V^E?C4TAxyq==cAeo8GSdhfg3gqUK?GX$SRRb7wc1PCDn0P@~kWw0_DIX0 z-~KhNf1kt{WuL(j$98`I$N!y_GNp7p%u-5atvwu$!!YKYQJf&O~!XndPe|hok)HDqMYmIYG)wLOh zsW!FuK7{yuee?I@M-YW&krloCA@%*Z*=&|22tmv&zkl|fG4<8e(-S<{zJk zb9H~^CZ&`R;^E<;u4}E8_g)o+9>?kK?#>v)%%|(S-EP0%H%*gsp6A(n@4dIyZnxVn Xl5I!`(@Hx|00000NkvXXu0mjfCNWOv diff --git a/src-backup/main/resources/assets/alchemicalwizardry/textures/blocks/DuskRitualStone.png b/src-backup/main/resources/assets/alchemicalwizardry/textures/blocks/DuskRitualStone.png deleted file mode 100644 index 34c6a0a4ebe5228de488166c28e75a81d0dac973..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 762 zcmVxnc+ei?lc~r>; zDNz=7025qMb&<52sJ}LeNJIlngb4)xL{U~4Gvk^2IH!w#`w#zq_pVwjdiU-*Ymr8%*TX`Dk7#B zkIIq&KvE(iVooUmKnwv?Rkf~b9|9l(0H}&80GRFZxUMPyK!Cg`y!S-3JsP!bs{psR zx6azUC=?(wW^Xd#`x_fsmi_whq4)mm;^N=y>&K5C0V1d}^ZDiF^^YIVo<4o{|)~i>vT>f)>45~2% z!;E{cUo!wA=6Nn6P1_P;C(oIPn3v0?VK&Ar?(Ukl9SjDh-|vT}A)-#Fvsf%LV~FUu sED`aqw{KThRuEBClgMB=><@%02dv6B!55H6dF zN(D$-uGi7>Ju}VnZf8D zJokn7VE!EM!nvGMzu&)paa@ML01;j8JqjTVVhlxL@BTvz?o~n&bUlS2D@0=e2aLlW!ifWVd zBS$j)@(Ms!?YhpFWjUjJU^cVs-~awx{x}|wscm!47rTeOUT=8%X1;qk+}N0%oyD91 zKt=lfKAa;mBFZUg&Q~E_N<>6NR|YflB64GK;#N-0JnZ)RAJpz*_Ylnc%lEoa$GUU= z7r@h;my=(yt}14}-1~X9d63!9Ht#VLob%o@_}|fiu&<_1+8>@8QBf4$h}29~MTCg< z7bl)|eD+pNJ;|-rdjREN(A0GxP9nalDl*GCGjO^0sA-y;i<5f#Thq4V*`Le($1z67 zdbh>*)>MtmJLk)?M2Bhp5iN}Dnwl|*NZ~zz z?XPc{n3;PjMoi3pGMW4r9|I`Ma=BcJ2mo*9oTHzf70xlUnqAK4gBWjYZ~qS^jAAX< S?p?nC0000fHj4>KxhGEzg%bH36&?k79w&MG+Yl=_5 zFUqSc=WJ<=QU&K6t+fCkrMw=q*SG1*``)v#`YS1=zg92JoA~1&N=g}HY?`yy8nxEW zImTFfi;t!yB6yvjw(hW=U(Fm8-k-0-iv?heF#tg4+-kKt91hOSLI`W^nOW5)U~IG5 zoWyv17azXqaU2m508mOw0%b)uE1BDF8U+V*>cLX!>DDkcbG0=zMO= zvIGF~^d^)#2w!IjQc6i6zhVUr+Z?+x>D}{j(eLT#w_#5r;5@ zrqWxLXH0ADy~pF}gorZBq?GH;dKmltjgK)Jt)^*OE|&}$&2w3rd3FGR9C5NXhL8Zd zw)^sN-m^Z&NJK=G64bpm#xTTbvH*a2o~Iaz=z6(y&Q6ofGD$?2M=hCpS@^V50AP$R z%Mz8+M4k)boFnpXcARqnXxp}`s+<3EqM5H1GGq*6jQocW_gbsFyIb!)K)TRbmW2=i zpl{XE z)7O>#E(a^0inft}wjWSvou`Xqh{frp!5alx6gga;uQpUP*x2r^(J`S(=W&qm?T^au zKDzDwJ<-Merfh^*`H>q5%63(rF7=G(=hU-wa%5==2sF;T%cY^Tb{bPB$GJHNU%NZB zL~(U^R5P(3dHq%?A#Jwa#!^FQOEi`$h`X4{oqNxD&v{Q5vw!&U zz{agx&3HUBJ8Sbis;cT_G66(Hj4}4C6%jxLfU2tI=jUlKHwTDO#EE=7K2}xdeb=@@ z#H1u5Nfi;9nV1OxbLPt0wrwX(Lvns@i(-=Hc3+0SKx@ zL_|MczqIl5Um_AjL?nhl=g*$4s;XC(w}1J2=f>r(ZAB!{^XYmB;njsR>(37k&VAy& z2LQOawq}gk-hcPQwF}}sXW7;t{~|z)(HQe!`C`T#LfG6p`u4LkbzNgo6vmkQi|57r z5JJ;5#+aQOm+vht7-KSK*L9lG(37|W@{~cv9gje7uIh4`p<*qi{81q z-&a-f-T-u6mu1=Z{<|k@i|;>t7>!1ljPW9>`rVatn|nuDo?B~)2#J`vD2i`hzWwQ| z<)8|P5+hC~6AdAR0Ej!+FKzz*I>wmiIcJ%*_U?-}Prtkd0Gd*WF@%5yz>AzV%@n@3 zw6Okc-;0D8*Prcw|M{nF+dAixY7k)}SY25mV*sEmOI7WhLx7?z2@#3fwq+t_9-p3e z&JBk{9t;N3b%(P%In{tumEXf0uqmUjRE002ov JPDHLkV1i|UX5#<= diff --git a/src-backup/main/resources/assets/alchemicalwizardry/textures/blocks/HomHeart_bottom.png b/src-backup/main/resources/assets/alchemicalwizardry/textures/blocks/HomHeart_bottom.png deleted file mode 100644 index de3fb1bf8630edb6f47d80c425fe72bf844e7759..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 680 zcmV;Z0$2TsP)n z5rvq_P?$KEY-Z=n#l8Q0eeKW@sdr!2b*vQ;L*M|=y;(}B)_T7`o}ZqVb@Aq>^NE?? z-mWh%F9}f1iGZ57VW{`VV;sk6nmT}pp8h!f_jV;@1gy2HYOO;lnVCsM03d`AI3OS+ zxi=B5LwP*zA%<<;VhG*)vMf1eDy4`D021?dzpL52EZU4i00bh+L%Ba5%{wACcM{Rl z>HP8WVP-J|Ird{ex;FrLdU{gT%jvvsn~D$-GliUD83t8}F?RQ_U%xENno{cC2~kCI z8QgulZ#icKAQ4@bb(*H$`=JtJiZR9zo4c5Gz!)Mkx7LpRKtvkHv3p;aRpnUc1ra*{ zhp-=V>>?ubGLOTMQy!;L%;@cUB_<9LiO!eH_5B?Y&1}d?RfbxLSXHK}nkgd@6CKCl z-pqVmw-}>{GP9Yr*1CHxrA`wP9lIa`rIdQ_W^I~AGZoR4f{4TvTeF-?ARLFq9%xl zkde@z;6wyRQ8Uz`KO=~U17i#!Bt}AT;14+PL)3xY_nv!h?x|h-;h-I^(PF_0PtVTe zQ}+9Sh=>RPs!B1M>LnskOi4x7j}PVPKydcqtv{>Z@%qOhgkWZ1#>}c}W)!1}h^l>I z`Ehyh`fC^|ep3?NqwcHXX5dbV`eDd9Um8*=ep~TJ`04bjnxUHZ{c!j6mHe=W&oH{D zWy{O~k%$7Ke`(=9{rc{WQZf-CGXp@3@t3!*_o&12u^E|1g5BKYt5ITBJ#0rB|csySxpiG+=F}xs$+<)fV?U@` z-@A^Y>r>0lbG?*Azf| Q?EnA(07*qoM6N<$f||2cUH||9 diff --git a/src-backup/main/resources/assets/alchemicalwizardry/textures/blocks/HomHeart_top.png b/src-backup/main/resources/assets/alchemicalwizardry/textures/blocks/HomHeart_top.png deleted file mode 100644 index 45c4f5bb975cedf63d9049d5b63990f2aa2148c7..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 622 zcmV-!0+IcRP) z=vs5c;9qV+(HQQ8a_uk++FHx(N4!zB*38W3*OxhGs06Y~I}>Dhz(_->05&6O06>O& zR>p1L2}HQr#cAhS63+ANtySe(B(}Q)kjlIT#n;;_Ky&sMLYc?g>tj{!N;9wAJJa0- z&D=51=@Cvhw`27CxrEBhQthlkYu+S*1bDPzEh2NTJ&gcp27;xWYq}8xC=gY-_nP|* zlA{ebtJIupWrn*XH!rEAu$IbW99aofWYw+|(AyvZpj4x`+xAM%>~iiy@gxA zsidS`Wp2vaxq!%ARr@}(H`|#bx&&IYhxa`zRob}>WIUH||9 diff --git a/src-backup/main/resources/assets/alchemicalwizardry/textures/blocks/HomHeart_top1.png b/src-backup/main/resources/assets/alchemicalwizardry/textures/blocks/HomHeart_top1.png deleted file mode 100644 index d8ad8f9e4d4c223d00daf0ed92a2223ee4e87127..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 197 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61SBU+%rFB|oCO|{#S9GG!XV7ZFl&wkP>{XE z)7O>#E{Cu%tD^n2_m_b}vY8S|xv6<2KrRD=b5UwyNotBhd1gt5g1e`0K#E=} zJ5b!()5S4FX(dgro>bh!6mP07#md znWxkYLt3`&&E4JW^;)&YQ;UpR0f79I^SbMH(-aXPlWJ|+_V3Nj9yn;*T1wO!5wl50 zb`i>Xk&?SVMRA^=F*lfR}303rYY$mC!qKoS5-0+IldA?<*5*IkX{8?$$(ry$QRE`ChY zfja?`A}JYWHL&S>0!MB8;rMvF-G05i{CIM*awiEAq?wU4NRJ-?KnAIlvim+Fn#SBo zHttK{x)hl4^K!XbENUqvB|-9t_ix{N&R@3MnSldit-~Vt+(&pyC?(B^AVC`U`vu5;cD14+8m%-m^~Xtpb50$%j}jBi%JY~ACAB`C|i;NsbmRTd&ZWGAcR3d0mB#jrOJ|$Cj&+rY0b>c7zm{h1RZ|w zJ%fc@awyG=$TATmic-?ieJIOJ5++F=5DF{kn3%{g9GqnXWm(#jtF)7{mtffv>ew*dAx#xcjLVMbjH%eWnX%i5l6)8rMBW=KP)#~m__Wf}db9XQ1EN2G`j{=c0>Fy5d0AhlaQBIUO z9vU7im<|Ld+%)+08|w-SCvOFQB{dZW)d?Ksj8Xj z>3Dp9f8T62&o3|YJg>|kayT3ShzJpZSyVUo_n)7iS65dG;K$wF?}vvXiinAbss>dC zB0@y8H8cDB@o{}~}-904v~zg%*?FJaU7o?A2U;#+1<^| z%&JOMsVXx80AL^^JfbpNYbv4{VP;Szq9U5ck%(67HC46NJYs0g-HB-W{vO9s8JOK0 zGgY~}hzw>RI!+T+F_4)NF_<0aIWkpLi70wsOn3LzTCa)-RaKGRI|E=|%z%l&+=gK} zMnvJB5mhx!lSdE{5mnX2#f7a_0C0JE31%iTGXWT=OlF42@pyFig=uDHrp~>ePN!v7 zRb~c|%#umWsS1(SngCFxDrD97;jpX|k*aEIOQ0fR!(e8ESyp|0eMObJdq%|a12E6? zBK5yWD>G)!s#r`D(a+s3B3f$z78LFtnbS16`#jIRcQ9|aTL4hix7XM0ZUM;NT{>z?V^>DifOWvy5wE(D8f zo&X^s4iL*yq)2ce$DDG_W8@jQfH)!Llz@TZk=`}M7>zMa)AarDh8gQM0Ce52#+;s>E|<56StK))77=UhFbr+m zzUX@}-8wuVz{jYWU;X_y-?;JAjnnB=L}HBU-u_(?F~+=f?&iVcdVimZbWuo*La=x5 zsN1(ceg5)eQCwVXX0sXBb?uxZA^?gN01@%ddGCXB05LNFfOZ~s&dulZ*D)>+o-nH{ z;$sZnXJoCkNYYwOAKZV@U+$7z6h+&%0LsEJQCSuc0l>^eBq2&n5(0pX975m_!e+DG z@gyn6$jqwHM3j-iq_iTX09;>qk0A1I{82RhB zZ_NBm>D52)G;@dnK$1j?MUqyUh&LZTJ}*n}9ROC$*W)ND0Z1u9atZ-SvSdk;iHfoW z5iwt1j{vkWW*l7z;g28g{Q3R}InN(G%m6cs$iMH8K=fPJjm}wHH%+4_llt;7J`g;p P00000NkvXXu0mjfnIS@q diff --git a/src-backup/main/resources/assets/alchemicalwizardry/textures/blocks/RitualStone.png b/src-backup/main/resources/assets/alchemicalwizardry/textures/blocks/RitualStone.png deleted file mode 100644 index 0bd9343bc10d2647997185714921fe7355fe598e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 630 zcmV-+0*U>JP)`6pHR4C6al1XkOF%Sf6YqHt2YzeX-X3YQp;IY&j zYny}Snn)x9h{QkN-|OS?{_#;u@ra1nwhf7h$ld2!RTYU4vG;zv-S~dJB9W_}s(*ie zBH|q5*mqNfOjXSYA`%f6VMHk+z1H97lg2PrLd=L(D-xL*i_}_|-fJn5sj5QE=NQ|* zU$56vt1y>RYOVXepU1&O?jG*Xb=5KY+nX@a7^C;zde4Zdl#H+lW@ct0GBZ_;2vv16 zInT5A&ZQtg0Ibg^0K8o;nOSR9)p?%B7yzKE$8iWx(=kRR$_O1prl~CpBR;ncGKtyU z&8)Td_c%m^T5ABH=c!|u*}AUbew?S75z!=a9!F#{k(<3j3io-QUt<7Zs$upLGE@N( z03sqXGm~B=LPUV2cM&0?h#*83`ThMJV=!}OP9n8dS+{MPrp$ErsT4vaW8e7{lF5DUmse zxO?v%5hK&w%}fAssOGv}-rrxW>$=XZnfn+6iD=*d+f)^1X{|8;A~Lh8CV-i_dl8{p z_kCB@%zQkbECPsfzu)yZh^V#pcswQ%B7#h2e!E<5*XxVNBR;>r?w_Ck03JwbSeu$$ Q_5c6?07*qoM6N<$f_RV+PXGV_ diff --git a/src-backup/main/resources/assets/alchemicalwizardry/textures/blocks/RuneOfSacrifice.png b/src-backup/main/resources/assets/alchemicalwizardry/textures/blocks/RuneOfSacrifice.png deleted file mode 100644 index 20faa107af08bdeb448bc05776bc349a93977e75..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 741 zcmVUt2*KQh*ZD~A{O~OTD zflzo4BqW|Tc?Kj9B4J6K2pr>)?Y>o4pXw?Wv;7y}&wly&r?zc(yWQz@0s!ZnQYxh+ zga7~l&|2r5wbt`I6Om9#Jy)$Y=iC@WM4Qbf=X^LE0ARgd=bXE~ch)k-#IuxAQc8L6 z`+nGNxAM(f607ZZ-!kuy$K(C|o+0L35E}WmQ%Gy?U9p+a)dcOX|A5SZfLtfEXit@#1ng_+ijm5fKv6?bdql z0e})&Yn58blz0fG6wY~7dCvK=EMc5D=fXKRj-l)NQcBx)mG_J>bT%wGP187zIhV>i z0A{UCDdG9)2@&OLC8fOE+?~&7Aq31MtqCDCO~W~lF?#RjIRXH3#4t^HSqebcc3SIk z45gH1S%|0<*lh0Vx@L$WOaOpNsgg4hec3cIP9aRXWax+V_>fXEM#mWIx&{E}toI&` zu|$ar5o07uagJa7{s*LVjj^t4&UxSW&N*br80MV$H(!5ct$BQWNGSmnnHKZ;GyV9Q z)CvHE5R9?QmR-!hLLDS#28}{eB9sPmUO*drIcFh5W+M~<2WMX@p$|n XWDHc~-BJXQ00000NkvXXu0mjfrH4wD diff --git a/src-backup/main/resources/assets/alchemicalwizardry/textures/blocks/RuneOfSelfSacrifice.png b/src-backup/main/resources/assets/alchemicalwizardry/textures/blocks/RuneOfSelfSacrifice.png deleted file mode 100644 index 748a287df2cde601c2e28469cf21a0425e7ec558..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 830 zcmV-E1Ht@>P)vI{@14&%`!017C-IuZ&Dzo~ z>%?da(u6bt0$zAPNRuYI88#E#*X73cb78{d;L6o(90J; zL{a24~Ihl za9vkxy^Led7($4An3Pg(rKncdCvR1!U85+N%xP=WS!?TA@3i7n`a@?B*ccRO({r078vMqkql)O&midAc)Xj8HSjnEZ0GXW14;s8li+p%~nBe*E?$@y#JwLq36%|Su-7Wv)kK(fnKTMj8Ge$<2n_V*aGeZMmZ-0KMsWA1yQ2J6jv695Pyv-^!;A}}eNCdu=h zluBkCucp%}V@zue0I$!RLWn4uJC0KnMV4i03IMm9^Vw|nKQWC>+3%f4k^lez07*qo IM6N<$f`gZRH~;_u diff --git a/src-backup/main/resources/assets/alchemicalwizardry/textures/blocks/SimpleTransCircle.png b/src-backup/main/resources/assets/alchemicalwizardry/textures/blocks/SimpleTransCircle.png deleted file mode 100644 index d178e55befcf6815c66bf5d4b529f9d9e2517f91..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4254 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 diff --git a/src-backup/main/resources/assets/alchemicalwizardry/textures/blocks/SoulForge.png b/src-backup/main/resources/assets/alchemicalwizardry/textures/blocks/SoulForge.png deleted file mode 100644 index 11dc21a42ad191f178ccfcb8f3952a542f6bfb82..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 632 zcmV-;0*C#HP)hQ|6ohBaIq%&y zAwZLVKt!9027=kdNC+vC?e*I#zc3p|iBds87(taL9X|q5L|T^h+k5XBiVf1VGozW0 zPw(CPd$)75FdN;s^L)3I+WWp%H~Vz4*v_+?Nh%SN{PS_#*9xije&{`=qgrN4ByU@j z1VBJa=H%f1?KHW2i3oR+DFJxAUJGzC+#jx1l2VGfwM8i-nVECuqiGt*Svny*@YTgd zmjI09^78V>%_c~G^W@2~aWMP&*|QQKQkLiE@7}!GZMV0zk}MH}djP0_0g`Iw*?J8i z0RUBcaCQb@AVL1J*|=Fa`P=pNE( zgQO$^U6OQ=?w_81L3YW2FVD}Nl++|6X%@G&woCyu%ie$8Y{Kl&+Ti}(G~K*-;bfJD zVUYB3DfY=?5oQ1YI7y&ol3Y&HAFp3aYMH(F-F{y)_qEz0!hk}alrp*x?#pQkvy=|C z0>~paKvHJfKZk>Wf2G@bJ~F;}{`~an>i6sG*1P`S2B1s(TCGGFNg&M3ETwTAgIr!+ znR}PqtVEQEAU``fiKDejhg!d1ulG_Rf7)yo!|?Fp!bt#cU%l#5nuR-mxO1mvj_xh9 zxbJHfX7=!!ZKA3Ii`S`D--QjSY>tyXcr6Y>Dwf_Lwwp>X$ SP;ejs0000WFU8GbZ8()Nlj2>E@cM*00G%aL_t(I%SF>sZ(~&q z1mMrUxlP)nT?8x(LgN3w@|%zlg59W_ZPKP`Y#z=n`0;3tJ)RlI?aJ@XLxjJ({bbZJ zIAeu3?-gE~w z!CrXl_Ote;1;N@JI`(0IiTbCvIEuzMHr(mYq$cIiQg)YcL9-9A>iSw3v4tfzF- zbcWB(U9vBB%^hkq2$$dxe3h9-OP*uj4 zoH5_;(wWJ7&pA($1Xeb$efcmRkIS-bG#ZrBG|l+nf9DGJ^F08-Aq1sVmSxS(<7>C~ zDuAMJ3p@MeQX69e0LA+rX>BD+MNvcu!NwQ>sBb^S7{kRIecGk1E$6)MA7xp}7-MU9 z+`Ara-PT&iag68h{${P!{UiMGG)+^n-pO-q-X71ciuF!*+D+4}c-Ko`{|x}xdw*l^ z>2Nr-w%|8+ymy0t4!kP>p`RW+nZEjKq0yM8DXeVF-Fg53WPAB~a-$^{m*tPEp{mfu zYlM)HBH6eX&R*tut~Pd|ejO0#em9CD>YTeeIbFPgYl! zIp>%VDMYMd_rqHG;U(vswzj&Qtc{WDI~72=)DCB_@?3`y z$}(J?yr?Q@cJ{dt2xF}c0AS8}vbp>1-#_bH4@W02v^I=I&N)h{_g+fjy{Di40|2Gs zBuTK8@zwEReS6Qn@2QPlTUbH}02pIxwHhJBTC0@82qT0;2&BD!b7ALEBfBh@+PdGJ z(TuU|^BDk8O3SOu(P$*4j3R2SrHn;ikN>cVil@^M0sxd{IUEirlS!>stE$QvW38Qa b27|$OP>xd4_+pbY00000NkvXXu0mjfd5dO& diff --git a/src-backup/main/resources/assets/alchemicalwizardry/textures/blocks/Teleposer_Side.png b/src-backup/main/resources/assets/alchemicalwizardry/textures/blocks/Teleposer_Side.png deleted file mode 100644 index 45a0707b4930b35a21b5b1ed52a33e05547e1abd..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 719 zcmV;=0x+fdF2SOxq?AT0oDtoc3 zXtjCsfl7*c&%u4f$nZwYC_Td)FmTG2_2Pq=FfxP)BSV;>A>uv58|k`})sNLd)Uk6j z+ct@Fs90mHs7_@gLpY_efUI80jo!?J`e;1_R3sW9k|yR96%#>~>Qshurd25L=S1=I z$Zvr(AsB;`gHB1EEjybVqDqX+j~5H$MTn>>ZLig?2!udBIXHKzHhQBvcC+{Am0C8D z`ye7j6Cb4XXiv8!&JfHPIG@j5s*T@Ta_G_I_Uof3uUCIx`QA5?mtI03MpQ{cw9=~? z&UN-~o6gS7mfp`d2~i@HUYwd!bK3dAR0)CEi?f60^7~h7hsSS|$i34G+4;P7_D2j< zQY(W(OaP~-(k?~C<}TL;Ch~_@Ye3&b{_8?522rI|y58;p$l6t0>&g%sV@0bih=^E> zhzJlOWn0pU^*!n9Zpx{J!mU_NWp{I6f2-$C7Phux6f+4?%n%_MmDH9!=r51fpG))W zH`I(YVS2{qPZT|O`_sgFy5pxW@#B{$Lbc15KI(5AD_*{3F+!d4_$k2j3>pC5yzdzL z;d4x!xi+t-F?jZh5RkR2I!eQTtX@Qf#UhO+e*q+w8Mx9F<)Huo002ovPDHLkV1jeR BK%@Ww diff --git a/src-backup/main/resources/assets/alchemicalwizardry/textures/blocks/Teleposer_Top.png b/src-backup/main/resources/assets/alchemicalwizardry/textures/blocks/Teleposer_Top.png deleted file mode 100644 index 3818b504681bacd9f0598de3cb976b5c3d7e950d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 696 zcmV;p0!RIcP)I{#)W?0000TX;fHrLvL+uWo~o;00000Lvm$d zbY)~9cWHEJAV*0}P-HG;2LJ#9E=fc|R4C7FlFv(2Q545N_s*Ma5Oz!#Usc{T$JnMS#{A!l)~v7Jr45#G-7}u#`edy3Sw>Cui+SkN;*76%c5w z2*=uqyY{Q&{zi?t_r#(|rRYA3)*L+q8laDdW(Q)#7O)Ad|u?aiEcl1({9amGDZ?l%OfG znYSdlP>?N2yb_rdBA14B4yWb9vcByAT%Ou~>Cw$^0PT-Zur3sNv zIt&c!BUw2xthK>&%D~_#4H4R!<@~ZPjfM+EF3sHrTR^4Pzv0l{B86anSw{qgjI1lO z_}NU4gtlI<_>rBB#7I(SJSBHlR ej3H`KuJQ}scj@ezE>xKS0000b z;A)FjoD54+-Sa*W?r-nx4+c>`x?qgY;wiycWSOy+F{iS+=K8^ev;Y7D0D;tX{d!|P zxB1C;-+P{4ELEb5uK++Wri{hY$t<2!?J1ID%*{yQ663u6;q>tK@&1iNN-1N!b?5lu z4?hAz|NZ*LjuHvUQ>wk~0L3PcYSl7Yw9h}fMof?{``*ep`m|mR2b0Bc5P8{|7BQ~v zqZiMgqTHN4d#seytjdtEh$8@$OOj_A6=arDiiG7`JGbfw4=JWjF5^``O4u6CCmII; t66aFmfmRCh)K!_2*N9{cfq7K8mN z)?(oow{M@W*IV=X>esI?-h8R5ecvMy5tUM^5K>BSf4g)3#(vwji^W0?SF2D}>*M26 z^4r71s;Xj2IcH`Tk(?4C0ss@4SsX|4B5epKn~fHY(?p1-T8Dr{IcF9LArRA6*Qr@b zN%}WG41l?0VQgkIVLp2O&F;;Y!!Z2+``zV7KbBI!?4O^%G&5$B`PHW}Mj+bS-Zu5l zdjQC)%!~j;lykoD*}kgA7`v{MX`0%$W$zI{0Zum?RW&m+!?W(HiZKE}N@*NNVduse z1JTi|duED=M8t@jzBkpQKfXmoGyCwy{_!}92!4L+)-Vi&Xl6O*qPnxQ1Bj=ajd#vD zH;p4QZ_Q?_gM)T9BO=mLs;VO9QVIa%lr-nFAu%OD1OR<6DrXQOuK)ZF0MzV=X>t7- zA@+aY@6`yAnA%TYIFS&7oc6tQ&dk~?kDd2%nua&`iCIJtvAO)nIX9or9XkW?-je~u zlvK5pf{4z0B4lP_M#Q?Vo2IFoCaWS*DnkO(qNCW^*gowb5nP*+M*xp9O6PBiFcF&z# b?(V(=pQ%^n7QE~g00000NkvXXu0mjfJwizy diff --git a/src-backup/main/resources/assets/alchemicalwizardry/textures/blocks/fireEffectBlock_blank.png b/src-backup/main/resources/assets/alchemicalwizardry/textures/blocks/fireEffectBlock_blank.png deleted file mode 100644 index 29c332d44a7c388db65717d41d73ca1467bde589..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 311 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61SBU+%rFB|oCO|{#S9GG!XV7ZFl&wkP>{XE z)7O>#9-{=GkYWDJJ9mIWvY8S|xv6<2KrRD=b5UwyNotBhd1gt5g1e`0K#E=} zJ5YSBr;B5V#`&p}PVyc$;9+TZ>N8to)yuH+j@PRq)q6G?l2$zG&%7t3O<&^i+efBL z*r4Z(@W;y3$O#ivOz-@Ok}*Cn@IL+dnVW72&!iL>J{CF_ReP3vllv$(NnzpM!o>Y@ zOdIm&Bx_ygAXBTez;(T#M%;ZLfH>R&+0uygk{JUEcU%U3o zudjL^W`@Un=3P)^+BWg$-0HK;w_@y0oc>;4!}!xFt$SI@tm7abdAj{XE z)7O>#9-{=Gl*VE0e#rMLhV|<~O9AJXEvx$7(-@ zq_(vl{n}oQES{GdHm4U##46rB*S9#Co#~|v1Ea&Pc!kPpPm3+zy^3#eNQ*S2c(-qJ zy;pagli}O3Z5n<#oP~?56>kd6dcJtFMZ4kBi(68%kEeeP7Cn)yHb1yNShP%VmB~NiGP>fSd{p}U`M}XF3&sP>MwpDmh9eP@oaUOY0|oPf6IS7 hHLv;Eu&ZYOb?GMyYIIgvaNGuY*wfX|Wt~$(69DT1ffWD% diff --git a/src-backup/main/resources/assets/alchemicalwizardry/textures/blocks/fireEffectBlock_output.png b/src-backup/main/resources/assets/alchemicalwizardry/textures/blocks/fireEffectBlock_output.png deleted file mode 100644 index 524902475233dc3ce8b8ef7caef9a8814dfa1390..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 314 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61SBU+%rFB|oCO|{#S9GG!XV7ZFl&wkP>{XE z)7O>#9-{=Gu+jVOJ?cOq+02lL66gHf+|;}hAeVu`xhOTUBsE2$JhLQ2!QIn0AVn{g z9VouR)5S4F{XE z)7O>#9-{=Gw4QNrRsv8+HZvrm#5q4VH#M&W$Yo$~E=o--Nlj5G&n(GMaQE~LNYP7W z2a50aba4#PI6rk#q|hM)9_RVStm`Ju+iY++Xx*WmRg=2;y4Jy&77VV#G^B&$0`(ZXjY9jdseI!86f-N0K$f#Gp#|CCeSPEl#P#rj6`oYYb> zG-DQ4CO<1>3gE6TIm~EW+_L?7UQGQNuG?X=vU5(H^>na_S}xolHoLIJh+#fYXpqKt z#v5504`Zf&c=$8hWS0EYM=r_s9BY=Snj8ydZC^Jh+~m;{yRBcBaLZ5m@OR%ltyz_i T@}oOvg8b;|>gTe~DWM4fcj diff --git a/src-backup/main/resources/assets/alchemicalwizardry/textures/blocks/lifeEssenceFlowing.png b/src-backup/main/resources/assets/alchemicalwizardry/textures/blocks/lifeEssenceFlowing.png deleted file mode 100644 index 05cfdd4e85dfb8e2f646d98e518acf8529bb1e5f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 576 zcmV-G0>AxWFU8GbZ8()Nlj2>E@cM*00E>)L_t(I%T1GAPQx$| zguk^nX(&R7n{aDR!Zo-7LJ_1*op_grwVOUzk*%Ha{5W#^`1s`S5BvJU*A-EPaRdN& zs1=3*d3!^ipFsow83xk(JIXv`-{1J}ZvfnJ_ZX}-&Ps{%Z3D9)m?qNYg8H)HKR@{8 zf{Y^$G2|X9YK2xLU1-1=xhLqyQoMR9|O)1A7Ko#a0WnJNV#Y+kQ z?m=P}fN=~3`yNEw7H3aS__CnXdYA0(NJ=qm1|o<%ZWjAaQY-8`e!ZgoCJ_l{k;7-s z2e6dL0T8nY^mZe8DPV@TWXT!HIeg|Es}W!p7Me25P)fngkRBG`Jt%j$-41YXr>|O3 ze*j9(_`V||@fNo2sIO<0Qp}4$N+juzru)tL$N+FNyuX7MED%Je6ADCqIm0jnuoLzc zy5tUQV3{V;{jj}2Q9YVy3V0-FmSvinf_+CGeW}J8hL{Ds`9&le5VkKtNr!0#A O0000-p~Wgp&QK2!369ZK7kp) zfb*V3igJvpa~e@o<#_J23P=q3mhxoO=0ZtQh`Yp8h}ExygU_V z6`*wlgXb{HGUU|fTwH9Vg0zThZ1L+_M& x#cbOu4^|r23)PF2YyK1G^&QX^rop+x>j!M+!f6LpXzc(1002ovPDHLkV1ht*(4+tW diff --git a/src-backup/main/resources/assets/alchemicalwizardry/textures/entities/energyBlastProjectile.png b/src-backup/main/resources/assets/alchemicalwizardry/textures/entities/energyBlastProjectile.png deleted file mode 100644 index 91b4a55d75669dd58cbe8ff5678197e7428011cc..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 302 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`Y)RhkE)4%caKYZ?lYt_f1s;*b z3=G`DAk4@xYmNj^kiEpy*OmPaw=j#ovDrjFW1tXEW=KSdbAE1aYF-JD%fPT_-KLp9 zYO$w_V~EA+HB z`zSLrGshUS8=J?R-Fn_VkS9^e)tFtFzgcX(Y1j7|9=s-eYH}iW!kXI-Gi=hHq0xKH zG3mhP`Q;Mz|9>C-@bbJg8xXYh*T)$e0KuOhzeU%5IKE#$V)3LDaRq6YsVzr5a)S1K jf6K&taEXs!+9IHTTne4O?ywK%207c))z4*}Q$iB}M?_|* diff --git a/src-backup/main/resources/assets/alchemicalwizardry/textures/entities/explosionProjectile.png b/src-backup/main/resources/assets/alchemicalwizardry/textures/entities/explosionProjectile.png deleted file mode 100644 index 24b7a2f44377c09820e1cd1e859d83440e03ef7b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 383 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`oCO|{#S9GG!XV7ZFl&wkP>{XE z)7O>#E{CwFI19&W^RGZ5+02lL66gHf+|;}hAeVu`xhOTUBsE2$JhLQ2!QIn0AVn{g z9Vq_Q)5S5w;`H9hXZ@TE1zPuKGU&fLCGh=NYvR#K$0w>!NWZ9l;dtW7S*?bF%+^oh zn*VyfUZl7+M&WwG9AEX9FK5m)UM}SHU`Bw9e zcWS3Njwy2s*5{t^!;5^-HL@1g#~OukLgYARhUpMIO!y|MOCTxn#%19Ft7tDnm{r-UW| DkEd8I diff --git a/src-backup/main/resources/assets/alchemicalwizardry/textures/entities/holyProjectile.png b/src-backup/main/resources/assets/alchemicalwizardry/textures/entities/holyProjectile.png deleted file mode 100644 index 35a03e3d4311320da52fe5b265b932f86aa79f27..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 271 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`oCO|{#S9GG!XV7ZFl&wkP>{XE z)7O>#E{CwF9FqZ;W+zZcHZvrm#5q4VH#M&W$Yo$~E=o--Nlj5G&n(GMaQE~LNYP7W z2a30Px;TbdoIX1FG;fOm59|Extg}3<7xsVIw#A`KVN1h;wwtG$jvSAohe_#?#4b6bjjYGVOVo-5Ku0|L9drl4--=ztZ-5&Oi9sw^H&n$fcgH KelF{r5}E)x{$L0I diff --git a/src-backup/main/resources/assets/alchemicalwizardry/textures/entities/iceProjectile.png b/src-backup/main/resources/assets/alchemicalwizardry/textures/entities/iceProjectile.png deleted file mode 100644 index 9eab38e012662f0b91111f28c67e17062cd1276c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 327 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 diff --git a/src-backup/main/resources/assets/alchemicalwizardry/textures/gui/bookcrafting.png b/src-backup/main/resources/assets/alchemicalwizardry/textures/gui/bookcrafting.png deleted file mode 100644 index e9ee759fbd6140faf98e3d8357b559b4accd938d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3756 zcmb`K`#)6s8pofttjQS3xFoq`FiAA1ZIg&4_Y;{Umy8;_cDudHB@*SfcBy0+Q%TB} zschZQl-$FVF6s!oy+tJ^lv@#!Waxayd7X3qf%D6Jzppjl^*rD2_j#Vr`&mc1>)ezW zS_}YC@^E+d0l?4{1Ns~^@FK5l2bdS-;q2%e`|?9hPp`P6jBk(%%8Y5h(ibtm4| zza(gLFQ@7R_~AX_mdcoxI*p-j!Fcs}K-DxgX*BalN1bPWPh_S}qfTVa5%bL3Ye${W zjd5(sqJAoV(Z1gPYj=)PgZxCeyhU>7;%{Yo(z|n?cip6`QpR}mwz$cj&2>q7orT|m zllF0=rd#R`TQ{XyIppYA_QmxKp4rkKex>P6{BZ5e#r?st!PC6j#GBPc-i@)mnUb$# z?;Mh**CrHM^_2LI=wq53@JjrdTh@F1>C+dNo<8V5`1I{xb@^DQokQ4_PQxw!$2Vz5 zp2}!hzQ4VxW$34ou{QsyPd$| zENs#)l-lW6bXWM6=KgKwAL@I6>2rU{<8_3^n0)kw^LcbJ>v!@xhw(M1Amm^TXSU}xBDBD5&I1^)mai}JD zK`~kfGzRH^OCL=RF-Wb+5`8Qn<-vUFP%INXKhr6Ynfz`H4Rw^j9d;tS!uAkSMXZI4 zkdR3TY!__-KQ;yY6SycVLZe&ej0rfPl{*?lBo>f;hQD+X0dyf36B#mRw}vit;A=FU zud!y0>|{O(endny$Is)QJ{WVMgjit}@uB@zM#RjbLwoRh2DFGO&Q=a>Ij4n2!t3Sw zkdi1bSPNmJ8#LMPZxR@3g?&+YYqYFLa%Ava_KHADg$95vnO{>ca8J6#8K!-Y*6B$G-Lmi{AY{s3P{7 z(SMe$%C_KwdFdF0H7;twn;#Bcih7e!+0hvj-?#gtHp;kjI!ZO1$y$f_PQsmE0F7zd zSa~s?(9`R)u6?nydVU^pG>qFMTUHw&!Z7V;$%V4323gs8~|86ZJXo$T9(X6}b=b)Wm#tu;{|y3sdiy8t(KggJX9H`(BD zelbH*<=vrp67YbJ7DCIgg>&w#D5agDVFB^%7cFg0*3Hd%3$SE&z?KETNofU5(uDR~ zM`KnVJ#3VeLLh%MLEJ4xJjE0oDxCUdhQ1ieyrX(xK{wu~J*P(nu=gCQ#1ZRDvnimp zZGk=bNlCHkylZ%Kh_xvm(H+?3EYz%{zS(`HV=U?mF8X+4Qg_VG$1 zUTVPSqi%%2#ApzYSS-lq)t-7w7gow~vGS^s@*U>o-mOzpY09e`ee9NZEn3_7u)_#5 z6-ec1tXjJYIe{DGsFV-6TTE62Ee)W1G}O3$*u0@@_mTEx4~o~?CA2Qob{h&2TPXw_ z=+V=MpZVdnlXq(5BDAmM@-|2|H*p^P(HWHb=tFkf1kZlzVTcP95z8EX(wWpA{2Ju1 z6D72E_NKaRE-rPuFdq}+ZrE*Qu@|h>j>t=U)MfMs9rF9-V)yzgN=8539ac4qem1Va z`q7RKPxccZ2}x&SP}>31AMG?^jGt6!(i!UHz^ ztu`XyxA|h_+{6?V&WvS{Gn)_UMpWw(`RrF?8(%9&gpjc5=p&zJf!F391J*UzY*!Pc zNIsWiQA0>4m-&J9PmfBVU^O0Kq8#P|H&YMdvTOh*Wk?;1!wrzSE~K#xF*<)DUq}ay zrPO%8K3c&Yh~#_B_sN);H`^GT^ z@x4MTB&=K^eEO`10d65OWX;L|eK8Muex7+V+F7er`swaVwp8Nd{d z)?8F1PwHVv`~x6!RYw7xI!kdI49OwaFwUC-24xS%Yd|9tFV>`|GG_(eI7YL%&}n#Y zVxarVo#^%g3ZQ-4*vP5foyqTQ8;7IA)etB?+w>v?Ly8&HUifhGuE4vysQXpp>(kPN z-rr4Xnr%<|qBjwsC)0x#d20LVy<|Cc*k&y6%{8$1N;Dl2NSU(m^X<{Z3rw&qWlMgF z37|-U*bpNAsk8^jbHca}EhPV3GNH9?GbOE>85O#2mp2JNuN#`U%4SFNM18AyZFwg* zw{Ef{DLC~6-RB&y_VbDTv=v@~jV-RL5814bcL$B&h4ma|vl7hmLfCmd>%WIj+_=vE z>;5n7^}3fHP4lWd?v$;%9G7O@GI7tm$$va9Bc?c4w1zVJ%?r?0_}b640C@PID-{%B9HTIAJT4p)PVUS1*e z^HS1Z#BkG~H20WBspQrzTp1%(@cLlg*!lt6%ud{yNgW!M_|e3=uxu0fJvnFylxNU^ zKx5@JfEA(iAO5h+dcY}1ET#_7{>S$`b?S7Fn+)z6kR7qc2Dk9lW@5nBnseJ{kq!pi znAGV}37xOGkr&hEqTs4PjY`JUDI?X+(<07Q!H8w80n<_9F-hHJdh>JTv=yuYylbU-PC3wc}5cjTOI_~4an0fqD%G%*{Nad`C`7T z^D&_|;S1G@LW4doj==|pldcdDDS=z6G||a ztZGtJwDXYFyJk+YWxoqJu_<7klW{+^BXK&AL+N|0u)KPh!CLG@Fe^hdjlMBudtE{e z%p*}N(R(Rs>_3e`#X=Jqs1(q}prNV(## zmG}RO$+@|EuI?OXp!4_Qf;rzlXEzPnf^~>=TP{Aaf94mmZ2gDXmO#@K7GX^BE`pUq znNU~NYOeoTzcWlv%!{GrBfK<3s*_XDp4_m!WAl?z$y~VuIrh{~ZY5ymttai|SmRlK z;7Q=x>2MyTy+b}Ui*aXGK7KF|H2{uRWz5T3Kn{#U=5yS0k}i(qi~f`s>C);skmM%B z34}g@KRCpH)yMf8xCHkW>@i^CGVEDkckFH2+Rxt@NTd|yaAtddg)9e>@z{|sVH^lV z5{mQ(V}biJ#G>v^@Z1$!_JJ`AUiXzMh{xd0nUzXv1Q)Te<8m^>u27}mohkU^6*o6| zDXbzy_N$%YJ2mnQQ9zD1?XVHCzg=H4;i*8zd<;=%@$gL6N zJl^h$)Uyn!CsI3EVnT)i?3}^^h6uz`I`C%@*yZ$r`Wsb`tY}d6WF(&oA!U8Ex-obp z5~$_nV?FCud07%5c!S!EW_h5Ck3qpQVhxC5u>#a2QISV57Z@yr_QsX67g(sWhPx;J z9yU#>>6Xg)oR_MMiMwbLYiaNb&B&PM==fI^-%m~zoi#z4@tc}>ukOC$>|<7+>@6Mh z+r73oOkPe&?>XYa5T6E7l@i*?zsG+oBL%acayTHephKXt0@kc#{(t|Vw&3u8_p$zq ZUYF$s&7OCgOVBC6!)2Xw(Hj1Ne*uM(ae7J>>sh8U(Pwt=RD_gKIij(eewdg`sit! zXaj(rpRZRC0D`*+kTq}<8h7OofQFBsmuCpOXX5qlsE{2-*qh#&ie%fnLH1sLU6q#} zP@005E{U0Q?BQlrkx8E4npd33n-%euI=h|}y8PmnQ~$Yh+V$f;so80l@zV4{zwYku zLRCpORz!AVuKOQ-Ng6Az@J4Ba(*DNy`jqt#J6#(S@1~?Edm^muHn4AXn7Q|uw08`e ziX=+Y!MwHu(!nqM@xeSvKt_g2Za6Wt=BA`SpT&f=wyK@6)&bttI&)v1h=xV=)4#_H z>fFlii^f`xp`DKd;$QUz^zP^#$@wgoB__vY#98=EjI6Pk@veU9H>I3QwuA?SSONdF z;7A=||8KUcgjs%4CW~IHh)6g8!Ph~5;|A*p3mpj87b^dVnBaIgPB^4IWgAS+cS@S1 zhVYje_Gz=aeYD!s2f}!uTd%OTqQSWppt+&A85L3?T$fRz;{G~KfMpuAXOq=k90Hst z(e_pbw;~J#Yb6fQXk-i+&!FJ8f&@1D!mb+rCO z5BT-~o%WoH5fRLVNU26hfbt5-WC$?M3m?W7$~X0o<2gSc(}T*wfumCD7doymL?)@iwxnMa9wLgDm1A-MsdbITp!H zi`$n}Y9}k49?>(#KE(ug=0d%jxGQT<_+|Sgd6B`7rL3X;5r4JgDDU$4}*0 zdZV`*i=81-rk5U=u$DjoV`5-yvhQNRTM9Fh30KM*P*}U_6q{1B|4oe?5Afz0_#IO9 zgx60>rag-sfV*lbf|01vKRUJj9R7keCEzlFHv(^a<^xz=t~%Zj_Gk~rrOpH*g%KTO zNIQv)K8!`-0$F(b<(L(4=I7H#@bPTkb*BpDjhmk8tjLFiGZ+X7$Y?4rb{jG}cTajp z!S`msfR2`Mw)u79AtnRDGMoDkX11T;;IEO!M0UQ|j_m=2Cl;wgkyr}FMo(zT*KRA* zm{*3llbv$JiiI~Q97(HxJAZ{B6P8)JWyb=}6s4Pd(}ET5Dt z4^Mc=>-XqA+Sj|g+@0e%CcJj*pAH~^h?T9qBlHfS0;=H8ML$YPX}!QX^|r-Y&3gs6$)3$ z3|CVf2oaDdnsO9u`bo>*FzwH#X5-U)tINHvN%iOiZfJ|Ae04o z*~F~^RYO5tgZ2WcsSf9Gz>r)=;`zl`f=%F89ilM04$mij&Cf2~f?y`Z)w3e!5)#%* zp!C0YNLRb#AmeVW<9aoY;(~n5P!vA^mpI@?(L=x?{RaK%6p`W~_y1b;J;6x>wvmLz znY>OgBg1oJ%t>!K(4bUbT;;4znX6CH|Gb4?3PJ`_cz1QXy@F||zRq^ifg&r4PPAMz z{+UB0Vjm}oJRsXROfH~PJ;Kj2{02EF{)7L2)~1gZDfeWe9Z&Ab7n<^8ZuP49J}m2B DUAT>Y diff --git a/src-backup/main/resources/assets/alchemicalwizardry/textures/gui/bookleft.png b/src-backup/main/resources/assets/alchemicalwizardry/textures/gui/bookleft.png deleted file mode 100644 index 08b462df1c3a95725497df9fb6e36574e26fa4e7..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 11940 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 diff --git a/src-backup/main/resources/assets/alchemicalwizardry/textures/gui/bookright.png b/src-backup/main/resources/assets/alchemicalwizardry/textures/gui/bookright.png deleted file mode 100644 index 8c255a77cb6dfab982d0040a1480c6574eddc29f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 8536 zcmb_h`9DXKS-vSU^?)0EBl~TI>Zt zh#>+rD)HkOknaJYq`1Sve1FLMAJ@DS+?wo~hK)qUH@kk?E>D|SHL*%hlpj%IxY90> zW0P?NDI1cs&?3vNp?#!(GGKZNZ=0s`A0)fkN+25r1a_SFX-aWdbx2nX`H^~o*M3^AZJpN_?%Q+keoa-O?^EA_^4BgV+I=SB?UVD1z9zdjI0b!ponf&u zPItQM%7gR|!S%rjJCrXw6l`IBO*K3DRp$4w*+S*qM0;LD=>58xcSQmN^MO4HX7l%} zq@NA5d-CR*UkQGxi=NJ1Tr|s`GaK2Lnm5$*WMQgiS7Y8(SrxZ#m-19y?~wS8KVkMh zYK)K-PZYm3T&*jkFPeNyFVbjD+br_LqQl)KuLe1A6@zm>O0+v?J(IvCrn-`@!!aIz1)eZe@{>$ociga3#?=~5$ zuDoS5Xfp3KZnXI8uKLyWf2I~(f9X>`{taGF`?P&U&X;{*i4!&oALl=MPRY;BFj99f zq;)ZWtn+6W2FWV=j#be!%Pn@=h5 zFjM7U^t&MufR7za9V`677PWf*^;|SrR8Z(~nfFkiI`me+vP=~NMuilr0=*{TI*}^?+LG$Tp|pC&VnO@7 zkP#!}Q!yZT_aR!w6A`ebAPVrn7uyKEvhoTyD`Pai$X*L`5Bu3#h^;yQ-Xy%(IeYu_ zta-CV=TM`Aw_THVD}N2u+!XBb&hlBjNtC>gAi_8YqWECg_rK{iq#Y>pVfDssKYXvf ztf(4LOxhkz`LSCas%Hevj%rk1ZYERv`%F^=O(j;pP;gmiuhW@j*D(HmAgrKRB7p8C z7W8Ye>xaNgNd6YYAmMTRm1nChAYbpQV`!guj*Y}84Xb;CI)A3f)WXYxyj#i9>&ZS9 zC_qQ#_o(|7U_TGc0O|G@P6>ipPtP3TVzM zI!@o|MoPa4!REk%44=1yLBeo%;-F^orIbzs74X_3Vh2nme_vjjqo=;ex*a+U2MX@S zhdc#b|G>58FcN!fSi11@B4dL!2!UFi5XN4xbUtiiExjCyKXXJ-Ml9dsWi$w} zDDRTNy`$sQJ2QYOn-_OR!nw#ZM~ED^2I@maE7;xIiT%djQNU5bF}{I_na_C)UPVRj9V03#%9?~sme($1=IWO=C#V9A*9erGH5a zH>=^^=|9`5!S+8en|75R^@e{lfOn`;^3nS>EtcatY~o9 zL&j9Jda-85c&eO?Q_l3#Aw=44`esN3be_lWO!LFDEZke*@zYizmD*SLmjmP1)WcS7 zpGW^VBXF2-9boZS1;Tnx2kd~TgM6xRrDFv4~Q zLD2lRn5kDT40J|qLDWTi;qG4IShhU^wg7@ro4{6@)y_=ZhQCueJ}3<63s2wN>syv8 zX9Y0GQwQ-)5cJs**Bv^p!KJ>M+*YtEsiWUm&bKXfvq(CCD*}&^>k=~Qq@l;4?_v(6 z9_rWYugn%4oSdlk+T8bDwaSEVhjSKpJCycCjnxfdMaTq5wC1EYh?Xm_cd2QDNM zG3Q==U1>-x9YC@xr zr4eXd{50fJI3S$Ck-1n`Pjr<9* zydq!Bk*gs|(vq3$LSQov^!IKEu;g55JOaFkyrKeo!K@u+z|=7e1%!=4Sknj!O4cQ| zTD<_HI*baS!95DLie@2#|1w{r`=ws;8)N|92(Fq388Gr(`n_?Y5`8&5Y}LT=ViD#r zQX2kC24Sy*nflhFqA~>!Og~R^6oF@*SZ& zi3o&8I>lnOuSHf~UmZw#FbsY;8UX{#85uO#*4bx5xQ>U$Wc*k6V5v}g&q#O9QXaI*m z6i%y_(%{jGM|~jUjtHxiG%JRNeMB_941pTYSKb{592(qtaOUbg6gxkWmKg0K`Xpn} z6y~_4w0E^N60I62+(+mLd`IsX(nbWJGW%U6!Z9$NsQydZe#dicX5aE)68eRqSL-3j zR2kS8byA<@Lm)rq zXg0c)H4V2Iujl%aLDW!3JJJAxzWZP((HYzn+ENWs?2&w!5PInjdQ~+10?_m7AG|~u z+8qo8glKTA18wy{ZA!MG`1O8f`BKB5%UV+|h+78OQZZ}9)(OU)@V>`npd&bR%0l;* zMPC7YQWfQg(on8NXWHq2X!kbYXqiTGo8{O3ktP+2Zu#UL+KO1{Z;mnu>J{meqg+o zSIf*hv2Xxkk#03o$k$Y@EPh%ND zMA(<7-!+(vK`)wL$cJN=&2w+S>rmLuvifgJcwORJ?XA-kRi(r?m9QZ@&uj$&jkFrn z7)lkG!9?fAM-Yw_D)yQ4a&99qr7<#`-m>)E=!s{z1IV7=xu=1NpgspT?gkm*yi^p| zjXY-;)knkC7N(w{tPZsgW$y%N0HWMs1pf}>K@2IFJIy5Ug|QJHJ(`_uJ95OoM;rWC z0Lob~5}_fPw31U*asc%xI6Q9Z@WH ztKKGv)idqkE}yu|_4q+zTe?OxfkE(01qGf=Oye>ICXIo-1w*Ci~Nk* z!t0cGHo#dGQ*oSTpjjsbn)F!uhzjUk6$A&vv#(yd*-^7KYU8v`DS!>HTz4YlZ?bS3VLbv{_7%u^ zvc0sNgSmOydAv^ME5s^cZZvWCqZmGfD0hH59y!yH+szQHQz4)mlCBeuS+c{7)B7#?^uS zc;fwDQT8(i%a67eh028%NM3Qq>$(c_{aw;HV{%7bV| z3F437ANK!?vbIAk4b<;YwsJj{SS0+GH2RJYD=8j<&Q)MR!?zK17}qxyh0)n~VB3>c z!bq0sCeVq0b#a;oB1$X+aSTcY@Z79(2;0U=3uP#i9Z75&niY!d2iytNgm!|aR-`6O z(qMybofvt473!zZ+$K67k=&w&)qqT`F*Q*yX&uV)RM!B1(rURzLBGp?5KPr9Z70TD zSPq<&6=d>IuphmYj1N`+sXUOq{OR?tt-uknj6gJV3fiEv6aE@WZbMSx2c1ZQ zo<6saQ-TrM{Hen}-u=^0NtkX-#pRtB4`@Y_fNh1{Jp>cLRQH4NC-nTxlb@;Ui6a^#)@YRC1X;a|46tZRuX`%d&)h1RhOK{^F4%D&GiXg8=uI4ffWXx*80N(3}u z+X<}SQQ8|!+U6qOsRj8e41}=)ZaIi+D*xw#W%nDN*pq+R?(UeDfj4Ajpu;Gzj+i{1 z{>ZBRxj_1EXlsq3Sk++={{D3X#$FD`ZKyZ0a5AhH_%`CDxq=q*X!h~TsN?8fYqkxr zr~j#@2S*n2TS`Waz9mndQpdWco(;}RA3{uL7x#-N1LuwkD=9U~r%C$H&x6moK{Flu zMD~l9_UR&ahmf)+&o7oI6zQ=KWoU26qyE;|W1xw<6cR!L-7l`0n1!#8jw)-asw!7_ zK6i-jWqwezkiWN{nEsBsCTU!mNW+qkpJEpBXKb^^DiT#vnmpA)e@}+JrQcdQ@^+Oz zx|hj~DMy5r8TV&%Hr5J4={*pGQi{J3!cM8rvO;D6vmJWXRxY|`Z2`&|Wly`xYscR6&K}$Z9@*!< z0k#38sophIwl17oUfW_&2pMgV(^mY2Y5J}12o29Aa;9}RFu;I}d-ME02M1|}+&+2w zt!)2%_-9*!-~<9&Mobj>i1BJVzER55rRwW>sli`IfS_0vw`qGE7|cK}j=KJ!T`EZ8D|6yog8@3`WG-{yjKyjuE z72bVhT|*!i=!0I4;@8=#qEsJL;cfY4Q zu^cO}-1!!F_K%H=Pn7?oq6mM@N>_yWV{NZ~4HE)sFzo^@3 zNo{!eDbP!Pb#t2;1>@!~`f111YJmXF0pP>DkuXgAvekf$qU_~liR{+&gz}Py!UjL( zb5Q2c1y@zgpNPSkxi|_ayGZti3S!M}NSj~x-ea4rE0vc2tFLc!N)W5krK`jo0kiUtJ<`63BYYSXl$b_*o=*4=vJ?^gj5v^?x9@D*MxcHZK;hcd=oa>cGu-XxtMvJ@zav(_7D1PRW7c{aSPgkc zpPAu3g+qoyeI)Sk!v)BlbKR&v6^~kBNW$+;y+8T4xYckq)peL-8M|t@KW$Ti!w2O2C6r<-|8OGqRL|0olqECu?O=WX` zg#>%A)>!+o;^4p?DZCq#6EkOd&`SgI*xRnqI}MF3C`5Y50Bkis0`$|QOZMoU0gA!& zA$8426Cm_cGQ|gZPC|H6SPs3@#Kck%k|GPp;6-R9j!j!=hIH&pjTcA`B`EsJ_j8bPo7K!bwifP2yg?GII z&3`xV@E1W}$lxfvHd*d9^b!Sb;7c-S^B!G*!)B2Yj99M~*x>+&EBx@yM(~+75(LQ$ z|1#y_bd?Pqih((hbn=Q6d24R;jR{pzelhvwDijFRq`gJ+<;b_Ba9*OGoY)WaAq78G z#r-$KG+r-8me-TzJoE%3yy~I)cc+%T3}1d51u!Sf2MYVF1aOWpWX}txG*owO4_GJX z^zWQH;P-HXcg(6`uc4GLHZV0_N@(A)Uxf=5o3D$w7(QCE#x3rWqNf$-tD;xK`0Dzu zQM8r8Cb5OdhdwMOp|JgTVu@EoAZ=ur^Lp++Brj=qF&M?zZ78E;!ter4f$mHfahSn6 zJB|eNVzqfifDedR0YJ`KI~rlBR=ZF}OiVrLwa-J8Ub)r*;Y|H3p(0J-<+bo@6Yjb5Rg_}rcy0fjfh1u-2Q`5MA+;X>#dP&1ypWzI}j}iRNggaM*;K^o!_?w2owFt{sw$um=0>cQaG|W%HwLMvM zg$ui$-AT0Ys6*hOvlz5)TzfU4NcJtx{~cPKelL9sEF<+<0RSeo4L}G$VYt``6Uyt=nayrJ0U>)zfQG-WGl0MO8u#iBNED2>sJ2`}fEY4~_cq zW}>>;Nn9h$h3=oZW#2@6c)Do#iPKGrR-l>Veb=Rbo*$M$&Z}UrHr*4)6@nw3S?8Kv zlRDzJnOr~PxP`r4M6b1DGqjrMMx-~u*aGu(2!ZHH*U0Slf}_>#xu(t;$4&Pdr3FXt zSTfd4Taya4FIv;jx72sftp-dLKQ?oem#0XUKsbN)BmN#kZ?psu%}vuS=gJ)3=_S7& z`=XxPJCqvdSJ55kRCdvI*WoxfGFfaYrmXjvW@UrtFJ&6;qp)ouzA*ajkB)9M~s;yhIp{ zYrj6wzr}~Qi4PK=fZpb|R$McY{M@iI#SsDfzhzv{v4xc|_sXQ|3XGR|tFMGdbe(la zYjM}45>>-qJ+n$k7oESm447LvQL620pjRqPM$5&btf?nW-iq86$&8@O<~`+kZm+8b z{H|h6UA{nTJ5eR30bjCTlh{ucr_;2)`T3oRyk9rl%NK8!zNs(Dn?Ch`@?#OsU-kLgvdij$ zcLym>E#H4{o^S8FLzrlXm(_K+8i%ziKK*u1IRMLyIIURwDY2T}xe1ap&5l7B?bJKD zfPt4ID&3z&Pj(gSEGx?1b08=0JATL4LwD9`E|e2G*nMsa8>J-Fq{Po|`+3GkeYE4< z-y@Oj!>0m28IA}baPH~+%87esALix;%+^8dWlEVM@u79W%I;1{*Yvfr7d<*9ohO4# zV$}QR10mK_P3(7ehQ*(m!oh=obIY0zNZuS#Ut6>5S4Zl+qwYmLF6-BFUfsS)ZOOQV zya&^Pz=>h~;wzlNkJ^q-oYK8p$z}h;f6Hq@9#mG{Qr>&u%AveS1Tq+L7Ryxac*DSn z9Pf?(yW#0ff8>V5iye~hjRM2Wry|E4!-VJL6}I|K&Y78&PIj-}wX5XG*r(g0e}W}9 zMf{DCI={%*@uG*_@lorGXtafZ2rMUCZ041h)Q@e2WOGbe$81(M&U zrmk%!xHMY2DQf#nr=_weU|SCC7*2H1zInaqxtZctMcKH|{Ghj5`{DhOEvr&!pu8*& zu$3vr2-m(Nn7LV_%$V}XS26nkP2L9b(gsaS z1m57ln-Q%F7Vk;{Q5$adVOH`Mw7~+-N^pL}|m0tu_|-H#5)u E7Yh?KnE(I) diff --git a/src-backup/main/resources/assets/alchemicalwizardry/textures/items/8wWtY8d.png b/src-backup/main/resources/assets/alchemicalwizardry/textures/items/8wWtY8d.png deleted file mode 100644 index 0e9d01e2f189c9aff5ce00e1101c5e3c45cc2927..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 319 zcmV-F0l@x=P)!pi(DB7Engip-3R%Lw^2$PE@sN z{w3FGzlGy&J@sL;f^X}a5W+{)wk>!dD1b+c{-ihiQ+O1T*m}tGF@m(#`lE*YY3-W6 z_ZHBUw+Dc?`xa`RkQX3^aQPDeyvqx*1OS%%2~qf8Js}Fe2!ItL2CzU#0BVR-cng3O zei&|06CU*{|Gw|Dn>2@{0J^RNjeky`^)H1l0Z7L8ahS|C08;o^Uk#9hh$qJTdO1%4 zau6IKr%yuE0!XHDmjE<+_bu>Wi&W8+u=&(V)93yvy~ckQG;Yhc+!DIR{{>B68}ULj R$-)2t002ovPDHLkV1n?;hFbst diff --git a/src-backup/main/resources/assets/alchemicalwizardry/textures/items/Aether.png b/src-backup/main/resources/assets/alchemicalwizardry/textures/items/Aether.png deleted file mode 100644 index 9bf829d9d836e98c7c2fe7c0891b73dc0252651d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3540 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 diff --git a/src-backup/main/resources/assets/alchemicalwizardry/textures/items/AirSigil.png b/src-backup/main/resources/assets/alchemicalwizardry/textures/items/AirSigil.png deleted file mode 100644 index 17246bb022da7525278ee0988a5acfac40359bd2..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 500 zcmV!vPrrzn>GAt(xh zkKn>5@oB_`k0SUAilQXNQYpA|qaa$Of8*jNX>N;xI51?A+;i@kIU}kHKz#mL0G3*( zm3RISk`l=7zLL}!vv9C@cx1jV&h&SJ$;2m6b+yO>q268#fPa-SE>k6~HdyQ4r&IS- zU&JDThyz&*h!4zxm&@gXN1%5%f@)5#z;FmQaNk-x9>K?8Fa$7CT@k6SIFtw&3tKfX z0$~W&z~(kY_cJwfEl83s8ZFQ%1Obf4u)YD$eNbFma}Le>HRdq}F*659YstW=11W*8 zsaA)lt|LL9-*YX5VR~ZVDbTl9^+-CA>vc3rri;71)_`UkR6~y-8=#9I8WFU8GbZ8()Nlj2>E@cM*00N^)L_t(I%bk-;NK|nY z#()1ib7!2HX1eO=s5#~X46U&2g=9q%M2l)u3yaKEAT6RrL=Z(-5H5mf6(K?Nf&v#s zFQr8g{hedjwbA*JMR5KVOwn*bvX0gcS9 zXTm0woIHCDado}KsdDhdQ3~@sR27vGHIvwPv`E5H~&C}NBOK;)Mx>2cV9yGzMK}B?a8JvoQ-3u7V}HW=~pwv%@p+oB~)rfyh(@=6x!sOI!fz}R1y8KQK)U08+B%ckXwWxMGJ@ec=D9Xd7I`DlnSmg3^^THKm zBt~n8A_45J9g5t%shv%kB)d-@qis(+V~Hs$O3GMcI(g}mn9(TS@i1TAZr;6q!?nZf zi5m;pxmS@2fDkYm>ZhSXN5nFm`#yxt>*jkZL2$00jN3(QUVzFNtf-%2=;M6=EbCVb z?>{|4^Odu8g`LT_U4$R^voH`OxO_Pihw^EQR@1)KskHcHddfpR&aCDYxxYo8{M}R`InIRD+&iT2ysd*(pE(3#eQEFmI zYKlU6W=V#EyQgnJie4%^0|TSAr;B5V#p%71cY84hinv}sncc?I*MIDslTj~+GKXj4 z;@na<&xYn%L z&+0NwW0T8%CKIXNGcpB7*p|DLE&Nlh=6Q4F_17MY+`QRKN>1!e$`dJGDW&`LwMybo zU7&_1Gn7Ju*bcBrDD{ND+aWt==JU!Bt*P&UQW5ZcpM#0Y(Xfsf?~XjEwUbORmPuYhM4C?ak`dYKr^TK8zMU z&t&s@)y$dVnI%f~=uV2Q$W%3H9pXqm(fWp_))z4*} HQ$iB}|FN}S diff --git a/src-backup/main/resources/assets/alchemicalwizardry/textures/items/ArchmageBloodOrb.png b/src-backup/main/resources/assets/alchemicalwizardry/textures/items/ArchmageBloodOrb.png deleted file mode 100644 index 327d2b272bc2d6a9f59a9ef272ef6d296bddc02d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 590 zcmV-U0-W03B&m zSad^gZEa<4bN~PV002XBWnpw>WFU8GbZ8()Nlj2>E@cM*00FW|L_t(I%YD;5YZOr! z1>on-%$mgz7xY&swg#~h;x7>VAZQt3e}RRjN@HguSXc>GK?Dn{Ac$b2V5bq((o#`l zWU@OmuSKqFCK_M3#hiQ3Iq%n`i14o%r={M-oo*wQsrc(%+AlCpOHoNKSkwunQmygG zD{wcSrUM1WX(=vQG*H>mXf@h>j*q?WiBx+pE4%oXdWMxs&}s!jKjUJr`$eZU`Fm)v zo1$2ox+?>t+nD~ z9wpP?O{}n!!38Wx`C%AHCfR9%p`?<06&CW&q=>MZMzL&uroK1YjCJ{J2}8*f+t%V+ znyvDUG>XgSXEUGeI?8-LWFU8GbZ8()Nlj2>E@cM*00D$aL_t(I%Z-zfUf`610wkndizTX*Y3L%kNQ$I^ z$O5y4mm8Y9)7iP$j5NhcGvEF@^RJ;HCf;fN+=^1e|Hi~SjX`73BN2^3=YjPw^UeEF z$}2X=`HK?xZpVy5AoFgqlJb^P!I6l*1Rb!c1A2>gT9SYPQBwY1b)aL4(YKUrPY%K;8&hw5Ps%) z)f|H!tgZ37+hs3G$qITBAYZ-X49sviteWTN zbY~;w?vJh2onqo;Hm$r7l7PPFu@2bK-I}fIkVY%lA+B}8st7N_BMd7T44=7LZt43z iRdSDPvkbEATmJ(-j{ZfduXz6e0000WFU8GbZ8()Nlj2>E@cM*00EFmL_t(I%Z-!IY7uESuR(9t9CE zXpwP&;`w5KbL>6S)ZMHk|0P#&D56h6$8>Z|`(`D1QW=u_0Q8l$`j&1rBo8{0J36cg zNK&Um(3jTgkui8r-dF1bLe+`Mh zk6133W;UDs&679#bY&v>>|a}}&(anMpdfpR zr>`sfJq}?}6<+3!8RvmQHJ&bxAr_~T6BdXElzIGI|7OA``Pey~5ohDq=PKP#<1{o} zvu*N{NGG2+`&(w*s4sbMAXsF!eVY8?yUfKBo}c*i(vyYLm5xdOh;a$hS&*HU00c); zm3P^1%mlL!rfLIKbIH$6;}KV|7M-tlOHCr^tC1j=$}DDv?|UNsr>(ZX40H#Br>mdK II;Vst00sw2ssI20 diff --git a/src-backup/main/resources/assets/alchemicalwizardry/textures/items/AttunedCrystal2.png b/src-backup/main/resources/assets/alchemicalwizardry/textures/items/AttunedCrystal2.png deleted file mode 100644 index 788a5db05691a9b22ea2baf426e1da84b81d7607..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 177 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`oCO|{#S9F5he4R}c>anMpdfpR zr>`sfJq}?}6-F+*D^Gwz0iG_7Ar_~T6C_v{H#9a1&VKOLd-}h_H&#_u_59#TIJE5N z-QDFp`f>YIPO(a`{rT~8^24{kzw_vvIpZREph@q*!E@&pELm{iz?m~X7k(~gU}ES! XD12_a{`&1evl%>H{an^LB{Ts5j>tlB diff --git a/src-backup/main/resources/assets/alchemicalwizardry/textures/items/AverageLengtheningCatalyst.png b/src-backup/main/resources/assets/alchemicalwizardry/textures/items/AverageLengtheningCatalyst.png deleted file mode 100644 index e2dc835ec9c87127140234ced197ca890c470b89..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 405 zcmV;G0c!qeP3N{ zu!by6Gf4;)m*_LJGz223)zDBj^xDS>B8bKa3i>ADP-H|6O$~*j-urg%)6mk3g@H>w zaF&O2ew;rXK@#IgVod!}K(W$bvC<%n`7}u6D|;-Jclay7K)P@M@$g zqOTRYN{xsktncH$BD@8Bq103AmwPiTLh}gLi{cy~+4&3L)de7>mcJHd^OL zA{q&g1^|Gz7Axgl#^OnIEb%HOoR??ZoE?ghBPe50s2^}LIggIDcq3s*_`V*>9qK?C zi^4{e6VoYl?^_@(3;`hpZZA)S6o8cSXF#s%F*1`z@9rAyi(?@i2h)TWW9 z^L3FVgP}DR*0$L1tAKAUkzTFQHzweV|Nl%M1%Ixf%n%-S00000NkvXXu0mjfD37A- diff --git a/src-backup/main/resources/assets/alchemicalwizardry/textures/items/AveragePowerCatalyst.png b/src-backup/main/resources/assets/alchemicalwizardry/textures/items/AveragePowerCatalyst.png deleted file mode 100644 index bef44443936dd63e701188c36d86b277d11c1370..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 387 zcmV-}0et?6P)Y6r5eWFU8GbZ8()Nlj2>E@cM*00E9kL_t(I%bk;3Zqz^! zMNjq1o=%2^pa>}u?26^E6~q@i03}~p$jIaN^sD%Y9W=-wh5Br@j!xg(C8`R*^Oth~ z#`m9ZPP}1c1AM%{S8FZadzO??RYU|t0Qm9vDE|a}xVuv;!Z421*3jNjRg5tJzk%y) zK(ieL@3Gc$Sr*0+IK)VAjaDnxIjpsa2(7g%19R;oSm(&4P)k7p>ph2YL{*tnqP0e; zmD?D@6<|{m5o)cZc?RGx49xRPE#=kHh%n7_25^6dl5-};NcSF9eaQnDLZH-&3xQVa z>wUMItO&y}05F|S48wr)9v1?}80NnLwnkD)gkhk!hOw5E67N>v`F!T*)06CmC?a_8 z>Ae%2qvrhb57zXj(}_cjSGK!PK$WyC+#HY8Qn1D_P18$-tL1);>oaPt8g}c s`1S^xk507*qoM6N<$f*oD%^#A|> diff --git a/src-backup/main/resources/assets/alchemicalwizardry/textures/items/BlankSpell.png b/src-backup/main/resources/assets/alchemicalwizardry/textures/items/BlankSpell.png deleted file mode 100644 index ba1131998f6bd1a44b3f00b76b2b0da9a76afa9b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 339 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`oCO|{#S9GG!XV7ZFl&wkP>{XE z)7O>#E{7;1mwu}Kx0^sA+02lL66gHf+|;}hAeVu`xhOTUBsE2$JhLQ2!QIn0AVn{g z9VmX%)5S5w;`GtU8+i{Ih`8K8+PUB)!N_{qK7YUae`*?!<3WchJDEM_UOMBmmu23OrQYw4J5_ymm~`}rg!X+=&ng36?N-AJ z@4nAhJGS2ZfT)ElQ!)GGUE9{HnK^KuVPVTT{MC5DiZ?kuOg8+D+y&g;9kKHzxD%2C z81*_Tn!Vcoo3=jg=6P+WdF07#M@@;P`=rhv+MFoHw~no~<#5FB5_c_gpRFlOd{XE z)7O>#9-|Z=1J6?)jj2E(+02lL66gHf+|;}hAeVu`xhOTUBsE2$JhLQ2!QIn0AVn{g z9Vq_L)5S5w;`G%?hTex01ls1WKOzvc#EFZw@PyKi9W3pC8sGfW{y)pYLtLF*b`eLQ zb5v%s-p_NoF5JEf-g{rZ+wr`$`u&6Z?VX1m7H__pus~z!+3A^$j2(v^+7Gqgt8oIQQbtboYWWPhQ z?$OuWLDM>}FkD%;w6G;jYeMC3)_wPiSDh8>c3maqy3%jo#hFKIX8jYL^d+WFU8GbZ8()Nlj2>E@cM*00DeSL_t(I%cYV{Qrkcf zMql?pk}LRsACQY&3dkJ-l*`;9c2?Yhi{PJBwgdwQ$Tm`cS&Sr#*sy@Eni|!N=F`)g zHc7mv_L_&@u#kDeu)JV-mg0}1{P=LU{H5VcN8U3;Jy#Q z{qKbVc$4Iwi1>?HD!)%wP?OB3D~!N=pC6aM>d;ehr|FOHZ`mo#)$1hdHv z$7hFIzt9FeZq^2(iV|>6&&N+MnQ?MH#yugl+d&pN7Kr(D{i5~bZwHte4|l7^vf9xd z6zY%0>Wz-n8y330LjBPfU0$Ap-t$@GQXG^OtKcl0EI2F`Fzg^WB}82`c87D*#T;vaFPH z>U)p$IuZI!-`ELF)>MCas%530Ovp%E&A!jf z8zG6awRvGC8JyNwDm{|TFB`I_6njdM*^tNmX7CD(wdTmSIkIi`l;Zd1sYGI(w7nMg z+X`K!FwJv(?)LxyXZK$ER!fj=V?JMNJZg<;o&x}uBtpwV_aQn@P^>`8d%K^_fVHrZ zz-f);?Q4LK-406hL;ZF|tLADB;j&O$E*{V0ba5sEUxbbOQ?+xJ^hLFqO wH7{Pj?%?UMBs(z{h$?EVUVM^*JiomO1Ebdq0IXx8*6mxEja7PC!V#kOVT66ML&Z>-jZ#WaCbM_Hj7xdMbYOLbHfse#d)IlMmS2jtk}FJ^FSu>zopr05c6rqyPW_ diff --git a/src-backup/main/resources/assets/alchemicalwizardry/textures/items/BoundPickaxe_activated.png b/src-backup/main/resources/assets/alchemicalwizardry/textures/items/BoundPickaxe_activated.png deleted file mode 100644 index 88c6026430e749358cc4d4c006f1a54a68c691c1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 394 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`Y)RhkE)4%caKYZ?lYt_f1s;*b z3=G`DAk4@xYmNj^kiEpy*OmP)2OFcb%HtVd3>X*~#XVgdLo7~j4chH>BtT?Nb^f6; zDP}Q7=No2komSNxWRpJV6fxybqr3`>*k7jqO7au55|X#ix@&qn(@3o9`$Eq%T7Jb3 z3!crHX(|3gKcwfR(3ST!hKa%RGqg6bD0|ngzHb}Pz|glQ`l8i>q%*ZYGbhnk&*i>5L#D0x4O$caiOL4s&sl6}C+s8@hGu3YkB0{~HmXhNSogda` zSxr8uNF*LEV2t6#O~_SNIMT5p;7zAPz7ipoZYs;N##?x7ElDA3IMOlf-Q6L9Z97IG zYjC|489M{7eJLf!C#UrY89*!8vTcfvPxJF!Mg*E)7eC;jTqY=&hXew^0u11FuKymR zkv`dk#h9EvWomA2gxCdKV`w8p2ZSkmZ+r^1_hl(LEpl1|&=#m0gI4|f+n~$AU7U^e zXB84-z>7OCg{)!Iw)qr6D@7Ez3%VRv6sh!6#1Bbzs_U;VsP8w*lxEJ)+yOu}&L-+$vbqd>vkYfwh$00000NkvXXu0mjfM!&j! diff --git a/src-backup/main/resources/assets/alchemicalwizardry/textures/items/BoundPlate.png b/src-backup/main/resources/assets/alchemicalwizardry/textures/items/BoundPlate.png deleted file mode 100644 index 49702f68c49b07d97ed92df9d7eb16144f8e2565..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 282 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`Y)RhkE)4%caKYZ?lYt_f1s;*b z3=G`DAk4@xYmNj^kiEpy*OmP)2MYtQs`8o3XMsY?JzX3_EKV;C-pzMdL143TTaVA* zh8ovxb=CDPipk4+w(mS0D99z4siSyg?pa$44bF0dt8E@ylcct`Phw!uZg}!MHtE}1 z*7FQAemnV|*x+}{@_^4Nl{T@=kD+N-nN<}hRqc53vM=0yLe2d>J)8_>o$s4WwCqeS zavh34pAjl%JLO{ivjcuDnI#i0v3^|0zPRZ!kI$pBh5z2mT$v$l+~2mN`rz986{7MJ X=K62DVqth0=wt>@S3j3^P6ce%5)=3oyno&vS-hI1|qq*b5L5=6TLIj>!r?HunNVgjtp~;`V)s zcqyRWEFyHth?-Agnx>577}i>h$7AJ^Pz?Y{k`MrlF@F+wfGCO}BCyt?EK6tcLJmY^ k(KN?auD|iO^6=042K$C-z5YVHg8%>k07*qoM6N<$g0H)x&Hw-a diff --git a/src-backup/main/resources/assets/alchemicalwizardry/textures/items/BoundSword_activated.png b/src-backup/main/resources/assets/alchemicalwizardry/textures/items/BoundSword_activated.png deleted file mode 100644 index 4ae9464f22511e007eebf689d25f68fd69e521ef..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 386 zcmV-|0e$|7P)ejqZo7NaPS zwAOT(4#Ki?uR2w>cPt{z^PD2WSse3vGT|(ac^HO#d%fkRyBM57JM-Pk4fggg)yBYe z#dZ}UGMKsc&chf(Yb|S$EXyb&+X)zBSQG`5Bw<~Nh>VIff!5jvUT+^HvQ+T2UrNSxyKRQ|cK`qY07*qoM6N<$f_i?VvH$=8 diff --git a/src-backup/main/resources/assets/alchemicalwizardry/textures/items/BoundTool.png b/src-backup/main/resources/assets/alchemicalwizardry/textures/items/BoundTool.png deleted file mode 100644 index f79088b62c785300831b255c1b367bc0e7b0de11..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 376 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`Y)RhkE)4%caKYZ?lYt_f1s;*b z3=G`DAk4@xYmNj^kiEpy*OmPqt0W_nWlFla^OtO8uI*xEeAJI7VB|q)^ zTc-blyPAFZ?EhaIE@?QiLCiyLz*?-mHQYAN$Ti znPO3vGi#nYwX9Zn;MB6_gYM?fEal$~LqyLXRxGmI>u0=HD0J$ou1z|Dd+QR+{#CW+ zeq~`OIK~*UU4OOKWR*mTwj8ge+IsaWp{cW$sef31dD|WCeN~bS>*D@(*D&3h*uc6+ T?z=BAj2Jv!{an^LB{Ts5+gp*^ diff --git a/src-backup/main/resources/assets/alchemicalwizardry/textures/items/BridgeSigil_activated.png b/src-backup/main/resources/assets/alchemicalwizardry/textures/items/BridgeSigil_activated.png deleted file mode 100644 index 37ddd60495a6a1325a5d28dae219832251f9eccb..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 632 zcmV-;0*C#HP)WFU8GbZ8()Nlj2>E@cM*00G=dL_t(I%bk<4Yg17a z#((GDBu!pk`*L5B8pRHRlc@iJAdcdyvxsgkE{;+VCrAAcTomc#?pAaX9IBl}6a-6b z+SJ4*efJ)R=SzH;r5?C&xrgt&-}%ltqN)IVcsi;9^>cTdLyi$r5VX@&MFb;)_Z|fV zKm>pvySuW8pi*2y2syyo9HcrY0aE8wWX@3#n&QD2gNP8k#~Q=_jYs&Xg@%BLP=E`? zGhDeKL8Am80<|yi8D70dwsszt+xXZqtu)XO2q6$hQLW?wK)Tw~z3UG#qX8(WfQSJx z1Tj#LS=m^}Oh)Vu2J){0fax!ycdrnE`0WdtZ=Qp#u)O&Ureh3&zr8?JXD4+|lU7UZ z&Bxm9bhO*)s7n%cC)d>6d7|#@1?}`sY3iI7m~sh!5+OYe(F$Y}Q1GhQM$FQ;k7QXk zlV56M?qTls@XBq(*!%}TjYWdTzI;HXT3tLy#V`Q`?=jY5jbU)@KJ~5F1Xb+UE$aS| zoqm6@0)V6L8G`qS2$gCTtuwWOHEV^8n;1&dA9`icd&;CY;S*()e~;92XPcxfS=>BKlV2MZ~O+YvfJNH SZ{R-w0000|YZJb^_T`DBQ`L!=n;xK*lnH#x*%wRl>aicR_?$-fup zbST`J=#smxXM62#X3m)t?`BSap3`TiWE|wh@WoR2-41K^$)39xJ6=t+wN~ZOs-N7k z;11*4ua*p}Z%5mvIaFHg+v%Vdrz5`QG%Lg7#Py5qiWV9bl>d5cslUHobBnpOj_S3| z!pF?T4R(aM-eH_k7VE+?$zZcm1k1Z~D{{FL?&rUJe6&nxL_(%*L? z4Lo0*mCTQSe%o>N*xq_YuAoT%OX{6AE`L9LnjN?Q<+s}v1~XL};>*i_-rWDO{IGeaUuobz*YQ}arITm}Z`qSVBa z)D(sC%#sWRcTeAd6une-p!iZx7sn8b)5(AS|F>sWZRl)ta@feIb41I=$dUbB`0OU_ z9+jOBPO!}VAAj#oTE)jdk}u;LGM@otq<#H>VWFU8GbZ8()Nlj2>E@cM*00D?eL_t(I%hi!PYZL(# zg}*zKnVsFN1Oh=q(gYt{q(~70rWb-m8o|QG#x}nopq>5(D;qn}(!wT<5m^k0VdH~D zc9S*aF+$u&)}74G&apDG#1&BxJmrD=oqO+rf2FC9SM)RA`K{??bk50fb^E&h2w=~Q zwVfi}wDT7?JV5!?yyhx5dbSwoNh+Gig6n!Dld*mGz1P0RhbF1)t`X+L{wL(Z9PW|J zK$O8*4FqtZJfl&+pifI1vWD?CTJH~N&9^MsNQk30#4+AVR^ib>dbqdO>Ap%(RV1Gq zT-y54$k`_@V0zv~Um!V&u^@Hga!o?#IR@oLx&7wXEnK`gy~UCs63zMn&a9WQ5o@xD zQG|?T`vWe2m}%};x5u19aLh}=PDA)NtCyr0s3rJ9Q>t!x^e z1iC9@1*oOecB>TLO*grNX;Z}O_1@&5G^W89qp5q(kL;H9bZz%d&SO{JQ~%nj`3M1= mcI`YIl$O7u2Jl42f1_`r^sdLTn&>M40000VQJBnIRD+&iT2ysd*(pE(3#eQEFmI zYKlU6W=V#EyQgnJie4%^0|O(Ir;B5V#p$J!ef~vC2yx-_HCvyWUqQdqV5<*vNmUw|$t{qH?d>>2jpd z`g___E{Oe_rBar+b{ z1>LUv+FSM5fbe0dg%>3JU@m3PtWn1Tq{B(OUDmUh`b9BXTYr=f3u6G~#WyBS{jTYBfZJ-F6E= zzu)J69Cd9TkH@&KOB}}}Nm3YXv)Q1OV!2#inp_%qo=2YN9FIrRG`*w(yEOQS&;hQx79mSsdyM4F~(tsgJ3-ENE4nr5@f;c&oOi!lZf z!F63$s}WtBvu=HdA`jL~Dd0d<-yl@i@1>rND(28W7qq0w<4VSf!bJ#k1}t#-th$ lnmcK(={8#3TI>3qe*l0R|B@je-u(ao002ovPDHLkV1l6ao8SNd diff --git a/src-backup/main/resources/assets/alchemicalwizardry/textures/items/DaggerOfSacrifice.png b/src-backup/main/resources/assets/alchemicalwizardry/textures/items/DaggerOfSacrifice.png deleted file mode 100644 index 2d7f4a1ca39fd4f642783c25d1fea4f99844b600..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 476 zcmV<20VDp2P)axxldL z;0;EG|Ns9JjeYIZ|6e%1`~SJ4JO77!8vpHYurZe8{N;>o@Lb)=d8!{i8R4)-+vfBx7mxMp8F_5aB77#g;>BNUWo zg#JH!WXJ!#TUY%*b9g(3W{fa6Fx4I&rx{Uh|3f3=89sdc#K6bL!!UbVA0*V#028hN z%g8HZ`26J?gOHFQ!`_`+7-lTn#fVKUBXUBzvA5&@gVPHbxHa+_ezS=%2nh->WF?0& z9J}_O5m)S>xIn|Xg7F6v2gBDJ6B#%ezcRGc730;6;eu_QTL0gN>|hXH?S`Syqv8f5 zUKi}>(D={v{~v?!YBvUtiW`hPA}Vl2Zl#wP3A$iMhsJ+=HWB3oasU$pg#Z8-F%?W$ S5LGMy0000!*I diff --git a/src-backup/main/resources/assets/alchemicalwizardry/textures/items/DemonBloodShard.png b/src-backup/main/resources/assets/alchemicalwizardry/textures/items/DemonBloodShard.png deleted file mode 100644 index 0aa05b5cfd567c99955fa76699e60422740a426a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 457 zcmV;)0XF`LP)*N6Y(WflAV|?`VQ{8aAhqnd=0@;^K-foV5LOr@46Qg zC-;OOmA%%*gY`$*hWrAVvzV@{ARtgN+I79{CLW9vF2a6^=Q##O8F-!xkd$5w09a1? z(hX;92uAIUn+kvj$eg!54a%_f!lE_8w^HGxHFPhK~e zGAFRC^<~#GwI>N3ygRP@1|GteITL-(YJA}_p00000NkvXXu0mjfi0`o! diff --git a/src-backup/main/resources/assets/alchemicalwizardry/textures/items/DemonPlacer.png b/src-backup/main/resources/assets/alchemicalwizardry/textures/items/DemonPlacer.png deleted file mode 100644 index 371ffac6a7fd217ebbad2326102cc29d4ee539f5..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 399 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`oCO|{#S9GG!XV7ZFl&wkP>{XE z)7O>#E;p~ZuI}uh|DS+DvY8S|xv6<2KrRD=b5UwyNotBhd1gt5g1e`0K#E=} zI|BnFtEY=&h{frnlh1lFI|{Vyzvt;E_+Noz-q(a07S`Go0xXICTwITKzjVB~+U1MH zb%n=i!E!=n$$!$!S{d8w0Ng+ z;$<$2Wg`2!sIIy5I^x8C`={k7{$9Dl)@GKh zT!)II{`#vn$7b0#PkQ_`?115u{gOwMRG+afxjkd%tNztyHP1IbNXuU+610nZt(r)( qM8%H3vsQaVm-wvqy7}*~)PII@xus^xO2#WeA?4}n=d#Wzp$Pzf37QiC diff --git a/src-backup/main/resources/assets/alchemicalwizardry/textures/items/DemonSlate.png b/src-backup/main/resources/assets/alchemicalwizardry/textures/items/DemonSlate.png deleted file mode 100644 index ca195b9e863009938193e573c1a1fac1e5c8e23f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 571 zcmV-B0>u4^P)WFU8GbZ8()Nlj2>E@cM*00Ey#L_t(I%bk-?YZO5g z#DDdAW_D+d2SveLvam-9LV|uPKaL;9gD20zN(f#;@Dd1m5SC=;U#9!zurrBEvO=s| zH{I1$^{VCW0Q~s02H@?-XFLTO3Em$ac?f|#&uQu!cSjOP0DN06^-qF#hld^{CetZ> zjPzYc>^h3FL}vGd14cp{H;Ozbgh1OgOpAg%1Xh=qbajo)FbPS-7`GH;+j>OEGS*jD z{JFT``TjmKLw!$E*EC(nq%2A9?9FCeSJl0RF$YQfIy*xW4w!_ylTtzwFXwY)#`5H3 z+ro&ZsxXPyiv_`qSMxbYyjd)eM3!ZQ5bn;~qqA|R$aBn$u5B?13js+KMX@`B(M|-q zn;T+Em>DrfWSh6Ds^a_UsUB4zX_Gb(BvMK^ATv^o^nK5?EVmRquwYq+yVJJqM)G8W zNvx}CQ>wp0-zw5Lh2Q7r_>j0sm>GSHcWZ#3tCb#P;O@wb7Y7IUa3L=W+?^OBJ_Nh7 zNFR=m-GM9w(vUhs`zA#}+qNX&^OvvMX<=_R1K_%lYyg!5Oy^;U`002ov JPDHLkV1mRj>tO%@ diff --git a/src-backup/main/resources/assets/alchemicalwizardry/textures/items/DemonicTeleposerFocus.png b/src-backup/main/resources/assets/alchemicalwizardry/textures/items/DemonicTeleposerFocus.png deleted file mode 100644 index 72f3c0365432d55596450dc6e0cd70378232e333..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 603 zcmV-h0;K(kP)R5;6}lig}lQ4oc{Is3E~6LU(7B8iv=6h(~M zNH6;uf~{z+f_Vr*dskpbY(F>C&zqh5|*wzQV(z1o^$}shNIVqcVGNSGC-WyHt?`=!|}4^ z(SQt8O-!-Da@{fTqfLwfDn(Oi3ML%9_~7|^lxXLR0??6POH7aEgMVnsRXWn#&&E-uurK0A7FctlV@&QRu!iSgJb?dSd;f=kdJzcM7${)LaN7`r~2q zbC}gJ_-)(M>%-t^p_>aX+uA6{XE z)7O>#E|0u0t71dLx79!)+02lL66gHf+|;}hAeVu`xhOTUBsE2$JhLQ2!QIn0AVn{g z9Vouf)5S5w;`GvBZN9?>BA>g<8YgYqD4S5TV#(3ex3O-^WtVDm>2XQjxAdxN-kDH! z^Vj4_S1$!GIZ=16SV*zc*5U})E2lllmjiuzHt4mas#VCWue*O_$Ml&8tQOhceI&JF zbLkh~S$&_rb1riFQ+oY@8q1{Fp-&U4#ltLj9KER;XA)4fV#X75m${+g3_IqWee!UP zqeoSsJ;$Xdhu^aw{QNbp&8+!i%39@1EgSj{Ce?F)p6Q%+{gd*VdxZ=s@5|*F^Y|F^ T&iqi=0`j7#tDnm{r-UW|qd|Xz diff --git a/src-backup/main/resources/assets/alchemicalwizardry/textures/items/DivinationSigil.png b/src-backup/main/resources/assets/alchemicalwizardry/textures/items/DivinationSigil.png deleted file mode 100644 index 53dd25c7e572d119fd067f313714b5f69a22336a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 625 zcmV-%0*?KOP)WFU8GbZ8()Nlj2>E@cM*00GrWL_t(I%bk-wYg9oL zhMzNEcXP84J4J|{L{|A(MOV$#HDqy8K#5kVsaQ;8r}wn9J%q_7jT&>$FvW$)g- zA2Y{db2Uq1Aim`c=biWCjHoIAA0HI~=v{d@JKzkEj^NtjqFQV5-ZL&sR22~c5dc2y z?#ihIR~Hu4ijehsv@xP7v2lB!r&|{R{t_OdBQ)JX@E&U|)p$%V1ZMIa)x`SpSFCeb zYY`D*j8h8Sv>w4aN8L0SV|cuI9v=ez*&anvFe*!|F(g&`c^-zNQT@k4mqYhTY+DfF z!JS{k6iG3Gz>^mj0NCBzlj912x~{pu{u5P2QB)@`H@D|$+Ln-o3HgZ@4)JVz9_J=k z!@+#1I@sAM%aW?DS-J5EV=Zg9z97aR#!wW+RHbG*L&1AbN{Nk? zZ=@6_dmylS^E1Q2fSEi$rG-P>Tl-EM4O_1+<7~t8?MsZSio2`(ynNk1d6BvnRF!dA zVx8mM+#Jq1ejFU&oFmIJM1=P{J912csv^eFR24o1j0jcJFs^I7_mfssX^#XrmBIC; zB~2;etVIAZhS;{G7;)Z{RB4)qH*ep`KP~k0+yV?oqj=`u_`moKhXLR<={C#Z00000 LNkvXXu0mjfv5fP)8-A5QWbeV{Neo zD@Dn@q6Nv15gsB^PMPAjK)F|*E9=Pwj03J0qk>L)>!RImr-raDB@O_t>mm$8R4SFdhjV8#Y!Y%Z4r zT5FoA+4fD@>7RBC3t~j^oJXTJa)2tpfx<1I*`h$Yxus8$I>IZ-7ZLCKAl2VaeI&xMuLN%;2Q`Vgafu(tt1CTgq==@84Jvw5c-WD zY(!dXn!j-eTmpd~B==sPpFt2`EQj^Fsgt002ovPDHLkV1mH!3rGL} diff --git a/src-backup/main/resources/assets/alchemicalwizardry/textures/items/EarthScribeTool.png b/src-backup/main/resources/assets/alchemicalwizardry/textures/items/EarthScribeTool.png deleted file mode 100644 index a7f197a4972ead6917d15e5a1748316de95368fa..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1078 zcmV-61j+k}P)KLZ*U+R`sCEkzKl)gj5&q@hY_5?)@_euSf22N!q0z{yc?Q2YY_Kym8e z5Fvwu2%hQO!{u_psMvL#(bD64NQRTZj^-}DnS22ry9f-;mW=gZvQj}U-ZdMsK&I8^7~DvX`q=i^=@Ar=%uH&1$TK}1lzbP+vx@ghic38JfqwLqu{3D#cARYfgWHOmu3IqE&9u;%7O^;!g}5Gz=KsB67SQ%UbaFB`cHj4>q6CFp6z%-8h3Gw~531;qte{@7b1!uQ wUw}`bYKsqE(nwb7Fj^A8(T~XyK#*&D04OsMQh)O&`~Uy|07*qoM6N<$f(gsry8r+H diff --git a/src-backup/main/resources/assets/alchemicalwizardry/textures/items/ElementalSigil_activated.png b/src-backup/main/resources/assets/alchemicalwizardry/textures/items/ElementalSigil_activated.png deleted file mode 100644 index 04c3aafc2193273d91ef979bea4e4b6082aa1962..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 659 zcmV;E0&M+>P)WFU8GbZ8()Nlj2>E@cM*00H+&L_t(I%bnB9OI1-6 z$MNsl>%6>LQfZRCgm6%Qf+HP?8eQlC4uXQF{UOn~S@fVmL0u^i>ZquJ(SOim5JVc4 zU@z?GJ$IkI8l=X>3~Y@y8}^6wW3MG<2EfZ}KNBE3ak=vcJ1E%zE?qosst(nNve_hx z0wD;&8~`_Nzmk6f7tRlwh|tsHFg&5ED2fR0BLK_{kw3-;7;Rj1b~-EshK3eUg%AW) zV}8Du)zuEhCl;A%9KrhvRksOko?0y-NsVAIJ$;Bg@24z{W*IX!zDQ9R_4<3v0=}x~ zs@0M<;QGzilBN|Q7*!P*9sR&`-U}h+!Tkf6!Q9+FR6!6{ilS_b0I<9qvsxIcia3a) zgyE65v^-RmFg&uv?p;Eoadc}00Ouf%LB#Ro@c{MuM;<*qNJj=!Q$09mw zJ%CWQN@9yJes^Ogh$va6tgWqa>&_ebD}V^%z$_3)N}33W;45Qt@-revnq_TI+9G7B z5k+w3^e4t9-jV0WND^TtKaBUry}Nx_sI~`GjVLnaX7}>!X&+96?(T$>rxx%Y&YoLh zeeSjbW`?e}9VanmQ)zk6m#?1Z^Zls8?92cmgza}BP6Ayu&$sW65Oi~NRh6=A;hb>g t>I>Q5w`VH=&{eA`z)De6JKo0stzT;c+*SS@uwMWG002ovPDHLkV1h|l7CZm| diff --git a/src-backup/main/resources/assets/alchemicalwizardry/textures/items/ElementalSigil_deactivated.png b/src-backup/main/resources/assets/alchemicalwizardry/textures/items/ElementalSigil_deactivated.png deleted file mode 100644 index f91496e1342b14f3afc609aba0225da9efeee659..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 598 zcmV-c0;&CpP)WFU8GbZ8()Nlj2>E@cM*00Fv5L_t(I%bkPH#LmI@>Ab~{7gCJ^J5IhY95<)`6cAOAL1ks~lXPwUFrO!A7S6fR7?Z`(HpX+&x4Jze5Njiahx5JFj~gj9Akolbf6W?<(!uz876Ao9Khn&F(|VEh#%D%I+e zgL5MsjKA@z|CzhpHr_k7w^Agrkv3rNawR~B+x07~-?@%6qf)8z;o}Iy*xfrKgcSfu zm~$YA;uvR+(>&)SJE7NY0kFN5QWW{>Sr9-FL1lT1uj{>MHao>ROV diff --git a/src-backup/main/resources/assets/alchemicalwizardry/textures/items/EnergyBattery.png b/src-backup/main/resources/assets/alchemicalwizardry/textures/items/EnergyBattery.png deleted file mode 100644 index 1ab960d1f3ec4f5b6a693d634524eff6dd62e348..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 845 zcmV-T1G4;yP)WFU8GbZ8()Nlj2>E@cM*00OZ|L_t(I%WacOY*b|w z$A8~4n zvNJ{vF(fS1sFem1EmWYLz9!Qt*SYWSxTsQWdv+%||6k7epL3Lmuvc^`B`<1?4Sa13 zO%b(Mo!SXFV_EVyaH?F!-oKyNbxAyrALr-!AW4uNpw!dJ3CogmM~~vyYIw`bB)(7L z`vi>!(+3Z7&GR^>wR~^P6Nr8qa6l=v)?~|NGNlr&r6rOuq*$pC)a%5q%eelZWE*fy zYk75gn%2@1&AWHWISwWW@Ryfay?K*Nv51w;@GIOe)BRHu{xq^eU&-aG#m>1-!oz5N-}gM)0$&5?H;{IxYq z5YRa~O0d4Zwa!L^D;J-q(0`cfloAaPdK+|Bd%8%^OM?`f57?aR!h|7RV;;?1KyLUA9@ZLk zw>Ee<`z2aiTL7nWlG$H>rj!@jy9UVVQFQtdh1V5{8b;hd>FyXosmDCK?*MBHw&a?Jjo~4X)dwxxPSesmPGi&syys&y2jxh0C9F z{U=cx;G?Uz)yJQF%Avy*R{ol$ZD5A^#m7k4q*K@FD_EqGIve#G&XJQ`{bEbJ>zUp^ zcU=DX?K_?uo4`aq0PSrFQ5aC}clhSpABYm3i1++PfG}v0Zp$J9N-02yWFU8GbZ8()Nlj2>E@cM*00JCIL_t(I%Z-z7OH*MO z#(($m?3}4>I3}}cN;Q+jtduM$EP_BOq*r}{pa}X%z42QFGkXyv6$EQ_64R7T{JXW8 z?(A$kd!F97r5LvB-F@@iKW?t;ene|cLl^8jT5H8xbwOxR(g28v1{g4JA!4vrecuwq zI64fF@jt+kt^Nz>w{9MLJ#0T9U<4R#pKggFy@4^Uv|`IoG15MbZ3Y?b8=+itNw24I zyrevgKht%k5m6Y1iC6KM&(BKJg8^$o2ed`ljxc_4oKP@CC>$c?d?CA+rJ@cvs2?B* zhM1fS4-n)G$=z3C0%WS61mJq-Bb_Vc*{bi*hCw9UjazeZiWxR)sivuM^P27s#sM%J z&9TlI?fGSve=V_BEntboaNAWz5?An-73Zznx{=JLpOT^W`?{IJVW2El=H*){DLoy% zgzYHbchhX=w|O!(L)40q2u?PQT`IqoV*p?IO;$J%q00^v@91N7=O+svKQl3S1Emy~ z?7RBJ9RQ@=*8(up`$GGwMy`~j;1(!W3b?frv9nQzx`y$!e=J7xXfYjou9f)Y-5nfn zP5=_tq~7=T`TD~l7VRPHX8Gp^Q$0_0U8=1A&NPPsR;ur$=KJgx^K2H@35rF(HK9)c zHcA_0imN!~y3B3Oic*?3Z7_J~h3Hf6{&D|Ht+cR`Tg37Hf-l?mv>_&r e_eM?yw4y&jVf7_)&~1GH0000ndmf diff --git a/src-backup/main/resources/assets/alchemicalwizardry/textures/items/EnergyBlaster_activated.png b/src-backup/main/resources/assets/alchemicalwizardry/textures/items/EnergyBlaster_activated.png deleted file mode 100644 index 2e245f2fbea48a29a2b6e425ad3ee6210610f272..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 525 zcmV+o0`mQdP)_)IrXk1se*3axdHC>xsbAiTe+TxDfkUEQFyrqb`Fs@lvE<=f_)iRs3Jy+cgD z2Y^6h1HD}%@^yN_6vl=Z#Ih`Q!Uq7<)mPKj-kO0F1lW;~8XsMh#Jgk+)LQcxd%^U3 zuq^8vBnQwR9GCa_M~?e;B&3dyPB}lj{`rvRrq{&lH48?kwa%oGy@e7H=BC!<{w{{c zSI*MP#E-dWi|t5A8OfwW%26be@n6OHQc#ZLFwi$C6%}p(HnwKfU%vAv1xd9Jvvn`A P00000NkvXXu0mjf=Ca$3 diff --git a/src-backup/main/resources/assets/alchemicalwizardry/textures/items/EnhancedFillingAgent.png b/src-backup/main/resources/assets/alchemicalwizardry/textures/items/EnhancedFillingAgent.png deleted file mode 100644 index 1713701435be6de4353a3c6389a28a6cb6186244..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 606 zcmV-k0-^nhP)WFU8GbZ8()Nlj2>E@cM*00F{DL_t(I%cYXdYZGA@ z#DDMZ2BV2dmDCR+f`UqkTA}1m5D$9LOYtP0q#gv%q6e?ul->meK@TFHJP1OSdb0Uw z(x`<}JqT$v-H>c{v+uk6_y@F`R2+Ct&oDDEqeO)NftB>oS~FkB$$TL<(m^F9Xti2$ zVzUh*tW6%KSS+f1KEI9UBqIoPos?rylxjWPe0AP53}eqR&9h?5tll;b3L ziO9C|eV@isRm@%Fl4K5=y}3K&gR+ekIan*aa+ diff --git a/src-backup/main/resources/assets/alchemicalwizardry/textures/items/EnhancedTeleposerFocus.png b/src-backup/main/resources/assets/alchemicalwizardry/textures/items/EnhancedTeleposerFocus.png deleted file mode 100644 index 06436a18f1c2f6b8e75be5d25e4a60b28dd2e7f8..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 498 zcmVg(BkrT%%0Cd%pt*gIi~M+#sIzckK`*N6^r=%--6o08 zSimQ(g&?1`|H^5{gvrF_q9dO*rBd)*g|j;uz(oC005mY=dM<3Q(9;F0vyRBa_W@HB z!_P%Wr3#0qzC%$9LF}P4=lFf>Q4HmTg3w^C=!pG01U(_79Q-=+P3bn$Cjiy`eAcwJ z;5rEkInzebv3H!fJetw+pKY!lZ?Rljx_Pkjoosr@v|bDt`)0bhmxTb{g9JfxCobUf z`jTq&+)}a2Ac_(JNl0QmgLapk3jL@NW3X2YrC#NJ=ekGF=Hv?mYyC$(Lj*A-0XOqD9c oZ@tq-FOo?1_TFj7*q8st7qEHH7&CqbssI2007*qoM6N<$f;~XhRR910 diff --git a/src-backup/main/resources/assets/alchemicalwizardry/textures/items/FireScribeTool.png b/src-backup/main/resources/assets/alchemicalwizardry/textures/items/FireScribeTool.png deleted file mode 100644 index 537d7a230864ae9a3599908ea4930d3eb6ecce4b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1050 zcmV+#1m*jQP)KLZ*U+R`sCEkzKl)gj5&q@hY_5?)@_euSf22N!q0z{yc?Q2YY_Kym8e z5Fvwu2%hQO!{u_psMvL#(bD64NQRTZj^-}DnS22ry9f-;mW=gZvQj}U-ZdMsK&I8^7~DvX`q=idDE;$S`6*HvBVr zD{8eGuIo~*RzpKraU}(jcbx|qmzz^WEfoOs3PTr0JpC~*KObx&;gtV z`he#q`5RzVDWp>I)qs>z-&Kl!;1tjeoCnr{6z~uj1zwuxt3dEu1rb{-UNtN418&aD zKqiAuBzRgba|L(?Tm@d3_l*4Uxu9uCuPrXpIXKAsg$25Ldbqx{#5ynrd^UyIaGbWz z0_%VBmz81wxIZ_CH$TsIvx(N4Ev;Fbo#o#2G#?CLI-8Au9(V^Rz!@3>A!vE#CtwMI z&gW^EBK_Xgg{_o`6(9rD0g+0Pv~7~|L3w%4Mfg}T51Qv#exwE_s z$s~3nfk>seG&RM8Vv%!z-{#(jQXmKd@z`-VX`0Q%$Os$0Pv`hJCv2M=#Uf{cT7(lc zbSKOyMGue$`hnMgG#351&(*hm7PRhjO0j9$a&Ls>kw&tp!)PRc;~$e_fH>pV0KYEu UL>`oJ^#A|>07*qoM6N<$g3=GmLjV8( diff --git a/src-backup/main/resources/assets/alchemicalwizardry/textures/items/GreaterLengtheningCatalyst.png b/src-backup/main/resources/assets/alchemicalwizardry/textures/items/GreaterLengtheningCatalyst.png deleted file mode 100644 index dd7811a1c3b5e6791bdd9aa2ffe89ad1a170fb73..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 491 zcmVcZF6NN@W)ChuT1pP%W-Dt_Qa-*3pTevQ%1c%X~5+W$Cts4Bh4(4#s6vQJ)WSAfVm{ONi1r{~WN*~c#wkxPc){;USYlC}Uc zo8=F~RegR24FrD>gU_an&#U+E{J5_MeRvvByW?99PyD#W5-8 h@GeZ~B(^GOB2K~tId{itrzg}o@j;-tN`b})of@v?R2P1=9?#J;G|QNQW7ZzHGHGC zLC>K3IMA*|zv~MEl1M#I&pv9bFY9T0Lk-Yg30cyRDdaf`FcwEt_m62pj*u*@?1%VdxoD_Hk762c(2DbVeSeD=-4D?V*bjXk63Fr=V3pxNP z%gTG;;!yLUk88fN+2^z-nXBIY4IqljH?b|aY-R)GFVrP-15|#!7kbcbx3PT=f5D9U aoj(Ak7Xj^##s|Fs0000WFU8GbZ8()Nlj2>E@cM*00D+cL_t(I%cYauYEwZJ zg}*g3=Nx-%C4Gz*FN9cYZ1G(}pGpM5XHiQr#Eat3Tc{vO+hk^MFAj+bIlZy_YGC&M zSZnPWxjPT3v^pG*4?U%T6|h_&fEy@^ki^%wKh+1&O2P5Pz&!&72;8A*3`ZE4Ycow#0H|sqId#g! z;P?hXn;{;J2VMu`?B)F4&@QL@+}*&B_rJ9jVrN5Z_J_|0B*Ez94`06Rkr$C-Mjee( zr`;_8D8l*aoU3U|Oo0%(@Jfz^7y(#Pqfq)SJiQorSr#6(Vl>>fF}WUaw=k~X{9Eak zg0kpj+}=1>(irAXP)WFU8GbZ8()Nlj2>E@cM*00DPNL_t(I%cYXRZWBQa zhCh2|Hz=Y&;R2%Kz>U6D#Zw`qN_`~+y#pek2o<6>glu;FbC~VYpoIhV$zyvy`L}J7 zxQ*p&=lJAMIXh7x`T`CLuw-~P-oC!DDS%yfaQyOt)B^z+NMKe07`O|CA=Ui(={E!L zk%YsLbe!al1nbW`EUe}+B-OgXMgRgc12e9c9WuetbV^QyD1CrHHwYu(-RXtNg$r(VNVM|?bNfpN60=8+Osw8-#`x;P7J!G(=ajzZ&8y!l-2;@a4ooGue{_ei z!sW*u^T(N-6J58X$!YHn_9QUmA|NO1OWzpr|CWFU8GbZ8()Nlj2>E@cM*00D+cL_t(I%cYaCZWBQi zMbDjC+X0%S;9pQk5RPcgpQJ!ag=3|#V;3OtFRUZcVL1^Xls`cV4N_$9&U+NQ>yWUi z{HmE(oOkBVjNF}VDr**>UhO#qVifCDNfHPV0z|>P zq&l9(aE{4wbGkwNo7)C(ytvWF!(D$lzMJ^1N`|PKORvR!xP6*Wy5iZH$`Ux^C<=}j zH)=Id-Coy*Uhj|2?{c}Gd})73O+`Vf6|FY-KAKY`qbH;Dbmwt^fK>tg+1m%n7#_u1 z8D9G1fFe2l>43#B=UIR^(@OotxB_0CU69P$pYn%;JvWCeM53jYi7s-L23Zi4_RC^; kesXpHPiWiU7}&D@0#D$qH}^38djJ3c07*qoM6N<$g3=`43jhEB diff --git a/src-backup/main/resources/assets/alchemicalwizardry/textures/items/HasteSigil_deactivated.png b/src-backup/main/resources/assets/alchemicalwizardry/textures/items/HasteSigil_deactivated.png deleted file mode 100644 index aff173d788cf6542d59e83f2e312cbaeb75d54ac..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 562 zcmV-20?qx2P)_06N8*cnkml03B&m zSad^gZEa<4bN~PV002XBWnpw>WFU8GbZ8()Nlj2>E@cM*00EXsL_t(I%cYY$Zc|YZ zhQEK#y>XC8{Gwqi2(bVHP6I7FNP(0+P*AW99zsHqA}A;#U^P7Km^f1KJ!gjEVq?Tj z<*7zTNB?~D&x|61ZK7HwFYXNkjFd!KW{QLdm_ZUe{WMdTfK~+0?hGOV%*4m@Js#}; zBq!m32@L1~3lEZs5*;n{QcIW! ziU)_c7UTkzg8RcuayZ2uM{N3LtK{fxsw8;%ZNR(fKCi#-0Z>9TrO;#t+LqFW8@6dk z33xJ|F&SUbv$jeAALe~d<|A$z>{JO!|F-}T0hfr)$r{1I=z^4ts;a4Jz3L=bRZKYf z&z~H^BWQ8~M9!I`v#B}>Brpm0zZD!fo%Po=k8fXfFVgzKpeaEUEnE}EqtQ9pof~ps z_j&;VzjE;Yyq!HjEk|;!GOkEeIj$GT4kyz-hod>Wz^iGC{^rMk9R&yD1;xF4m7m`o zh6hw;nENtBEkhoVB)lnjGLFCedlTCB8jUUEH=Gr^RE-+BUjP6A07*qoM6N<$f-C0W AbpQYW diff --git a/src-backup/main/resources/assets/alchemicalwizardry/textures/items/IceSigil_activated.png b/src-backup/main/resources/assets/alchemicalwizardry/textures/items/IceSigil_activated.png deleted file mode 100644 index 30ff69d307e58d87b12caf6f21b8a03b46560ee3..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 557 zcmV+|0@D47P)lR-`tQ4of|s`t8KnjVQ8y#t9mRwTrj zz`}*`0>l$|7FQm@E4V=u0+@IM4}x@04?VAb7sHT2XBPOcYEk*#Uw^$aNdWx%+||JD z!Nl36UiNCoo_MuH11m&MvOBf~^Dn;T>~M zrY)1?xI67mO$JWe36tbxGv2lhcJFwl2f#w&>+g=P1n>5z99I>iM1+_Fr+W=QX9Kkv zQqVR{{RptK6cU$RPfkwl4hFC5itE`xPKmjMVchop-J=Xv3IzcO!|vw~iBV!cj+i@I z8^bpxTO^8tf)NpX?*~rWhMY3)zBz-X#QXgz6L%D%0+J^xKoZlcVq%Y1`WL`B?*TX1A`3I74gCG5jcBjJKIm#Ia3Zh8#V?m+KxA5WOS^$ASVy~(gN|4N0NR$Z7 v;M2h?d-3x5zW{)?X%fI~-lTB_@K@fz$>UlB2WD_C5)>e{DByNCl z96NA{h!b!YRvdvdfD+rXgcFXyf|#EifyjQ~r#I6q{DTe7BJ^rTs;TL!>Xy3$@afH@ z0&E|?dT_%XN(+M1!O$gP5;4V92mo(e4Q(RG76>WWOlla>2g8SwU0P3wa09V~JWJc|%1&HG3gzpy@92~cCcM{G{ zwOSeHd10$9S(Xv9j9Q}sa{-dLzPx0w-N9wJgb?FAFV-Y1DtTgS`#vDdZ0UrV;R2a~ z{&-;O+Ns18=F~)_{#8|FHx<*h; z#?+g~Tz?$0*KFaQkVLpwVZZa7tMm7S5N=PQy8Dn+mNSiJn2Z!7UY3*#TbFIwsifoR9z^M%^<)FtW{XE z)7O>#E+?}H7hmGPW3ANc;jyC6RH;_@1%oV5BGo8w~_PN|ub#_aFFD)ZIhO5L%bPnsKa4Y#gr zWUF9h*~7g3z|^&@?BaoO>{`;yrB}im%^w6Nxj$O-H045EPO5G1E%m)z3<(ksm=dPt zT>3LfQsjW~2L=%{X3kQ^GDq{za(qmym?gb(7=&lfJS!L9lkY5(U1!Ir-JIPpb;m9C w&;u*3E?#%OM0U1o%oWFU8GbZ8()Nlj2>E@cM*00F^CL_t(I%bk-=Y8yci zg}W`JSdoQE=bw@|dOo_&CO`WfAR26@d0+0zj!sG8(OZB=(+J z2)hAhhKVp}xAAdIs49{yW6*5!dT$RxU@@I?d3`NA0U|;aMI>2U2;u25HLu(Gf*a{QVXTkg_C%fI9b_JfLyRd_Kpi^7+eG rX(!EX0Kk5u;Q)R-JykEh#{aEfnw`o+s2@$d00000NkvXXu0mjfhxGkU diff --git a/src-backup/main/resources/assets/alchemicalwizardry/textures/items/LavaCrystal.png b/src-backup/main/resources/assets/alchemicalwizardry/textures/items/LavaCrystal.png deleted file mode 100644 index 688b609185880b35061279ca9197d5fceaee591c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 585 zcmV-P0=E5$P)#-y9bO z!_=sSf@gi+=Um=%3=v@?5o3e#SAcs-iF;9rNbtuTqumJZWhHpf*>ixdgGX3;c@Hdb zu2qbG0^GckEkkDrs&i=DV)Kp+-Mdc`E-o?+RnC?vL4oH~|A%qEiRrtVeoSH92; z7qRy2BYo;7ZeB$yn!m&aB?#0@Q}_*!A6xq=zMDacpBVB2vbhRfef#12Y9VKGwUbr{ z8v0LPfm{aNX;XUogpm^_dq)En-n^nbJxyb2mdx4PU;u<`MhL*{O=I&wz@1Mu0g(QY|(UXi*eD3pc3U;PLQiBN^r8(vwj)Sz> zfiqb#+=7x#%NnbyNoS9;{rCW;okV|_CDu1c%;aBj7nXlvuZ*aVgu#{c{pE1Bc# zi^n7mk5PGW0q0KC#`cGlS3(1}jhsV&Tc-B*5!m3|SjQnnKm{e#z`6Uoa9x1^@{Kb@?P)WFU8GbZ8()Nlj2>E@cM*00E&%L_t(I%cYY|Y7|iv zg}?Kvs$W%g+8B|z578C40>P03b>bh!fdj!M2u=(^Cn6?W5Ck`&i*S@d8w}l@>gsy+ zu7j>LUBm<=4<7eU?#DUzM`p%lUV56`^4?Owy00#_UHnA_f+OvQkb*&aSCUWq)fZT{#1Yk_y^Ue?i6Gh^h>YjzA?`3}P z-Hg-$3$cZR1Rm|p@L9i!J%C4C_u|3cj0~1eYw($PxI0A&1iJtLPz=P-3kQtS1X>Z2 zNS1*aEJA;zJ-`BEV4|8Eg~Z#(Ih4lxCnX-Y+K+P;fuv6e_ zhh1c0(EyFOf@A;w2#!SX@aEGTD#w?nL&ABRXlC5bbNlvk1Hux0_v4g&0Gl{|*G3Dy zE$jhqdT;7FAJ=Xo=`^<8@W1~$)b@?7vkCyJs-h^0|GGw9_MHC$Ro1M)`T&0S00000 LNkvXXu0mjfDHZUo diff --git a/src-backup/main/resources/assets/alchemicalwizardry/textures/items/LifeBucket.png b/src-backup/main/resources/assets/alchemicalwizardry/textures/items/LifeBucket.png deleted file mode 100644 index 52756dbff7151e7b96b1f7094a54f51b8e253b79..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 659 zcmV;E0&M+>P)Km|DOdS%bC{oLU z(rj56vN7-yC{GZiyaqc%)R_f!p(2nDk&u{Jx>QV&nikuq1NTO@1HvXziL0K)^6}NZ z=l}2jU*99D$}YoU$ML^_LfV0qN@b;3N~O}u@!f7$a>0PCb3qdE`_Tw53<=~humI3R z{`=`^Dn<%fD}Jqt0{3P?PZa?iRep&O0t=Dt8L-Gd4u`mAvgm|f7%owZAQnCF$`ql% zz2ig|Kt=d^Z~(wyFpyLX*s}Ii*;nOG1Q&2bSVR$6A*m7qMO8$VATs8678h7me=+Yz z!{GxG4+w#Rp&Gz7Ie>yHfe1d}o7~{=@M$&-&4d6y&C?gb2}4{Xz95np5&R4qSX)4+ z(*dB-XvFd#uCLiw#gDMCXSOU@fw)?&0?_aGc@`He%tDXsm;rUB0xT0Yl8o4RcY6y! zv)PR0r_<@*ISD=0ttLyo1?6%%#>jX)j(s1uTDV)>Ene=wpkA*lK)ctWn82e7XXZok7Mdjo`Ctg4_M^0v$N$-saRYdPOTOIKhDnqxSP!g9A|eL&{b!| zb1-1z)6ES4pN%FSG%%k7@WyChzQO-5Ujz0AlXQdC!lu}y{`|S1*XsdLtJMH_dvz7d t=e949w7ucFzF=K!+WY)5@Xz*!e*o3E(KK3+-!}jN002ovPDHLkV1j$$8_fU! diff --git a/src-backup/main/resources/assets/alchemicalwizardry/textures/items/Magicales.png b/src-backup/main/resources/assets/alchemicalwizardry/textures/items/Magicales.png deleted file mode 100644 index e078a01b4117e990c25d0b0491523cd71289060c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 408 zcmV;J0cZY+P)M@3!EM^#Z* zX2x$S;FtBcKuZnls%<|4I%?W+a70}PwA8R~0bR9iU%TX%lUPEHtuK*aad?li%ET6v zFv8>6V0|Gn2VCmH4ud*Ns_^RHNO6=@Vn_l&m1UYbvxPuMP1{ioZ=Qk0WH=m-zV!jf z$w^6BW0iBA+9#k$k%)*;MPiF_WOGN&$;t7IND=zj52p(u1~#Cg3JD_|4v!}zV@N_u zN`V3);T)jpSAL2fxlV7)<5{7~h!hz2JVr!`XI=;po7}56$!T^LZZ(!4I5C@qg$M`` zVw*b+f!<6eoW1AOq~RoK@<0xV01tE)44(dd8s7nk6@}kv*E*K~0000WFU8GbZ8()Nlj2>E@cM*00KKnL_t(I%XO1IYg9oL zhM$?ayLWGPlbCE+gGE3SQLqrQSfmq_kkZ%*mih2cqnwIVPICj$Opv?6yxnhGnc`oP7JspPr09T?wit&nDd z)?kc6#J`8(q2?e$6e(0!?tSao9zaA;3bclDbT~&15YE=6(-A~`g8)IG&>F%}qqT=; znUB!g62jTK0I1@XNjWuhjqOg0+T&ZCJL?FH7ignAO@Xxz5m^4DS)G|fWnfocc?TPf zb*xHRt3P4&o5iL+dmK9w>)4Lltm_Xf|M*;B-u7WAs}~_G}Gu}g{`HR*hdTM$R6C8 zyKnB^zL5hox|U1&3J{q68`vBf9~tiX8+%pt=5+<|>)wMSfWFU8GbZ8()Nlj2>E@cM*00JLLL_t(I%XO1GYg9oL z$A4$;Yj+c2iH`(HV_|Qh2v(xtBZ`e62#Tags(@v_fnbwH8?m(#!4wJ#Y9sgo)F4(i zF)?g**X-WSea;+<8_jM^PBRQ={*QC`kEkm9)#5^Pr19WUM?5kAy_3BJe}UI7)flfU z;u(qp-hN1k2k`LmZ#j@)aiOVKF4UNsGKgBbTY@d2uu7*3{Q-Rbnz8g`m&6}tGr-X! zu)bz#jKOxIBq=yo^~(~9a&!bUtbXx)L_Y@O33&;v%?gy|AOd4`IC&yu{_gI6Mz&%M zs8JAD{RzGg4p0YTs=MbaL9mYlfFcLYg-%zA!b;UpodUGlmGF3D55cSJlL}B+h*Kqs zc0d9O7!TUr3UFw=(p;XYF!J*1F+J7v=@bPoj^~^^8=)oi5=auTPSH}Z&fyv1%eS1l zxJFVc8`+M7c3NT`++MHo@l!@`09guHMG%4jfwZ& zhFiZPo|EmH&iQ_gE$c{}(oZe@Lh+qK-Gi;6eBE4&NSrd}8zKX$P^c1HB`}86I@Si3 zMrbfMUT?^c0W?DoV<0rUOxvZy4kf+r3mZwvYHW!D!@YMc`4{EonMs|lL++Hqjar|G z44ur;PL<8f5qO5#_bnNT^2*X1FTa1;7EURLRJ)lY&I=;n5DFX$4fAJCPs|?l8xN|( hb9V%w{q)%g;15=t1y)La>lFY1002ovPDHLkV1f&~B>w;a diff --git a/src-backup/main/resources/assets/alchemicalwizardry/textures/items/MiningSigil_activated.png b/src-backup/main/resources/assets/alchemicalwizardry/textures/items/MiningSigil_activated.png deleted file mode 100644 index 8b25db877088d45bb71adecfee848707d2352263..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 670 zcmV;P0%84$P)WFU8GbZ8()Nlj2>E@cM*00II@L_t(I%bk-=Yg0iO zg`fGjH}~Eo4XH>GE7GO@451spKyf3Yf55u5#ht4vZVJVMdv)0&Ze4aOE?o;^yGav` z$-PPD&b%(tq>0*v9(ZAxk2B{zb4G~>0H0s>V<5S_R_*c+P!odH3r6x1fl z@MkMie}AHw<&uYG52?1=p3Ey02@55cAwtRb0(S3 zftF5Nj!9TP*I@5SjYqFD4vuoZ9CWE!a6uq=j2Z`R7ItDF!1rFs>eB)@98ru)&ZdTZ zR8leH_Kbr1Zz;9M3Rr0vbFm7;U`Zng8v4#t2B=13bE|)e_|(Le8f8(!uq;V6SPhXr z3D^X0Kep5ygNRJ4nx>|jrba}FuimW8uANrX&-B0e1^m1B(dhUgvj6}907*qoM6N<$ Ef|Ldw^8f$< diff --git a/src-backup/main/resources/assets/alchemicalwizardry/textures/items/MiningSigil_deactivated.png b/src-backup/main/resources/assets/alchemicalwizardry/textures/items/MiningSigil_deactivated.png deleted file mode 100644 index 3d80e3510d53c76d0682382528bc69a9aa9f0a4d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 649 zcmV;40(Sk0P)WFU8GbZ8()Nlj2>E@cM*00HeuL_t(I%bkM zc>VSrRv;~)IR`WI)T#w%1QiRw%k4Mp?jImP?|KJp#2^Q2pi!^K3xLCKUY25r4H$v3 zhde09S%IjMOU(Lam!$}NfI*s$0i3i}1VE4a>H~}lC8)<4s5!WIqr={ZPh>@)yRnWn zrGjZVKqh|%tS%B*tVK_P=)(j9iHzT zka()|B93u{chnM}3`#+`75RtKB{F z0AAs2;>d$S@K`C0wqPWdTeBu!YFqs=HbfFofmX$m<{l$Z1jqxl>x)lt69ud_tv#QB z(LlwOl7_jb2#`c&bCbVVeCEWp2F0iVW1#BFYLPiH*fd^z{w@myRh_M*RuAV jqg$EJowjD5>3`!F@yYRBj{qPT00000NkvXXu0mjf8B-0z diff --git a/src-backup/main/resources/assets/alchemicalwizardry/textures/items/MundaneLengtheningCatalyst.png b/src-backup/main/resources/assets/alchemicalwizardry/textures/items/MundaneLengtheningCatalyst.png deleted file mode 100644 index ce906c3599d755d8ac4c7223787d87d3a78deac8..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 211 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`oCO|{#S9GG!XV7ZFl&wkP>{XE z)7O>#E+?}HA9w!x=_x>=B2O2`5R22vfByfsXI5?KY;-cnVz6WW_cvMKT;6|u>Bukh zb(mX;7%?>+1~u9DdB?R>SFOqVoEG zJR4h^`RZi`MuvtH^A7y~|6fu{XE z)7O>#E+?}HuNKGaD?fokxt=bLAr`0KUNYorFc4wB@Z_~Z+2zd~^G&UlzB z;dn9UvNn^Am)H_Htk1r&Rp3;a?El36Y0U#B)^l1SBAOOzK#LhXUHx3vIVCg!087S2 A2mk;8 diff --git a/src-backup/main/resources/assets/alchemicalwizardry/textures/items/PotionFlask.png b/src-backup/main/resources/assets/alchemicalwizardry/textures/items/PotionFlask.png deleted file mode 100644 index b0d3231edabf5f48fc3a0f473efd1e0524f612cb..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 325 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`oCO|{#S9GG!XV7ZFl&wkP>{XE z)7O>#E+-Q|gUFTFb6x|5o_M-AhFF|lI@yq~$v~v7p0k-xYISGa0mu9Y3fi6OA4L54 z<{ddX`G#{zQE{q+P%~pPXVdwEQ#^EdU)b+m^8Ww*>DR@61g~Ay{J6?<-+N{Ty^Fl7 z4}0Fu4rTqa{r94@*|Ekt=RbSgQ+_l@`1zg{rF*w&o`^hCAK$mgz<0fixaE7pXfZh5ExOq{ItqicL5eghK!4n$?+mfvqhXP-%q0~(^HAt#o;+$i~KOZNKQ=en9IS!Y<-IaIxhxBT>v&#ctvZ{Jb VRw_Ao>NL>544$rjF6*2Ung9alf~o)j diff --git a/src-backup/main/resources/assets/alchemicalwizardry/textures/items/ReinforcedSlate.png b/src-backup/main/resources/assets/alchemicalwizardry/textures/items/ReinforcedSlate.png deleted file mode 100644 index 9485f48aa4d66ee3e21af51075e216816b5222f0..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 709 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᣶WSIN6;# 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 diff --git a/src-backup/main/resources/assets/alchemicalwizardry/textures/items/SeerSigil.png b/src-backup/main/resources/assets/alchemicalwizardry/textures/items/SeerSigil.png deleted file mode 100644 index f2f6c0a0fc444c8510b2d784d51684cf3fee8eb5..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 593 zcmV-X0WFU8GbZ8()Nlj2>E@cM*00Fg0L_t(I%bk-=ZWBQe zg}?5avCTL_VFP!F6l4>`saOF@0!IExOo$LHkhlwC#Tq4G$4DR+zC@fEXWTtqEQ}|y z>@31twVtXz^($2wRR!SJr?djpww~6{xrNLE@VMDj5h0FaE~ise6=Mt-1HkEEVAcVm z#bf3i;{CkIT7vf&!2Sd5G#VO0Ktz^+C7=?=pvvq0K}ok(iQ|9>18?ual-J*>s9ni?NpRcwD{6vRMgOKn}ZS6yC08jS9RMlBD4I-Zq2L zXgR_{`>idKB;lZaLaXx#5y2M)0yyu9DiuWh>JYE1-#x(?IPU*g@+Xss4%a|JWJ`A*=_eD#lt|o)cFB zFZQ;Ht5sB$!h2Me_s1igb2s0D0)#*a0V^_JYe1riJkJqp`TXUpx&PqaDga<3Nd({` f%ZgiHz diff --git a/src-backup/main/resources/assets/alchemicalwizardry/textures/items/SheathedItem.png b/src-backup/main/resources/assets/alchemicalwizardry/textures/items/SheathedItem.png deleted file mode 100644 index beec20e9345d6675b3b7ccb722b767ab541e6f31..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 474 zcmV<00VV#4P) zK~y-)#gn~C13?spze$$OC{a{I(D<`pBN#-mv@kwHM6gOqA3$uZ?5u;0U8Hquo2VFPCr_D}n;Rl_0M{4-gm|AYVegMl;qiS%%FYK_ ztpNxGYQ~^d@BSw2a9B;UwfUkVVhpLf^HNM3wr!hF5wudofoj;{_*SuydRCS-6TL{? zu8-?&NXhY$zGn+KxSL{q$yM>V#n9%B>Q_H64~<26Xe>&jbtX|b_3yv&8`%>V!Z diff --git a/src-backup/main/resources/assets/alchemicalwizardry/textures/items/SigilOfHolding.png b/src-backup/main/resources/assets/alchemicalwizardry/textures/items/SigilOfHolding.png deleted file mode 100644 index 0eb3443ce47bc547f99f9208d4c0ce48f6ede7ad..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 697 zcmV;q0!ICbP)WFU8GbZ8()Nlj2>E@cM*00JFJL_t(I%bk-wYgADX zhMzh2oV(e?n2&{|5&T$nQ4oVcQz)XXzrw;sh)M`(6w?S2{6L7t&O-l*q*4nZL`0Jy zv9MUstdY%T@7;6GSeO-;#6qW;DP|sq_ni?{1>pVMMhbKt9q;+UKZLXa&xeP#rHU8> zAz($eI)3Gg)vD|SuRtwW>Au+fl;q9FzyegT% z>05_ce6&iRbK7kMm@Ad^$d!HAE(6xEFtfsm$uglH2u`qGkhK=+i;coqV>#ajcs4Yo z)y*bnrYpRA_?dc^A;zFF5=0oiQKmZcg^KS@#v049!$yECMj{Y0Wj)L2NmEW;Eu$iQ z&oaV#pq6^t!`lE+l~e_>N>PMwdCsfHpBR}qK*3n-fTNfsJ71!z;*8<+z{~JF6buWFU8GbZ8()Nlj2>E@cM*00E{+L_t(I%bk-;juSBu zhQBJen@%SyHi%PjnlOS95kl-)^4PI}72*I$AWa}bz=*?e1ug(+lCe8&7Yk2!l*tHb zsFfe(um1XNifd@N=gX~ z5J3b|HZ~!2dkUbKb^JJ9B$u@idPGVc6+u*SE+4kAqrmDz!(>vna*Cu}dfsl0W+J3y zR|AH7I(`(!$+zVMGsD=@C*$|8$m`F$E7eQIG2rX6;rnW~M-{+VLeuPv*2^BO-q*$P z3)w1ys)B&3?a4m?crVW z00=HqgGK-V010qNS#tmY3ljhU3ljkVnw%H_000McNliru-3$!^3kWFU8GbZ8()Nlj2>E@cM*00Fj1L_t(I%bk-?iW5N; zhrjo#y6tr0#*KIcVVKNHL=7H8^b#)pvvZ*<@eVG;bI8m>SCRqo0A4^PX}goI`nhP6 znV3Ns9~2Z6^}SzxRb`R@IDNe=)vKC5o&4kyWgEcrM`MKm$Z6XiccUl_3?z8@ZfXAn zJb6&7EFxwiIxx>+%<3nb%szQBVM!_YRRM2tpGP*+viwC&0_fERBU)^$BG3=X<( zjU<9QDJ60im|+Gfi>7T?I|*Qr_33MivhZk_8ExBR<`{zqb0>tne}wap+XpqH(XiAk zI#NyuW4#vD$Vf>S1MJWE_@%*vf#BX@jU*(|C-LKZ$E){eSL!?6fj*1bwC4WN)iWw! zW)#t=s@>53cl$6oql63`lvf4ulX$d5{)k+|KtLNCFur zr_FY8b~K?+i4UI}ifD9QLRl9-IqP)WFU8GbZ8()Nlj2>E@cM*00Fs4L_t(I%bk-yYgADX z#eXyRzJ0z##WrLS>l9W7C5>MpAh;j|`~dkl)&YwYAwo!NXlv5mG$vD3_n)F7vY`(~_+;c=} ztVY8DqKaDv1X0Dh_o!u5!fg=&hUK24fGfm;kaAD35{m00000NkvXXu0mjfucz>F diff --git a/src-backup/main/resources/assets/alchemicalwizardry/textures/items/SigilOfSeverance_deactivated.png b/src-backup/main/resources/assets/alchemicalwizardry/textures/items/SigilOfSeverance_deactivated.png deleted file mode 100644 index 7fcc68cdb991eedc403e6b47e229ba86a0d0888b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 614 zcmV-s0-61ZP)WFU8GbZ8()Nlj2>E@cM*00GKLL_t(I%bkG9NLIQ&PXdEQ~0-3~&In^G~u4 zkSv3s3r2c{_yo~_my}3k_-vo;PM1dMl^I6j%3#KM@mW?JG_%(h6-JFZ$nRG*2E;kU zdBi7R2C8g#`@B3j+B!Ks9^W~LYHTJ|Mk4I>2lv)IJZzz+oSYtyS4!v?U!+-nV@Q=k zXN+4d#5qhOL`Bk+YP(IGPjTY^?ZHwz{U6}U>|6}+A+Fp7NvNG);w4=VP?Yh09WzD6 zffKwhVWyZFNjU?ccGg)BFpE@rZ4$qMC*h{~gsqEfZt6AmxY$B26nyS_kZ&b%=!Z05d~y)OweQz`_Cxa-tfQ_IEs%jMYsR}010qNS#tmY3ljhU3ljkVnw%H_000McNliru-UI~{3nzPT<^ccz03B&m zSad^gZEa<4bN~PV002XBWnpw>WFU8GbZ8()Nlj2>E@cM*00H4iL_t(I%bkv$uP9#=k-o(KHrXhzeFA5>G6wwH8akaNKd>PJ*RaYina9F=`q?uu1*_Nw5|K zL6nf}ubFuk%dJ@s1@o$Tyy5eG?>ldlhyd{U*#Q7&?|1m0P*cE#x$EMbrzmm&f-pdb zhSC-|@7OK3)jt8}TUW%G2r0p6gDAmDK~WY69t6C2I!Om(T5SJ#rvQQ}$$5u}FzCMF zQM|@->oo!x6A_u1$=nCxR-1mbNkG8OQ}<3Z0b&VV#3b(lFwU0H7?dbN39EKdtYnK= zZ(0BHd>=qh0ef~w%}3Y7hyg&CF@?$)bT{jH2XS>CrVFzk0G!qrW%cC8Iv=M!5Ko{C z%gHOA%3Vs8^8MF0_Uum6gDMG`WYq{y@;hiW{q{y(f1qCAyluRKKALzO-cCDG6p}Me zm*^)IWO%SZZqr(QrUL*+rSP!zlE4S_lMP0PivWx|?`QU)0f?gnr%C`;^V{^h>rB!f zNF}(E-r%T5GbYX_S7p@RVw6>i2n>_Ab^UREi~Z~;yY|mk)&LRVTzpx?LlB1OP~)t{ zdW%sJVW9CiGJDwYpf>T0xg%jMYsR}010qNS#tmY3ljhU3ljkVnw%H_000McNliru-UI~{3pyBSir4@E03B&m zSad^gZEa<4bN~PV002XBWnpw>WFU8GbZ8()Nlj2>E@cM*00HSqL_t(I%bk-=Yg0iK zhM&22<|b)So0On`Komc^5wSI<7A(3@X|3Q!aN*jY5QG6b zG$c00dB=9LrTz&xpIZ`RA|wH$4Wa}qF>w+jco6X7DHe(tlVhv6e3MW6O%gTW`|dY(Y-iGgGzn?<(h)xN-=NV{=hm|N*_q2YZzokt$rAy-wf*s^v8rKR41{DXmQH!2}>56>us6pwoXz zwX#aPTL(!6KkmNephr_C&KIuA^4vWdy;Ko_rSjdZ{=WZ$y`=EMTOfcOXe6Ec_0sWU&r)xp78qay^r5+ij`BBNz!prv&%U?LPGyyH3d zym`-kj)MS);3V%8s}$6Q5gCVjmc~lI6l1)Qp*1)cuSqIv6V+l=Xmrg%o|>q zKv5LhUu9g^C6^PiD~Nd%Y}<|i>h-z+Xf~S>fMr=?sex_VQLS3RF!S`C?zA2R0av$o zSdE5Q`UjI?!_2RSaT2}nbTJACI1l%H_IiwlL;TT*q^eHe#3ra!D*%K+z`%9!eIL*B z*x5HZ+}lO{Ln9Vrzx#?10!>xPq|*d}Pa=^Z7>^elTwdS&G^9k=b&{zR`nJJKr$ejj zkj-Y7Q%GtW>tYs5Jhxjsy?=m|GbrQlAPiBZ{EaNc48mB0RrC!+^@CQ(daN-3 O00001vJ&Y97f zaW0PLoGdg5Dx(lwNMd%`mFqUG3ZoWMP;FXSVYO(}F4}Y<2!w(bQIRGllo4nU;U)qr z2j?Q4Xl9&qJahgtf2%R0$)Mid_bp!D%l8ST6#oNXt>x~k*BE#_%H8tc3B+mzS1t+# zFq6E2B>|rgO$cnq$-X#qa{ZbFmoEs_-#>tDXPBIPM&iH-X5CJ#@-p#gl*x$+G)?2s zz%g+oP{V={VB7O7I~KYw*zUdL;Wv|~S(9`sMQ>*(9lLtCf9s~Iso>t7HkD4N0qEO1 zK)#S+s%4NxwSk#Tj-GHmwsc9v8~N~dnn!~t1b|*;swhQQS3i;1COl6eDh}Ohmgjmq zI}$NommCf@HDTs*$V#Pl3sUC!^zk~@(k%9}iEU-kLO}wh5}mOI#?y#wopB7$rb|oiu0ctNY8b@nmK=6pc%vHC7qr^$|CC`9W-v-L!#jDZfuk}peYum zTIGs@)citVF*{Ci$;ELaB#l1G&S$*$r-+v4crrFh+%VX@Wh-XB@OuVB!-}KF7exO1 zG@9OuWd$)>50i-Qr@Qb5fQD!czhD3JDOcgTB_53QDk&X2Y2)_?DSIVuo2LPIb?&TK olc0)A=fyAc(6Czjnf?Vo0DzD1Z^ceB+W-In07*qoM6N<$g6_i~`2YX_ diff --git a/src-backup/main/resources/assets/alchemicalwizardry/textures/items/StandardFillingAgent.png b/src-backup/main/resources/assets/alchemicalwizardry/textures/items/StandardFillingAgent.png deleted file mode 100644 index 4e4c8f45ff5ec7842c4029a7a2ec7af66bf69b3b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 610 zcmV-o0-gPdP)!s=W=sG803B&m zSad^gZEa<4bN~PV002XBWnpw>WFU8GbZ8()Nlj2>E@cM*00G8HL_t(I%cYV_YZGx4 z#ee^K(E3VhNmY!sv}i#JDwJ$p=t4v{f(vmcuEd4z?8ZnxfEy`-6uZ!c=tjhk;8J4V zNgo=tqQyq@u$g2!^UqvAKr(5?3wLwx;hY2KC=ua*#t3`(zRyA|A`7v|Km`@%pjZ%Dh{^NY@0m>`)Ib8y^H?jb wh^PR=w9$@BV1jL$%$zx`49nbIm3KRT0V|amqXbjc+W-In07*qoM6N<$f|C3SSO5S3 diff --git a/src-backup/main/resources/assets/alchemicalwizardry/textures/items/TankClearer.png b/src-backup/main/resources/assets/alchemicalwizardry/textures/items/TankClearer.png deleted file mode 100644 index 3a077c2c91e50008953394a2589bda7f84b8ef68..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 194 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`oCO|{#S9F5he4R}c>anMpdfpR zr>`sfJq~d(NzTWbwrN12L{AsT5R22v2@)9xI=r23Dn7M0`v0!cvd2Y|;c~_I12QFr zYuF4IWw&LvWI7Zv#>m_h5R*A~d;{mrf||O2{qM@1vSw)XwlanMpdfpR zr>`sfJq~eEYt<6gm4ARjMV>B>Ar_~T6BY;2a=|}9MHxoX|&;C3yw$*o@%KC#m35r3?=NM8HmqL8ySktcD=PoX0)B4!S!(A!kL^W1s)l5nKCkj+=;SweLo=-XghanMpdfpR zr>`sfJq~eEYw4{iTf%`t0iG_7Ar_~T6C_v{H#9a1&VKOLd-}h_H&#_u_59#TIJE5N z-QDFp`f>YIPO(a`{rT~8^24{kzw_vvIpZREph@q*!E@&pELm{iz?m~X7k(~gU}ES! XD12_a{`&1evl%>H{an^LB{Ts5wrxVn diff --git a/src-backup/main/resources/assets/alchemicalwizardry/textures/items/TeleposerFocus.png b/src-backup/main/resources/assets/alchemicalwizardry/textures/items/TeleposerFocus.png deleted file mode 100644 index 6d9533faa617fa1a3698a05c80a99d56c88886a5..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 530 zcmV+t0`2{YP)WFU8GbZ8()Nlj2>E@cM*00DMML_t(I%hi+5N?TDF z#DCvC!9|0))@u|*%{7G7TCalppeyqRU09_qeF(uy@gW2^1)`Gj8R_6@EaAv;mm?WNpfG6U449WwhI5bs@20$S+6+(M7Yvym_b>6g` zI9eWdzIqixV|CWiyoFMq=|^3b)?2#7sk~`<+Of6g(Qhb67{K>)lreahI6m!rYL_V! zNl0R%A8pP%6>_Mbvr6gda*K~X>3jn+a34(N`F5u+sgkM*UF133odJI~vl&lLTrY$|5wAc;6^3*r!srE->DqBjHRL&a&d_nz-|(815TtQeYB zW*kA#p1(6#OdO4-*#6>~%=7Ot0#u8}!36?1tjnrJqjrg!w@|x!xC4(G{C}V64txmH UyyJ&&JOBUy07*qoM6N<$f-a`uWB>pF diff --git a/src-backup/main/resources/assets/alchemicalwizardry/textures/items/Tennebrae.png b/src-backup/main/resources/assets/alchemicalwizardry/textures/items/Tennebrae.png deleted file mode 100644 index e4768e2236aab8cd7b270bb9a88188a01d3cd3cc..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 397 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`Y)RhkE)4%caKYZ?lYt_f1s;*b z3=G`DAk4@xYmNj^kiEpy*OmP)Coi9-=ss@G??55h%#er@=ltB<)VvZPmw~~#C^fMp zHASI3vm`^o-P1Q9MK6^dDE`sY#WBR<^wG(VtC|f2+V-y$%;I12I_^-f+=cEb^Oiku z>YQfs|8|I=a;tmgp2o=3XVOOTNt1r4`PE3)a~l|+c~jo7YSk7KW~MEzI?uB`qBiSz z=T2L-Ec42?wf7b*@e|s%eS^=s*RyQS&wMWVTqgE9W9HwND|Y5aZ_;`Evu0iJ>s@K} zb6YafvSzWpw>5M-_uSafO|GB)oMl_$gR-OtkdlT?D?5y;vT)CIi kO8)TKJ>7Tg-(T~844jJ|8Ez;`Xa|Lgr>mdKI;Vst0RO0-iU0rr diff --git a/src-backup/main/resources/assets/alchemicalwizardry/textures/items/Terrae.png b/src-backup/main/resources/assets/alchemicalwizardry/textures/items/Terrae.png deleted file mode 100644 index 81e1154abdfbe43cf9a43ecf18da6d4192b768bd..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 460 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 Eg0P3-2LJ#7 diff --git a/src-backup/main/resources/assets/alchemicalwizardry/textures/items/WaterSigil.png b/src-backup/main/resources/assets/alchemicalwizardry/textures/items/WaterSigil.png deleted file mode 100644 index dfd095b5da355ae1863931fcb99865239b9c307c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 590 zcmV-U0WFU8GbZ8()Nlj2>E@cM*00FW|L_t(I%cYaej*L+d zhM%hQ{q@Ag4UCNut0u(HmJ65*kXf*pn3zO}2$4u^M+hRZkY-$gg&VM9(+shauyO-3 z>BRT7@6;&^wEoe(pjPLcobyz@Z`BcZ=YJymz1Y8e>L*DAP;i^L`1#9ASqK0KAz;ao z1QJTr!2v1qKMAIQI({e;2$GW(fe;Ej-e-v(ca zvB9kc5xVC#_^|zW0wCii9#~#=2|}hBZP-PVa_H`-3c6twSkAUMcJNBbCx;rcTPP?WKE(tKe za7l;@5D+g&T2DwAc`*K1ToJE+WfWY%C6Tn@b^p1{9i+Oh>2x}O{dEUdRx5yypI$U` c0sj&|03lezJP$tf`~Uy|07*qoM6N<$f~x-UzyJUM diff --git a/src-backup/main/resources/assets/alchemicalwizardry/textures/items/WeakBindingAgent.png b/src-backup/main/resources/assets/alchemicalwizardry/textures/items/WeakBindingAgent.png deleted file mode 100644 index 2cf917b971c73d31ff1d150fec943cb0e9788b17..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 402 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`Y)RhkEcES>O>_ z%)r1c48n{Iv*t(u1=&kHeO=k_a!WBWi%1j~WCMj{GeaUuobz*YQ}arITm}Z`qSVBa z)D(sC%#sWRcTeAd6une-p!hdW7sn8b(^n_&^{N}|1=DS(7y>1>fG!cDbnVBukf5K&#U9#Aw3yt|& zI$KNFYmM}SVmIF35|I-=S)#TfuU~*^r@2-B`;xuNx;ti8vNPR(y)esXR#?d`saGeK zb4%GS diff --git a/src-backup/main/resources/assets/alchemicalwizardry/textures/items/WeakBloodShard.png b/src-backup/main/resources/assets/alchemicalwizardry/textures/items/WeakBloodShard.png deleted file mode 100644 index b09932c47acd21e7a366f232ce68ef78ea4a4bd0..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 473 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`Y)RhkE)4%caKYZ?lYt_f1s;*b z3=G`DAk4@xYmNj^kiEpy*OmP)2Md!tW6J)?3xPtinIRD+&iT2ysd*(pE(3#eQEFmI zYKlU6W=V#EyQgnJie4%^0|TS2r;B5V#p$J!H)bDlkT`mOE{o~~6BfR%$w#>qU%b0_ z(ADve`=9Vv7k0*4m1LkA`%k}|vG?|kShx8GO&eXc@h zu-Bs_rx@d+*M@k1U+2BJ)bK#@;)5C6e_z}_?dXEb2j@QDDDYrSkYl}-X!Y7Dho0B) zo&VfbT3|b~!&%l&|x z9Rro4fx%`+Hogze=AC44EJ6NWzT$HR&q)byexG?KZ|x)W=*s&)tSq88_&O}6GlD|c M)78&qol`;+0GbB7;s5{u diff --git a/src-backup/main/resources/assets/alchemicalwizardry/textures/items/WeakFillingAgent.png b/src-backup/main/resources/assets/alchemicalwizardry/textures/items/WeakFillingAgent.png deleted file mode 100644 index d9b054eeaf59883e9353268d820bcf5373fa5fd4..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 582 zcmV-M0=fN(P)WFU8GbZ8()Nlj2>E@cM*00F8=L_t(I%cYXNYg1tq z#((F%?+t-UA`)@PAPQ1SMWuA|3v?_l{t1q53W|cRg6@BKIqj_pk=9yrr^_&pDtM^u&n8B=yh)0D+VO&1%ri4Ibhpxf>0shurQ zrFZ-U&1O^T_4*#2EhA@H)_-&J#<6~2xw9R;%ChX=5;*7h{-vk*oYNO(#M%-sRo%0r z(TMfsmS)MAGh)LYAoSYjr__3HrnfYAfWI$XWqYHd*Km-tsgYrKEWjkL+`+6S%z z2Bc%p(2Wogc89+(2tO~~WwpJkr2r8j2rZk}?h!>hoc-{Ujk#MGgm3XC&c_(9lX_4v z81xCkkV^Fkz00?WH6>1CEFnQ)D6C8_lE`1dDE^K232H(r7%aj#&(T22i&PW^owYS} z7w@y1L_}nO!{Y(V^vBoC&Ckn3fcKuS-Os9`7-Pv2M`0ig0%p&j6JvwJRr#><2ft13 UNnTDINB{r;07*qoM6N<$f|+9RivR!s diff --git a/src-backup/main/resources/assets/alchemicalwizardry/textures/items/WindSigil_activated.png b/src-backup/main/resources/assets/alchemicalwizardry/textures/items/WindSigil_activated.png deleted file mode 100644 index df200e2b09011941b1664a55f902a4b40c332707..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 624 zcmV-$0+0QPP)WFU8GbZ8()Nlj2>E@cM*00GoVL_t(I%bk)s z6%$ROI1KWOm}Ls9{`bVV6{V_9ZR z_kcG&V|5=r(4z$ggS>$2g6qLv8$@!6y8T`NtX#BMgmdTNLXdrgFiC!9F-HJbMB^ngk!~Uc1wYGXVgZzN$ne=yhSf1{h-6Q&r9378+H5Gju1Odqu(<}GKf&4xEG&X$!%p2iVT6ZJDqBN=L@rO7 zPMn!A;F=AvZ8#P{dl!-ONrvvo{Z7WuH&mURKnl?i5u0mOc)JPJ zIYWHrI=p-i7c1a-AmSYA169SUOeslXengBw7{T}{`1aL+?e}vG?CdI)siC6;`l*w! zX#KR=Z9y19lJMol>pwiLn$5uX3xV$!R26r==8c~HZRVW#KjSy{NZQSdJP(Bc0000< KMNUMnLSTZ|762^( diff --git a/src-backup/main/resources/assets/alchemicalwizardry/textures/items/WindSigil_deactivated.png b/src-backup/main/resources/assets/alchemicalwizardry/textures/items/WindSigil_deactivated.png deleted file mode 100644 index bfb6ab4db76dd7bd580f6d0f384e3de5b1aa9201..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 503 zcmVWFU8GbZ8()Nlj2>E@cM*00CP`L_t(I%bk)0ja z;6G)pP7%G->OdIkS<=$~;wKUM`Is`$fevEb=Q*^yFnj=Dw_dNl&t_kRghGY`x!`se zvXu3QoP^Nq?Hd4@PNc{HU^G-vmcn5Zf&d<~Qr?OL_a)v%W6I$1s5Ex1LhJRK0}v<5 zHAdGsfyJV@?9z7t-_}k~1Di`JZgu9u%*#Ng6Y(Hf3iG)dnCGfH4B`37m9gRhoQZ`e zaRM)6?E%nrG*lzC0+p?uC?eSYK*;m5C$=`f@jNIR$@T|j4;b^cq*@?cg}vU~`eYF) tW+RG%Mid1iLiOytwtDu{^g8iB;~NR@t*J>{_GthB002ovPDHLkV1k{-%X9z$ diff --git a/src-backup/main/resources/assets/alchemicalwizardry/textures/items/activationCrystalAwakened.png b/src-backup/main/resources/assets/alchemicalwizardry/textures/items/activationCrystalAwakened.png deleted file mode 100644 index 7fb3dd1fe61eae909c6f4ff1474fd8f51d7b2971..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 689 zcmV;i0#5yjP)WFU8GbZ8()Nlj2>E@cM*00I?BL_t(I%cYY`YZOrs zg}>W5_y9qvtL# z803UONT6e+-NuXOOZTBVkzhPsl*XAkoU16S3NaDr5S0xPgj$j^__W1Ne_b6RXr@at zaefZ(9lfy#w|s@*a|cl%lMUj>FNuZ~CQ8_S|90P!25{D5OiEc+IpcHvX1)NbEGH^p3!2lc1Re8P*&`;)7p>c#XFXYc1x%Gm6{SK!oD%Jkm%}{T#KIQ?kn;K>7I+7S95C}mH z3W_^7C*K;HgTH%yAN!Cf22-)<*D?h z7*og0&QKLO*1nJ7?%AbnNY{2(OJt>V?~Tf$%h?GoU+|p|F diff --git a/src-backup/main/resources/assets/alchemicalwizardry/textures/items/activationCrystalWeak.png b/src-backup/main/resources/assets/alchemicalwizardry/textures/items/activationCrystalWeak.png deleted file mode 100644 index d6ee0b77fd428f8916f9d9370494a9fd8e41d964..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 765 zcmVd4I8pr?u03B&m zSad^gZEa<4bN~PV002XBWnpw>WFU8GbZ8()Nlj2>E@cM*00Lo2L_t(I%cYacPZMDj z#ed&0Gi`xBpinSWgklI3B9ux%UEoF&mM%<;(ZroQ{umZ)NR06n6XVY48WM?#yyX3m zfFfX9pmc0IFrD^u;S&X7;@#exlaq6QM@T98pHYuntVM1~Beze9s$-$hJo!i*btnFG zu-ly{053ekcHcgDZ z6na-T6_X|%(@(`;0?TbTWFlNde0G7F>Hux^wP0B&m6f1ryc&9g$XjG90z}sxG)z7b zKQqYNHhanU>`YlW91bGUc4R8W=U5z>HL;|i+2bOyoyA_5W8N&K;dcj%t=Hsk@PML? zPuTtd0*PPRgrZUA-p%l(xP&vsI*Fvgrjfy|72!%&&^hx=r~ujY7W%FvW94wBc0p08 zztl}3lcBk-6~*mF8U|I>)qEHpA+eoC7Bo5m1weC^W6J_*b0553qPiyDtut z=nUYi@=%DyY3#iMx{f>CiuV1@b>}-+i^m}t#FcO#4bt1z>vFG2#avxQN$#M!im9yh z~wk2v0s1$D+Izy(2T(IPpjYRx*jYpG5(3OS^TFaWHLCVhxHyEbW-8bkBJ zh7vvghQ}7iH15w4VP|3e^zk2)gVpr^!hJur_rhP4 z-TI+avDa=N$F(lg_|AiJC04OQp54Emi{JjO`c_UNaetxF`gI3pvVDFezP$TQAsGbEzKIX^cyHLnE7WngeFN=+qYZTFAU%(Aa{J({E9F)4-p#HKf29=}3y2B6R%PZ!4!i_=>t@AYDK6lvWryf{## z=f;w)K_8Bam@pm<3W|z|yzwJO%&w(XKslxK`;C~xr8C!bSQN}mJvS%++@Cc$pQm5@ zefCN5$(`&6%+ep+DG#ka=XKC5`GZC8bg?MSnCAS0<_}i)rD(}M3i%{w!2W85_=9uT z`r9og?va0{b%x>a1uI73lkACW8gdh~Uphb7#2U$@r_!HvG*U=A;rr`j4ZaUd9Dn_M zth|bS4SR;D~-mv_+eLo^=J{$MR?f<9jy$lQo22WQ% Jmvv4FO#ljslotR1 diff --git a/src-backup/main/resources/assets/alchemicalwizardry/textures/items/baseAlchemyItemOrbisTerrae.png b/src-backup/main/resources/assets/alchemicalwizardry/textures/items/baseAlchemyItemOrbisTerrae.png deleted file mode 100644 index 33ffb99d7df2c9fd1a2a6ba78f69ccd8e6cb7665..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 425 zcmV;a0apHrP)#zsXS!TSAft(b zqP6Np*V7+GwWun;DZ?-8Z-IP}X+FsGM?i1Ct!Bj#Z(F`X76QG4Ov80cvTk^}sE9Y0 zBcFioUZz1Rv~tVjQHeJqsz<*RF&|&HZA02Ol=n4SDkv1UQ|c1JjwL^8A~M^9e2}Sk zLb_{k&&unKW2GCS3dRCf@TKAfaGtA^ku(z2CB&OTmQ|Wku8x6bM%ZH&RSwNVX#gmdxPhY%JA7jaW!`BGg0J5uVN`P=gzKYzotH z&DHUH{KgDs)jw=&T`0*`fUgt~{6tYzOiZJBAuzv%ZsTk_jYh;)W1r}xZ+`{o_6D}qJ|szU@?5ifa7^dy zW-dg`GdH&*jL~Rq2}2*HEJ`XqK3;jeyA%sQm|m7-sUirz*6CPc5wzNe{LIApY0gqf zX-ZbAK0-LeqXJoIJnu`o(~5{rrOi@N|DA7PfG7achk+tgr1c8fLhzL!}~!;}<;NiNJbr4Ww5_1u~I b{?2>?oh6k!r^M>F00000NkvXXu0mjfg#f)% diff --git a/src-backup/main/resources/assets/alchemicalwizardry/textures/items/baseAlchemyItemPraesidium.png b/src-backup/main/resources/assets/alchemicalwizardry/textures/items/baseAlchemyItemPraesidium.png deleted file mode 100644 index 8bcc782c5b493ed89cece11842547f6d4cca8a17..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 456 zcmV;(0XP1MP)OkPkaL0;#e-h=Q;Lcdfx4Y(Y~6 z{iu5N`n3`f{w3c22K=Garwo9I@cxj$JCB$zFGPg8uBEPPdBlvdN<{cjiXWp4uv{)> zu~=ZO<$Arc*=*FSwbUyS*Xy+uMZsh;!CDLOWs@fno2HRG&$-=hSZgWEk}S(e)0C!Z z89zVC_S81MbSBuNtbzUO#6;=Mo*zfl^=V;rO zD2kX)r_Ul*Ri#d+6CnipzQ-6t6h&BT(OT1W9a?LQF`qPedd6Q$=Xp*Df%ExH2!XEa yNYj+o3rO) zrHK-vrTEn|KR#yQf2VP(v2m(#-i*v!-af1Y@Y>F~JuBtcz|OJ8bkpE1gaAUsJ_Wj0 zL4E{wPc&{Eqy&T{5d_F{Pl%CWyX4{gDHmHJ%Qe>X&#i1_pcsW62 zdU?0GL{*hh?&$Z&{Tt;dpav2nK%9Mp#!($r z!RC&qz9oAOcqhDdJhe^1xJd7M#to(sfW782)&|Pb6GCLrDgbC-%=yAB=p*0X_jmFR X^mUPs@aTw)00000NkvXXu0mjfG~u>9 diff --git a/src-backup/main/resources/assets/alchemicalwizardry/textures/items/baseAlchemyItemStrengthenedCatalyst.png b/src-backup/main/resources/assets/alchemicalwizardry/textures/items/baseAlchemyItemStrengthenedCatalyst.png deleted file mode 100644 index dbc9c8aafc34c7bd8bd311131f9b1f135fc1b926..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 430 zcmV;f0a5;mP)C010qNS#tmY3ljhU3ljkVnw%H_000McNliru-UAQ}8ZjHN`85Cl0Xs=V zK~y-)rIS5N!%!54pOn(prfPAMIuwx#QaU=h6k4cD{+eB!{1;A|NYSB#xCjQpEM~M$ zwrP{J^yWBd9MVtqg$tK^cpuJr4_6Zr{-e~gV%yMY8`|FhmSq8mzEhI#`}%;`Ts%4@ ze^3Wl3=xr;W16O{^Clvs7qxbAekSSkS9v;}Qm#~gm4Q~SR8dNyl#0#TT7Y>*+LM8bZ<=>ErYwxH9_DrnT#2S6T)n`8W2P7 zyB$VDk4S{T4~ax5=!MyJB|np8SpwiXHpAhF&8-5xw|9HsvGO>HS435u08t^};B YPg^*}N6O9Z`~Uy|07*qoM6N<$f+o7J-T(jq diff --git a/src-backup/main/resources/assets/alchemicalwizardry/textures/items/baseAlchemyItemVirtus.png b/src-backup/main/resources/assets/alchemicalwizardry/textures/items/baseAlchemyItemVirtus.png deleted file mode 100644 index f2fee0063dd8ab90fa81768b2258d4a0c3753ec4..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 417 zcmV;S0bc%zP)?=+3fG%`~cq|-bGJwhkM z))nzK1odM?z&Ef2CT0w(%C;7PsA?uybG^m;+@ik~#2V#zji!R|FZb0vnvrQ?)WI9O&oC6=p zFastbumVCGP`|Q4RoTRh2)M)&xDSEX)CC6)%aW-XSFLV%{ao9Su^FGhQH*#JJ)1E# z<1(3Rk4b7a*Na6%9=WRodMT~*)~&-lSFLTjunw~BWBt|GuHX3w(HIKydtBNj00000 LNkvXXu0mjf=~<&E diff --git a/src-backup/main/resources/assets/alchemicalwizardry/textures/items/baseItemCostCore.png b/src-backup/main/resources/assets/alchemicalwizardry/textures/items/baseItemCostCore.png deleted file mode 100644 index 1fdfd2d42c57d7a144fcf36771e7b6e1799d5ff2..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 471 zcmV;|0Vw{7P)VGd000McNliru-UAR4IRXrEVK@K)0c1%; zK~y-)&5}KD6G0G$pSim|`+ULjhk~F$bg7`Fqv98&^G~Fprc9R}i6V%~fMhHr6mzz7 zd$+eU6p@VcrKBToHLKM;`_8)q|66kB&1`5_&hIOE7+^Lu@{IAD7huq}p0M8Hzf`w^ z2FdIA}ie6r$i0d zryA2OPExw(0nU@Ve<43Qz?B8DZjjFnm=RtYXvA72ehcuimYWXtlT9WFU8GbZ8()Nlj2>E@cM*00D1FL_t(I%cYacj^Z#7 zMUPGAfe?9!7!(9M{{Nd;AQl}9DI}7WSh#vc1_q{QT2m{lWS_cKx2!~j{|WsrX^atL z%s-Jo-cq$@zu!~WwTK95nyTaR_;&?LDU304I2`D@4iRCoSm2!dqoOCk{lPen6JWVq zQkEr2lCWN{UqBzf_nzlDr_+fL0$G+JB6#mnN>SJKbPu3u8ug?ggh1c-jN=GEnx=T~ zxn8f#W-|cBail1UUv1xQG{(qwyTyBt)*5RqX`14kBS{jnEW=t$S(aF9vDPXPd2S&| z5&&+u8(M3+u4A=YF`v&Fh5-QY{WPy>2KVa2F!1^LNeBUeD2k?Y+qOheMBBDBO`~31 zIG@i9!+_SBs;by*HYla&`<@U2T5IAsez8$Ku5wjXA|mW|yD8T+4I)BO6j*DYs=wH1 ztyPaU<#~=$3hzD6xwo6BzWYpfP#niN=eS%h>PLV_kcdnQe+>98z5rm=$*7hJ#T)H=O_Iu2Hj2h<4_wMck3SIGZaSX9IeRh(s&_M@**8MD^ zT+;*AHF~c+B^mOx=-anLO`n84TYAn0n*3N;FJ+pHO&Xs%KVy->PS|EHewtRV$z?l$E`3Pp_ z$^wB8E6S3*k9IftvC1%{ug<;QueVwfUZ7v!=>Z=Db+|6Zw5=!tJK z&%vJ5ghh8;xq>PK>Si&Ceh4jO`m!%_NkF&BB@X|r=blogx|6b%S2F%PU&*i~!a4QN T)b3e8|1o&F`njxgN@xNATKIKf diff --git a/src-backup/main/resources/assets/alchemicalwizardry/textures/items/baseItemDefensiveCore.png b/src-backup/main/resources/assets/alchemicalwizardry/textures/items/baseItemDefensiveCore.png deleted file mode 100644 index 49c595c35c93ee2a7ef35adaf6c89dfeeda9cdbf..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 502 zcmVZ5010qNS#tmY4#NNd4#NS*Z>VGd000McNliru-UAK{6Dsi0t2_Vz0fR|I zK~y-)&62%t6G0S4&+g2umvwd>DW(G2Q1~541r)%0SaM+r35f@wK%$~R;(a1&KLElK zP~kYp-ktUQ>|dG$WlbXJ;I?;kbiTPC{ObvBTfBbtvh&^}g&>L|-n@Mm{1sq6n|1)t zp1;65hp#+BNsIG+1ML2E7R0S+da~MV^ypDWxvhZntD@ z$G7ia5kj)f^B$mQa5Nqh1mL~n;2=e7jgpGQnBEn_{VUwN|A3}$`Lg^>kr!yK@l}PjmMl$wD^l+dt}Fl^9v>5_ s2x|>=0Y6q}*WdiP%2$otga3zf0cPm98WtUqV*mgE07*qoM6N<$f=tNOvj6}9 diff --git a/src-backup/main/resources/assets/alchemicalwizardry/textures/items/baseItemEarthenCore.png b/src-backup/main/resources/assets/alchemicalwizardry/textures/items/baseItemEarthenCore.png deleted file mode 100644 index d275736f943f4192cade3ef5c7f388dd7d1877a1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 454 zcmV;%0XhDOP)VGd000McNliru-UA5@F&gc!k3IkZ0aHmt zK~y-)y_4T7L_rkCKWAp{y)GgzQg|V1Np1Xlvhv{XyHY$TdGsSn?B2aUW{!u+Zi^Ku z=WUuf-!tDIM-KM8{G|+kEH~|_KfWz%VRdrHCo8*My3r701!+_1emx@@>CIZ+Dw1Qy?A~Ff! zn-XnG0)PSmf(L6E=@7g{#gWcbpKS~tOaguwxrSy;P#kCp)nJKw@G@ckNQ2|^u3X%M z2-r08HUgGNL6aQga_$!^POrvRehQMw;&cu1N7XZUpW?$DmRm@E5F}ODwBYM^3WnyMF0Q*07*qoM6N<$g55j4eEYueawTGU=YH*LbS$-n(?x42AQ e;`99u2gCAY&!hiyH=O_Iu2HJo=ha+Rc?fq5qyPjv*GO&rUk+ci4f)wLksR z1us#dHI9EcJKm>VJn!hSRQihhq?tQ)=7?PqxF}ok{QAby+#lJSR~~t5yh$>GA+@6Z z=gw=(q@I^AU~zR|e>?lR`Rc^}x#s$E4y;~`LPuCW+JW?!#xCy$tUDvPW*Ub{qH4RB+MPWEU@Ev0%GuaU{upD>J9l z-Tccx)RY^zp6EW=c0M{j#!*#6^ujK^`%CQ^&9v9V{@$gw;Kz{)-rcq@t{$xXeOff7 zuHNc|^>sy#O$VL{%;J{wP)VGd000McNliru-UA5@DIA8^vQhv50d+}4 zK~y-)#ga{K(_j#WpZRRZc0-60+(Mv;RW~d^+@Lq;o@;R#&H&3Ukf;Py>LNCUKpV%2 z?Qez!2oX#wc71pA_vjtXz->!*70Nw~^{+tTU`KB+S%UFG*gHDJT?H_V;9Rj_qigTjgev|9K=JemO%r#hjq^CEa_Ee`h?n>5=|aaTn7yNB~_8 ehd1=zu6_WnH==*`+Ut=30000P)VGd000McNliru-UA5@H3pr+7Igps0d+}4 zK~y-)#gfTR8$l3;zouv69^(bGNJxNCSY$Xrl$VK=Cq!`J4LEQ^IYbr-0tFC?*^JFH z2G4k=d%C$<*fIifp>CzB`fB^(vrW7f@HeXNrLTV;iFX0~jj9WzVr6|5i>0A&iETo7 z&>RX9gT;&M%amk+Fzi9xTjD%z@IAkZFC>9bjCn@_!0R^S}N0ZEn; z+k}U#&7@ah%Byf^?irV5gngpoP2h|LKR+DM{!tSbfBtik-XM`APBZRTxQzc1c5e_u z5qTExY_jhQ-rx-$vksB%qMf0oTU@pGaoQkMfufqHEA-n!0w`4jx^bN-3K4-q)@R-p e(nqBH`SuKE>#Zxx%kgXg0000VGd000McNliru-UA5@G7UvhSvmj!0kla( zK~y-)y_3Oe6Hyd~zkBaYGLtj}8%J#+6&J;gi_+OB?tF$Sf-6_<6kOFOh#=xqxKIK< zNj5GNL3$FGuXMp7&!MVwe5((hc~jcKs&=+g!YC(obY*W(Her%P&eR0$LNQplm)4C z%L<$`RFq&+mfgT( zI2D@C(GP}DYS5Ks1@Zkul@1fW)-yt@3ACo+8BD2Y=#r5?fy9RspZM`pwVFh|0H+`j z3>L4nL?X0OfxG}$gL=Lm<@nJv#rIQw4u)9Y66PS|1vv$bH6-W651*^QlKA_qZ(qw+ p*gOc03&Bbd^HSNl@ zoxV36|yh`RVo8B|;Swmf2cp84PckZ^} jP&1s-oFLSE{0HM=TVIavpN{VZx}Cw()z4*}Q$iB}5pr$7 diff --git a/src-backup/main/resources/assets/alchemicalwizardry/textures/items/baseItemMagicalesCable.png b/src-backup/main/resources/assets/alchemicalwizardry/textures/items/baseItemMagicalesCable.png deleted file mode 100644 index 40606587c0ad2ab997f8922a98b01baaa799046a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 284 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`Y)RhkE({xitX5C6w)^mS#w$IQvV%lzs6S&&gHJzX3_EKa|@WaxJ|K*05)@qNCC zO$@B5>^l6NQx&ewXcG&RIKDBN-_=9XRVnw~m+<_wxSZGG*8^fs`a1CPYrTIP%~$3B zF~{iEOCQUon=DR&A#%xYxBl+Ai=P(S4H^(T{c{G zI^Qm?zB+5a;PDP`J-6l~GpgCyYs>cem}M2N^l09)IV1Glxw{X9vakN%e_>A9PScM% a`%nI~J#jyG$3CE=89ZJ6T-G@yGywpJRc-|U diff --git a/src-backup/main/resources/assets/alchemicalwizardry/textures/items/baseItemMeleeCore.png b/src-backup/main/resources/assets/alchemicalwizardry/textures/items/baseItemMeleeCore.png deleted file mode 100644 index 77af87239ab5a01dcd417af7f5bb35a3a012ebb7..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 461 zcmV;;0W$uHP)VGd000McNliru-UA5?IUwS=wzB{L0a{5! zK~y-)#nMe{Q$ZBQ@!!o&n?@5`6jXH6t^~ndcPd@Qjp9P^yZI%=t+b$m1y^p>jVKiH zElF<^)BBQ_adEY`wTasv7-r6y^ZaM#%;BspTC}mfE*$soeV(5iEfRL_-y}ce@E7OX zc6L6^1x5dgJDm+KU1#qd@e<>_9PtwAz;2(ryOpkX>Q0w8=zS^Yan2~ANJ$4^nw?BP z0=(K3I*&H#?a{he21m&${#Kh8x2pQo|1RPc)atBW;p5x#)F}!qquD%)rC%#x1!y$M zM;!blO-tdq76HQv{k#OdXPC@+LYPfC_(AfG80`z}=fr_VL1RV_eOj$KfZH#N=*{=E z+L;yXHyO^D%;@3+Pa_^A)i2bK7ic;f&_IS-#?`D84wdzou+skHFS6Hngza@9JQTtW zAuJ1FO?VOs&l)GY^S`b9{F;z;>5f^g^LV^C_iXJqNK=L_`VB}A00000NkvXXu0mjf Dqb$tE diff --git a/src-backup/main/resources/assets/alchemicalwizardry/textures/items/baseItemObsidianBrace.png b/src-backup/main/resources/assets/alchemicalwizardry/textures/items/baseItemObsidianBrace.png deleted file mode 100644 index b4016353ccbb9c01ef9a4479a62e4f527edb957c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 325 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`Y)RhkE)4%caKYZ?lYt_f1s;*b z3=DjSL74G){)!Z!AbW|YuPggKW?^vwZq=#UML?lTo-U3d7N?g^+RN8uAmXZfeyyu8sd$2L(tMc2K<{7TD{Pm*Q RwSc~3@O1TaS?83{1OUTLdwc)@ diff --git a/src-backup/main/resources/assets/alchemicalwizardry/textures/items/baseItemOffensiveCore.png b/src-backup/main/resources/assets/alchemicalwizardry/textures/items/baseItemOffensiveCore.png deleted file mode 100644 index 33dc2d425064582429903fa52f7d197d814c2a3d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 353 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`Y)RhkE(~4_-VEMl2N~A^MK}vQ zB8wRq_zr_GH=O_Iu2HJgh=TyqA>%h2D9(IEGl9K03)T@2~-n>wFFM z0&eja6IOaZpQo69Dzj+WJ+;V5hofoZqL?iOy%m!CgRRZQ*HdBVip8H-oJuM) zan!vXajD%xu(qCcQrJ{hx98@Hxxwf6mWY>`b_xm{w-r|LaJtU_^3BJ2ryOsbcBwP% iRM9=#`uDH-K1QZhMO!V^U1tNG&fw|l=d#Wzp$PzReQR9+ diff --git a/src-backup/main/resources/assets/alchemicalwizardry/textures/items/baseItemParadigmBackPlate.png b/src-backup/main/resources/assets/alchemicalwizardry/textures/items/baseItemParadigmBackPlate.png deleted file mode 100644 index 2b84b9765924ce2c92b0dd29a9d3551d3cd44f83..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 306 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`Y)RhkE)2d5J`7&lR{mZK6yYrJ zh%9Dc;5!V$jK}j=qyPokOFVsD+3zuP@^Yx}cJ`YJ6x#3U;uvCadTH=M-opw!CLNrU z{>)tXHo-$s>laZ=pUpdtS)VZc!(dodF5v#YYxBbQ33tmZWIQ-7^DHiJoxpO| zbBfN+he=VJdY>4ab>-2E>Ak?E`*d08O6ixjeu5Qg|I}=nc5VvGUi^aL_pM8ARpAc} y{(hSJ(ni8c!P{r1b*9|1{8CnigtfVOkJ-=cD{3q4x&9aE6$VdNKbLh*2~7a3)^U0O diff --git a/src-backup/main/resources/assets/alchemicalwizardry/textures/items/baseItemPotencyCore.png b/src-backup/main/resources/assets/alchemicalwizardry/textures/items/baseItemPotencyCore.png deleted file mode 100644 index a4d993e885cf8f138b93511e7303abbd072ac7ac..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 378 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`Y)RhkE)04gn7Q4@9w@?D;1OBO zz`%DHgc*6>*=4{rhMC3#++p#S@^Nc7eBh z_fZbkzaN|C&6%Do{h{UMhR=@`x32D=pH?W{ASAx=+1p3cm)}`e!Sj;$jmW>$JVGd000McNliru-UAR4I0cIi#o7P>0SZY( zK~y-)#nQb_0#OhJ;18l~#6N;2CSYPgZR?Bp0=}IUg|YG-q%rXcG$9&AY>>O_?pk=o zbqQK}ntSK(%*o8~-)O7~TvDbL`*cO_lJkmk6Fbp!mYiW9=atZc;J)3~ijF5tYsE!WH^W`4wXC2&n;CUF z+So->BM5lGZIU=lzxT8D^~o`qPTll+vOE{E%wRH6;5tdni$Z~u5Pqopv4tV!QDp|B zZ+ed~Q=5Sxmmk00000NkvXXu0mjfEn1=g diff --git a/src-backup/main/resources/assets/alchemicalwizardry/textures/items/baseItemProjectileCore.png b/src-backup/main/resources/assets/alchemicalwizardry/textures/items/baseItemProjectileCore.png deleted file mode 100644 index 6719e820c1817ac7267f3075894610f562221dd5..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 478 zcmV<40U`d0P)VGd000McNliru-UA5%3?V;O*T4V(0c%M_ zK~y-)t<%A36JZp^@!vO-WC&K#hSHT-72m*xAc9>8E=An&?q}>sH5y&l+|4(`rGFvIGFvOM|KGpyH_~v4 URlWBA>Hq)$07*qoM6N<$f|@eYhyVZp diff --git a/src-backup/main/resources/assets/alchemicalwizardry/textures/items/baseItemQuartzRod.png b/src-backup/main/resources/assets/alchemicalwizardry/textures/items/baseItemQuartzRod.png deleted file mode 100644 index 46e59b32a340819bda956cc1a8e0e8c29e9c6ae2..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 251 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`Y)RhkE;e!fgJD`wkW=KSdbAE1aYF-JD%fR4Vl$uzQ znxasiS(2gP?&%wlqL<3fz`!Wy>Eak-aeC?Gv#Xj7L|XQvL1>h;%CKmXjrDHP1@ z#NoGm^8UMd5!oj<@g(zvhBAJr+Uvq~Vj2Iv>aIl&9F4_%$vg~EuQPO6PhQ!5O)6XW zutCB8`;x~eKL0G~81*{R&GB{!^P+7U-Pjc=>zYu-@3~ty%8D(=Uh)_-`>6MaFq1tuI&PQmK(ELKF_#4ZCmbj=QXdZ7-!^d zzoxYG&pvj=n=7TB%fw!v_}tR>vd%7p*NzrE3l2XNaF%UL+})Y|pXET^{^y^6=9nAK g4Y{~p^iRq@2C3!iGS1Ak$pHnSr>mdKI;Vst0KJs38UO$Q diff --git a/src-backup/main/resources/assets/alchemicalwizardry/textures/items/baseItemScribedRunicPlate.png b/src-backup/main/resources/assets/alchemicalwizardry/textures/items/baseItemScribedRunicPlate.png deleted file mode 100644 index 81a8df869afc1077e9394600998779ea162d1fac..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 513 zcmV+c0{;DpP)03B&m zSad^gZEa<4bN~PV002XBWnpw>WFU8GbZ8()Nlj2>E@cM*00Cu5L_t(I%cax5YtvB_ z1@O;{V*LhPojOQMhi;DYCQ-yev`L2+x1#@?gFnF^gJyj?x>sn1LaBs*&j~qaXQ{@l&vpp89YX$Z0N7euvKc~N{|iuTB5$p(8ZIm- z4iA-kdmaym;Caqr8sPloBj>Cgf?QR8bh}1nX@K?dU`=Zhs4>m`(aH+_zO_zAiTf$J zlM>j#jVX;zX^^YRw}S%>6nGn>XEC~&k`l+bK1;;SW-~urUe@2)0qh34X--uAW%L)=Tr z%NU(Qi4XXK_p?NNiox#g$!Y3FYfPiU6VGd000McNliru-UA5?C>IIbFsuLo0X|7Y zK~y-)#gffR0#O)-pBbk@X%P{D$UsE}bp@^31c5GsT34GcArQI(!Apo%<|6trq;<3k zx&c=%Z6kpe>6szZw?&gUzOFM{&j znz~(|-EA9~1*U*1=cPIThx^f@+?H1*Z(TA;$)qK7B$-Lc&|ifj8pPP4i|v4#z%q(& z0uMk8tW>0^J!pMrD+WxXcqVx50CS*rA8@b-gD#w(L#NXMd|(61y9XWv{`N0b&mZEz z_v^qsAm9`5!e9a2?^dNUgrL{^0IEO>cnM1i=mopLbt49Hb(56Lie#2Tlh-@a8&U&h zPr|?8ghF9C!1GYs08GH*!XMGRxSUa;h|~&HUy+*VIEzlt!s;WVoXev|10=9*$md2R baIEzOzk`?B*H-nU00000NkvXXu0mjf0PC^| diff --git a/src-backup/main/resources/assets/alchemicalwizardry/textures/items/baseItemStoneBrace.png b/src-backup/main/resources/assets/alchemicalwizardry/textures/items/baseItemStoneBrace.png deleted file mode 100644 index 5a1103225d80d74642e7008218ac4b0c1816f2c3..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 308 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`Y)RhkE({F}bqv)PWuGwvMK}vQ zB8wRq_zr_GH=O_Iu2n4BGq_?M$&ip@W_-jv*GOljqD@ecpjHLCO7c z%iH*W{x|+TweMm)(bQt%?(UjU?pPAS!ffZ9Fl)MA^ud4!Cl7ZdIW(&CKfaWzT_Dxu zYuv_NAlc+?%nSs|+aek=Z*0qDKm40tUZNoLSSABd^zfm_I{%9|6-&IkyT3Wu_+CcM z|A)+n_x>)Im?9D?!NSVo;mv-cZk|yoSM&7g?B{MIDv8|sIIaG}F+O3#z*haPnH`;4 wHEjlhizV+0^klTm?C>|%JK(g=O@e_T{nWfIWxIb&1$u_T)78&qol`;+0ORv*1^@s6 diff --git a/src-backup/main/resources/assets/alchemicalwizardry/textures/items/baseItemToolCore.png b/src-backup/main/resources/assets/alchemicalwizardry/textures/items/baseItemToolCore.png deleted file mode 100644 index f6dd600bddd489ba11303c56ec21889d40e9cbf6..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 453 zcmV;$0XqJPP)VGd000McNliru-Uk8~A{8blF^K0jVN zj=f&nyL%`O5Qo@^E>oQ|=bKmG%p4v%l5G#~PKEXRhcBD8$)>{joRcFC22>R{W6mx& zgOb0CUmjB~nB{ajlojRbR&#cF7t&Ys4ms#^lixb{0|FhI`#5P7L%@$>#T*krPYoSr6EJYftbuj-yL00000NkvXXu0mjfMd84b diff --git a/src-backup/main/resources/assets/alchemicalwizardry/textures/items/baseItemWoodBrace.png b/src-backup/main/resources/assets/alchemicalwizardry/textures/items/baseItemWoodBrace.png deleted file mode 100644 index 329d46bc7e70fef9460479dc10ab5b83ff5cb8b7..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 316 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`Y)RhkE(}u{avAiwtIJG*BAf*t zk;M!Qe1}1p@p%4<6rdn`iKnkC`#ok(22s=feg`H2g-&|9IEGl9PQG*E!YK#N1SR*& zJg0B|PmehFuRn=llY-(|JGDPIVjm9A`q0uLKI&d%8G=Se#D&^Z&m+vuZ+HRKZX4s1H(IOQCWu8 SgBn1i7(8A5T-G@yGywo}^Eqq) diff --git a/src-backup/main/resources/assets/alchemicalwizardry/textures/items/tYf5ft9.png b/src-backup/main/resources/assets/alchemicalwizardry/textures/items/tYf5ft9.png deleted file mode 100644 index 052c7ca352a90303bd87cb43ba1f634423d48ac9..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 291 zcmV+;0o?wHP)%# zyahu7q7uA7Swxrx7ZKp$b(J7bgJ}Yqrj0I~BEbt(WsD@I@I4E&;GYC|Fsr6ck!Jy- z&;fPHe1S2EApw>?O}sX}ZRs%d3w|n4VGd000McNliru-3bd0IWg^_;Hv-t0c}Y{ zK~!ko?U_Ap!axv(-$a%yY!SLt5mk5CcXi< WiwVU1T@d&H0000e;U3d981>Q*O_ELUO9Nq( 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 diff --git a/src-backup/main/resources/assets/alchemicalwizardry/textures/models/BileDemon.png b/src-backup/main/resources/assets/alchemicalwizardry/textures/models/BileDemon.png deleted file mode 100644 index 724f306fcaedbae342c9d13bf5e7c24ebb47c8a4..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 7737 zcmV-99>(E`P)pF2XskIMF-sp1Q!7@v8vSh0014>Nkl6qu+UJ~^ z%galO6sadA#j^FNqDHc%Bv$OIZUGy18n`Ol#4S>%5b8E)>N;%e$PZ8kOv{m6x2h^b zjT6)Xl%jFn6l{4w^`hPAWr-p$#mmb(bI#stt^U~i%zf~ZqDWb! zByM1EXXc(cGv}97w{S!yLN03SKhEK9m}!5KQl7~ zfcMVLjgH}1{$5>IzqM{%+`W6Zz0}{e^(}81e0$xxdN>@;-*eABlh4zy|M+GHQ5Kzh zy#4WeYXJD{yZ-J~8{V*G(^C&T^vBEuRRa;h)!=S$2Sgap90WoY@_Pn=2(AhcxvJ78 zS?CoYF8Mv9tvmOmQ%P{QU$xm;1f~iA*!g6FJJ3{wHahN}ouy+r&*!hZ(6x*B@cqxw zQG{9j@T{u)r9b#{06;o;5Ih_Ls(=})b?cyA2WAF^0P8yZ`tSZO#^W)ns>01T-iR;0 z>ss9SKfj68wveU)g#bNt2o@unjT@nD3vF9)RRQj}<#&Du3kwUFnVG>SZoCoqTyaHs z@7$b*E8qPyXN?aWtS^1{_0L~hPv`{(!He}6L`kEaHM!Q9}JpR}cl_TITUJ(?o+LT*?5Zwf&D#=rU24d462 z|7~XGBto7Hrg@e#g^UA;ph-a>5CbHV-Gl?g0*fu+KDFZf)3;x>`IN%|mJ&i!Befkg zC0zYugM2OKc;Nfvmvo+LI5_Gt$1C{NK7ZL|m$`e^hf6QL6acVs<3`--j_Ziv?%20) zA0B=5QCg{pn4r3q+VSDPHCTJjrgh)`(me}dIGkmskU9kmA=FjAP&K$aq^dx|fCHuq zH-jZb2!a&Ta~Hk+%@;lXm3tF_8o&_1sDQweiUIC;%Q^Y3(a~kW!mGajp>I4z0PydB z@;sNif_4#Z`IJ&u+1#3gg8=T6<5!NGZo0{t8DIYLm&5MeyI-=Yx%ARYedE*`SW|=A z78qpZGc$14!Ri_>yzl}ZdE}8*zkk)M`~Ls==HS`CcxE-NF5+mfSJSH zvkL&=s<1A?HDwpz83Uvkk=ky<<6pV=JOCE}ShscOo_$+)?pfHnb5Hs=SDY^=b;hg0 z-9b!8eW)rlC1^_Jct$_tdUwag^7Wr#;rxCOXgo3|_}Irj=C|H@E14M{fBf;|_A@?c z@-@}<^7oqt%zShOUo~Xdx#xwy|DXQs;lKR)BX4%onA)t}rVdL9aEGbE)R5W^sf*|q zTEtNcHwUqRh*1q{0qQM4qoJBv_FdDP&-jVE-gfzgC)4Lk6|&%t@(>Y72#}D$A&6ix zEjf>5g&+bkgUSu(Ado6Rs_KYV<};u93~k%C&2PQ+R{HqIKkmn^%w~D^FTK95%LZ=T z9^IYX`IB#SPz$gC=zjx&2ps@2H8^o#0$EHT&QQ;p0e1vus4C!on6~A70W_s#5+s;9 zP0XrDo4Sq=yXIto!aIL@i?aw)+x3?W4k24LJ9?O%+74TH?x9^fwue8x^$SOw;_g0i z3#)~NpZLTl{L`QQG~IO5O@7;Lw-M1xhX$8ia*1!;xUpcb4955E+qYZ}M0oh&hgUs$ z07noBh{(;I`eY8AYEy+1@Ze)}00BRK;d)S~`0i5&A$7o;FW&%fJD3}ovqg9FtVaZN z(NG0YXljN#F*yJ@%zV5MgC?bhE8Kq7=2tv2NNooxc&66?sVi6)K_b9XB`En1O%WUd zs;OZFfRgZ`CAoydBAt~H(9-e#YXPy z+ho?58TzxUIvlX75~6H!$<&IHm~{qdOjLQ~lMy1``BUfna%;818!nlR7E``2?gbRm zGk^V~|McSma5 zb5BJ0y@%NT>09Va_m9Whw{NFUed<%ki~&}HJ7$JA%}YM6>$)y5Gguf&Q}KNS7Pc;# zm;r-2kc0q@5x?}`??oIf;6MN3J3#;rEwl)gKx0DcI#f-a;{bPZcTY(noI^wo0k9l8 zx+pKsWT*3U-oqGgQU1;GwU5FJ1elHD|gD?)r-- zp8ol%DK`gxZ?v#X^FFX)L%4f(Hob2+6QNa8gsk#96rkAgO^XK^3y;>XB~hI>3=JL&^8QRtDj9I3@|4 z65o@^vSN-b$?oNx$YPl2mM!7Y>iw^#!LLH$P3_vTedq05Cs4 zf7%87sK&GQfu&9#sF(h#UHg=^TuIH zatxh3rxoBu#^)Y=dhV6{z7K5Ja7-?MnL)#0{<})~cV#Efj~WZSZb9IwIQp*MiEwf! z&uImCJ&isJc%>o%K7Gqit?^2Qf2X_!xa+zL2mt@nd!INWlE3R`E?n!XNL@Go;cx9Z z<}Qs(F1Z9N`{VAt_uki~!tp6A{2_o1cU^bEwMRL0Bizqqk-vJ!n>U|x%vw*ml6>epa0=)7deQ=00sq4 z_iZkZIngFd`U4_*$4k=uzCZ4DEc};M0f-6G)IeD|^di0W!&O{SvXp44;LB{aq)JRY zASNP_(piEIzy=W2M6?BmuW>y3?_H&j?z9Uy&arF9_CRIDOuyWUg`I$xhEw>x(ZcIe0p{JE zRtnM0iG#dYs7aY!1TGT=%1TjigaaUtY0{s+s4kAA22|B4(WLiE3V+v*?Lz>#@`i1r zld1rHdzPDz0W<{=7F175g?O0J$i~2-24`}R(PXVq?>?v~MP7Qn9I{waR|BJs&!0Bt z#|hqVziP8@-FafA(Oo;XZ~U`=`ycnZd4zi?)*#b`9l>MtPog@hItGIkx@dOTj5l3g zpyw)3*D1^#|MFYUoK9;Wj|DhU;rDLY%|XI!F)bDTkygAC08i>U)s&(5io9-r5mOKxEaa-rRj6JjSwg1}0`9o>eAjja5^)YfmNKhkUS37uAWk9#A}2V-sOVDGmb$7? z)d6X=K)zf7auUehi?z?M%{{3R0GGN3X-Zokc&2`}O8t(jH#-sG9ozodc>wmTTzdW+ z*S~>FK7~y)d&%x++i7*S8~^n$C#kFBUNQBu#m--N$K@`Spgnj10Fc@)yMhor)DkkYi#0egd<5t|(H*lexf105RtkyJnsZ0>PablDg5>oqN`t zD#Gk(XM6m!TFJRzW2okEA_yGS)Iih1IG5FhK|}^3nCcinn-{XOrcrBM8%dh_;9q&q z^*_tP-~aA>vJZduODD$#R8@s~Fo0SFoDkh%U=Wk5fx1zId6#Pe#f(c8T)P$&8n^@6 zB|s{~ln5XgN^T&p(IQ0C}#83osn7NZ#b{|4;C2-Z#(CLJ1f`!4J zscBE4;g%A@pvkH5a{Wsep*kFJL)Rs!IRXVxQ%%+-G7&tN(V!`L&n3hn?(W1Qi006! z(F3iS-TlPuQ{UfvT-mU2=e6hcs0|!s)tl+6lROQF3d8{tYSe4j;^3h}pwwbC`#i#6 zD)ZBq{RhYt4buuwLz#J_w8eLa4xp<*P68PWFtzRs#QB4i77ihf4uLFVh`xeY&X&JG z75%)r^V)MKon6Plx0sp2lHx=%qjz3=ZVkZt%a^*&fl&z1m?qRS5^A^_P>8wQ^Ms%v zU}mT$z~KEZ9NF?wUd>!p4tJz35($f&DG~VtdylUW6=F(Ykxby`z-oOwpXZ!1NwrauK+fE<$!518P&hPG^w1-5seVSiS>JY=)PyVJFea=Ac7FPwq1@` z+L(R1J8@NknPJGyGhl`?yT%C9RQeSip{c<&Q|daf#!rR~4KDC`8HLMRcPPQc4)@--q%1JS>y{plXKDqt7;uu5*9}M9RumlJ(y3rh<5uq&0<{*W9`S1rZ0~2!Q{E+h3nZbm~ zaYO{q+gTJ7OOs5sD&WLWwG+1gp{YT+`2|*prh6nC4Gu5NgaoG`&ceQ=J%(J3n2F-J zr8pYr-bKwMoS|+!cSb1z4z5B2z;619bB_P_atPVA%A8V94RJLa$-Tzt{vN_{_kgh6U6y9v_AID(6sC9QTQw4UoY-} zC7f`BG3BMrz^qd-g?2n&07hfaWg8rsZlbAMxW5ovG=tR z$`t&Tsp(uTa~3gE(wHr*no}T>5P+mhE-U~*1@|}~^#oi%LDM1v$Koasno`*UhCyzH zEK6aEvR@Fxql4I?sY4p;qN#SksdRdB-wC=n+xq9_%V6UUNymT$#F#*42$^;^3(IUm zNsE#a&P}L_sE*L^vhVKQKri^Ed6<4@uwEx(Oh5sx)d`q@x1GHfZoUyfOF?Qd6S)yr z!BbSC3V<0xMU&o1cXvxlG#DV%0jcern5n0+l}u7aX6hnBG#o&aVti-}H-*OJVP>ZJ z=5K#QhwGQs!+gh|d!e#fyXK&S*U8Ke$}r3ST+5-d}@G7CTsA_qu8WEoGL5(LUVl^17u*}nmr94tQBuc$Zi ztMwx}`7-8@P}k5-5$XUwfyR=D_b=e*w#M-oK#hAR&O5J#`Ver;;#Q7(>ykqY; z!OhgoKyWUajIQmFl0lPF*Cre~6n!*G)Q%I(bI)Yvqcn=65m}eq%qNQ`x;CQiG`mg% zMNMQ{xC~>`XLmjPth>(w*k2yA0Ol{=viaDOm3RKs`DKrXBG9rg4p3&)VcAVaOopV6 zHX4EetcpSkj;aW@52%EIAC9trKR55Q046})G49Hu00xFtmY6g(pq9-y5qyaxi`@hZ zLz7`)oB(pvRRBW~>N;P;5|p7i%z?7L@Ym+izbGpHv$3FmB_ zft%r@SD%OR+`&we4T6OV?fk+9PVq5_oWYf#ZH;0w&znc(8|3cf>Hu^SsR#^BUBEbT z*~r2RM{$Bw!ATgdMwS#vF=GfK{OUKJq_6+xRt(Qrw<>?(!Dse>tAL&uTbdgGVB2p4 z0G@tse^!8gcEK$ZBTjsN;nXdtmMQ11%>Xq+rvzw%zOVo`M|0*Hlnum?EDLsN9QG_$TY@ zZoNn#jU7kL7)EVLGR$*+!a*Qc?2i@BtP@z+G1-)gCgjxKr@+k+s)}4STP#bu<)^Pc zdoVMdq^jHrsD}dw5!!?E+|7@qUNh8Y?HU7ssg3J(uztn?bR}v@^zW`Y*X!XR^W?8s z&qtJZ&B|M!0ZDV_%}cC4UWgDg`0N}S2l&i&pt=aAxPXk<9VHT5H2WpYcQyE^MN<)) zH3OhxNZE0#FC49$#N*B;2wv3@0wMIPPE29Qi<5j3>(T^)atY5;Oz4a!g_lt0k~Fql zeAUc`wF?Wo9(_L%)eRQ%w3v_SQu)K@u3#$xJ3vI?G^`j*dai{NZK=b_Dhe-6^>d2At*6;P=T6K zY*}dhqiNX%d&ayY6ckR^qw z`nXLQ^CUxyfPt73oSr`jY+6fBx$D_M1am@C_}&*Ht)F5iIE@o~O*zUc>tW%zj+x+PqpJSVRFYRD*9;E=E1xeoDZ6*i3b42+ zIr~>Kg)o&c)d65wO$|gHdr1OP)W*v7_X(&_SCjLaI@Am?D&}K=YJzbfi;9g+ESXEj zY#X2oY^Xb!DyqQP+tnEhl$^ymGXx!tFpdUr-gj`arA+}*{r*L43UUKi0qr;;#kgc= zkj33W`s!{NGVGd000McNliru-3bc-9~=K#hf@Fm3rtBw zK~#9!?VH(;Tt^kge|7KezP-$1dptN;iLo4(hX^U~;0Wcxfa4^DFVxPb+)gnPMv}Y^a0oh zU^yg|fxQbh1N$-99@x*p4!~}LwR*R%>-%7Dfz81Vci|(N^r8X=93EN&Hh~^sfI>&9 z=UZxX2CM_efgx~z4?d#ZDqT240q1C2u@fK8w+ zOR!=bS;SD<-xNcs`_5Flk7g0TP=y}``U08>upvh0q@a$hA{HYx5Mpy^Z$FY9?@4@)-Jz!m{e%uAAsGPhI}A`?th`03qU>%U4@ zuVAwrF1@_}HYL}9RY~%!1TmBa+?4>ffSdBYW5BbInV}7^Ur58tQos!<;J92M5=a+7 zwE`+q%V0rXUNE^9P84}}4l-Y-Z&yU~4h zht&x1Jp`Ko(Fb~X26$5Den-#l=>AE)*9dWHsn1HeT+nxSegHHl^DTqEJ=&wJRWaWP z6q@V55=e}E{VADQTOWB~Z0q?v@Tn^P#+Zt(1^2CB_u(!ef6YNc}pMd=otWhK9 zfUgPkK9O>^q?|<8Eyti;)BiVA)-^%dNia)buD$K9KfMBNFz;T0V_+hWxJlhT&wY5%s4p}uVebB9%V6Z>0ml!FjP6&*PoF1(=_GonGJQQB{5rrJs&@nUrM_!xcK3;J z;htP&L)Sf(d6Vhq@yS*Id|#;2C4o?-`;TRkZ80`KZb&%+O!xB7Eitt&Yda%mZs`9_ zwc)rJyDt~GC#-l@<=m7Ncx#TQ6hK5UnON3&qaKm%cc}cYhP}BSTJpoZ)4I5|L=YYQn zEYAi2x*I(+Wl5GMey8#sN$SrXP!_IMF z`Y80yTW(-fR$wcLB8X%7;fn_ok4RFP`m(fpTK>EsL{0R3IdF-_gqYnpFn#23xW?1X zCR7Hp3|j32w1B6_Ao0~J*n7IZFcNIIdPQT5i#z|>4NM<}jB(&%tvkvJ%JSd@aA0Ar z8yW}|0@GU>6wMMndh<1GsWG>Sppn2ZbLL-F&IJG>wf^Ow%+5!2Py(0)rn690Nz)bN z8T9(@Sy8xip1Y$sfWSm@kP8>%z;qV+@z0z_y}Mnwh?#VKXu6Xd(*AX6{zKsJ9MKUS z(f<-{_wio_IC~_WBRZlZI-(;wq9Zz@|1;X2PQLLwY*9d2K&Lx>xcNh{AF(qz5!~X4 zUrPI2Q{)Wj!JRIc5}rtLYY3~jfa(dL6}0K{YuL)Vz(<v4*LD+CAdMo7Le6U@}ZcY6N3u7+Xgf`u#khD!$px=xaF?VYU2c| zeE(YA>_d{cXi`-|wM*b6xq1cL--J!Ab_@nC0Qu^#uw@B9|HbZ7Kc-;F6FN3=3zRX~ z>uj$N8l|^ZXQ17L#v+(h%y%90)(2aE`>M0XqHvKPYn?e=ejVFxO%Vt&j&WmPYXHr3 zavU*PTXPo+3(oc|?&C(og`@VOE_E_QsU&8F)Xga{Ytpm3t|gqK{L$6DausTAvEuTjl^kWVWDo*H1pDS8`>>cTZ6?#*c!sh zg9!rYc42kRwZaC4PaAsHy8UMboEku+CG{$WD0dcO24I^4I7MM?Br5@}Aw-njc~)41 zq~SCOE*iX{=xUlmcVub$t=Apkh03Zbc&HVehpWz&Ivx1Uubud;b^OK=Br7ZK=d!Gs zHpaO?Yl=1I#NpfNOsOq6la6riU``4I*TKeMl$>N@<@!g4DvK$a33;dQmJ*V9GaU_;MNzm#?C^bM7hZTu_ad5X6%7X5nE7gEqtl zjMd6{;Xuw5E`5!d?F|^V4<;eVHZx8@@sN&5TvACALlRhD+T1@lPc48^(-=MPMNOxq zynu8F#;2qTN^LhOoajBDll_n+(4++s=KTxazZ#%^cj>7 zpn4ywJ4#jkH&k0nU40+yyI|jQcu?g~twOZ|)w&xYmWAsXs$yh4)puE==f^S~o|Ss8 z;btHW8zFz{tbu{s{b81!JJ^;3OG|ALk#RZwX2ngYzSO2a{sG(Vz<16c{A#dy&rML6 zmje!{HzUE$gs4U8JRsi%`s+;oZ>aN#Dot^3YtrK>dP$x%v%ouH#-#yX` zrU)hQ&3!60NmSub4T3rqt_p%0;L=oE5=4u76GBD3Ve!7E#7lbLcW%NdT)JIX=P0Nn z3+|is{9-%xF44W!v8sOtL64IM?cbLG))dq@rJ#i0Owd!Ig{;Fj!f#~gi^;aoen6dX zY^5EaXuVFIGvw3keD=9di|wgApNrTFgmNwr)=hnrvomGSZ?W080D59_Lk;j6@2GIU zZAIHrX{j+*-w(z3eKqh{JwRe8Z6|?Ho78&=8q_JZEm@I<);sns`F%sVlrd15sou@W z%4QP4aW!m9vAYH?9nNQbchrb((4bymAwH|T7x<&!*zC8vE=Z^wK^YJ9?g{GDnt{IS z2NNs52Ow5?59$FJx!mC{_1=bk3*a>MrldU3coqy{v%rkKCMxP3oEy@7Gcfy#dZU#m zzmd720IJ`N^^5=j002ovPDHLkV1k7C Bm_q;n diff --git a/src-backup/main/resources/assets/alchemicalwizardry/textures/models/BlockSpellEffect.png b/src-backup/main/resources/assets/alchemicalwizardry/textures/models/BlockSpellEffect.png deleted file mode 100644 index e22b9c40349441ae1673097274da3d2b689e1af9..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 985 zcmV;~119{5P)VGd000McNliru-U0^#01KC)vA_TT17=A? zK~#9!?U>I}+g23De^aX>er zR)X9SV4xL1JGA`@dyvdPs|d>*D6Wb}7y!z>>$UOE;S9MyTQ7l=Lc9q69(eoEZQ9M} z_rYn~j+q8ije!KHXZ)Ps2i1Y_1!QWF+_G)CUFdkw^*|qjo4hCE+7JLxn+K-@jW0pJ zJ=@mK+W)Qt#sRN!4GHLGpyR{LKlTl`<{)J5jK0BO>*H5Nc(s6U!T@b$UvD4y&wN!dV@>xYJ>3By$XpfO()| zH}4-pdjX=QUa8xJP6<*CnKxD!+F7W62T2}u3v&P3zVUr%-Ug=*{_%8(qpGZ6nls>5 zz->Ub0%;MV2ataW;cKXV1F8;w1ZeRIubx;P33tB-s1x856 zi#F#ofR}*t2BP~={2jbw=w@xA_&X33K{r5GAiE9zD@f+S1VG#V@>@V`t4J^f0;$6n zkd*92sz9eOvkl!@sL$Cb$Zgw_sOr6b0R(^BRMBnV2vieHkNZvunjtvdDIj3}xBieZ zPy(t7Ism4?G9`|JUy082%d?=Kaxl$hQ1|5$^f7Ygx;*6md8|#g_+97(ZwgKg#)+Z0 z2q%U^4fZ929x?ewNN|%=U}UCb6sAT*Z~{cIU*yzB-{hx`mk1C7ga9Ex2oOw?5xNNF zOU^vV2wlc3onJ@!|NY7oBQ(yh!H=1xVe1(FywMmeiGWF2h(v(kCX~SmJYTr+DWFfq z=kdtPppo+cDT7xpgC`hv+&$`(COtCIkwejIB7z@?+@(b9Q^$XH0w!f4t9^R3Iz*(D zq<|101PB3w>;E+q)@s&mP1Y4-n00000NkvXX Hu0mjfAnLK& diff --git a/src-backup/main/resources/assets/alchemicalwizardry/textures/models/BoulderFist.png b/src-backup/main/resources/assets/alchemicalwizardry/textures/models/BoulderFist.png deleted file mode 100644 index 92839932f539f9c99c14e1429c3d6bae1f31f378..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4025 zcmV;q4@U5bP)pF2XskIMF-sp2oy6f?nS%`000kINkl?IcWeh^nLlp-P}2P*6lj+dQ0jX71d%kF(EXZ$7L&b3I9B632BN7jNn6>Ymr# zYwflEYpws6Ljd)e&rY##*Q>)D1Wb#zCk!vg5R@zO~R!!B~!5+xsC^Kp23r zBCrA)?+T`rV~O(T+z+7wCT_oZ)E1&(!}p1R>e5ia0}6L;3INdF_Z46f!R@8F+V{9O zFR3#3#*R3IqJeetU+6` zlG=)56kwW50viGf2Vuybn<7x_pr-i!9~lw^fkc2|EyDl!Kti8sKx_8=y!RlDL=2c< zL*2-A@A09`UD`eK?~XnDVi69Y)q$$;E2zQLFs0#iEeh#)!L8$&e{R^bzYVL#D?`aO zB@il-zp2!F+X8?+dt$L$1vHNP{xjl_p6fs>=5xWk2OCY-M;QQRRH@(%3TOR-Pl-uf$E|2%KlD`A?AgR3Kw2Z|p!cQC2g8|xb(0nh$RDFjF3>-+i* zENFWcXoNlLMljumsR)VyM%xsH;|2!6l7^)KR+I=|1O57@$w*e_FwG0&648kEMl!-)4_Tz{>f;F`v@gSE&g~#L^6L&dG}P`(XXaG!$()FVt3}Z{bB?1bo-Q zPQZADsEb3O28*XESZP>XtYK_fJXr#;_-zZ?v3N?_V2h_J0H&v>!Ssa%j@9Pwky6qr z0?geVXZC4luJ@mtLr34j%fNF85Y9Si$1tPdbbz@la^^!bu`DUZc;n?wl z6%d^d1YlnW0tYD&`_=DgXggQ|)_`RP(+;jyFsn%(EH7we2=^XLps)f=^KBScux6oO z!HgCGlE`;_zdyY`GTL^u^Gpj*isX}nD)xLv3SCYKdOA^*|}pbezP?-&UL(0)Q+Tm?i4=nm+v;8^LQG1_N_I)hNgbekxQqNV zy3zTey=!C>$FKy|fio+Ta+hO>Elh{vmb+RqudL?$|w`*!Y-FP0RPu&BwPiJ@fIFV^B&m6lzF8V(qyjmgHlm1ulWR){eM|EAg~<)fZ?qgy z0DS{H=LL+5WhgYfSV$H+ucTNj8!7Fb50^=}O&HWpr0xV@^;xUC{#`*ehGhlQ7G@j4 zke*-pG=$|!fOY4EtY$oD>p+C6t@m$#e#yd|-W>4PGgiG_7_1PJuRNlf5{5At4P`3% zL=DUZl4KMC=nx9OtJGMS)pC4QU0?+`0q;f@XyLDnguq(nxbR@PDNQF1Hg>vgtpKgW zx7Ql^0~919Xa+zJf*SgPgqZaW7PUuY<5!|^(6)jJ7qq7JoPzP#1S~vMPIj#T3x770 zYu2%AyF|zwn{n*i0lTMQR|r?Mh4kn|VB2CH-D#SRqF(3qv{+5ku{4pdC||R%iX=@J zGV?1N=sO?2<-ZR9V$8zR4McGG?z48PtZ(v`w3g5uO&!__U)M=seg`lEt`<71KMR!s zJ%)Y>T_;Ki0<=X|_?lG8=0Po?H3?y-gVjQEgHeS!nmA?>*>I&51R*pH$>#^>=^x(T zHNr&%XG^-dLY>^=HZBPnTZnzR+e&10T?Oq9`IrC8`&B8LZJd~U5`cs3=R%(l0pnU$ zpmDNaC=8{vF5P6mP;cy?ql5vfz7Lg?b)JfABq>T`G5K#)9R7eH;lcxEQYb|c*lHtO zhk}My=&j`;bW8E$C?>n3CFT`q@<+!a^uZXqEm#{%X6H4TKT(k#NIiOLs4G!wBO5Cz z{7y1!<^Fyt6FToW=mg=dSB6Ko!~3)lwMLfz@F!E5T3KzdR=5CVj;4<35QZiB6E)fG zF~rm4|5%cJNI@|aLZoSA^6R8#0Qt#^>}Lab|CE?^gBLu8BqD#fC(3k=?88$~7UWM< z5NevrvG+zr@^|N#AekeHBMl`FPzk6h7_Nv*kAxavx35P!kr27oiVIQ`P+1r|5q^KP z;Wyc#tAq`X5tzwgM}E8~UentLRMRsShp~!51B<2~Ozx-#DIp$c~(N!c5 z3IA?>bJ|gtB!5|Wrb|1f6Ozvl)p|y!%#l>=q!Wq&`y-f}hAM%e6c<=e0c+V;EU9EI zT;j;W&XoMIf^46LRwU0(yD;nt;)bCprLmHd0*s{6O#XIj7cj?W976+*hOm*uCJ6ZE zO95ut676ufz9X25`Cfa5Pkim%-&+z8ECtE3{So=&CD}(qpG2JfJS{>;KEi|{j7svS z8%Sm4^AiQAhU_*U7FT`OCk@H}egrxoyDgezaBs(*G>s^EXeHbRg0ahkgsN|;R%)us z;p&>DtKMC*B?_<>(Bw~)WFJl@ugR>3i*+Bjj_l5G!VeUXeL$1{>*Rsioh{H){*AIm z{13?X$C4ieO2VU4?~DeB15rXd5uhs-S6w$vePxL=U@39N^3t=#yH~*CKUs9kkYy1B zo0nzX=d;^WFg5w3{`YMuBo$Z@I)7wLwm;mQY@C&HZoFk;-6R`(CyQ2DX!+u+2aGMF zq)XZKP+@>`nw6JUFz=Fy3l|@+*n3MTJ%CXoE2|oaH2EWIBKX-BaHs=?AwOA={gj#j znL{GUp-4hu+S@G3; z{E@N5+RFG)cBT^J}pqg8ZqPY+opGKb{3F`SB%*;aZU&ABnjiYQvx+U#!S(2qe3@B80gF1_k+I zL$)`Dxh}lEB0$$|k$-(ac9Vh~ZO_dKgOvPrq0Fy@j@ek0RM)=0(1NS3f!BvHJS`E) zSRp!IsNlzZ3f}2}-U;u&8U{UBTLLo@POue04apaVYI_h|Uy)}0C5IApi|jy3eqsoL zPi9IaC9W*l4dJBBtr}V7+LHZpSBjwZ$YC2;8B3mUd_;D@Ge%`Si2^+fk%cQ0ST^Dw zeFN8YAg*ChPP!PqTIRW4ftCis3i@N{ufk{mbs^<=6$s#N3xbXKZ?-=nKV`^1()Ko3 zkv}?;#3oSW503==4z=M$L;kIr>}NdFGLoo~-I@SXGU-txAUGpTaelHOJCI0Z(Vjn? zNhbaD#=m%_JOdR45<*qwt2ZU}%8Hftx>3?##X?ofeWjJ(VGLCTOV!)HxD_%T3wuIH zwpU3HU^aoGB0JC}KiQWQ_NEBx7WqkoDm2**9noA2%mie6YY|{>2h4O~U|{U4rC5`F zD3nPm-<^u>#tWCn$5V92P`=h-HtEn?a?H-84F9Jjn^KdaCqU@;$b;{?6$DOLE9ZQ& zrZzTYoGiOS;B2XYqJbsf8*m!NRyg}QhB_p>u?;&E-+J0|=1jxE8&c?1a&6l|V4>fF z*$~16ULOcGHcFw`DGAZgKpjbwCGEhO3ZmD<>;WAsthJb4LEQz42%-vOUg6}c71pHO zF&IIpczBc$M=`f8t%>lvfMS{BuUo7sIkd9|3y-{%pil(*?JOW_WN*)CB$QGNEY;8s zKu0j$z!+})$x_VGd000McNliru-3uBLI3aFS_y7O^2G~hN zK~!ko?U`Gs9akC0f9o=9X7=opb5BlAXb{9V5kz0qhu|fl4?=>MKBzB(t*BV2H;R21 ziHcMxXoVtpf!YUKOXOoCRk?ENke)q!jf?G7bS4Wd+rssRt0@=7! zBXdw%&~<*&UnveO^>zo_g$Y03dPa@g(=#-~5h*3=7^wPvMx%zoV8HFzo&k`0401Da zR0ndL^8~Ny&s4a!o1D0qoLU(*(U+t^`?R+t7(?5&q?kw{((hNKlmMoItvd<;K#GZM zCkT^kgcJ}0ww+`^Gq4kVF-FRM0b$GpYXeG4OrdUi&-Z=!ctQxIlms8pIwQD%4<3YI zdwY}j9{b?t>cxMuxOA95{{D=(qX2{u$H9bzG74oB(ML`mKAnm@Blt+uTC#F->U!H^ zTaVt+g3fxhQdHA9pL+Y_$&MVR)Z}HxPyYHP0bpB;5DB3)owYdUP*P#7#kQ6#GkE8i znwqAw_RcZ@DG&%k7tooy7Kjglx^7rl=#%1@&Q)b5DDS#}RDv_jX#kFyuai>36dEN3 z{h4A6%yo>KnVDv7V}sH5236H3%QB`89Kbd$&O4^3ry0~W${3pA@Xi4ceI)pZ&K0)t zI2*9mQ))vsRWhu{Le?|^?;_rNY~zq}O#K*Pu+gHlgyJfmiLe9M^tNm&`}$l|;nVXop?zej*$LC*uB?%$; z=!xTR8DQe$%il|;(8M@ach?4_l4OOVtsO-_V^~}MpdRP``Ny!sjx+6dc)xfA=K_gD z)ypR}BPE;*c43~; zaER6!Ypbi6OtZYa%*@OTAp};=pT|2#uPj+uTx2j9P*oK|2p%|f@}_`kZ6s5(#jei5 zX1lupL2_dDn;4@orsPAL-$0R|XAmOYR5W9k$c-e^8s`OexI4kadVuRJK`LhF=5}4{ z_s2VmbB?O2@FC!=MGC><{2X~+Fd7a~QsTYGXibsl;#q~2;N z%M5G7E)kkL*h3k`MjMDOUQ_QZA4^BRv)A9K#I2hatu@6|am`060ju!zubxdYMmpEw zeL%>>l`EU{%90QQbMy0DUR$N@I+hNN8FBg2Wu%lSDXDrrOr9gPV%W6gnWo?GQ`a>q zB}Pp{=N!Q~OrG<^lRr+22N!wZ)Ts$3=*|UP7YII*ncbRL4=g%UWVz(k`r90rkD`?1 z<;`#Lk^Z9$w=F^l+zrkGjT>)^@lw50N=u@TyUzh3BD6*diSsSPreSJoij|cWin2fg z^>Bz%in3P`6NC_H+m=CHqt#eGYzl-JXl#p+g0AZjQjr%0N-65PzC98A>^q-GLQ0QhMPx zucmuFj$5M8Gtd1xt*&oS54KreUgk5O{KP#=#apU5wboR<9$ITsjQ2DH^sNj!d-g0v zkux_p%k1pz{sX|1@Cp9@+BxcacuxaxOH1Hw_Z=lU$DzeV4lXY2KLAon{Zl*0mc}V&NzR5g}h&J ze&qtzwqzzJ`0+c9wrRpF2XskIMF-vp6%zmf+AtO@000W*NklI;k0vP&>BCW=5Fmk8h)Sp>4HVjfs)A6TpsGTpwBkeC(5eMgx0FgKBBH!f z@hIU@8xc@KL*gV5ViFSD*$ohElLVag?#}DbgYKnUd&2l$iijRYkFEVRBU!@pz1g6~R*<3@{9^ z6s(AWDOE&F0}(}0swj;vM41VIVMee_1J6@(S(lu6xau>I%i`nXIxcq3h6j z#aG47d8GGeh{qySPl|(~c%I@qimFdM9>V|}bucWeB)Sk~CIFUrh#`Pb6^U{5Q85HT z#K&=M)KE-Ia6Ol3G=>R?D^Mz3i1HGEobBZqXJQyWijuP(T+c;)7efpz(?St4SqJeI z$5YG*CDDZ_GXdDUCmk4cG4OmBH=oG^MNkCti5>8~d^{hG5sOGkbRo)20P0RS7SC6r zQ4{rj9M=UyupI|bR0$3g*Y(Ne941#+GbtJ=i7rH$34j`%C?auGeKI-0 zvMfMw90$+$Q3bauN-Q41cT1xSQDy>QyO47{_VlMQGdA&991$g(afro11aesyRR9Ci zieNi}@0CUu;Z;zMrVFcx<7j|GUDZ3(bRovk07uG;-hR{hMO8#|+$!Qx@hGu~ z$A785^u3?oVgwPiIM|vwYY;z@EKn_UuWM%PFoaIIe-? zg+9P1)&K>j=T|?6d*v5UYV|S1I07)9%`esrE7z^p4arooX*gs)L8;Zp5aS3yF#|_3 zbFAw_?F?FB74b7R0XO8&_4)H1<@KVaRv$x@76p_YO07PIn4k|Z3g0`tasNn^T73-h z34DNZMyb`u5TDWnbochD=HozB<*G#s<>BX^R}o=<&Sv&QQ-t&w0~{n@qSWeRh;bIy zcpc_9H}lH*Yrr3oHd0viovnKQBWH{~#vS1#AJORS?Ne1nRf9Ug4f%-SnxOrjSMQ^6HLGJ^9#U@qCYqzE~rzYd=ttArt=9^NyDlZSU*AH8$r?OUR2I z+w_>KDgbS)ZI!_1xJXqM%P_RDwpHHlS)h*Vv3*Ieo>n(ee_(>$%!9Z}Dme;x;DO7z z?z)*p4%=NLy6po#!U#6v(@;|*ot^M{D#KT1*Nc(gncLdFOV6KOFORO;ssK?dh#MPf zP7u{^7RDYnpC1ei;5sfR9dk5~J?3-el>tq6w@*Vud2H&uYSBXBiV98yMIsjS<~@kW zT?b(PkgR;Eu|XoH#no5)Y)tLa)&HI%`}V<}J@7*NF8zF>UV3{W<9GnfpK-dp`RYEo z{PHK*nA)Wy$KH@!tY4n~N11>6?`83#g(3p;=J|-gv(Fv`rg;Zvl14^I6@|Cn+s*Rj zTZRfcE$zV4103IGefLgXwaOdptEx0Nd-;z^28+fNHW7;mJ9>Jxn<7FwJ){8&W0wOS zeg1`t)c_WN?@#3Sd9>$~K+BdHEL#>>5Rn5)6#)IVOR1Y z2<8L$tm|GfjDE?Ifa!(fQ+e(p2Y1Wsah0n9BuM0s2X`pCG6QBeB@%;dTGyQ%ynb$T zhc23lR9jX)pAa3T^4oVV(K*u|5)dvtbE(X2dJSlw@QW`UqpceF?$@u7u7CBZUNv;T zp|(c4di%84Q7m@w*45U?+}=JdoB+xh+Y5{clc0=)zkqd@7rvg1cOXWBm`7}ut);})G>b3Bc;2WJNN z1Kr6a)AMzPH{N+yXPpuxni`5~5AWC4(^y+0cjvD!c;{Vxy0%8DfX9c`C?2R>6JWcZ z2FaeWa4awhRV8ERSiUl)Pi@+)055Fr&~zpnIDeZv^qEa>s``PpP|u}5lc9CXr3z_U zx7?(yTYjLnZ3FMp*0DsNeB+1uQ6@7i^EeS))Y39$dp4WJZ)ss;GNrSooGgA<7aKC)lZr5s+%+IucP{2GIMCv zUN&?13Z6gX^kLT*oqhkX>jh{1{WI5@=Om_z-`vdW4?m*kjIjm&KO@>MPNsC^Jw))E zo8ivN+4)rY-%qRZ`ooXt?BD%%7&A8>;DeaLia#Lp^J5vSSHp@Gl@$gaskkL?HXfWe zkKJq5d|WudIUs&l7yfInVXR%t#$+nc26c7An19aHdfD9EJg5y0u&E(9cXi>nw_|+V zGmjt~v61%DaoYb-SI2ujJq!<1Q(F8b)X8;q?C$9q9IKF-D6EPFJCpkSw1oVEr6{*n zWEAj!^A{THx_9bCK7(7B&uv_sOljM+gjf|mFBK~Qxx9xDur8U>xzneOV*W?{{lPhZ zT$oJhQ_~W1K{BOJB&N#1|G~njSOK?fo0Xg1RLc-9NlcZtEn5dSx-2;R40*9*n+}{c zLjW%9*rovYC8o;aEnD?(iK+6fEnA0NfV1ze*rfDf`(eeKOOKQP)VGd000McNliru-3bd4J1$3~)yMz<0d+}4 zK~!ko?UzqZgFqaGKMYu9LtL6B-MDmXJc8%&Bp5kJ;~~666L-dCHzuqb77`7K<3cgW zpBZKbQl#^(;P)EJJec=d4;2wH8TWu!Qv?xr08%|8!IUMpQG-HKgX5(A zK<(i7>UkSf*Uw0d(te4=M54BYzSG4oYlPk z3$*d>J#p4vnVGd000McNliru-3bd4E(<#n=bHck0k=s+ zK~!ko?O9D~!ax{(lf<9YZo2Kl?h3hqy@6DE0HKTG4ZMI0FW>>BT@`YGQs}w}dVoT} zWiQ~y)~e`qF{DjpzQi#}Nz6P5PTm*Ie8V^IeS-`U=rv56dSgpla#&=$z{4Oi%0aqOH0aok3i3LTF z;uF^ZuL~{{IX^~;VAOZxsJ$v5<_?h>;Ev6oL}fM?6<1YzyCTNrQgVE#2=*E#rxNHj zOdhw4_xXK)(zU9%{K+T9hi-wmB_22K48TjT z)jn-^C=6I0Cr#PrA%`JDrqDr=N;@9+khHJekqZ#l=l`Qm*ac;G{1f#;YyrwPukUfe zPVjy-X93kil4|m~TY%1`Rd3#H&*!gOZFiZ%uw{__{;*~6qhEkDtWHBi18=siw~rRV sl#$5)0;8!x_WPr$p({i~LnE{J1_gIWzGkTj_y7O^07*qoM6N<$g1t5OBme*a diff --git a/src-backup/main/resources/assets/alchemicalwizardry/textures/models/EnergyBazookaMainProjectile.png b/src-backup/main/resources/assets/alchemicalwizardry/textures/models/EnergyBazookaMainProjectile.png deleted file mode 100644 index 6be1c2b51ac0692f5cc0efc05f8492bca93b02f3..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1948 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 diff --git a/src-backup/main/resources/assets/alchemicalwizardry/textures/models/FloatingBeacon.png b/src-backup/main/resources/assets/alchemicalwizardry/textures/models/FloatingBeacon.png deleted file mode 100644 index 7882bb35971c2b3308580084ff7e0a8116febfd1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 805 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 Y3yrpxMfrf2L;wH)07*qoM6N<$g1fEc#Q*>R diff --git a/src-backup/main/resources/assets/alchemicalwizardry/textures/models/ParadigmBlock.png b/src-backup/main/resources/assets/alchemicalwizardry/textures/models/ParadigmBlock.png deleted file mode 100644 index 062cfc791a535fd72d58f2c3ef6956f5e482bc2a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 923 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 JPDHLkV1f~wyFLH_ diff --git a/src-backup/main/resources/assets/alchemicalwizardry/textures/models/SimpleTransCircle.png b/src-backup/main/resources/assets/alchemicalwizardry/textures/models/SimpleTransCircle.png deleted file mode 100644 index 77669e56638d7b7fad510499a3d41d3585c92b3a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 22424 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 BzG46X diff --git a/src-backup/main/resources/assets/alchemicalwizardry/textures/models/SmallEarthGolem.png b/src-backup/main/resources/assets/alchemicalwizardry/textures/models/SmallEarthGolem.png deleted file mode 100644 index d4e5b8a74f4279107410b786d86f69c6242b277c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 765 zcmVpF2XskIMF-sp1{FF51tHUs0007!D8vq4x>j!t;yB_QB4045B;7<-)S7YtATh(x1Wu^cZ%+sJ+ zN(g8D%>nBe$W;pldr2yT5v=a)Q&G$A<&#*QFacyU1^7co1glyw;8Pos8EJY+DxRI( z6&Nz-H%bIwE;TR;!whONk)fBQGqSNyQ z?1k~F&g2HD1IxW6{dzFQOc$s(q4PxOfqB)dDr=1~pZBYW);G@#2e}n00*Z386JrFP zzMrxo=Q?c-3kcosyTS%W>m_M%rf6H$VlTk%_eAcl$2u58Et-sq%ueO17T00*53VGnlk06w{9MI_+p=b=+B>Ep#=WGlF?!UDiB46+$!pv z9?XPToZ<4o9te6GC3;fVKLVi;b)(LmMq$9c00000NkvXXu0mjf4B}hD diff --git a/src-backup/main/resources/assets/alchemicalwizardry/textures/models/SpellEffectEarth.png b/src-backup/main/resources/assets/alchemicalwizardry/textures/models/SpellEffectEarth.png deleted file mode 100644 index eeb026bc6153cf6b2b48fee5842b92adc7377288..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1833 zcmV+^2iEwBP)Z5010qNS#tmY4#NNd4#NS*Z>VGd000McNliru-U0~|2|DVAw8sDd2DV8= zK~#9!?VC?*99JF3KfjsTf8LGPt>ZL6%z+cGgb;@!1RP45sFJ5bNGNK>g(8A-tA<;sKpfbpRidO^IKUxNkQ%`SRMRviiQ~0*Jv+Oz^W*S#lHKwCn_b)4 zCHs{u?R)d)&Ai|H{l33H^DK0MzR0V;dnxlCK%=QNLjhpR3-KE8nR$zB%3Mp?=GyDO z@r8s~bzN<5UoDjmeGaEfgTW{q$cJC`c^$vXwr`Ls? z17!~sSjfTsiupa45`s{8;RtvQs0WHnu?F-MKrH}2fMZ95AXMhF;E37v;v8%|QoM$8 zqG+-0Df%LL`H*UohhMmJGS*W{ynu1%umBX6VkG!g$5L!j%3jDnK2@qUWye=GJ>@}F zu`K0~z`@9Lq3#Gc>+FpAxDKCF2Nb2W$&$AY}{B&nZC&3t3^Srlc%5 zl9h=Mge-vV8f4-6UJ{v@Q35t=GA6&g)Y%$SU0+9?~n04jCG z58$&!!w>g%1}{D$tS7sdd;#Om;hep)H-b}G1hxd406NbyizUVp_|C;K zXeYhd@nywn{$Cs^$}Hf%j0X>H(*b@Zm|>Z<#}9>UyM7hQE-y*YqPBfRgQ z=I0;3^002GbfL zm%3(*=P-TWin+`8&%LddfV*K#>ek9!-)Gz{hy4Br8D0DDsYGsgVtw?Vew0zif*oIZ zr%lDXd7X2|uM?_bi}0&^$pp|*6m2K5_=CC;U_W;`ZUAJ7`D-=@kIkor5UAD1G=V`S zvBNBkh9T?*@Y~JPJ#9W}|Lmhz_}+8ZI8jXQ4xRYU5Axx0A@tIiXx^>?(GYkIU$B6e zTF?92lOn6>=xkr5vk;p|1CkUu+l6qL8uNIrGm&8TE^-vJn-~(j6lSV`sWNm2+!w)lns?u4*%tE)cOW9 z2dV){vbIr*s0%q*%0D?^oll#^gZXciLV5x?;Gog%&{UG$JSYvA8W**C(CP4`F0@yK z*nS+YJ!(uU7@0N!48lmK#it38w`o6yGtP0G*(tG^2}~KH_@dne{$CGr&oILb2ao>& Xdnv-ECL{}e00000NkvXXu0mjfV*Pdn diff --git a/src-backup/main/resources/assets/alchemicalwizardry/textures/models/SpellEffectFire.png b/src-backup/main/resources/assets/alchemicalwizardry/textures/models/SpellEffectFire.png deleted file mode 100644 index f079a183cfe4479cb263ab0e21386bfa3d555fd2..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1721 zcmV;q21fabP)VGd000McNliru-U0~{FEzL&Kt%um21ZFl zK~#9!?VHPQ8&wp>e={CGV#j&8p{df802Pl`LM%`>WrJ8$@~|xeflyUiMe06(MfQ;@ zp(;W`NOZ%3DM$#~J+J^31c)jrp{0-1b?n&jV?39|or&%7_%U{z+O3ZiHFxITYv1$u z&Ua336+A?o;7sZm-wGA9BIFV73JaM_dqSniJ@JFTAFGr{SHC^VjDCQinE}U>_uacPr%GC zP??16Jj{RT-vc(F&U%X+{2t9bfZPnI71(_qw8!=D$`SdmrGii)IK*C{HG5%&pc01h z2h!b3(=c@tigOTs3^@zb5~PoTwhQ6}G39r1em?w?uGc>>4BrRnbq^JZZL=;AJQdDB z?huq!*m(&i{(wLh3eyr4Cx4ZzgSp|x0B!R_MCul#V-oO!TaaIea2Bipm=PG;gm4P- zFT&U(2&ADh17gC)1Pihuc6LsH83baGI|^1%W(NnUS8eMwSj`pB?)TRWV_)`Y?g2AE zN*+GE1?5@D%-gB%7E}^oY7n|FaiJW6^lMOvgI1DC0mvSQ;t^2u5Z}6k+>h)%_#4B@h-Cp)dilf2Ajw(=hjy ze`G(<5Kv7Bl%&==SP>a0;Z2B6O2pSv5ZQq6T`0_ehyrE#6JH0i zGK)lW!w>>*B1#Ec8#|KpC_?6UOOak6f)IKDg?Z^M+9OG!tjQ{qFe4xo2v(pHf?^C* z3ueD>9s+|vgtVET8W#vi0BHp(0Ahj#5^P6*BvUsp&a85ihff6+-dsa0U9F}LuXJLZR%xk|SRA-w=~;MU_kh)!2EwXg;2w7(Uh7tk;Ygc`n@YN+ z9kuLr{RjgFK>?R^y^c7z$DQ`%y!IJ^;E<%l5fO4*vKi-gSA@-~#)Wep;CBHw->L`A zhItoUYmQcb-TDrp7G=k&JRt*EDajs%6^7@2@DI3JH(K*5i#x3v8`pK7F0BykE<*e_ z$RC2}Iw)n?!?c23R)a}h7xGIRZHpXtCFoTRF5y&z>{Wv+_T1%9S3tkf*nUBwZcg3X zW!qH+=k#~EvSm;>3`-du67bn$gYpbq+|_+4b1w_jTCCH4fZyK0`)i2nx-OFXjRwHn zTvJ3+*TwZVVCu+uP3OE;HNeNyx_$UAJ)kjG4Tr$kLpfe(IJ4mfsZk=8hY8muddBBY}*>vg+NCgld&G~E14Q!6ScLq_3 z%HJ=RT4$XrrhFze_ym6n(5kU0LCXO+_Xl|aV5@Z5D*;j}pqQX#fbrII$Nz-FVGv;; z-a`nqYl$6XW7G=EKf0b9Zyxi`_`Q=lS4;!ZML=tA%eTwnZY4Nr&;13ReLV?L2Xf?y zz3!;JFV!Zi{W*2xIqDm+zC6HBle1O{2k9|;d!2O@+jz)s!fs$daK$xVwx2jeNbgh6 zQEOHUJS$C6jUf?tI4$f`bPY^DV8w$zI~dadydKZH1zT-D=w+)E)u}AI#@Ac?CCae( z*Xu}6cP=roP0?1KwWoj@1$T=%+91b#vk-7BUl#)1V!{T9q^^sku8R#2?r|rU@>=JN z2figXYKlJN(p6Kmld91xEp4tL#25Ale*o4BC@;XVuQ`zGG@dQ7ZWeWVk)o~k7m?TN zo+J}=Uykxy40+}LrK>tg9pSXcZ=XgeQ*ym10eRpXupWUDfQ?g#z@_fVOwS(Rr)uk_ ziAoNvySCL8APnLkd3XRNH~<*XZ}GY`Z P00000NkvXXu0mjf$Girc diff --git a/src-backup/main/resources/assets/alchemicalwizardry/textures/models/SpellEffectIce.png b/src-backup/main/resources/assets/alchemicalwizardry/textures/models/SpellEffectIce.png deleted file mode 100644 index 33b61d44cb62c30209265c76bfa77a2b75fcf755..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1481 zcmV;)1vdJLP)VGd000McNliru-U0~{GZy?cY-#`i1y)H! zK~#9!?OIK28$}fUX1z&pQ%XaVC`xLn5*1Q=Xb~0W0ur2%b{1}tIC7}uLrzEpAtBLY zq2cO7Bo4m!>Ww&&!ZAW>g-{P%h-3kx4JpA5rH$>!VQ1Xg+5dIy>?VGawL7~rv!3_! zy`LF|0HVuy@68SRHs~D=#C5{^c>zi||E7^%LtFMg6{Pe*hxRa`ICtUWq;XwA0{i+-3 z+)ge7AxZ1YPH4xdcZJq~Rs)n~fMkT!1StVM0FmgNCWw*tJV+oEHAkQZs4A`A>y)(L zn2K5t7&M?bjG*Qy$T;yDpi54tI7tpV{>U{zqN+q#y`6-D#w8t_k8Ci4;zG+o$B!`} z4-A-Hu|0u<-cA~d2F)`D!GgHMaUi5iGA!m^U-o8%LH*X39aKIF*mSuLwBGXO9=?9p zwK3mHyMQWTZ*1_ne4=kxDZM|}vSh4(ky*?xHz2sCwO7Rx83^$q)f~;R zT;QY>MNJfhbaSd4l6B>#9>t-Tqs z6D8eWt!`(^Dt#uPS8&r*bfc=sNf|iCfS8(t&jjkW-vlyZ0;_HlMVUZcS=-{AqD&y~ z-e6o5J?WIGD4HZ|4021Y2I&2ZgkBqP{$%*z5}|Yk`0-MFF>_dfR;HbyL9#~b03~rU zxw8v&j`)a`(Q1IKg!MQz$&r$lyFu!PXzezK#W~50@XB{Y*M4^Q5REB-l>lpjV4MOv zZQ$znL}`!e92x_H+)UDtG-(l)Dd!DIl(i?9fQfm)d>LS74lrQY6m)1RjXe(w0}A7! ztYN3ad0l8&gjn4W$KmR>Cu&T~7*;d}#8LXw;sqm_393a=c^z3Ca4aLiu?ZA}WPG8T jz;QjuJ*F{@Y54R%ByrtsSoYAB00000NkvXXu0mjfpnjvY diff --git a/src-backup/main/resources/assets/alchemicalwizardry/textures/models/SpellEffectWind.png b/src-backup/main/resources/assets/alchemicalwizardry/textures/models/SpellEffectWind.png deleted file mode 100644 index 6270aa80757c2791d43613252fa771a3ebc088cd..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1679 zcmV;A25|X_P)Z5010qNS#tmY4#NNd4#NS*Z>VGd000McNliru-U0~|0wIGJq~HJm1{_I5 zK~#9!?VC+&8%G$&f4kb1Z7Ejl*p5vaL7}&PfEGeq=p~`MJsAu+hBjbm4>=Scdg=!- zxfDWcXu*db+!S&t5}~EUg4WyTrh?*phW7&%Jy4vYswAO01T50uSOR*j>(u`(C zJI~wv|BuEBJ|f=cnzH)teE??WK~*7t1jQpcK#PJJfpVcf>DEJqkYbpoaJSQ`)QPX5 z`t~Z!py?2shDup(R#oL6fTn|{!NoUVGR`QA=DYvD_z_LtLXX119#DnE1+c3isxTFU z{ap|i=#zEDgp~AhrLiM*@@uqy^5_IO&NRCSmIZoLzS_3*3QdP|3CQPOFAq4DiD|f? zL+%g|kjp~soK(b8QYs>sb@E1BdBjnu_`Rn$TC*~2(&Z=PvQJT= zkgJW+WWNw_bO5CS++->K*}9cy=b>1T zedVI;k4{4Fr91`ZF2eo`I5!P1p4JlQg7lbAe^G`!2@057g6wlB7GWYL-5z8(EG$7j z57}Mm1x~-PrNYk7)cb5pwsScszJgd{=z);N-VV$qVR{y(Ea?fBRRcZ>D4Gn3=!A@Y zMU{xKT872TfC7^Vn5ousf&%dwC>((;M&K9}0$x6qt{qW8)$0(qQi3Os8)wYU*MU#I z3{@MRWg5pUT#^`}TpD^Hr19AwO)eu~4#+A{1rQ06%yFRn!=Z;WEGUoa$LB}`q0A;? z^(PYm({r4d&X})KIAfe~d=c*088#r)0EIVJTKiAXXCv(anN31vDn}8HCpZ@H0+3_i z5(32V{Z-K`5DHqu*8|)x?SAi-PREU9>Nb5((1eoT5b0fj@1%_8uU^yinL zT)^0hbX8AK-4^S#9uT%RaD5Z;z%+$nZZ~0u%%&m?(-aTdAj)HfZ|v7LUu)ml!Pts) ze+o3mYO3MI(Q2}3&ne$#dVmQlygM7+5t*{2_>hNdXG?gO8l z9MdZCy8FA$30gnkrSH6ug^@K+`$51jQC{K|npJv3z+1r$Q_&5oB6o|=$2q`LbLc1p zQavajFa$cN2L^>ex9rd%P(e(zABk{W6g}(GRZ+BC4v^VIBwt;DXp~HJn`G$&&?n%N zU)x`&84%Fw>X)IOSmR6_rfc^N6H{OpPuBxZgbZz76 z9NiBDGXwR2Fh$O8il|`K4_vDtBTtWjuEJp%viZ}`0fQF5OH*O2IVcYp3C4D&6wr=b zISA36bKIygtYSt^0d2WSU;b@wh{dtIyC~Yrb)4}nv2h5Dm^k>t9RjcGMeebTWh{f2 Z{{b~BP<=e&rZxZo002ovPDHLkV1i6>43Yo< diff --git a/src-backup/main/resources/assets/alchemicalwizardry/textures/models/SpellEnhancementCost1.png b/src-backup/main/resources/assets/alchemicalwizardry/textures/models/SpellEnhancementCost1.png deleted file mode 100644 index 187b96039e3b618ce348401f25a2253247d3bc40..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4871 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 diff --git a/src-backup/main/resources/assets/alchemicalwizardry/textures/models/SpellEnhancementCost2.png b/src-backup/main/resources/assets/alchemicalwizardry/textures/models/SpellEnhancementCost2.png deleted file mode 100644 index 0a340ef754b97c9b9be376f9c2e8d0faabd8734b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3603 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 bFEafVGd000McNliru-U1pE5h&S+rKbP@5OzsK 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 XI*x2&VGd000McNliru-U1pE8Vc_mJ%|7R4PZ$` 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 FV1kO3i^~82 diff --git a/src-backup/main/resources/assets/alchemicalwizardry/textures/models/SpellEnhancementPower1.png b/src-backup/main/resources/assets/alchemicalwizardry/textures/models/SpellEnhancementPower1.png deleted file mode 100644 index fb711dc240ddcf80268405f934229e63742af42d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4449 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 diff --git a/src-backup/main/resources/assets/alchemicalwizardry/textures/models/SpellEnhancementPower2.png b/src-backup/main/resources/assets/alchemicalwizardry/textures/models/SpellEnhancementPower2.png deleted file mode 100644 index c1d61b2ed1da398b77b78dc87dad339f2d04be5f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3738 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 Eg3IVN761SM diff --git a/src-backup/main/resources/assets/alchemicalwizardry/textures/models/SpellEnhancementPower3.png b/src-backup/main/resources/assets/alchemicalwizardry/textures/models/SpellEnhancementPower3.png deleted file mode 100644 index 7150c0b7022447204061dbea110ee9f6d84fe415..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4062 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 Q`~Uy|07*qoM6N<$g6@&Aga7~l diff --git a/src-backup/main/resources/assets/alchemicalwizardry/textures/models/SpellModifierDefault.png b/src-backup/main/resources/assets/alchemicalwizardry/textures/models/SpellModifierDefault.png deleted file mode 100644 index f72ff9f8b68a33a7c7832535d241de3b10143a23..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1193 zcmV;a1XlZrP)Z5010qNS#tmY4#NNd4#NS*Z>VGd000McNliru-UAK+7#*WPM5_P*1U5-T zK~#9!?VG=E6h{=tKYO>t=U)LUq=3YVqWlw)6{SEakf(Cto`MJ}DoUhCQ97b1MH-x7xYeGZ%Yj*(a@TZ)V4L@B7|--}jBq z2?4taZW~Cwu}RYCZhC-eYU}l5;4cy2q{wksYsUo0ZVVidMRr{g z{akzeUy)#25uFtvTfmw!BLig`c&W^2DVrV(q{;)3$dNHcvgMKBp5CwNbshLeU}W0h zG4MHs zS57$9{0xu@k0<={aoPjMY5jq&NgAtu8O&}T+`?VCZ2(wWv^;wOXB0wz{PM3CyE>uW zJ{4RH`gkH)rVDg!f2W8$Ex3p-Py;N;3Oy-So zqxeIyZiNIO17XmY&4U%oJ}*Ur@9Ny3^?8#0KQm?C826R6>;w0V;iBzk=d}W9(mD>5 zi+E;f(e`l1uv|3AUeP_OLn3bDs2nitwkTSkJ+q)ltQd2o&l)BR=d5MRD|3ki+waEo zd`>IR;338zmJpA+c2qW{W-L{jJMT=RCjCAi?3XIJJHUO7eWTL&o#%J@E@|AaYdi^C_4LI( z@BV_d>;S)IW7gKQ84CF_XDuDzjsWn#Q=twBIn*!ZtFRSrg1ajx=d5L00_YEoeQhlh zfu5i_5*tO^>#tj|wny_XSX;^85RAMV%r`uP8lc(%uwu-i(?#!V4M1$s59)xjwLQP* zi?YF=UjXNiRpCf22`Ruqf~XGXfsHj~u!d!D-WcZxVj0|WpN{aoFM}i90?Rp;&u@b& z5@%Yb!wa3)Rj~|a&0W@nU03@57zlRl%HXg7G**U5%k2G89jruI2CJ;~k6j16w*XYR z)(@=%@=Q9Y-iN@5;lD`IV)C+uf+#D0zRWEWJ}U*s&$ZhEdFNx0y`{Inuw7rM8Z>7H zjWtTJQG$&UY?NT51gi}|*WV{AuYjS_5>V6XiL%TF)$0o!;&00000NkvXX Hu0mjfa$77s diff --git a/src-backup/main/resources/assets/alchemicalwizardry/textures/models/SpellModifierDefensive.png b/src-backup/main/resources/assets/alchemicalwizardry/textures/models/SpellModifierDefensive.png deleted file mode 100644 index 1dbdeed6610c8302c0d1391c2fc6d144e0e04403..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1608 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 IM6N<$f>z{NK>z>% diff --git a/src-backup/main/resources/assets/alchemicalwizardry/textures/models/SpellParadigmMelee.png b/src-backup/main/resources/assets/alchemicalwizardry/textures/models/SpellParadigmMelee.png deleted file mode 100644 index c74a2dd85c136aa12372adaffdb62bdd5826758b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1230 zcmV;<1Tp)GP)VGd000McNliru-UA315i5ZB>SX``1Y1c& zK~#9!?U_q!8&?#^f9K8}Nq*FEDJ>7$f|X@P!g`NP`0onIOw8+}`H^7l;Yj zo31gAVUG~VChT8HcmOht;*!H)h=Gh`nR;`Bcldm^H3no5vP8s;Gse#J+x{TII!Z=z z#9J;QFo^@yn;d}CZi6Dt)>y|Ui-T%JtUePsWDr7p0(?fWh%rpPndFeT_Z^VI06w>I zaS6#{Xiy{I5Cv4TKnBG@fD9H#T=r-nNYWJ)P~7CFaYUqzzG#ldCnikPURE+m%mq*) zB4X-PsI#kk_%v`NCe%8U2sHv!-ZZEe4a1&GC_p!{o z4Ai}+bH$^l3SR@T;%%TP-xlt)*CImko3EPd)lE#WHc$>Q6UkuXeNA+>udeZ6mcY%$JQZRp zPyZUa5=hZPv-jWAn$7E6v8Yu$tC7tQmkux}wM4&X5#k{Tyc|_~e|Q`CL{x!M3=ZHT z%ok?(vs4<$+P5cFU=D{I5TO_(z0dVJZ?!Ubdl@~cVlQSmhn%|zXSAYt9X!+58BkTU+Wc0_tCz3!)yvlxE&+Sdx;YyCqme(E2^WcK zOKDD(hO`bZOJGA^0{^QHxK0x686k9Cc<<1wCxMD^k)pNe>Cb+cV2-6(-8?E+7{ zG7k&+j^}>!*0IS13gCBdojUL!DUEJ)fh!@wUT%ZZBCHQF>@1vhc4?v1H{TD2{xXyz sMT!(DQlv|Jkz&~JA4WtSF1RdZaR2}S07*qoM6N<$f)%SOAOHXW diff --git a/src-backup/main/resources/assets/alchemicalwizardry/textures/models/SpellParadigmProjectile.png b/src-backup/main/resources/assets/alchemicalwizardry/textures/models/SpellParadigmProjectile.png deleted file mode 100644 index f579c0283fc36a62f396b78694fa9720358bea1d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1229 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%0DEe!rli?oYj^T6Gct%)6wi16C5Utco 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 z z-twRmVOwPidjl9WmcHx(3=2!k*r}*F~QSs@q!hf>AiB{iNgtk*}4W`Dm`%HgORW>|Uq`fiksosLB(s$5(|*}Eoc>X+h2j}DCZ zb$AqxHX18@I++sm?aRxzzr-+w&1su8d#t~yDGrMFGrJgci;sNys}=0re0y^qtIqQW ztWEe?A72}6n9+2&u#Q3&SRBJy%@u0oH~;=K8G|^)c9S!?I~>@k$S;_UILMlU16u|; s{{E2v>3{k^e8qosGykpYD))UK?6A|WcKZExJ@QCR3@r>eyN{gz7qH!pz5oCK diff --git a/src-backup/main/resources/assets/alchemicalwizardry/textures/models/TransCircleBinding.png b/src-backup/main/resources/assets/alchemicalwizardry/textures/models/TransCircleBinding.png deleted file mode 100644 index cc54eda500788ff9a43e8f2767e2d980b32fda9f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4020 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 ttoxZ`e)2gsGcY_{{W6h!bSi9 diff --git a/src-backup/main/resources/assets/alchemicalwizardry/textures/models/WaterFloatingBeacon.png b/src-backup/main/resources/assets/alchemicalwizardry/textures/models/WaterFloatingBeacon.png deleted file mode 100644 index b545bbf048f7fa8acb8c48e269b7bd91140b333f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 543 zcmV+)0^t3LP)VGd000McNliru-3bd4G!b@PfqquNEn=$ zfRH9gpTh|jxuflIM@qflbbXJu_g=aG|BfMzAR=@Zz}+d^i1(+2u)@c?@`EaaD!nm88COVxn!pQ4f?m?f^I0sScn zMQ)XoiD25jS=C;LYwU1`^ag|#aUn??Ov{^4drj`(W%BubNPGUE%GQ(a2qvy8E_H!j zKHpuycwR;AHM&DF_5n9D+W6}xRb5B?>0}QLI0m&h;12%=c9gSLusgX3uDo34%Vs7fmj#z<6GTq-}P7n?Q54%fAGwbcu(_3(n%L(;(e8&RHF!@|*=k zMC=u#neZ@_xA>!L!1aaK4zA)>?=7QkS`I}JkyPk{h|1pp6IN%jSl(+jyL_w&8b;6V h!Nh*wVzF2bz&Fn9DSFY|z?A?1002ovPDHLkV1jHZ_K*Mo diff --git a/src-backup/main/resources/assets/alchemicalwizardry/textures/models/WingedAngel.png b/src-backup/main/resources/assets/alchemicalwizardry/textures/models/WingedAngel.png deleted file mode 100644 index 4ae2cfd584c3a62b07841b88b374e2d1af7e2086..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3549 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 Xut2vg5yR&i00000NkvXXu0mjfEE~6? diff --git a/src-backup/main/resources/assets/alchemicalwizardry/textures/models/WingedFireDemon.png b/src-backup/main/resources/assets/alchemicalwizardry/textures/models/WingedFireDemon.png deleted file mode 100644 index 0e365babb59fb7b940e83973bdc14b72c31fee8e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5121 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 j^h{nX363>00000NkvXXu0mjfg>|Lt diff --git a/src-backup/main/resources/assets/alchemicalwizardry/textures/models/WritingTable.png b/src-backup/main/resources/assets/alchemicalwizardry/textures/models/WritingTable.png deleted file mode 100644 index 5aa176e43e0902744d4585bffc51a7c53d0309b7..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1851 zcmV-B2gLY^P)pF2XskIMF-sp0v03{LG#rl000KsNklVr^#)Ty#Iw*pahHC!AB?z=zEnW32T-Y$5(Ys-;B%>6d^zIT6|Gc(`$&de1mKKMpw0K*h$lJe`n55f!J zgKu`$k46fDnqfc?Xkx%Hnkc9N7*T{V8)nr1Km<}0MEo8QVmQ8*4Wd8@zMa*eXo0Oo zpcLbme_cJZ&)c_e+r4}DUSlom@uLz>Jr|RE((@{iule^CEyL$npCm z2tgoJ!$1Icn2pDq3SxexZrOk)Kof?~j;~$2wmCmII5_p5x&hJ; z-dq|?3}YY!qfJT>_|aRP#R$Lp^lT>dgLxE#xWTxQQvoxNdL;lM2xiUz2_Ogp$A*be z)Zf=NLQ|tYWMgL;Ianz>op3Z7T8!BE_4lq`<>DJ}P)cDK22x6!{k3h&_3PK^x{eql z`%j+m$B#eWTu=L#-=#~5u@u@E+0WU3=Zu=cr++w;0dHMO91cn@&?KQt!jr>7P^W?! zG>s6}j;PL9J1SI`6oWAfkslSggLaIh+r z0!@N3yEag@AqF?rs?pg%)KfwYB8Hg}M9^X!nRxCS1vO#J;oKK& zF9WMV5rbTeT#OKeDH}l`D~K3T+>jx=Q-e4o)I9G?f#~WI+tZ>{US3xg9*@l$t&1gb#B8Q=?>KoQ%W4pUq`m23-ip zTvG)C~>r?|(;r|GSSq`rdOXB()jJhKZ3U!|+lVgP<5G z30sXzcrM3=N=+9LhzKfdSQo2~SZ&Ti@c%-982!Gkd1V41@4vmYVe;s=P3_Fo+uAM` ze)EsB8=?2#?#uu!9<3C-rVHL2b**^xw9+2vvq!ZH!f1w;^~r zTvUUwvkd&=Fa0Z(f@EqWQA{9D{w}QrcH;ah&?Pt;{Qj`W)9|iJZScjDfArI2sf| z*jfnFWRwhDE1NEF(F#%FurIWYFsM;Z3`DV(0jo@ydZ&@9AA`V{3j!?KP}lwf`hXXm z`kvbfj@|~xIt}(?6)}vXq1N}{5%eH?Q?%^Fg)F#}hDj^?+}O1i^rLM?mo~}f{}kn= z2e(rl@TxDkuoZnoHE)XrNYT|@M3Cl~-bHOQ2lS)s{**xsLUbks0p(cqmR;E7e~Q9Z z7Z@fZR$X~z5&ZGD7Isi4y6skYIv7oWu^4R>ioxM%Tb2Ag(kX?_LI>>HqFv{U|O$tIMvb!TsQ~NGM_Q+$Mc1LKm>Jt! zTm1InLwTJXaB3A;b{$>Uad3D@KMX9ojt~NeM@O$61H!YzP2&dFGS;TV)?z^^g_EC} zUK@w4?fvsB?SMy*9`$Y8 z()aywdz%u|H2KGg8u^?v(=>7O=1mJB@c8j#_V@Qs)se511Fl@TvIDI4_V%>0p##$1 z-ri@=d#K*G{qW(#&*nNZW5$dbGyb=+ySw}C7w!aS%$PA_#*7&=X3Ur|W5$dbGiJ<~ pF=NJz88c?gm@#9v+002ovPDHLkV1kE7a=ZWl diff --git a/src-backup/main/resources/assets/alchemicalwizardry/textures/models/altar.png b/src-backup/main/resources/assets/alchemicalwizardry/textures/models/altar.png deleted file mode 100644 index 6b6ac12e2fc7b3b2884e97a899c6630c43da9e5a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 59034 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 diff --git a/src-backup/main/resources/assets/alchemicalwizardry/textures/models/blood.png b/src-backup/main/resources/assets/alchemicalwizardry/textures/models/blood.png deleted file mode 100644 index 05cfdd4e85dfb8e2f646d98e518acf8529bb1e5f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 576 zcmV-G0>AxWFU8GbZ8()Nlj2>E@cM*00E>)L_t(I%T1GAPQx$| zguk^nX(&R7n{aDR!Zo-7LJ_1*op_grwVOUzk*%Ha{5W#^`1s`S5BvJU*A-EPaRdN& zs1=3*d3!^ipFsow83xk(JIXv`-{1J}ZvfnJ_ZX}-&Ps{%Z3D9)m?qNYg8H)HKR@{8 zf{Y^$G2|X9YK2xLU1-1=xhLqyQoMR9|O)1A7Ko#a0WnJNV#Y+kQ z?m=P}fN=~3`yNEw7H3aS__CnXdYA0(NJ=qm1|o<%ZWjAaQY-8`e!ZgoCJ_l{k;7-s z2e6dL0T8nY^mZe8DPV@TWXT!HIeg|Es}W!p7Me25P)fngkRBG`Jt%j$-41YXr>|O3 ze*j9(_`V||@fNo2sIO<0Qp}4$N+juzru)tL$N+FNyuX7MED%Je6ADCqIm0jnuoLzc zy5tUQV3{V;{jj}2Q9YVy3V0-FmSvinf_+CGeW}J8hL{Ds`9&le5VkKtNr!0#A O0000. Subcommands are tps, track -commands.forge.usage.tracking=Use /forge track . Valid types are te (Tile Entities). Duration is < 60. -commands.forge.tps.summary=%s : Mean tick time: %d ms. Mean TPS: %d - -commands.forge.tracking.te.enabled=Tile Entity tracking enabled for %d seconds. \ No newline at end of file diff --git a/src-backup/main/resources/assets/forge/lang/es_ES.lang b/src-backup/main/resources/assets/forge/lang/es_ES.lang deleted file mode 100644 index b7c198ee..00000000 --- a/src-backup/main/resources/assets/forge/lang/es_ES.lang +++ /dev/null @@ -1,5 +0,0 @@ -commands.forge.usage=Usa /forge . Los subcomandos son tps, track -commands.forge.usage.tracking=Usa /forge track . Los tipos válidos te (Tile Entities). La duración es < 60. -commands.forge.tps.summary=%s : Tiempo de tick medio: %d ms. TPS medio: %d - -commands.forge.tracking.te.enabled=Rastreo de Tile Entity activado durante %d segundos. diff --git a/src-backup/main/resources/assets/forge/lang/fr_FR.lang b/src-backup/main/resources/assets/forge/lang/fr_FR.lang deleted file mode 100644 index bd01daa9..00000000 --- a/src-backup/main/resources/assets/forge/lang/fr_FR.lang +++ /dev/null @@ -1,5 +0,0 @@ -commands.forge.usage=Utilisez /forge . Les sous-commandes sont tps, track -commands.forge.usage.tracking=Utilisez /forge track . Les types valides sont te (Tile Entities). La durée doit être inférieur à 60. -commands.forge.tps.summary=%s : Duré de tick : %d ms. TPS moyen : %d - -commands.forge.tracking.te.enabled=Trackage des Tile Entity activé pour %d secondes. \ No newline at end of file diff --git a/src-backup/main/resources/mcmod.info b/src-backup/main/resources/mcmod.info deleted file mode 100644 index 7000cb30..00000000 --- a/src-backup/main/resources/mcmod.info +++ /dev/null @@ -1,16 +0,0 @@ -[ -{ - "modid": "AWWayofTime", - "name": "Blood Magic: Alchemical Wizardry", - "description": "Example placeholder mod.", - "version": "${version}", - "mcversion": "${mcversion}", - "url": "", - "updateUrl": "", - "authors": ["WayofTime"], - "credits": "", - "logoFile": "", - "screenshots": [], - "dependencies": [] -} -]