diff --git a/src/main/java/WayofTime/bloodmagic/api/registry/AlchemyArrayRecipeRegistry.java b/src/main/java/WayofTime/bloodmagic/api/registry/AlchemyArrayRecipeRegistry.java index b12f2746..02e7f583 100644 --- a/src/main/java/WayofTime/bloodmagic/api/registry/AlchemyArrayRecipeRegistry.java +++ b/src/main/java/WayofTime/bloodmagic/api/registry/AlchemyArrayRecipeRegistry.java @@ -2,12 +2,14 @@ package WayofTime.bloodmagic.api.registry; import java.util.Map.Entry; -import WayofTime.bloodmagic.api.ItemStackWrapper; +import javax.annotation.Nullable; + import lombok.EqualsAndHashCode; import lombok.Getter; import lombok.ToString; import net.minecraft.item.ItemStack; import net.minecraft.util.ResourceLocation; +import WayofTime.bloodmagic.api.ItemStackWrapper; import WayofTime.bloodmagic.api.alchemyCrafting.AlchemyArrayEffect; import WayofTime.bloodmagic.api.alchemyCrafting.AlchemyArrayEffectCrafting; import WayofTime.bloodmagic.api.alchemyCrafting.AlchemyCircleRenderer; @@ -15,8 +17,6 @@ import WayofTime.bloodmagic.api.alchemyCrafting.AlchemyCircleRenderer; import com.google.common.collect.BiMap; import com.google.common.collect.HashBiMap; -import javax.annotation.Nullable; - public class AlchemyArrayRecipeRegistry { @@ -29,17 +29,16 @@ public class AlchemyArrayRecipeRegistry * General case for creating an AlchemyArrayEffect for a given input. * * @param inputStack - * - Input item that is used to change the Alchemy Circle into - * the circle that you are making + * - Input item that is used to change the Alchemy Circle into the + * circle that you are making * @param catalystStack - * - Catalyst item that, when right-clicked onto the array, will - * cause an effect + * - Catalyst item that, when right-clicked onto the array, will + * cause an effect * @param arrayEffect - * - The effect that will be activated once the array is - * activated + * - The effect that will be activated once the array is activated * @param circleRenderer - * - Circle rendered when the array is passive - can be - * substituted for a special renderer + * - Circle rendered when the array is passive - can be substituted + * for a special renderer */ public static void registerRecipe(ItemStack inputStack, @Nullable ItemStack catalystStack, AlchemyArrayEffect arrayEffect, AlchemyCircleRenderer circleRenderer) { @@ -127,7 +126,7 @@ public class AlchemyArrayRecipeRegistry public static AlchemyArrayRecipe getRecipeForInput(ItemStack input) { - return recipes.get(input); + return recipes.get(ItemStackWrapper.getHolder(input)); } public static AlchemyArrayEffect getAlchemyArrayEffect(ItemStack inputStack, @Nullable ItemStack catalystStack) @@ -198,7 +197,7 @@ public class AlchemyArrayRecipeRegistry * Gets the actual AlchemyArrayEffect for the given catalyst. * * @param comparedStack - * The catalyst that is being checked + * The catalyst that is being checked * @return */ public AlchemyArrayEffect getAlchemyArrayEffectForCatalyst(@Nullable ItemStack comparedStack) diff --git a/src/main/java/WayofTime/bloodmagic/block/BlockAlchemyArray.java b/src/main/java/WayofTime/bloodmagic/block/BlockAlchemyArray.java index 7cd8b6e5..bdeee3e0 100644 --- a/src/main/java/WayofTime/bloodmagic/block/BlockAlchemyArray.java +++ b/src/main/java/WayofTime/bloodmagic/block/BlockAlchemyArray.java @@ -1,16 +1,13 @@ package WayofTime.bloodmagic.block; -import java.util.List; import java.util.Random; import net.minecraft.block.BlockContainer; import net.minecraft.block.material.Material; import net.minecraft.block.state.IBlockState; -import net.minecraft.entity.Entity; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.item.ItemStack; import net.minecraft.tileentity.TileEntity; -import net.minecraft.util.AxisAlignedBB; import net.minecraft.util.BlockPos; import net.minecraft.util.EnumFacing; import net.minecraft.util.EnumWorldBlockLayer; @@ -19,7 +16,7 @@ import net.minecraftforge.fml.relauncher.Side; import net.minecraftforge.fml.relauncher.SideOnly; import WayofTime.bloodmagic.BloodMagic; import WayofTime.bloodmagic.api.Constants; -import WayofTime.bloodmagic.tile.TileAlchemyArray; +import WayofTime.bloodmagic.api.registry.AlchemyArrayRecipeRegistry; import WayofTime.bloodmagic.tile.TileAlchemyArray; import WayofTime.bloodmagic.util.Utils; @@ -33,6 +30,7 @@ public class BlockAlchemyArray extends BlockContainer setUnlocalizedName(Constants.Mod.MODID + ".alchemyArray"); setCreativeTab(BloodMagic.tabBloodMagic); this.setHardness(0.1f); + this.setBlockBounds(0, 0, 0, 1, 0.1f, 1); } @Override @@ -54,12 +52,6 @@ public class BlockAlchemyArray extends BlockContainer return false; } - @Override - public void addCollisionBoxesToList(World worldIn, BlockPos pos, IBlockState state, AxisAlignedBB mask, List list, Entity collidingEntity) - { - this.setBlockBounds(0, 0, 0, 1, 0.1f, 1); - } - @Override public boolean onBlockActivated(World world, BlockPos pos, IBlockState state, EntityPlayer player, EnumFacing side, float hitX, float hitY, float hitZ) { @@ -72,13 +64,16 @@ public class BlockAlchemyArray extends BlockContainer if (playerItem != null) { - if (array.getStackInSlot(0) == null) + if (array.getStackInSlot(0) == null && AlchemyArrayRecipeRegistry.getRecipeForInput(playerItem) != null) { Utils.insertItemToTile(array, player, 0); - } else + } else if (array.getStackInSlot(0) != null && AlchemyArrayRecipeRegistry.getAlchemyArrayEffect(array.getStackInSlot(0), playerItem) != null) { Utils.insertItemToTile(array, player, 1); array.attemptCraft(); + } else + { + return false; } } diff --git a/src/main/java/WayofTime/bloodmagic/client/render/RenderAltar.java b/src/main/java/WayofTime/bloodmagic/client/render/RenderAltar.java index 74688831..df92a0fa 100644 --- a/src/main/java/WayofTime/bloodmagic/client/render/RenderAltar.java +++ b/src/main/java/WayofTime/bloodmagic/client/render/RenderAltar.java @@ -7,7 +7,6 @@ import net.minecraft.client.renderer.block.model.ItemCameraTransforms; import net.minecraft.client.renderer.entity.RenderItem; import net.minecraft.client.renderer.tileentity.TileEntitySpecialRenderer; import net.minecraft.entity.item.EntityItem; -import net.minecraft.entity.player.EntityPlayer; import net.minecraft.item.ItemStack; import net.minecraft.world.World; import WayofTime.bloodmagic.tile.TileAltar; diff --git a/src/main/java/WayofTime/bloodmagic/item/ItemArcaneAshes.java b/src/main/java/WayofTime/bloodmagic/item/ItemArcaneAshes.java new file mode 100644 index 00000000..86f45dea --- /dev/null +++ b/src/main/java/WayofTime/bloodmagic/item/ItemArcaneAshes.java @@ -0,0 +1,50 @@ +package WayofTime.bloodmagic.item; + +import java.util.List; + +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.item.Item; +import net.minecraft.item.ItemStack; +import net.minecraft.util.BlockPos; +import net.minecraft.util.EnumFacing; +import net.minecraft.world.World; +import net.minecraftforge.fml.relauncher.Side; +import net.minecraftforge.fml.relauncher.SideOnly; +import WayofTime.bloodmagic.BloodMagic; +import WayofTime.bloodmagic.api.Constants; +import WayofTime.bloodmagic.registry.ModBlocks; +import WayofTime.bloodmagic.util.helper.TextHelper; + +public class ItemArcaneAshes extends Item +{ + public ItemArcaneAshes() + { + setUnlocalizedName(Constants.Mod.MODID + ".arcaneAshes"); + setMaxDamage(19); //Allows for 20 uses + setCreativeTab(BloodMagic.tabBloodMagic); + } + + @Override + @SideOnly(Side.CLIENT) + public void addInformation(ItemStack stack, EntityPlayer player, List tooltip, boolean advanced) + { + tooltip.add(TextHelper.localizeEffect("tooltip.BloodMagic.arcaneAshes")); + } + + @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; + + BlockPos newPos = blockPos.offset(side); + + if (world.isAirBlock(newPos)) + { + world.setBlockState(newPos, ModBlocks.alchemyArray.getDefaultState()); + stack.damageItem(1, player); + } + + return true; + } +} diff --git a/src/main/java/WayofTime/bloodmagic/item/sigil/ItemSigilBase.java b/src/main/java/WayofTime/bloodmagic/item/sigil/ItemSigilBase.java index 3877c22c..8d50e4eb 100644 --- a/src/main/java/WayofTime/bloodmagic/item/sigil/ItemSigilBase.java +++ b/src/main/java/WayofTime/bloodmagic/item/sigil/ItemSigilBase.java @@ -61,7 +61,6 @@ public class ItemSigilBase extends ItemBindable implements ISigil @SideOnly(Side.CLIENT) public void addInformation(ItemStack stack, EntityPlayer player, List tooltip, boolean advanced) { - if (StatCollector.canTranslate(tooltipBase + "desc")) tooltip.add(TextHelper.localizeEffect(tooltipBase + "desc")); diff --git a/src/main/java/WayofTime/bloodmagic/registry/ModItems.java b/src/main/java/WayofTime/bloodmagic/registry/ModItems.java index 98986d50..b36d74e8 100644 --- a/src/main/java/WayofTime/bloodmagic/registry/ModItems.java +++ b/src/main/java/WayofTime/bloodmagic/registry/ModItems.java @@ -74,6 +74,8 @@ public class ModItems public static Item altarMaker; + public static Item arcaneAshes; + public static Item.ToolMaterial boundToolMaterial = EnumHelper.addToolMaterial("BoundToolMaterial", 4, 0, 12, 8, 50); public static void init() @@ -142,6 +144,8 @@ public class ModItems livingArmourBoots = registerItem(new ItemLivingArmour(3), "ItemLivingArmourBoots"); altarMaker = registerItem(new ItemAltarMaker()); + + arcaneAshes = registerItem(new ItemArcaneAshes()); } public static void initRenders() @@ -238,6 +242,8 @@ public class ModItems renderHelper.itemRender(livingArmourBoots); renderHelper.itemRender(altarMaker); + + renderHelper.itemRender(arcaneAshes); } private static Item registerItem(Item item, String name) diff --git a/src/main/java/WayofTime/bloodmagic/registry/ModRecipes.java b/src/main/java/WayofTime/bloodmagic/registry/ModRecipes.java index 5ef78183..ea64dbf1 100644 --- a/src/main/java/WayofTime/bloodmagic/registry/ModRecipes.java +++ b/src/main/java/WayofTime/bloodmagic/registry/ModRecipes.java @@ -44,6 +44,7 @@ public class ModRecipes GameRegistry.addRecipe(new ItemStack(ModItems.ritualDiviner, 1, 1), " S ", "tdt", " S ", 'S', new ItemStack(ModItems.slate, 1, 3), 't', EnumRuneType.DUSK.getScribeStack(), 'd', new ItemStack(ModItems.ritualDiviner)); 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.addShapelessRecipe(new ItemStack(ModItems.arcaneAshes), new ItemStack(Items.dye, 1, 15), new ItemStack(Items.gunpowder), new ItemStack(Items.gunpowder), new ItemStack(Items.redstone), new ItemStack(Items.flint), new ItemStack(ModItems.slate)); 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))); diff --git a/src/main/resources/assets/bloodmagic/lang/en_US.lang b/src/main/resources/assets/bloodmagic/lang/en_US.lang index 198487dd..9e7e7f60 100644 --- a/src/main/resources/assets/bloodmagic/lang/en_US.lang +++ b/src/main/resources/assets/bloodmagic/lang/en_US.lang @@ -104,6 +104,8 @@ item.BloodMagic.ritualDivinernormal.name=Ritual Diviner item.BloodMagic.ritualDivinerdusk.name=Ritual Diviner [Dusk] item.BloodMagic.ritualDivinerdawn.name=Ritual Diviner [Dawn] +item.BloodMagic.arcaneAshes.name=Arcane Ashes + # Blocks tile.BloodMagic.fluid.lifeEssence.name=Life Essence @@ -202,6 +204,8 @@ tooltip.BloodMagic.diviner.totalRune=Total Runes: %d tooltip.BloodMagic.diviner.extraInfo=Press shift for extra info tooltip.BloodMagic.diviner.currentDirection=Current Direction: %s +tooltip.BloodMagic.arcaneAshes=Ashes used to draw a rudimentary circle + tooltip.BloodMagic.telepositionFocus.coords=Current coordinates: (%d, %d, %d) tooltip.BloodMagic.telepositionFocus.dimension=Dimension ID: %d diff --git a/src/main/resources/assets/bloodmagic/models/item/ItemArcaneAshes.json b/src/main/resources/assets/bloodmagic/models/item/ItemArcaneAshes.json new file mode 100644 index 00000000..2ad74320 --- /dev/null +++ b/src/main/resources/assets/bloodmagic/models/item/ItemArcaneAshes.json @@ -0,0 +1,6 @@ +{ + "parent":"bloodmagic:item/ItemModelBase", + "textures": { + "layer0":"bloodmagic:items/ArcaneAshes" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/bloodmagic/textures/items/ArcaneAshes.png b/src/main/resources/assets/bloodmagic/textures/items/ArcaneAshes.png new file mode 100644 index 00000000..3ac9e708 Binary files /dev/null and b/src/main/resources/assets/bloodmagic/textures/items/ArcaneAshes.png differ diff --git a/src/main/resources/assets/bloodmagic/textures/items/bloodBlastOrn.png b/src/main/resources/assets/bloodmagic/textures/items/bloodBlastOrn.png deleted file mode 100644 index 1e15fd72..00000000 Binary files a/src/main/resources/assets/bloodmagic/textures/items/bloodBlastOrn.png and /dev/null differ