diff --git a/src/main/java/WayofTime/bloodmagic/block/BlockRitualController.java b/src/main/java/WayofTime/bloodmagic/block/BlockRitualController.java index af666420..00bab7a9 100644 --- a/src/main/java/WayofTime/bloodmagic/block/BlockRitualController.java +++ b/src/main/java/WayofTime/bloodmagic/block/BlockRitualController.java @@ -9,6 +9,7 @@ import net.minecraft.block.SoundType; import net.minecraft.block.material.Material; import net.minecraft.block.state.IBlockState; import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.init.Blocks; import net.minecraft.item.ItemStack; import net.minecraft.tileentity.TileEntity; import net.minecraft.util.EnumFacing; @@ -17,8 +18,8 @@ import net.minecraft.util.ResourceLocation; import net.minecraft.util.math.BlockPos; import net.minecraft.world.Explosion; import net.minecraft.world.World; - import net.minecraftforge.fml.common.Optional; + import org.apache.commons.lang3.tuple.ImmutablePair; import org.apache.commons.lang3.tuple.Pair; @@ -104,9 +105,8 @@ public class BlockRitualController extends BlockStringContainer implements IVari public void onBlockDestroyedByExplosion(World world, BlockPos pos, Explosion explosion) { TileEntity tile = world.getTileEntity(pos); - IBlockState state = world.getBlockState(pos); - if (getMetaFromState(state) == 0 && tile instanceof TileMasterRitualStone) + if (tile instanceof TileMasterRitualStone) ((TileMasterRitualStone) tile).stopRitual(Ritual.BreakType.EXPLOSION); } diff --git a/src/main/java/WayofTime/bloodmagic/proxy/ClientProxy.java b/src/main/java/WayofTime/bloodmagic/proxy/ClientProxy.java index 50eedc4e..2ab25450 100644 --- a/src/main/java/WayofTime/bloodmagic/proxy/ClientProxy.java +++ b/src/main/java/WayofTime/bloodmagic/proxy/ClientProxy.java @@ -33,9 +33,11 @@ import WayofTime.bloodmagic.client.render.RenderAltar; import WayofTime.bloodmagic.client.render.RenderDemonCrucible; import WayofTime.bloodmagic.client.render.RenderItemRoutingNode; import WayofTime.bloodmagic.client.render.entity.BloodLightRenderFactory; +import WayofTime.bloodmagic.client.render.entity.MeteorRenderFactory; import WayofTime.bloodmagic.client.render.entity.SentientArrowRenderFactory; import WayofTime.bloodmagic.client.render.entity.SoulSnareRenderFactory; import WayofTime.bloodmagic.entity.projectile.EntityBloodLight; +import WayofTime.bloodmagic.entity.projectile.EntityMeteor; import WayofTime.bloodmagic.entity.projectile.EntitySentientArrow; import WayofTime.bloodmagic.entity.projectile.EntitySoulSnare; import WayofTime.bloodmagic.registry.ModBlocks; @@ -91,6 +93,7 @@ public class ClientProxy extends CommonProxy RenderingRegistry.registerEntityRenderingHandler(EntitySoulSnare.class, new SoulSnareRenderFactory()); RenderingRegistry.registerEntityRenderingHandler(EntitySentientArrow.class, new SentientArrowRenderFactory()); RenderingRegistry.registerEntityRenderingHandler(EntityBloodLight.class, new BloodLightRenderFactory()); + RenderingRegistry.registerEntityRenderingHandler(EntityMeteor.class, new MeteorRenderFactory()); ShaderHelper.init(); } diff --git a/src/main/java/WayofTime/bloodmagic/registry/ModEntities.java b/src/main/java/WayofTime/bloodmagic/registry/ModEntities.java index 663e0312..80acbffd 100644 --- a/src/main/java/WayofTime/bloodmagic/registry/ModEntities.java +++ b/src/main/java/WayofTime/bloodmagic/registry/ModEntities.java @@ -1,10 +1,11 @@ package WayofTime.bloodmagic.registry; +import net.minecraftforge.fml.common.registry.EntityRegistry; import WayofTime.bloodmagic.BloodMagic; import WayofTime.bloodmagic.entity.projectile.EntityBloodLight; +import WayofTime.bloodmagic.entity.projectile.EntityMeteor; import WayofTime.bloodmagic.entity.projectile.EntitySentientArrow; import WayofTime.bloodmagic.entity.projectile.EntitySoulSnare; -import net.minecraftforge.fml.common.registry.EntityRegistry; public class ModEntities { @@ -15,5 +16,6 @@ public class ModEntities EntityRegistry.registerModEntity(EntityBloodLight.class, "BloodLight", id++, BloodMagic.instance, 64, 20, true); EntityRegistry.registerModEntity(EntitySoulSnare.class, "SoulSnare", id++, BloodMagic.instance, 64, 1, true); EntityRegistry.registerModEntity(EntitySentientArrow.class, "SoulArrow", id++, BloodMagic.instance, 64, 1, true); + EntityRegistry.registerModEntity(EntityMeteor.class, "Meteor", id++, BloodMagic.instance, 64, 1, true); } } diff --git a/src/main/java/WayofTime/bloodmagic/registry/ModRituals.java b/src/main/java/WayofTime/bloodmagic/registry/ModRituals.java index 347dc718..6bd4a3de 100644 --- a/src/main/java/WayofTime/bloodmagic/registry/ModRituals.java +++ b/src/main/java/WayofTime/bloodmagic/registry/ModRituals.java @@ -1,5 +1,10 @@ package WayofTime.bloodmagic.registry; +import java.util.ArrayList; +import java.util.List; + +import net.minecraft.init.Blocks; +import net.minecraft.item.ItemStack; import WayofTime.bloodmagic.ConfigHandler; import WayofTime.bloodmagic.api.BlockStack; import WayofTime.bloodmagic.api.registry.HarvestRegistry; @@ -8,7 +13,37 @@ import WayofTime.bloodmagic.api.registry.RitualRegistry; import WayofTime.bloodmagic.api.ritual.Ritual; import WayofTime.bloodmagic.api.ritual.imperfect.ImperfectRitual; import WayofTime.bloodmagic.item.alchemy.ItemCuttingFluid; -import WayofTime.bloodmagic.ritual.*; +import WayofTime.bloodmagic.meteor.MeteorComponent; +import WayofTime.bloodmagic.meteor.MeteorRegistry; +import WayofTime.bloodmagic.ritual.RitualAltarBuilder; +import WayofTime.bloodmagic.ritual.RitualAnimalGrowth; +import WayofTime.bloodmagic.ritual.RitualArmourEvolve; +import WayofTime.bloodmagic.ritual.RitualCobblestone; +import WayofTime.bloodmagic.ritual.RitualContainment; +import WayofTime.bloodmagic.ritual.RitualCrushing; +import WayofTime.bloodmagic.ritual.RitualCrystalHarvest; +import WayofTime.bloodmagic.ritual.RitualExpulsion; +import WayofTime.bloodmagic.ritual.RitualFeatheredKnife; +import WayofTime.bloodmagic.ritual.RitualFelling; +import WayofTime.bloodmagic.ritual.RitualForsakenSoul; +import WayofTime.bloodmagic.ritual.RitualFullStomach; +import WayofTime.bloodmagic.ritual.RitualGreenGrove; +import WayofTime.bloodmagic.ritual.RitualHarvest; +import WayofTime.bloodmagic.ritual.RitualInterdiction; +import WayofTime.bloodmagic.ritual.RitualJumping; +import WayofTime.bloodmagic.ritual.RitualLava; +import WayofTime.bloodmagic.ritual.RitualMagnetic; +import WayofTime.bloodmagic.ritual.RitualMeteor; +import WayofTime.bloodmagic.ritual.RitualPlacer; +import WayofTime.bloodmagic.ritual.RitualPortal; +import WayofTime.bloodmagic.ritual.RitualPump; +import WayofTime.bloodmagic.ritual.RitualRegeneration; +import WayofTime.bloodmagic.ritual.RitualSpeed; +import WayofTime.bloodmagic.ritual.RitualSuppression; +import WayofTime.bloodmagic.ritual.RitualUpgradeRemove; +import WayofTime.bloodmagic.ritual.RitualWater; +import WayofTime.bloodmagic.ritual.RitualWellOfSuffering; +import WayofTime.bloodmagic.ritual.RitualZephyr; import WayofTime.bloodmagic.ritual.harvest.HarvestHandlerPlantable; import WayofTime.bloodmagic.ritual.harvest.HarvestHandlerStem; import WayofTime.bloodmagic.ritual.harvest.HarvestHandlerTall; @@ -16,7 +51,6 @@ import WayofTime.bloodmagic.ritual.imperfect.ImperfectRitualNight; import WayofTime.bloodmagic.ritual.imperfect.ImperfectRitualRain; import WayofTime.bloodmagic.ritual.imperfect.ImperfectRitualResistance; import WayofTime.bloodmagic.ritual.imperfect.ImperfectRitualZombie; -import net.minecraft.init.Blocks; public class ModRituals { @@ -50,6 +84,8 @@ public class ModRituals public static Ritual altarBuilderRitual; public static Ritual portalRitual; + public static Ritual meteorRitual; + public static ImperfectRitual imperfectNight; public static ImperfectRitual imperfectRain; public static ImperfectRitual imperfectResistance; @@ -115,9 +151,23 @@ public class ModRituals RitualRegistry.registerRitual(altarBuilderRitual, ConfigHandler.altarBuilderRitual); portalRitual = new RitualPortal(); RitualRegistry.registerRitual(portalRitual, ConfigHandler.portalRitual); + meteorRitual = new RitualMeteor(); + RitualRegistry.registerRitual(meteorRitual, true); RitualCrushing.registerCuttingFluid(ItemCuttingFluid.getStack(ItemCuttingFluid.BASIC), 250, 0.5); RitualCrushing.registerCuttingFluid(ItemCuttingFluid.getStack(ItemCuttingFluid.EXPLOSIVE), 25, 0.05); + + List ironMeteorList = new ArrayList(); + ironMeteorList.add(new MeteorComponent(400, "oreIron")); + ironMeteorList.add(new MeteorComponent(200, "oreCopper")); + ironMeteorList.add(new MeteorComponent(140, "oreTin")); + ironMeteorList.add(new MeteorComponent(70, "oreSilver")); + ironMeteorList.add(new MeteorComponent(80, "oreLead")); + ironMeteorList.add(new MeteorComponent(30, "oreGold")); + ironMeteorList.add(new MeteorComponent(60, "oreLapis")); + ironMeteorList.add(new MeteorComponent(100, "oreRedstone")); + + MeteorRegistry.registerMeteor(new ItemStack(Blocks.IRON_BLOCK), ironMeteorList, 15, 5, 1000); } public static void initImperfectRituals() diff --git a/src/main/resources/assets/bloodmagic/lang/en_US.lang b/src/main/resources/assets/bloodmagic/lang/en_US.lang index f1e78f78..2062c505 100644 --- a/src/main/resources/assets/bloodmagic/lang/en_US.lang +++ b/src/main/resources/assets/bloodmagic/lang/en_US.lang @@ -455,6 +455,7 @@ ritual.BloodMagic.armourEvolveRitual=Ritual of Living Evolution ritual.BloodMagic.animalGrowthRitual=Ritual of the Shepherd ritual.BloodMagic.forsakenSoulRitual=Gathering of the Forsaken Souls ritual.BloodMagic.crystalHarvestRitual=Crack of the Fractured Crystal +ritual.BloodMagic.meteorRitual=Mark of the Falling Tower ritual.BloodMagic.cobblestoneRitual=Le Vulcanos Frigius ritual.BloodMagic.placerRitual=Laying of the Filler @@ -495,6 +496,7 @@ ritual.BloodMagic.fellingRitual.info=A standard tree-cutting machine, this ritua ritual.BloodMagic.pumpRitual.info=Looks around the world and grabs fluids from the defined area. Will only remove and put the fluid into the connected tank if the tank has at least a bucket's worth of the same fluid. ritual.BloodMagic.altarBuilderRitual.info=Builds an altar out of the components inside of the connected inventory. ritual.BloodMagic.portalRitual.info=Creates a portal network based on the activator and the immediately surrounding blocks. Blocks can be changed after activation without changing the network of portals, and portals with the same "key" will link together. +ritual.BloodMagic.meteorRitual.info=Consumes an item inside of its item range to summon a meteor full of resources from the sky, aimed directly at the ritual. ritual.BloodMagic.waterRitual.waterRange.info=(Water) The area that the ritual will place water source blocks. ritual.BloodMagic.lavaRitual.lavaRange.info=(Lava) The area that the ritual will place lava source blocks.