From 37cb2a13609dde162a93612e86c7d70801dbdec8 Mon Sep 17 00:00:00 2001 From: WayofTime Date: Wed, 4 May 2016 19:25:42 -0400 Subject: [PATCH] Added some more recipes (like rudimentary ore doubling) to the alchemy table --- changelog.txt | 1 + .../WayofTime/bloodmagic/api/Constants.java | 1 + .../api/iface/ICustomAlchemyConsumable.java | 12 ++ .../api/recipe/AlchemyTableCustomRecipe.java | 53 +++++++ .../bloodmagic/item/ItemComponent.java | 28 +++- .../item/alchemy/ItemCuttingFluid.java | 136 ++++++++++++++++++ .../bloodmagic/registry/ModItems.java | 5 + .../bloodmagic/registry/ModRecipes.java | 43 ++++-- .../blockstates/item/ItemComponent.json | 22 +-- .../blockstates/item/ItemCuttingFluid.json | 16 +++ .../assets/bloodmagic/lang/en_US.lang | 8 ++ .../textures/items/BasicCuttingFluid.png | Bin 0 -> 420 bytes .../bloodmagic/textures/items/CoalSand.png | Bin 0 -> 325 bytes .../bloodmagic/textures/items/GoldSand.png | Bin 0 -> 358 bytes .../bloodmagic/textures/items/IronSand.png | Bin 0 -> 344 bytes 15 files changed, 293 insertions(+), 32 deletions(-) create mode 100644 src/main/java/WayofTime/bloodmagic/api/iface/ICustomAlchemyConsumable.java create mode 100644 src/main/java/WayofTime/bloodmagic/api/recipe/AlchemyTableCustomRecipe.java create mode 100644 src/main/java/WayofTime/bloodmagic/item/alchemy/ItemCuttingFluid.java create mode 100644 src/main/resources/assets/bloodmagic/blockstates/item/ItemCuttingFluid.json create mode 100644 src/main/resources/assets/bloodmagic/textures/items/BasicCuttingFluid.png create mode 100644 src/main/resources/assets/bloodmagic/textures/items/CoalSand.png create mode 100644 src/main/resources/assets/bloodmagic/textures/items/GoldSand.png create mode 100644 src/main/resources/assets/bloodmagic/textures/items/IronSand.png diff --git a/changelog.txt b/changelog.txt index 6b613fbc..b0790631 100644 --- a/changelog.txt +++ b/changelog.txt @@ -4,6 +4,7 @@ Version 2.0.0-36 - Added JEI compat for the Alchemy Table - Changed the Item Routing system so that it used capabilities instead - Updated the Alchemy Table recipe system so that it can provide better custom recipes. +- Added some more recipes (like rudimentary ore doubling) to the alchemy table. ------------------------------------------------------ Version 2.0.0-35 diff --git a/src/main/java/WayofTime/bloodmagic/api/Constants.java b/src/main/java/WayofTime/bloodmagic/api/Constants.java index 97818c60..22fb3d0c 100644 --- a/src/main/java/WayofTime/bloodmagic/api/Constants.java +++ b/src/main/java/WayofTime/bloodmagic/api/Constants.java @@ -166,6 +166,7 @@ public class Constants BOUND_SWORD("ItemBoundSword"), BUCKET_ESSENCE("ItemBucketEssence"), COMPONENT("ItemComponent"), + CUTTING_FLUID("ItemCuttingFluid"), DEMON_CRYSTAL("ItemDemonCrystal"), DAGGER_OF_SACRIFICE("ItemDaggerOfSacrifice"), INSCRIPTION_TOOL("ItemInscriptionTool"), diff --git a/src/main/java/WayofTime/bloodmagic/api/iface/ICustomAlchemyConsumable.java b/src/main/java/WayofTime/bloodmagic/api/iface/ICustomAlchemyConsumable.java new file mode 100644 index 00000000..06d2af92 --- /dev/null +++ b/src/main/java/WayofTime/bloodmagic/api/iface/ICustomAlchemyConsumable.java @@ -0,0 +1,12 @@ +package WayofTime.bloodmagic.api.iface; + +import net.minecraft.item.ItemStack; + +/** + * An interface for items that have custom drainage behaviour when used in + * certain alchemy recipes. + */ +public interface ICustomAlchemyConsumable +{ + ItemStack drainUseOnAlchemyCraft(ItemStack stack); +} diff --git a/src/main/java/WayofTime/bloodmagic/api/recipe/AlchemyTableCustomRecipe.java b/src/main/java/WayofTime/bloodmagic/api/recipe/AlchemyTableCustomRecipe.java new file mode 100644 index 00000000..59945067 --- /dev/null +++ b/src/main/java/WayofTime/bloodmagic/api/recipe/AlchemyTableCustomRecipe.java @@ -0,0 +1,53 @@ +package WayofTime.bloodmagic.api.recipe; + +import net.minecraft.block.Block; +import net.minecraft.item.Item; +import net.minecraft.item.ItemStack; +import WayofTime.bloodmagic.api.iface.ICustomAlchemyConsumable; + +public class AlchemyTableCustomRecipe extends AlchemyTableRecipe +{ + public AlchemyTableCustomRecipe(Block result, int lpDrained, int ticksRequired, int tierRequired, Object... recipe) + { + this(new ItemStack(result), lpDrained, ticksRequired, tierRequired, recipe); + } + + public AlchemyTableCustomRecipe(Item result, int lpDrained, int ticksRequired, int tierRequired, Object... recipe) + { + this(new ItemStack(result), lpDrained, ticksRequired, tierRequired, recipe); + } + + public AlchemyTableCustomRecipe(ItemStack result, int lpDrained, int ticksRequired, int tierRequired, Object... recipe) + { + super(result, lpDrained, ticksRequired, tierRequired, recipe); + } + + @Override + protected ItemStack getContainerItem(ItemStack stack) + { + if (stack == null) + { + return null; + } + + ItemStack copyStack = stack.copy(); + + if (copyStack.getItem() instanceof ICustomAlchemyConsumable) + { + return ((ICustomAlchemyConsumable) copyStack.getItem()).drainUseOnAlchemyCraft(copyStack); + } + + if (copyStack.getItem().hasContainerItem(stack)) + { + return copyStack.getItem().getContainerItem(copyStack); + } + + copyStack.stackSize--; + if (copyStack.stackSize <= 0) + { + return null; + } + + return copyStack; + } +} diff --git a/src/main/java/WayofTime/bloodmagic/item/ItemComponent.java b/src/main/java/WayofTime/bloodmagic/item/ItemComponent.java index 2b01457c..f6ef1bd5 100644 --- a/src/main/java/WayofTime/bloodmagic/item/ItemComponent.java +++ b/src/main/java/WayofTime/bloodmagic/item/ItemComponent.java @@ -1,20 +1,22 @@ package WayofTime.bloodmagic.item; -import WayofTime.bloodmagic.BloodMagic; -import WayofTime.bloodmagic.api.Constants; -import WayofTime.bloodmagic.client.IVariantProvider; -import WayofTime.bloodmagic.registry.ModItems; +import java.util.ArrayList; +import java.util.List; + import lombok.Getter; import net.minecraft.creativetab.CreativeTabs; import net.minecraft.item.Item; import net.minecraft.item.ItemStack; import net.minecraftforge.fml.relauncher.Side; import net.minecraftforge.fml.relauncher.SideOnly; + import org.apache.commons.lang3.tuple.ImmutablePair; import org.apache.commons.lang3.tuple.Pair; -import java.util.ArrayList; -import java.util.List; +import WayofTime.bloodmagic.BloodMagic; +import WayofTime.bloodmagic.api.Constants; +import WayofTime.bloodmagic.client.IVariantProvider; +import WayofTime.bloodmagic.registry.ModItems; public class ItemComponent extends Item implements IVariantProvider { @@ -40,6 +42,9 @@ public class ItemComponent extends Item implements IVariantProvider public static final String REAGENT_SEVERANCE = "reagentSeverance"; public static final String REAGENT_TELEPOSITION = "reagentTeleposition"; public static final String REAGENT_TRANSPOSITION = "reagentTransposition"; + public static final String SAND_IRON = "ironSand"; + public static final String SAND_GOLD = "goldSand"; + public static final String SAND_COAL = "coalSand"; public ItemComponent() { @@ -73,6 +78,9 @@ public class ItemComponent extends Item implements IVariantProvider names.add(16, REAGENT_SEVERANCE); names.add(17, REAGENT_TELEPOSITION); names.add(18, REAGENT_TRANSPOSITION); + names.add(19, SAND_IRON); + names.add(20, SAND_GOLD); + names.add(21, SAND_COAL); } @Override @@ -102,4 +110,12 @@ public class ItemComponent extends Item implements IVariantProvider ret.add(new ImmutablePair(names.indexOf(name), "type=" + name)); return ret; } + + public static ItemStack getStack(String key, int stackSize) + { + ItemStack stack = getStack(key); + stack.stackSize = stackSize; + + return stack; + } } diff --git a/src/main/java/WayofTime/bloodmagic/item/alchemy/ItemCuttingFluid.java b/src/main/java/WayofTime/bloodmagic/item/alchemy/ItemCuttingFluid.java new file mode 100644 index 00000000..babbdc62 --- /dev/null +++ b/src/main/java/WayofTime/bloodmagic/item/alchemy/ItemCuttingFluid.java @@ -0,0 +1,136 @@ +package WayofTime.bloodmagic.item.alchemy; + +import java.util.ArrayList; +import java.util.List; + +import lombok.Getter; +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.minecraftforge.fml.relauncher.Side; +import net.minecraftforge.fml.relauncher.SideOnly; + +import org.apache.commons.lang3.tuple.ImmutablePair; +import org.apache.commons.lang3.tuple.Pair; + +import WayofTime.bloodmagic.BloodMagic; +import WayofTime.bloodmagic.api.Constants; +import WayofTime.bloodmagic.api.iface.ICustomAlchemyConsumable; +import WayofTime.bloodmagic.api.util.helper.NBTHelper; +import WayofTime.bloodmagic.client.IVariantProvider; +import WayofTime.bloodmagic.registry.ModItems; +import WayofTime.bloodmagic.util.helper.TextHelper; + +public class ItemCuttingFluid extends Item implements IVariantProvider, ICustomAlchemyConsumable +{ + @Getter + private static ArrayList names = new ArrayList(); + + public static final String BASIC = "basicCuttingFluid"; + + public ItemCuttingFluid() + { + super(); + + setUnlocalizedName(Constants.Mod.MODID + ".cuttingFluid."); + setHasSubtypes(true); + setCreativeTab(BloodMagic.tabBloodMagic); + setMaxStackSize(1); + + buildItemList(); + } + + @Override + @SideOnly(Side.CLIENT) + public void addInformation(ItemStack stack, EntityPlayer player, List tooltip, boolean advanced) + { + int max = getMaxUsesForFluid(stack); + tooltip.add(TextHelper.localize("tooltip.BloodMagic.cuttingFluidRatio", max - getDamageOfFluid(stack), max)); + } + + private void buildItemList() + { + names.add(0, BASIC); + } + + @Override + public String getUnlocalizedName(ItemStack stack) + { + return super.getUnlocalizedName(stack) + names.get(stack.getItemDamage()); + } + + @Override + @SideOnly(Side.CLIENT) + public void getSubItems(Item id, CreativeTabs creativeTab, List list) + { + for (int i = 0; i < names.size(); i++) + list.add(new ItemStack(id, 1, i)); + } + + public static ItemStack getStack(String name) + { + return new ItemStack(ModItems.cuttingFluid, 1, names.indexOf(name)); + } + + @Override + public List> getVariants() + { + List> ret = new ArrayList>(); + for (String name : names) + ret.add(new ImmutablePair(names.indexOf(name), "type=" + name)); + return ret; + } + + public int getDamageOfFluid(ItemStack stack) + { + NBTHelper.checkNBT(stack); + NBTTagCompound tag = stack.getTagCompound(); + + return tag.getInteger("used"); + } + + public void applyDamageToFluid(ItemStack stack) + { + int damage = Math.min(getDamageOfFluid(stack) + 1, getMaxUsesForFluid(stack)); + NBTTagCompound tag = stack.getTagCompound(); + + tag.setInteger("used", damage); + } + + public int getMaxUsesForFluid(ItemStack stack) + { + switch (stack.getMetadata()) + { + case 0: + return 16; + default: + return 1; + } + } + + @Override + public double getDurabilityForDisplay(ItemStack stack) + { + return (double) (getDamageOfFluid(stack)) / (double) (getMaxUsesForFluid(stack)); + } + + @Override + public boolean showDurabilityBar(ItemStack stack) + { + return getDamageOfFluid(stack) > 0; + } + + @Override + public ItemStack drainUseOnAlchemyCraft(ItemStack stack) + { + applyDamageToFluid(stack); + if (getDamageOfFluid(stack) >= getMaxUsesForFluid(stack)) + { + return null; + } + + return stack; + } +} diff --git a/src/main/java/WayofTime/bloodmagic/registry/ModItems.java b/src/main/java/WayofTime/bloodmagic/registry/ModItems.java index 67350c51..c06bfd96 100644 --- a/src/main/java/WayofTime/bloodmagic/registry/ModItems.java +++ b/src/main/java/WayofTime/bloodmagic/registry/ModItems.java @@ -33,6 +33,7 @@ import WayofTime.bloodmagic.item.ItemSlate; import WayofTime.bloodmagic.item.ItemTelepositionFocus; import WayofTime.bloodmagic.item.ItemUpgradeTome; import WayofTime.bloodmagic.item.ItemUpgradeTrainer; +import WayofTime.bloodmagic.item.alchemy.ItemCuttingFluid; import WayofTime.bloodmagic.item.armour.ItemLivingArmour; import WayofTime.bloodmagic.item.armour.ItemSentientArmour; import WayofTime.bloodmagic.item.gear.ItemPackSacrifice; @@ -150,6 +151,8 @@ public class ModItems public static Item nodeRouter; public static Item baseItemFilter; + public static Item cuttingFluid; + public static Item.ToolMaterial boundToolMaterial = EnumHelper.addToolMaterial("BoundToolMaterial", 4, 1, 10, 8, 50); public static Item.ToolMaterial soulToolMaterial = EnumHelper.addToolMaterial("SoulToolMaterial", 4, 520, 7, 8, 50); @@ -244,6 +247,8 @@ public class ModItems nodeRouter = registerItem(new ItemNodeRouter(), Constants.BloodMagicItem.NODE_ROUTER.getRegName()); baseItemFilter = registerItem(new ItemRouterFilter(), Constants.BloodMagicItem.ROUTER_FILTER.getRegName()); + + cuttingFluid = registerItem(new ItemCuttingFluid(), Constants.BloodMagicItem.CUTTING_FLUID.getRegName()); } public static void initRenders() diff --git a/src/main/java/WayofTime/bloodmagic/registry/ModRecipes.java b/src/main/java/WayofTime/bloodmagic/registry/ModRecipes.java index f4757064..27daeb04 100644 --- a/src/main/java/WayofTime/bloodmagic/registry/ModRecipes.java +++ b/src/main/java/WayofTime/bloodmagic/registry/ModRecipes.java @@ -1,10 +1,21 @@ package WayofTime.bloodmagic.registry; +import net.minecraft.init.Blocks; +import net.minecraft.init.Items; +import net.minecraft.item.ItemStack; +import net.minecraft.item.crafting.FurnaceRecipes; +import net.minecraft.util.ResourceLocation; +import net.minecraftforge.fml.common.registry.GameRegistry; +import net.minecraftforge.oredict.OreDictionary; +import net.minecraftforge.oredict.RecipeSorter; +import net.minecraftforge.oredict.ShapedOreRecipe; +import net.minecraftforge.oredict.ShapelessOreRecipe; import WayofTime.bloodmagic.BloodMagic; import WayofTime.bloodmagic.alchemyArray.AlchemyArrayEffectBinding; import WayofTime.bloodmagic.api.Constants; import WayofTime.bloodmagic.api.altar.EnumAltarTier; import WayofTime.bloodmagic.api.compress.CompressionRegistry; +import WayofTime.bloodmagic.api.recipe.AlchemyTableCustomRecipe; import WayofTime.bloodmagic.api.recipe.ShapedBloodOrbRecipe; import WayofTime.bloodmagic.api.recipe.ShapelessBloodOrbRecipe; import WayofTime.bloodmagic.api.registry.AlchemyArrayRecipeRegistry; @@ -20,19 +31,11 @@ import WayofTime.bloodmagic.compress.BaseCompressionHandler; import WayofTime.bloodmagic.compress.StorageBlockCraftingManager; import WayofTime.bloodmagic.item.ItemComponent; import WayofTime.bloodmagic.item.ItemDemonCrystal; +import WayofTime.bloodmagic.item.alchemy.ItemCuttingFluid; import WayofTime.bloodmagic.item.soul.ItemSoulGem; import com.google.common.base.Stopwatch; -import net.minecraft.init.Blocks; -import net.minecraft.init.Items; -import net.minecraft.item.ItemStack; -import net.minecraft.util.ResourceLocation; -import net.minecraftforge.fml.common.registry.GameRegistry; -import net.minecraftforge.oredict.RecipeSorter; -import net.minecraftforge.oredict.ShapedOreRecipe; -import net.minecraftforge.oredict.ShapelessOreRecipe; - public class ModRecipes { public static void init() @@ -40,6 +43,8 @@ public class ModRecipes RecipeSorter.register(Constants.Mod.DOMAIN + "shapedorb", ShapedBloodOrbRecipe.class, RecipeSorter.Category.SHAPED, "before:minecraft:shapeless"); RecipeSorter.register(Constants.Mod.DOMAIN + "shapelessorb", ShapelessBloodOrbRecipe.class, RecipeSorter.Category.SHAPELESS, "after:minecraft:shapeless"); + initOreDict(); + addFurnaceRecipes(); addCraftingRecipes(); addAltarRecipes(); addAlchemyArrayRecipes(); @@ -47,6 +52,19 @@ public class ModRecipes addAlchemyTableRecipes(); } + public static void initOreDict() + { + OreDictionary.registerOre("dustIron", ItemComponent.getStack(ItemComponent.SAND_IRON)); + OreDictionary.registerOre("dustGold", ItemComponent.getStack(ItemComponent.SAND_GOLD)); + OreDictionary.registerOre("dustCoal", ItemComponent.getStack(ItemComponent.SAND_COAL)); + } + + public static void addFurnaceRecipes() + { + FurnaceRecipes.instance().addSmeltingRecipe(ItemComponent.getStack(ItemComponent.SAND_IRON), new ItemStack(Items.IRON_INGOT), (float) 0.15); + FurnaceRecipes.instance().addSmeltingRecipe(ItemComponent.getStack(ItemComponent.SAND_GOLD), new ItemStack(Items.GOLD_INGOT), (float) 0.15); + } + public static void addCraftingRecipes() { GameRegistry.addRecipe(new ShapedOreRecipe(new ItemStack(ModBlocks.soulForge), "i i", "sgs", "sos", 'i', "ingotIron", 's', "stone", 'g', "ingotGold", 'o', "blockIron")); @@ -100,7 +118,7 @@ public class ModRecipes GameRegistry.addRecipe(new ShapedBloodOrbRecipe(new ItemStack(ModItems.experienceTome), "ses", "lbl", "gog", 'o', OrbRegistry.getOrbStack(ModItems.orbMagician), 'e', Blocks.LAPIS_BLOCK, 'l', new ItemStack(ModItems.slate, 1, 2), 'b', Items.ENCHANTED_BOOK, 's', Items.STRING, 'g', "ingotGold")); GameRegistry.addRecipe(new ShapedBloodOrbRecipe(new ItemStack(ModItems.ritualReader), "gog", "isi", " s ", 's', new ItemStack(ModItems.slate, 1, 3), 'g', "blockGlass", 'i', "ingotGold", 'o', OrbRegistry.getOrbStack(ModItems.orbMaster))); - GameRegistry.addRecipe(new ShapedBloodOrbRecipe(new ItemStack(ModBlocks.alchemyTable), "sss", "wbw", "gog", 's', "stone", 'w', Blocks.WOOL, 'b', Items.BLAZE_ROD, 'g', "ingotGold", 'o', OrbRegistry.getOrbStack(ModItems.orbWeak))); + GameRegistry.addRecipe(new ShapedBloodOrbRecipe(new ItemStack(ModBlocks.alchemyTable), "sss", "wbw", "gog", 's', "stone", 'w', "plankWood", 'b', Items.BLAZE_ROD, 'g', "ingotGold", 'o', OrbRegistry.getOrbStack(ModItems.orbWeak))); for (int i = 1; i < BlockBloodRune.names.length; i++) GameRegistry.addRecipe(new ShapelessOreRecipe(new ItemStack(ModBlocks.bloodRune), new ItemStack(ModBlocks.bloodRune, 1, i))); @@ -271,5 +289,10 @@ public class ModRecipes AlchemyTableRecipeRegistry.registerRecipe(new ItemStack(Items.CLAY_BALL, 4), 50, 100, 2, Items.WATER_BUCKET, "sand"); AlchemyTableRecipeRegistry.registerRecipe(new ItemStack(Blocks.CLAY, 5), 200, 200, 1, Items.WATER_BUCKET, Blocks.HARDENED_CLAY, Blocks.HARDENED_CLAY, Blocks.HARDENED_CLAY, Blocks.HARDENED_CLAY, Blocks.HARDENED_CLAY); AlchemyTableRecipeRegistry.registerRecipe(new ItemStack(Blocks.OBSIDIAN), 50, 50, 1, Items.WATER_BUCKET, Items.LAVA_BUCKET); + + AlchemyTableRecipeRegistry.registerRecipe(ItemCuttingFluid.getStack(ItemCuttingFluid.BASIC), 1000, 400, 1, "dustCoal", Items.GUNPOWDER, Items.REDSTONE, Items.SUGAR, Items.WHEAT, new ItemStack(Items.POTIONITEM)); + + AlchemyTableRecipeRegistry.registerRecipe(new AlchemyTableCustomRecipe(ItemComponent.getStack(ItemComponent.SAND_IRON, 2), 100, 200, 1, "oreIron", ItemCuttingFluid.getStack(ItemCuttingFluid.BASIC))); + AlchemyTableRecipeRegistry.registerRecipe(new AlchemyTableCustomRecipe(ItemComponent.getStack(ItemComponent.SAND_GOLD, 2), 100, 200, 1, "oreGold", ItemCuttingFluid.getStack(ItemCuttingFluid.BASIC))); } } diff --git a/src/main/resources/assets/bloodmagic/blockstates/item/ItemComponent.json b/src/main/resources/assets/bloodmagic/blockstates/item/ItemComponent.json index e4740f5a..86f945a7 100644 --- a/src/main/resources/assets/bloodmagic/blockstates/item/ItemComponent.json +++ b/src/main/resources/assets/bloodmagic/blockstates/item/ItemComponent.json @@ -101,29 +101,19 @@ "layer0": "bloodmagic:items/ReagentTransposition" } }, - "crystaldefault": { + "ironsand": { "textures": { - "layer0": "bloodmagic:items/DefaultCrystal" + "layer0": "bloodmagic:items/IronSand" } }, - "crystalcorrosive": { + "goldsand": { "textures": { - "layer0": "bloodmagic:items/CorrosiveCrystal" + "layer0": "bloodmagic:items/GoldSand" } }, - "crystalvengeful": { + "coalsand": { "textures": { - "layer0": "bloodmagic:items/VengefulCrystal" - } - }, - "crystaldestructive": { - "textures": { - "layer0": "bloodmagic:items/DestructiveCrystal" - } - }, - "crystalsteadfast": { - "textures": { - "layer0": "bloodmagic:items/SteadfastCrystal" + "layer0": "bloodmagic:items/CoalSand" } } } diff --git a/src/main/resources/assets/bloodmagic/blockstates/item/ItemCuttingFluid.json b/src/main/resources/assets/bloodmagic/blockstates/item/ItemCuttingFluid.json new file mode 100644 index 00000000..db08b18a --- /dev/null +++ b/src/main/resources/assets/bloodmagic/blockstates/item/ItemCuttingFluid.json @@ -0,0 +1,16 @@ +{ + "forge_marker": 1, + "defaults": { + "model": "builtin/generated", + "transform": "forge:default-item" + }, + "variants": { + "type": { + "basiccuttingfluid": { + "textures": { + "layer0": "bloodmagic:items/BasicCuttingFluid" + } + } + } + } +} diff --git a/src/main/resources/assets/bloodmagic/lang/en_US.lang b/src/main/resources/assets/bloodmagic/lang/en_US.lang index 7d41e1df..3c8c1755 100644 --- a/src/main/resources/assets/bloodmagic/lang/en_US.lang +++ b/src/main/resources/assets/bloodmagic/lang/en_US.lang @@ -87,6 +87,12 @@ item.BloodMagic.baseComponent.reagentSeverance.name=Severance Reagent item.BloodMagic.baseComponent.reagentTeleposition.name=Teleposition Reagent item.BloodMagic.baseComponent.reagentTransposition.name=Transposition Reagent +item.BloodMagic.baseComponent.ironSand.name=Iron Sand +item.BloodMagic.baseComponent.goldSand.name=Gold Sand +item.BloodMagic.baseComponent.coalSand.name=Coal Sand + +item.BloodMagic.cuttingFluid.basicCuttingFluid.name=Basic Cutting Fluid + item.BloodMagic.demonCrystal.crystalDefault.name=Demon Will Crystal item.BloodMagic.demonCrystal.crystalCorrosive.name=Corrosive Will Crystal item.BloodMagic.demonCrystal.crystalDestructive.name=Destructive Will Crystal @@ -374,6 +380,8 @@ tooltip.BloodMagic.experienceTome.expLevel=Level: %d tooltip.BloodMagic.decoration.safe=Safe for decoration tooltip.BloodMagic.decoration.notSafe=Dangerous for decoration +tooltip.BloodMagic.cuttingFluidRatio=%d/%d uses remaining + # Ritual ritual.BloodMagic.blockRange.tooBig=The block range given is too big! Needs to be at most %s blocks. ritual.BloodMagic.blockRange.tooFar=The block range given is too far! Needs to be within a vertical range of %s blocks and a horizontal range of %s blocks. diff --git a/src/main/resources/assets/bloodmagic/textures/items/BasicCuttingFluid.png b/src/main/resources/assets/bloodmagic/textures/items/BasicCuttingFluid.png new file mode 100644 index 0000000000000000000000000000000000000000..3fb0f327752d9c12978fdcd9a35147757706a77a GIT binary patch literal 420 zcmV;V0bBlwP)`=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 O00009r!0`U>W;dlG zujg}O4qK|b+wT7V^Xi`W)eH_Cj!R|V%u;F=ncHzBO8Z)rqS9LZ(?v;Fu1)AQlxSmQ zNazVPV=(Xy&Qmh({vId){&!z#Z1<#Ng&~qxHA`aI8E$Ozof)#cpmbhGm*m&w`<4oA z$>eaH+yA_B-uv$gh34HtRomDv&ailYFVdQ&MBb@02)$$8UO$Q literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/bloodmagic/textures/items/GoldSand.png b/src/main/resources/assets/bloodmagic/textures/items/GoldSand.png new file mode 100644 index 0000000000000000000000000000000000000000..a3aaa1b5d0dc7f6462dfbb1e5a406f868e7f07a2 GIT binary patch literal 358 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`Y)RhkE)4%caKYZ?lYt_f1s;*b z3=DinK$vl=HlH+5kiEpy*OmPND~p&R*J8sN*+8Mso-U3d7N?g^-kW>aK)}sja^}IL z#3e~=1{K^(f|e(mG@G3;h;nMUvqLDx#lS&o-oal%E-GJ~Z?@Gk%x*4u|MA_72}i6q zcB;CzC>@&4&EODw{k*7>rR6b+bB84kEAIdC?{VD6?%z^5w+gl%)a#V$d3i4Do6e2R z3pQIlS-onOMDDc{(Nmcj&c!ybJ=M(1FeP>8o5tnUMc;qR@>GfKF<6iB#`YxC7!c8o1Sb^SW@O1TaS?83{1OUt< Bmqq{p literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/bloodmagic/textures/items/IronSand.png b/src/main/resources/assets/bloodmagic/textures/items/IronSand.png new file mode 100644 index 0000000000000000000000000000000000000000..af86f0b3c67a863e0f9a3fe5145db88a473ee5b1 GIT binary patch literal 344 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`Y)RhkE)4%caKYZ?lYt_f1s;*b z3=DinK$vl=HlH+5kiEpy*OmPND~p((v0ezqE2Obi!Hc$Z~5&05x8%xTR1 z`Gkg7j9%k@#^>bP0l+XkKVWx<( literal 0 HcmV?d00001