diff --git a/src/main/java/WayofTime/bloodmagic/block/BlockBloodLight.java b/src/main/java/WayofTime/bloodmagic/block/BlockBloodLight.java index 56aefe9a..013462a2 100644 --- a/src/main/java/WayofTime/bloodmagic/block/BlockBloodLight.java +++ b/src/main/java/WayofTime/bloodmagic/block/BlockBloodLight.java @@ -1,6 +1,5 @@ package WayofTime.bloodmagic.block; -import WayofTime.bloodmagic.BloodMagic; import WayofTime.bloodmagic.api.Constants; import net.minecraft.block.Block; import net.minecraft.block.material.Material; @@ -19,13 +18,11 @@ import java.util.Random; public class BlockBloodLight extends Block { - public BlockBloodLight() { super(Material.cloth); setUnlocalizedName(Constants.Mod.MODID + ".bloodLight"); - setCreativeTab(BloodMagic.tabBloodMagic); } @Override diff --git a/src/main/java/WayofTime/bloodmagic/block/BlockBloodRune.java b/src/main/java/WayofTime/bloodmagic/block/BlockBloodRune.java index eb11ec62..d0b856de 100644 --- a/src/main/java/WayofTime/bloodmagic/block/BlockBloodRune.java +++ b/src/main/java/WayofTime/bloodmagic/block/BlockBloodRune.java @@ -7,7 +7,6 @@ import net.minecraft.block.material.Material; public class BlockBloodRune extends BlockString { - public static final String[] names = { "blank", "speed", "efficiency", "sacrifice", "selfSacrifice", "displacement", "capacity", "augCapacity", "orb", "acceleration" }; public BlockBloodRune() diff --git a/src/main/java/WayofTime/bloodmagic/item/ItemBindable.java b/src/main/java/WayofTime/bloodmagic/item/ItemBindable.java index 27016912..1244cd22 100644 --- a/src/main/java/WayofTime/bloodmagic/item/ItemBindable.java +++ b/src/main/java/WayofTime/bloodmagic/item/ItemBindable.java @@ -25,7 +25,6 @@ import java.util.List; public class ItemBindable extends Item implements IBindable { - private int lpUsed; public ItemBindable() @@ -36,54 +35,65 @@ public class ItemBindable extends Item implements IBindable setMaxStackSize(1); } - public static boolean syphonBatteries(ItemStack stack, EntityPlayer player, int damageToBeDone) + public static boolean syphonNetwork(ItemStack stack, EntityPlayer player, int lpUsed) { + if (player == null) return false; + if (!player.worldObj.isRemote) { - return NetworkHelper.syphonAndDamage(NetworkHelper.getSoulNetwork(player, player.worldObj), damageToBeDone); - } else + return NetworkHelper.syphonAndDamage(NetworkHelper.getSoulNetwork(player, player.worldObj), lpUsed); + } + else { double posX = player.posX; double posY = player.posY; double posZ = player.posZ; - // SpellHelper.sendIndexedParticleToAllAround(player.worldObj, posX, - // posY, posZ, 20, player.worldObj.provider.getDimensionId(), 4, - // posX, posY, posZ); + // SpellHelper.sendIndexedParticleToAllAround(player.worldObj, posX,posY, posZ, 20, player.worldObj.provider.getDimensionId(), 4, posX, posY, posZ); player.worldObj.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 + (player.worldObj.rand.nextFloat() - player.worldObj.rand.nextFloat()) * 0.8F); } return true; } - public static void hurtPlayer(EntityPlayer user, int energySyphoned) + public static boolean syphonNetwork(ItemStack itemStack, int lpUsed) { - if (energySyphoned < 100 && energySyphoned > 0) + if (itemStack.getItem() instanceof ItemBindable) { - if (!user.capabilities.isCreativeMode) - { - user.attackEntityFrom(BloodMagicAPI.getDamageSource(), 0F); // Emulate - // an - // attack - user.setHealth(user.getHealth() - 1); + ItemBindable itemBindable = (ItemBindable) itemStack.getItem(); + return !Strings.isNullOrEmpty(itemBindable.getBindableOwner(itemStack)) && syphonNetwork(itemStack, PlayerHelper.getPlayerFromUUID(itemBindable.getBindableOwner(itemStack)), lpUsed); + } - if (user.getHealth() <= 0.0005f) - user.onDeath(BloodMagicAPI.getDamageSource()); - } - } else if (energySyphoned >= 100) + return false; + } + + public static void hurtPlayer(EntityPlayer user, int lpSyphoned) + { + if (user != null) { - if (!user.capabilities.isCreativeMode) + if (lpSyphoned < 100 && lpSyphoned > 0) { - for (int i = 0; i < ((energySyphoned + 99) / 100); i++) + if (!user.capabilities.isCreativeMode) { - user.attackEntityFrom(BloodMagicAPI.getDamageSource(), 0F); // Emulate - // an - // attack + user.attackEntityFrom(BloodMagicAPI.getDamageSource(), 0F); // Emulate an attack user.setHealth(user.getHealth() - 1); - if (user.getHealth() <= 0.0005f) + if (user.getHealth() <= 0.0005f) user.onDeath(BloodMagicAPI.getDamageSource()); + } + } + else if (lpSyphoned >= 100) + { + if (!user.capabilities.isCreativeMode) + { + for (int i = 0; i < ((lpSyphoned + 99) / 100); i++) { - user.onDeath(BloodMagicAPI.getDamageSource()); - break; + user.attackEntityFrom(BloodMagicAPI.getDamageSource(), 0F); // Emulate an attack + user.setHealth(user.getHealth() - 1); + + if (user.getHealth() <= 0.0005f) + { + user.onDeath(BloodMagicAPI.getDamageSource()); + break; + } } } } @@ -134,8 +144,8 @@ public class ItemBindable extends Item implements IBindable for (int i = 0; i < damage; i++) { player.attackEntityFrom(BloodMagicAPI.getDamageSource(), 0F); // Emulate - // an - // attack + // an + // attack player.setHealth(player.getHealth() - 1); if (player.getHealth() <= 0.0005) diff --git a/src/main/java/WayofTime/bloodmagic/item/ItemBoundSword.java b/src/main/java/WayofTime/bloodmagic/item/ItemBoundSword.java index ee800fbc..8bfb8b0e 100644 --- a/src/main/java/WayofTime/bloodmagic/item/ItemBoundSword.java +++ b/src/main/java/WayofTime/bloodmagic/item/ItemBoundSword.java @@ -27,7 +27,6 @@ import java.util.List; public class ItemBoundSword extends ItemSword { - private int lpUsed; public ItemBoundSword() @@ -73,7 +72,7 @@ public class ItemBoundSword extends ItemSword { if (player.isSneaking()) setActivated(stack, !getActivated(stack)); - if (getActivated(stack) && ItemBindable.syphonBatteries(stack, player, lpUsed)) + if (getActivated(stack) && ItemBindable.syphonNetwork(stack, player, lpUsed)) return stack; if (!player.isSneaking() && getActivated(stack)) diff --git a/src/main/java/WayofTime/bloodmagic/item/ItemBoundTool.java b/src/main/java/WayofTime/bloodmagic/item/ItemBoundTool.java index 01b08c55..d720a3e7 100644 --- a/src/main/java/WayofTime/bloodmagic/item/ItemBoundTool.java +++ b/src/main/java/WayofTime/bloodmagic/item/ItemBoundTool.java @@ -27,7 +27,6 @@ import java.util.Set; @Getter public class ItemBoundTool extends ItemBindable { - private Set effectiveBlocks; protected final String tooltipBase; private final String name; @@ -79,17 +78,17 @@ public class ItemBoundTool extends ItemBindable // if (!world.isRemote) { - if (player.isSneaking()) - setActivated(stack, !getActivated(stack)); + if (player.isSneaking()) setActivated(stack, !getActivated(stack)); // if (getActivated(stack) && ItemBindable.syphonBatteries(stack, // player, getLPUsed())) // return stack; +// if (getActivated(stack) && ItemBindable.syphonNetwork(stack, player, getLPUsed())) +// return stack; if (!player.isSneaking() && getActivated(stack)) { BoundToolEvent.Charge event = new BoundToolEvent.Charge(player, stack); - if (MinecraftForge.EVENT_BUS.post(event)) - return event.result; + if (MinecraftForge.EVENT_BUS.post(event)) return event.result; player.setItemInUse(stack, this.getMaxItemUseDuration(stack)); beingHeldDown = true; @@ -102,7 +101,7 @@ public class ItemBoundTool extends ItemBindable @Override public boolean onItemUseFirst(ItemStack stack, EntityPlayer player, World world, BlockPos blockPos, EnumFacing side, float hitX, float hitY, float hitZ) { - if (BindableHelper.checkAndSetItemOwner(stack, player) && ItemBindable.syphonBatteries(stack, player, getLPUsed())) + if (BindableHelper.checkAndSetItemOwner(stack, player) && ItemBindable.syphonNetwork(stack, player, getLPUsed())) return false; return false; @@ -123,8 +122,7 @@ public class ItemBoundTool extends ItemBindable { int i = this.getMaxItemUseDuration(stack) - timeLeft; BoundToolEvent.Release event = new BoundToolEvent.Release(playerIn, stack, i); - if (MinecraftForge.EVENT_BUS.post(event)) - return; + if (MinecraftForge.EVENT_BUS.post(event)) return; i = event.charge; @@ -169,10 +167,8 @@ public class ItemBoundTool extends ItemBindable if (StatCollector.canTranslate(tooltipBase + "desc")) tooltip.add(TextHelper.localizeEffect(tooltipBase + "desc")); - if (getActivated(stack)) - tooltip.add(TextHelper.localize("tooltip.BloodMagic.activated")); - else - tooltip.add(TextHelper.localize("tooltip.BloodMagic.deactivated")); + if (getActivated(stack)) tooltip.add(TextHelper.localize("tooltip.BloodMagic.activated")); + else tooltip.add(TextHelper.localize("tooltip.BloodMagic.deactivated")); super.addInformation(stack, player, tooltip, advanced); } diff --git a/src/main/java/WayofTime/bloodmagic/item/ItemLavaCrystal.java b/src/main/java/WayofTime/bloodmagic/item/ItemLavaCrystal.java new file mode 100644 index 00000000..751b5235 --- /dev/null +++ b/src/main/java/WayofTime/bloodmagic/item/ItemLavaCrystal.java @@ -0,0 +1,69 @@ +package WayofTime.bloodmagic.item; + +import WayofTime.bloodmagic.api.Constants; +import WayofTime.bloodmagic.api.util.helper.PlayerHelper; +import com.google.common.base.Strings; +import net.minecraft.item.Item; +import net.minecraft.item.ItemStack; +import net.minecraft.nbt.NBTTagCompound; +import net.minecraft.server.MinecraftServer; +import net.minecraftforge.fml.common.IFuelHandler; + +public class ItemLavaCrystal extends ItemBindable implements IFuelHandler +{ + public ItemLavaCrystal() + { + super(); + setUnlocalizedName(Constants.Mod.MODID + ".lavaCrystal"); + setLPUsed(1); + } + + @Override + public ItemStack getContainerItem(ItemStack itemStack) + { + syphonNetwork(itemStack, getLPUsed()); + ItemStack copiedStack = itemStack.copy(); + copiedStack.setItemDamage(copiedStack.getItemDamage()); + copiedStack.stackSize = 1; + return copiedStack; + } + + @Override + public boolean hasContainerItem(ItemStack itemStack) + { + return true; + } + + @Override + public int getBurnTime(ItemStack fuel) + { + if (fuel == null) + { + return 0; + } + + Item fuelItem = fuel.getItem(); + + if (fuelItem instanceof ItemLavaCrystal) + { + if (syphonNetwork(fuel, getLPUsed())) + { + return 1; + } + else + { + NBTTagCompound tag = fuel.getTagCompound(); + + if (tag == null || MinecraftServer.getServer() == null || MinecraftServer.getServer().getConfigurationManager() == null) + return 0; + + if (Strings.isNullOrEmpty(((ItemLavaCrystal) fuelItem).getBindableOwner(fuel))) return 0; + else hurtPlayer(PlayerHelper.getPlayerFromUUID(getBindableOwner(fuel)), getLPUsed()); + + return 0; + } + } + + return 0; + } +} diff --git a/src/main/java/WayofTime/bloodmagic/item/gear/ItemPackSacrifice.java b/src/main/java/WayofTime/bloodmagic/item/gear/ItemPackSacrifice.java index e9fbf81e..71b88eb3 100644 --- a/src/main/java/WayofTime/bloodmagic/item/gear/ItemPackSacrifice.java +++ b/src/main/java/WayofTime/bloodmagic/item/gear/ItemPackSacrifice.java @@ -18,7 +18,6 @@ import java.util.List; public class ItemPackSacrifice extends ItemArmor implements IAltarManipulator { - public final int CONVERSION = 100; // How much LP per heart public final int CAPACITY = 10000; // Max LP storage diff --git a/src/main/java/WayofTime/bloodmagic/item/sigil/ItemSigilAir.java b/src/main/java/WayofTime/bloodmagic/item/sigil/ItemSigilAir.java index f4453d99..c47ea926 100644 --- a/src/main/java/WayofTime/bloodmagic/item/sigil/ItemSigilAir.java +++ b/src/main/java/WayofTime/bloodmagic/item/sigil/ItemSigilAir.java @@ -36,7 +36,7 @@ public class ItemSigilAir extends ItemSigilBase player.fallDistance = 0; if (!player.capabilities.isCreativeMode) - this.setUnusable(stack, !syphonBatteries(stack, player, getLPUsed())); + this.setUnusable(stack, !syphonNetwork(stack, player, getLPUsed())); } return super.onItemRightClick(stack, world, player); diff --git a/src/main/java/WayofTime/bloodmagic/item/sigil/ItemSigilBloodLight.java b/src/main/java/WayofTime/bloodmagic/item/sigil/ItemSigilBloodLight.java index 7f82b84a..de42af9c 100644 --- a/src/main/java/WayofTime/bloodmagic/item/sigil/ItemSigilBloodLight.java +++ b/src/main/java/WayofTime/bloodmagic/item/sigil/ItemSigilBloodLight.java @@ -21,7 +21,7 @@ public class ItemSigilBloodLight extends ItemSigilBase @Override public ItemStack onItemRightClick(ItemStack stack, World world, EntityPlayer player) { - if (BindableHelper.checkAndSetItemOwner(stack, player) && ItemBindable.syphonBatteries(stack, player, getLPUsed() * 5) && !world.isRemote) + if (BindableHelper.checkAndSetItemOwner(stack, player) && ItemBindable.syphonNetwork(stack, player, getLPUsed() * 5) && !world.isRemote) world.spawnEntityInWorld(new EntityBloodLight(world, player)); return stack; @@ -30,10 +30,9 @@ public class ItemSigilBloodLight extends ItemSigilBase @Override public boolean onItemUseFirst(ItemStack stack, EntityPlayer player, World world, BlockPos blockPos, EnumFacing side, float hitX, float hitY, float hitZ) { - if (world.isRemote) - return false; + if (world.isRemote) return false; - if (BindableHelper.checkAndSetItemOwner(stack, player) && ItemBindable.syphonBatteries(stack, player, getLPUsed())) + if (BindableHelper.checkAndSetItemOwner(stack, player) && ItemBindable.syphonNetwork(stack, player, getLPUsed())) { BlockPos newPos = blockPos.offset(side); diff --git a/src/main/java/WayofTime/bloodmagic/item/sigil/ItemSigilLava.java b/src/main/java/WayofTime/bloodmagic/item/sigil/ItemSigilLava.java index 0fcfcd63..a2a284be 100644 --- a/src/main/java/WayofTime/bloodmagic/item/sigil/ItemSigilLava.java +++ b/src/main/java/WayofTime/bloodmagic/item/sigil/ItemSigilLava.java @@ -32,8 +32,7 @@ public class ItemSigilLava extends ItemSigilBase if (movingobjectposition != null) { ItemStack ret = net.minecraftforge.event.ForgeEventFactory.onBucketUse(player, world, stack, movingobjectposition); - if (ret != null) - return ret; + if (ret != null) return ret; if (movingobjectposition.typeOfHit == MovingObjectPosition.MovingObjectType.BLOCK) { @@ -56,7 +55,7 @@ public class ItemSigilLava extends ItemSigilBase return stack; } - if (this.canPlaceLava(world, blockpos1) && syphonBatteries(stack, player, getLPUsed()) && this.tryPlaceLava(world, blockpos1)) + if (this.canPlaceLava(world, blockpos1) && syphonNetwork(stack, player, getLPUsed()) && this.tryPlaceLava(world, blockpos1)) { return stack; } @@ -64,7 +63,7 @@ public class ItemSigilLava extends ItemSigilBase } if (!player.capabilities.isCreativeMode) - this.setUnusable(stack, !syphonBatteries(stack, player, getLPUsed())); + this.setUnusable(stack, !syphonNetwork(stack, player, getLPUsed())); } return stack; @@ -88,7 +87,7 @@ public class ItemSigilLava extends ItemSigilBase FluidStack fluid = new FluidStack(FluidRegistry.LAVA, 1000); int amount = ((IFluidHandler) tile).fill(side, fluid, false); - if (amount > 0 && syphonBatteries(stack, player, getLPUsed())) + if (amount > 0 && syphonNetwork(stack, player, getLPUsed())) { ((IFluidHandler) tile).fill(side, fluid, true); } @@ -106,7 +105,7 @@ public class ItemSigilLava extends ItemSigilBase return false; } - if (this.canPlaceLava(world, newPos) && syphonBatteries(stack, player, getLPUsed())) + if (this.canPlaceLava(world, newPos) && syphonNetwork(stack, player, getLPUsed())) { return this.tryPlaceLava(world, newPos); } @@ -119,10 +118,12 @@ public class ItemSigilLava extends ItemSigilBase if (!world.isAirBlock(blockPos) && world.getBlockState(blockPos).getBlock().getMaterial().isSolid()) { return false; - } else if ((world.getBlockState(blockPos).getBlock() == Blocks.lava || world.getBlockState(blockPos).getBlock() == Blocks.flowing_lava) && world.getBlockState(blockPos).getBlock().getMetaFromState(world.getBlockState(blockPos)) == 0) + } + else if ((world.getBlockState(blockPos).getBlock() == Blocks.lava || world.getBlockState(blockPos).getBlock() == Blocks.flowing_lava) && world.getBlockState(blockPos).getBlock().getMetaFromState(world.getBlockState(blockPos)) == 0) { return false; - } else + } + else { world.setBlockState(blockPos, Blocks.lava.getBlockState().getBaseState(), 3); return true; diff --git a/src/main/java/WayofTime/bloodmagic/item/sigil/ItemSigilToggleable.java b/src/main/java/WayofTime/bloodmagic/item/sigil/ItemSigilToggleable.java index 4381af7b..3752cd27 100644 --- a/src/main/java/WayofTime/bloodmagic/item/sigil/ItemSigilToggleable.java +++ b/src/main/java/WayofTime/bloodmagic/item/sigil/ItemSigilToggleable.java @@ -29,10 +29,8 @@ public class ItemSigilToggleable extends ItemSigilBase public void addInformation(ItemStack stack, EntityPlayer player, List tooltip, boolean advanced) { super.addInformation(stack, player, tooltip, advanced); - if (getActivated(stack)) - tooltip.add(TextHelper.localize("tooltip.BloodMagic.activated")); - else - tooltip.add(TextHelper.localize("tooltip.BloodMagic.deactivated")); + if (getActivated(stack)) tooltip.add(TextHelper.localize("tooltip.BloodMagic.activated")); + else tooltip.add(TextHelper.localize("tooltip.BloodMagic.deactivated")); } @Override @@ -40,10 +38,8 @@ public class ItemSigilToggleable extends ItemSigilBase { if (!world.isRemote && !isUnusable(stack)) { - if (player.isSneaking()) - setActivated(stack, !getActivated(stack)); - if (getActivated(stack) && ItemBindable.syphonBatteries(stack, player, getLPUsed())) - return stack; + if (player.isSneaking()) setActivated(stack, !getActivated(stack)); + if (getActivated(stack) && ItemBindable.syphonNetwork(stack, player, getLPUsed())) return stack; } return stack; @@ -52,7 +48,7 @@ public class ItemSigilToggleable extends ItemSigilBase @Override public boolean onItemUseFirst(ItemStack stack, EntityPlayer player, World world, BlockPos blockPos, EnumFacing side, float hitX, float hitY, float hitZ) { - if (BindableHelper.checkAndSetItemOwner(stack, player) && ItemBindable.syphonBatteries(stack, player, getLPUsed())) + if (BindableHelper.checkAndSetItemOwner(stack, player) && ItemBindable.syphonNetwork(stack, player, getLPUsed())) return onSigilUseFirst(stack, player, world, blockPos, side, hitX, hitY, hitZ); return false; @@ -70,7 +66,7 @@ public class ItemSigilToggleable extends ItemSigilBase { if (worldIn.getWorldTime() % 100 == 0) { - if (!ItemBindable.syphonBatteries(stack, (EntityPlayer) entityIn, getLPUsed())) + if (!ItemBindable.syphonNetwork(stack, (EntityPlayer) entityIn, getLPUsed())) { setActivated(stack, false); } diff --git a/src/main/java/WayofTime/bloodmagic/item/sigil/ItemSigilVoid.java b/src/main/java/WayofTime/bloodmagic/item/sigil/ItemSigilVoid.java index 2a0905b1..da261e04 100644 --- a/src/main/java/WayofTime/bloodmagic/item/sigil/ItemSigilVoid.java +++ b/src/main/java/WayofTime/bloodmagic/item/sigil/ItemSigilVoid.java @@ -14,7 +14,6 @@ import net.minecraftforge.fluids.IFluidHandler; public class ItemSigilVoid extends ItemSigilBase { - public ItemSigilVoid() { super("void", 50); @@ -30,8 +29,7 @@ public class ItemSigilVoid extends ItemSigilBase if (movingobjectposition != null) { ItemStack ret = net.minecraftforge.event.ForgeEventFactory.onBucketUse(player, world, stack, movingobjectposition); - if (ret != null) - return ret; + if (ret != null) return ret; if (movingobjectposition.typeOfHit == MovingObjectPosition.MovingObjectType.BLOCK) { @@ -52,19 +50,20 @@ public class ItemSigilVoid extends ItemSigilBase return stack; } - if (world.getBlockState(blockpos).getBlock().getMaterial().isLiquid() && syphonBatteries(stack, player, getLPUsed())) + if (world.getBlockState(blockpos).getBlock().getMaterial().isLiquid() && syphonNetwork(stack, player, getLPUsed())) { world.setBlockToAir(blockpos); return stack; } } - } else + } + else { return stack; } if (!player.capabilities.isCreativeMode) - this.setUnusable(stack, !syphonBatteries(stack, player, getLPUsed())); + this.setUnusable(stack, !syphonNetwork(stack, player, getLPUsed())); } return stack; @@ -88,7 +87,7 @@ public class ItemSigilVoid extends ItemSigilBase { FluidStack amount = ((IFluidHandler) tile).drain(side, 1000, false); - if (amount != null && amount.amount > 0 && syphonBatteries(stack, player, getLPUsed())) + if (amount != null && amount.amount > 0 && syphonNetwork(stack, player, getLPUsed())) { ((IFluidHandler) tile).drain(side, 1000, true); return true; @@ -104,7 +103,7 @@ public class ItemSigilVoid extends ItemSigilBase return false; } - if (world.getBlockState(newPos).getBlock() instanceof IFluidBlock && syphonBatteries(stack, player, getLPUsed())) + if (world.getBlockState(newPos).getBlock() instanceof IFluidBlock && syphonNetwork(stack, player, getLPUsed())) { world.setBlockToAir(newPos); return true; diff --git a/src/main/java/WayofTime/bloodmagic/item/sigil/ItemSigilWater.java b/src/main/java/WayofTime/bloodmagic/item/sigil/ItemSigilWater.java index 999bd345..0e7369b6 100644 --- a/src/main/java/WayofTime/bloodmagic/item/sigil/ItemSigilWater.java +++ b/src/main/java/WayofTime/bloodmagic/item/sigil/ItemSigilWater.java @@ -17,7 +17,6 @@ import net.minecraftforge.fluids.IFluidHandler; public class ItemSigilWater extends ItemSigilBase { - public ItemSigilWater() { super("water", 100); @@ -33,8 +32,7 @@ public class ItemSigilWater extends ItemSigilBase if (movingobjectposition != null) { ItemStack ret = net.minecraftforge.event.ForgeEventFactory.onBucketUse(player, world, stack, movingobjectposition); - if (ret != null) - return ret; + if (ret != null) return ret; if (movingobjectposition.typeOfHit == MovingObjectPosition.MovingObjectType.BLOCK) { @@ -57,7 +55,7 @@ public class ItemSigilWater extends ItemSigilBase return stack; } - if (this.canPlaceWater(world, blockpos1) && syphonBatteries(stack, player, getLPUsed()) && this.tryPlaceWater(world, blockpos1)) + if (this.canPlaceWater(world, blockpos1) && syphonNetwork(stack, player, getLPUsed()) && this.tryPlaceWater(world, blockpos1)) { return stack; } @@ -65,7 +63,7 @@ public class ItemSigilWater extends ItemSigilBase } if (!player.capabilities.isCreativeMode) - this.setUnusable(stack, !syphonBatteries(stack, player, getLPUsed())); + this.setUnusable(stack, !syphonNetwork(stack, player, getLPUsed())); } return stack; @@ -90,7 +88,7 @@ public class ItemSigilWater extends ItemSigilBase FluidStack fluid = new FluidStack(FluidRegistry.WATER, 1000); int amount = ((IFluidHandler) tile).fill(side, fluid, false); - if (amount > 0 && syphonBatteries(stack, player, getLPUsed())) + if (amount > 0 && syphonNetwork(stack, player, getLPUsed())) { ((IFluidHandler) tile).fill(side, fluid, true); } @@ -108,7 +106,7 @@ public class ItemSigilWater extends ItemSigilBase return false; } - if (this.canPlaceWater(world, newPos) && syphonBatteries(stack, player, getLPUsed())) + if (this.canPlaceWater(world, newPos) && syphonNetwork(stack, player, getLPUsed())) { return this.tryPlaceWater(world, newPos); } @@ -121,10 +119,12 @@ public class ItemSigilWater extends ItemSigilBase if (!world.isAirBlock(blockPos) && world.getBlockState(blockPos).getBlock().getMaterial().isSolid()) { return false; - } else if ((world.getBlockState(blockPos).getBlock() == Blocks.water || world.getBlockState(blockPos).getBlock() == Blocks.flowing_water) && world.getBlockState(blockPos).getBlock().getMetaFromState(world.getBlockState(blockPos)) == 0) + } + else if ((world.getBlockState(blockPos).getBlock() == Blocks.water || world.getBlockState(blockPos).getBlock() == Blocks.flowing_water) && world.getBlockState(blockPos).getBlock().getMetaFromState(world.getBlockState(blockPos)) == 0) { return false; - } else + } + else { return true; } @@ -139,7 +139,8 @@ public class ItemSigilWater extends ItemSigilBase if (!worldIn.isAirBlock(pos) && !flag) { return false; - } else + } + else { if (worldIn.provider.doesWaterVaporize()) { @@ -152,7 +153,8 @@ public class ItemSigilWater extends ItemSigilBase { worldIn.spawnParticle(EnumParticleTypes.SMOKE_LARGE, (double) i + Math.random(), (double) j + Math.random(), (double) k + Math.random(), 0.0D, 0.0D, 0.0D, 0); } - } else + } + else { if (!worldIn.isRemote && flag && !material.isLiquid()) { diff --git a/src/main/java/WayofTime/bloodmagic/registry/ModItems.java b/src/main/java/WayofTime/bloodmagic/registry/ModItems.java index 38465e2c..7d989a2c 100644 --- a/src/main/java/WayofTime/bloodmagic/registry/ModItems.java +++ b/src/main/java/WayofTime/bloodmagic/registry/ModItems.java @@ -17,7 +17,6 @@ import WayofTime.bloodmagic.util.helper.InventoryRenderHelper; public class ModItems { - public static Item bloodOrb; public static BloodOrb orbWeak; public static BloodOrb orbApprentice; @@ -38,6 +37,8 @@ public class ModItems public static Item daggerOfSacrifice; public static Item ritualDiviner; + public static Item lavaCrystal; + public static Item boundSword; public static Item boundPickaxe; public static Item boundAxe; @@ -102,6 +103,9 @@ public class ModItems daggerOfSacrifice = registerItem(new ItemDaggerOfSacrifice()); ritualDiviner = registerItem(new ItemRitualDiviner()); + + lavaCrystal = registerItem(new ItemLavaCrystal()); + GameRegistry.registerFuelHandler(new ItemLavaCrystal()); boundSword = registerItem(new ItemBoundSword()); boundPickaxe = registerItem(new ItemBoundPickaxe()); @@ -177,6 +181,8 @@ public class ModItems renderHelper.itemRender(ritualDiviner, 0); + renderHelper.itemRender(lavaCrystal); + renderHelper.itemRender(boundSword, 0); renderHelper.itemRender(boundSword, 1); renderHelper.itemRender(boundPickaxe, 0); diff --git a/src/main/java/WayofTime/bloodmagic/registry/ModRecipes.java b/src/main/java/WayofTime/bloodmagic/registry/ModRecipes.java index 07322d09..ed6ad07c 100644 --- a/src/main/java/WayofTime/bloodmagic/registry/ModRecipes.java +++ b/src/main/java/WayofTime/bloodmagic/registry/ModRecipes.java @@ -24,7 +24,6 @@ import net.minecraftforge.oredict.RecipeSorter; public class ModRecipes { - public static void init() { RecipeSorter.register(Constants.Mod.DOMAIN + "shapedorb", ShapedBloodOrbRecipe.class, RecipeSorter.Category.SHAPED, "before:minecraft:shapeless"); @@ -37,43 +36,69 @@ public class ModRecipes public static void addCraftingRecipes() { - GameRegistry.addRecipe(new ShapedBloodOrbRecipe(ItemComponent.getStack(ItemComponent.REAGENT_BINDING), "xox", "oSo", "xox", 'S', OrbRegistry.getOrbStack(ModItems.orbMagician), 'o', new ItemStack(Items.redstone), 'x', new ItemStack(Items.glowstone_dust))); - // Added for testing - GameRegistry.addRecipe(new ShapelessBloodOrbRecipe(new ItemStack(Items.gold_ingot), new ItemStack(ModItems.slate, 1, 1), OrbRegistry.getOrbStack(ModItems.orbApprentice))); - GameRegistry.addRecipe(new ShapedBloodOrbRecipe(new ItemStack(Items.diamond), " ", " s ", " o ", 's', new ItemStack(ModItems.slate), 'o', OrbRegistry.getOrbStack(ModItems.orbWeak))); - + GameRegistry.addRecipe(new ItemStack(ModItems.sacrificialDagger), "aaa", " ba", "c a", 'a', Blocks.glass, 'b', Items.gold_ingot, 'c', Items.iron_ingot); + GameRegistry.addRecipe(new ItemStack(ModBlocks.altar), "a a", "aba", "cdc", 'a', Blocks.stone, 'b', Blocks.furnace, 'c', Items.gold_ingot, 'd', Items.diamond); + GameRegistry.addRecipe(new ItemStack(ModItems.packSelfSacrifice), "aba", "cdc", "aea", 'a', Blocks.glass, 'b', Items.bucket, 'c', Items.flint, 'd', Items.leather_chestplate, 'e', ModItems.slate); + GameRegistry.addRecipe(new ItemStack(ModItems.packSacrifice), "aba", "cdc", "aea", 'a', Blocks.glass, 'b', Items.bucket, 'c', Items.iron_ingot, 'd', Items.leather_chestplate, 'e', ModItems.slate); GameRegistry.addRecipe(new ItemStack(ModItems.ritualDiviner), "dfd", "ase", "dwd", 'f', EnumRuneType.FIRE.getScribeStack(), 'a', EnumRuneType.AIR.getScribeStack(), 'w', EnumRuneType.WATER.getScribeStack(), 'e', EnumRuneType.EARTH.getScribeStack(), 'd', new ItemStack(Items.diamond), 's', new ItemStack(Items.stick)); + GameRegistry.addRecipe(new ItemStack(ModBlocks.bloodStoneBrick), "aa", "aa", 'a', new ItemStack(ModBlocks.bloodStoneBrick, 1, 1)); + GameRegistry.addShapelessRecipe(new ItemStack(ModBlocks.bloodStoneBrick, 1, 1), Blocks.stone, ModItems.bloodShard); + + GameRegistry.addRecipe(new ShapedBloodOrbRecipe(new ItemStack(ModItems.lavaCrystal), "aba", "bcb", "ded", 'a', Blocks.glass, 'b', Items.lava_bucket, 'c', OrbRegistry.getOrbStack(ModItems.orbWeak), 'd', Blocks.obsidian, 'e', Items.diamond)); + GameRegistry.addRecipe(new ShapedBloodOrbRecipe(ItemComponent.getStack(ItemComponent.REAGENT_BINDING), "xox", "oSo", "xox", 'S', OrbRegistry.getOrbStack(ModItems.orbMagician), 'o', new ItemStack(Items.redstone), 'x', new ItemStack(Items.glowstone_dust))); + GameRegistry.addRecipe(new ShapedBloodOrbRecipe(ItemComponent.getStack(ItemComponent.REAGENT_WATER), "aaa", "aba", "aca", 'a', Items.water_bucket, 'b', Items.sugar, 'c', OrbRegistry.getOrbStack(ModItems.orbWeak))); + GameRegistry.addRecipe(new ShapedBloodOrbRecipe(ItemComponent.getStack(ItemComponent.REAGENT_LAVA), "aba", "aca", "ada", 'a', Items.lava_bucket, 'b', Items.blaze_powder, 'c', Items.redstone, 'd', ModItems.lavaCrystal)); + GameRegistry.addRecipe(new ShapedBloodOrbRecipe(ItemComponent.getStack(ItemComponent.REAGENT_VOID), "aba", "aca", "ada", 'a', Items.bucket, 'b', Items.string, 'c', Items.gunpowder, 'd', OrbRegistry.getOrbStack(ModItems.orbApprentice))); + GameRegistry.addRecipe(new ShapedBloodOrbRecipe(ItemComponent.getStack(ItemComponent.REAGENT_GROWTH), "aba", "bcb", "ada", 'a', Blocks.sapling, 'b', Items.reeds, 'c', Items.sugar, 'd', OrbRegistry.getOrbStack(ModItems.orbApprentice))); + GameRegistry.addRecipe(new ShapedBloodOrbRecipe(ItemComponent.getStack(ItemComponent.REAGENT_FASTMINER), "aba", "cde", "afa", 'a', Blocks.stone, 'b', Items.iron_pickaxe, 'c', Items.iron_shovel, 'd', Items.gunpowder, 'e', Items.iron_axe, 'f', OrbRegistry.getOrbStack(ModItems.orbApprentice))); + GameRegistry.addRecipe(new ShapedBloodOrbRecipe(ItemComponent.getStack(ItemComponent.REAGENT_AFFINITY), "aba", "cde", "afa", 'a', Blocks.obsidian, 'b', ModItems.sigilAir, 'c', ModItems.sigilWater, 'd', Items.glowstone_dust, 'e', ModItems.sigilLava, 'f', OrbRegistry.getOrbStack(ModItems.orbMagician))); + GameRegistry.addRecipe(new ShapedBloodOrbRecipe(ItemComponent.getStack(ItemComponent.REAGENT_SIGHT), "aba", "aca", "ded", 'a', Blocks.glass, 'b', ModItems.sigilDivination, 'c', Items.glowstone_dust, 'd', ModItems.bucketEssence, 'e', OrbRegistry.getOrbStack(ModItems.orbApprentice))); + GameRegistry.addRecipe(new ShapedBloodOrbRecipe(new ItemStack(ModBlocks.bloodRune), "aaa", "bcb", "aaa", 'a', Blocks.stone, 'b', ModItems.slate, 'c', OrbRegistry.getOrbStack(ModItems.orbWeak))); + GameRegistry.addRecipe(new ShapedBloodOrbRecipe(new ItemStack(ModBlocks.bloodRune, 1, 1), "aba", "cdc", "aba", 'a', Blocks.stone, 'b', ModItems.slate, 'c', Items.sugar, 'd', ModBlocks.bloodRune)); //Speed +// GameRegistry.addRecipe(new ShapedBloodOrbRecipe(new ItemStack(ModBlocks.bloodRune, 1, 2), "aba", "cdc", "aba", 'a', Blocks.stone, 'b', ModItems.slate, 'c', Items.sugar, 'd', ModBlocks.bloodRune)); //Efficiency + GameRegistry.addRecipe(new ShapedBloodOrbRecipe(new ItemStack(ModBlocks.bloodRune, 1, 3), "aba", "cdc", "aea", 'a', Blocks.stone, 'b', new ItemStack(ModItems.slate, 1, 1), 'c', Items.gold_ingot, 'd', ModBlocks.bloodRune, 'e', OrbRegistry.getOrbStack(ModItems.orbApprentice))); //Sacrifice + GameRegistry.addRecipe(new ShapedBloodOrbRecipe(new ItemStack(ModBlocks.bloodRune, 1, 4), "aba", "cdc", "aea", 'a', Blocks.stone, 'b', new ItemStack(ModItems.slate, 1, 1), 'c', Items.glowstone_dust, 'd', ModBlocks.bloodRune, 'e', OrbRegistry.getOrbStack(ModItems.orbApprentice))); //Self-Sacrifice + GameRegistry.addRecipe(new ShapedBloodOrbRecipe(new ItemStack(ModBlocks.bloodRune, 1, 5), "aba", "bcb", "ada", 'a', Blocks.stone, 'b', Items.water_bucket, 'c', ModBlocks.bloodRune, 'd', new ItemStack(ModItems.slate, 1, 2))); //Displacement + GameRegistry.addRecipe(new ShapedBloodOrbRecipe(new ItemStack(ModBlocks.bloodRune, 1, 6), "aba", "bcb", "ada", 'a', Blocks.stone, 'b', Items.bucket, 'c', ModBlocks.bloodRune, 'd', new ItemStack(ModItems.slate, 1, 2))); //Capacity + GameRegistry.addRecipe(new ShapedBloodOrbRecipe(new ItemStack(ModBlocks.bloodRune, 1, 7), "aba", "cdc", "aea", 'a', Blocks.obsidian, 'b', new ItemStack(ModItems.slate, 1, 3), 'c', Items.bucket, 'd', new ItemStack(ModBlocks.bloodRune, 1, 6), 'e', OrbRegistry.getOrbStack(ModItems.orbMaster))); //Augmented Capacity + GameRegistry.addRecipe(new ShapedBloodOrbRecipe(new ItemStack(ModBlocks.bloodRune, 1, 8), "aba", "cdc", "aba", 'a', Blocks.stone, 'b', Items.diamond, 'c', ModBlocks.bloodRune, 'd', OrbRegistry.getOrbStack(ModItems.orbMaster))); //Orb + GameRegistry.addRecipe(new ShapedBloodOrbRecipe(new ItemStack(ModBlocks.bloodRune, 1, 9), "aba", "cdc", "aea", 'a', Items.bucket, 'b', new ItemStack(ModItems.slate, 1, 4), 'c', Items.gold_ingot, 'd', new ItemStack(ModBlocks.bloodRune, 1, 1), 'e', OrbRegistry.getOrbStack(ModItems.orbArchmage))); //Acceleration + GameRegistry.addRecipe(new ShapedBloodOrbRecipe(new ItemStack(ModBlocks.ritualStone), "aba", "bcb", "aba", 'a', Blocks.obsidian, 'b', new ItemStack(ModItems.slate, 1, 1), 'c', OrbRegistry.getOrbStack(ModItems.orbApprentice))); + GameRegistry.addRecipe(new ShapedBloodOrbRecipe(new ItemStack(ModBlocks.ritualController), "aba", "bcb", "aba", 'a', Blocks.obsidian, 'b', ModBlocks.ritualStone, 'c', OrbRegistry.getOrbStack(ModItems.orbMagician))); + GameRegistry.addRecipe(new ShapedBloodOrbRecipe(new ItemStack(ModBlocks.ritualController, 1, 1), "aba", "bcb", "aba", 'a', Blocks.obsidian, 'b', Blocks.stone, 'c', OrbRegistry.getOrbStack(ModItems.orbWeak))); } public static void addAltarRecipes() { // ONE AltarRecipeRegistry.registerRecipe(new AltarRecipeRegistry.AltarRecipe(OrbRegistry.getOrbStack(ModItems.orbWeak), OrbRegistry.getOrbStack(ModItems.orbWeak), EnumAltarTier.ONE, 5000, 2, 1, true)); - AltarRecipeRegistry.registerRecipe(new AltarRecipeRegistry.AltarRecipe(new ItemStack(Items.diamond), OrbRegistry.getOrbStack(ModItems.orbWeak), EnumAltarTier.ONE, 2000, 2, 1, false)); - AltarRecipeRegistry.registerRecipe(new AltarRecipeRegistry.AltarRecipe(new ItemStack(Blocks.stone), new ItemStack(ModItems.slate), EnumAltarTier.ONE, 1000, 5, 5, false)); + AltarRecipeRegistry.registerRecipe(new AltarRecipeRegistry.AltarRecipe(new ItemStack(Items.diamond), OrbRegistry.getOrbStack(ModItems.orbWeak), EnumAltarTier.ONE, 2000, 2, 1)); + AltarRecipeRegistry.registerRecipe(new AltarRecipeRegistry.AltarRecipe(new ItemStack(Blocks.stone), new ItemStack(ModItems.slate), EnumAltarTier.ONE, 1000, 5, 5)); // TWO - AltarRecipeRegistry.registerRecipe(new AltarRecipeRegistry.AltarRecipe(new ItemStack(Items.emerald), OrbRegistry.getOrbStack(ModItems.orbApprentice), EnumAltarTier.TWO, 5000, 2, 1, false)); - AltarRecipeRegistry.registerRecipe(new AltarRecipeRegistry.AltarRecipe(new ItemStack(ModItems.slate), new ItemStack(ModItems.slate, 1, 1), EnumAltarTier.TWO, 2000, 5, 5, false)); + AltarRecipeRegistry.registerRecipe(new AltarRecipeRegistry.AltarRecipe(new ItemStack(Items.emerald), OrbRegistry.getOrbStack(ModItems.orbApprentice), EnumAltarTier.TWO, 5000, 2, 1)); + AltarRecipeRegistry.registerRecipe(new AltarRecipeRegistry.AltarRecipe(new ItemStack(ModItems.slate), new ItemStack(ModItems.slate, 1, 1), EnumAltarTier.TWO, 2000, 5, 5)); + AltarRecipeRegistry.registerRecipe(new AltarRecipeRegistry.AltarRecipe(new ItemStack(Items.iron_sword), new ItemStack(ModItems.daggerOfSacrifice), EnumAltarTier.TWO, 3000, 5, 5)); // THREE - AltarRecipeRegistry.registerRecipe(new AltarRecipeRegistry.AltarRecipe(new ItemStack(Blocks.gold_block), OrbRegistry.getOrbStack(ModItems.orbMagician), EnumAltarTier.THREE, 25000, 2, 1, false)); - AltarRecipeRegistry.registerRecipe(new AltarRecipeRegistry.AltarRecipe(new ItemStack(ModItems.slate, 1, 1), new ItemStack(ModItems.slate, 1, 2), EnumAltarTier.THREE, 5000, 15, 10, false)); - AltarRecipeRegistry.registerRecipe(new AltarRecipeRegistry.AltarRecipe(new ItemStack(Blocks.obsidian), EnumRuneType.EARTH.getScribeStack(), EnumAltarTier.THREE, 1000, 5, 5, false)); - AltarRecipeRegistry.registerRecipe(new AltarRecipeRegistry.AltarRecipe(new ItemStack(Blocks.lapis_block), EnumRuneType.WATER.getScribeStack(), EnumAltarTier.THREE, 1000, 5, 5, false)); - AltarRecipeRegistry.registerRecipe(new AltarRecipeRegistry.AltarRecipe(new ItemStack(Items.magma_cream), EnumRuneType.FIRE.getScribeStack(), EnumAltarTier.THREE, 1000, 5, 5, false)); - AltarRecipeRegistry.registerRecipe(new AltarRecipeRegistry.AltarRecipe(new ItemStack(Items.ghast_tear), EnumRuneType.AIR.getScribeStack(), EnumAltarTier.THREE, 1000, 5, 5, false)); + AltarRecipeRegistry.registerRecipe(new AltarRecipeRegistry.AltarRecipe(new ItemStack(Blocks.gold_block), OrbRegistry.getOrbStack(ModItems.orbMagician), EnumAltarTier.THREE, 25000, 2, 1)); + AltarRecipeRegistry.registerRecipe(new AltarRecipeRegistry.AltarRecipe(new ItemStack(ModItems.slate, 1, 1), new ItemStack(ModItems.slate, 1, 2), EnumAltarTier.THREE, 5000, 15, 10)); + AltarRecipeRegistry.registerRecipe(new AltarRecipeRegistry.AltarRecipe(new ItemStack(Blocks.obsidian), EnumRuneType.EARTH.getScribeStack(), EnumAltarTier.THREE, 1000, 5, 5)); + AltarRecipeRegistry.registerRecipe(new AltarRecipeRegistry.AltarRecipe(new ItemStack(Blocks.lapis_block), EnumRuneType.WATER.getScribeStack(), EnumAltarTier.THREE, 1000, 5, 5)); + AltarRecipeRegistry.registerRecipe(new AltarRecipeRegistry.AltarRecipe(new ItemStack(Items.magma_cream), EnumRuneType.FIRE.getScribeStack(), EnumAltarTier.THREE, 1000, 5, 5)); + AltarRecipeRegistry.registerRecipe(new AltarRecipeRegistry.AltarRecipe(new ItemStack(Items.ghast_tear), EnumRuneType.AIR.getScribeStack(), EnumAltarTier.THREE, 1000, 5, 5)); + AltarRecipeRegistry.registerRecipe(new AltarRecipeRegistry.AltarRecipe(new ItemStack(ModItems.lavaCrystal), new ItemStack(ModItems.activationCrystal), EnumAltarTier.THREE, 10000, 20, 10)); // FOUR - AltarRecipeRegistry.registerRecipe(new AltarRecipeRegistry.AltarRecipe(new ItemStack(ModItems.slate, 1, 2), new ItemStack(ModItems.slate, 1, 3), EnumAltarTier.FOUR, 15000, 20, 20, false)); - AltarRecipeRegistry.registerRecipe(new AltarRecipeRegistry.AltarRecipe(new ItemStack(Blocks.coal_block), EnumRuneType.DUSK.getScribeStack(), EnumAltarTier.FOUR, 2000, 20, 10, false)); + AltarRecipeRegistry.registerRecipe(new AltarRecipeRegistry.AltarRecipe(new ItemStack(ModItems.slate, 1, 2), new ItemStack(ModItems.slate, 1, 3), EnumAltarTier.FOUR, 15000, 20, 20)); + AltarRecipeRegistry.registerRecipe(new AltarRecipeRegistry.AltarRecipe(new ItemStack(Blocks.coal_block), EnumRuneType.DUSK.getScribeStack(), EnumAltarTier.FOUR, 2000, 20, 10)); // FIVE - AltarRecipeRegistry.registerRecipe(new AltarRecipeRegistry.AltarRecipe(new ItemStack(ModItems.slate, 1, 3), new ItemStack(ModItems.slate, 1, 4), EnumAltarTier.FIVE, 30000, 40, 100, false)); + AltarRecipeRegistry.registerRecipe(new AltarRecipeRegistry.AltarRecipe(new ItemStack(ModItems.slate, 1, 3), new ItemStack(ModItems.slate, 1, 4), EnumAltarTier.FIVE, 30000, 40, 100)); // SIX - AltarRecipeRegistry.registerRecipe(new AltarRecipeRegistry.AltarRecipe(new ItemStack(ModBlocks.crystal), OrbRegistry.getOrbStack(ModItems.orbTranscendent), EnumAltarTier.SIX, 200000, 100, 200, false)); - AltarRecipeRegistry.registerRecipe(new AltarRecipeRegistry.AltarRecipe(new ItemStack(Blocks.glowstone), EnumRuneType.DAWN.getScribeStack(), EnumAltarTier.SIX, 200000, 100, 200, false)); + AltarRecipeRegistry.registerRecipe(new AltarRecipeRegistry.AltarRecipe(new ItemStack(ModBlocks.crystal), OrbRegistry.getOrbStack(ModItems.orbTranscendent), EnumAltarTier.SIX, 200000, 100, 200)); + AltarRecipeRegistry.registerRecipe(new AltarRecipeRegistry.AltarRecipe(new ItemStack(Blocks.glowstone), EnumRuneType.DAWN.getScribeStack(), EnumAltarTier.SIX, 200000, 100, 200)); } public static void addAlchemyArrayRecipes() diff --git a/src/main/resources/assets/bloodmagic/lang/en_US.lang b/src/main/resources/assets/bloodmagic/lang/en_US.lang index da028005..6963bf25 100644 --- a/src/main/resources/assets/bloodmagic/lang/en_US.lang +++ b/src/main/resources/assets/bloodmagic/lang/en_US.lang @@ -12,6 +12,8 @@ item.BloodMagic.pack.selfSacrifice.name=Blood Letter's Pack item.BloodMagic.pack.sacrifice.name=Coat of Arms item.BloodMagic.daggerOfSacrifice.name=Dagger of Sacrifice +item.BloodMagic.lavaCrystal.name=Lava Crystal + item.BloodMagic.bound.sword.name=Bound Sword item.BloodMagic.bound.pickaxe.name=Bound Pickaxe item.BloodMagic.bound.axe.name=Bound Axe @@ -131,6 +133,8 @@ tile.BloodMagic.bloodstonebrick.large.name=Large Bloodstone Brick tile.BloodMagic.crystal.normal.name=Crystal Cluster tile.BloodMagic.crystal.brick.name=Crystal Cluster Brick tile.BloodMagic.bloodLight.name=Blood Light +tile.BloodMagic.spectralBlock.name=Spectral Block +tile.BloodMagic.phantomBlock.name=Phantom Block # Tooltips tooltip.BloodMagic.orb.desc=Stores raw Life Essence