From 7dd170e5ad590835ed6a452ca970916d271a9776 Mon Sep 17 00:00:00 2001 From: Nick Date: Wed, 2 Dec 2015 00:55:32 -0800 Subject: [PATCH] Inscription Tools and Slates --- .../bloodmagic/api/BloodMagicAPI.java | 12 ++-- .../bloodmagic/api/ritual/EnumRuneType.java | 7 ++ .../bloodmagic/item/ItemInscriptionTool.java | 69 +++++++++++++++++++ .../WayofTime/bloodmagic/item/ItemSlate.java | 47 +++++++++++++ .../bloodmagic/registry/ModItems.java | 17 +++++ .../bloodmagic/registry/ModRecipes.java | 24 +++++++ .../assets/bloodmagic/lang/en_US.lang | 14 ++-- ...beTool1.json => ItemInscriptionTool1.json} | 0 ...beTool2.json => ItemInscriptionTool2.json} | 0 ...beTool3.json => ItemInscriptionTool3.json} | 0 ...beTool4.json => ItemInscriptionTool4.json} | 0 ...beTool5.json => ItemInscriptionTool5.json} | 0 ...beTool6.json => ItemInscriptionTool6.json} | 0 13 files changed, 178 insertions(+), 12 deletions(-) create mode 100644 src/main/java/WayofTime/bloodmagic/item/ItemInscriptionTool.java create mode 100644 src/main/java/WayofTime/bloodmagic/item/ItemSlate.java rename src/main/resources/assets/bloodmagic/models/item/{ItemScribeTool1.json => ItemInscriptionTool1.json} (100%) rename src/main/resources/assets/bloodmagic/models/item/{ItemScribeTool2.json => ItemInscriptionTool2.json} (100%) rename src/main/resources/assets/bloodmagic/models/item/{ItemScribeTool3.json => ItemInscriptionTool3.json} (100%) rename src/main/resources/assets/bloodmagic/models/item/{ItemScribeTool4.json => ItemInscriptionTool4.json} (100%) rename src/main/resources/assets/bloodmagic/models/item/{ItemScribeTool5.json => ItemInscriptionTool5.json} (100%) rename src/main/resources/assets/bloodmagic/models/item/{ItemScribeTool6.json => ItemInscriptionTool6.json} (100%) diff --git a/src/main/java/WayofTime/bloodmagic/api/BloodMagicAPI.java b/src/main/java/WayofTime/bloodmagic/api/BloodMagicAPI.java index c037408d..e7a322ee 100644 --- a/src/main/java/WayofTime/bloodmagic/api/BloodMagicAPI.java +++ b/src/main/java/WayofTime/bloodmagic/api/BloodMagicAPI.java @@ -9,8 +9,7 @@ import net.minecraftforge.fluids.Fluid; public class BloodMagicAPI { - @Getter - @Setter + @Getter @Setter private static boolean loggingEnabled; @Getter @@ -19,11 +18,12 @@ public class BloodMagicAPI { @Getter private static DamageSource damageSource = new DamageSourceBloodMagic(); - @Getter - @Setter + @Getter @Setter private static Item orbItem; + @Getter @Setter + private static Item scribeItem; - @Getter - @Setter + + @Getter @Setter private static Fluid lifeEssence; } diff --git a/src/main/java/WayofTime/bloodmagic/api/ritual/EnumRuneType.java b/src/main/java/WayofTime/bloodmagic/api/ritual/EnumRuneType.java index 44b17394..0f9f811f 100644 --- a/src/main/java/WayofTime/bloodmagic/api/ritual/EnumRuneType.java +++ b/src/main/java/WayofTime/bloodmagic/api/ritual/EnumRuneType.java @@ -1,5 +1,7 @@ package WayofTime.bloodmagic.api.ritual; +import WayofTime.bloodmagic.api.BloodMagicAPI; +import net.minecraft.item.ItemStack; import net.minecraft.util.IStringSerializable; import java.util.Locale; @@ -21,6 +23,10 @@ public enum EnumRuneType implements IStringSerializable { return values()[meta]; } + public ItemStack getScribeStack() { + return new ItemStack(BloodMagicAPI.getScribeItem(), 1, ordinal()); + } + @Override public String toString() { return name().toLowerCase(Locale.ENGLISH); @@ -30,4 +36,5 @@ public enum EnumRuneType implements IStringSerializable { public String getName() { return this.toString(); } + } diff --git a/src/main/java/WayofTime/bloodmagic/item/ItemInscriptionTool.java b/src/main/java/WayofTime/bloodmagic/item/ItemInscriptionTool.java new file mode 100644 index 00000000..1461553f --- /dev/null +++ b/src/main/java/WayofTime/bloodmagic/item/ItemInscriptionTool.java @@ -0,0 +1,69 @@ +package WayofTime.bloodmagic.item; + +import WayofTime.bloodmagic.api.Constants; +import WayofTime.bloodmagic.api.ritual.EnumRuneType; +import WayofTime.bloodmagic.block.BlockRitualStone; +import WayofTime.bloodmagic.util.helper.TextHelper; +import net.minecraft.block.state.IBlockState; +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.BlockPos; +import net.minecraft.util.EnumFacing; +import net.minecraft.world.World; +import net.minecraftforge.fml.relauncher.Side; +import net.minecraftforge.fml.relauncher.SideOnly; + +import java.util.Arrays; +import java.util.List; + +// TODO - NBT based damage +public class ItemInscriptionTool extends ItemBindable { + + public ItemInscriptionTool() { + super(); + + setEnergyUsed(100); + setUnlocalizedName(Constants.Mod.MODID + ".scribe."); + setHasSubtypes(true); + } + + @Override + public String getUnlocalizedName(ItemStack stack) { + return super.getUnlocalizedName(stack) + EnumRuneType.values()[stack.getItemDamage()]; + } + + @Override + @SideOnly(Side.CLIENT) + @SuppressWarnings("unchecked") + public void getSubItems(Item id, CreativeTabs creativeTab, List list) { + for (int i = 1; i < EnumRuneType.values().length; i++) + list.add(new ItemStack(id, 1, i)); + } + + @Override + public boolean onItemUse(ItemStack stack, EntityPlayer player, World world, BlockPos pos, EnumFacing side, float hitX, float hitY, float hitZ) { + + IBlockState state = world.getBlockState(pos); + + if (state.getBlock() instanceof BlockRitualStone && !((BlockRitualStone)state.getBlock()).isRuneType(world, pos, getType(stack))) { + world.setBlockState(pos, state.withProperty(((BlockRitualStone) state.getBlock()).getStringProp(), getType(stack).getName())); + return true; + } + + return false; + } + + @Override + @SideOnly(Side.CLIENT) + @SuppressWarnings("unchecked") + public void addInformation(ItemStack stack, EntityPlayer player, List list, boolean advanced) { + list.addAll(Arrays.asList(TextHelper.cutLongString(TextHelper.localizeEffect("tooltip.BloodMagic.inscriber.desc")))); + super.addInformation(stack, player, list, advanced); + } + + public EnumRuneType getType(ItemStack stack) { + return EnumRuneType.values()[stack.getItemDamage()]; + } +} diff --git a/src/main/java/WayofTime/bloodmagic/item/ItemSlate.java b/src/main/java/WayofTime/bloodmagic/item/ItemSlate.java new file mode 100644 index 00000000..6ec21e8f --- /dev/null +++ b/src/main/java/WayofTime/bloodmagic/item/ItemSlate.java @@ -0,0 +1,47 @@ +package WayofTime.bloodmagic.item; + +import WayofTime.bloodmagic.BloodMagic; +import WayofTime.bloodmagic.api.Constants; +import WayofTime.bloodmagic.util.helper.TextHelper; +import net.minecraft.creativetab.CreativeTabs; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.item.Item; +import net.minecraft.item.ItemStack; +import net.minecraftforge.fml.relauncher.Side; +import net.minecraftforge.fml.relauncher.SideOnly; + +import java.util.Arrays; +import java.util.List; + +public class ItemSlate extends Item { + + public String[] names = { "blank", "reinforced", "imbued", "demonic" }; + + public ItemSlate() { + super(); + + setCreativeTab(BloodMagic.tabBloodMagic); + setUnlocalizedName(Constants.Mod.MODID + ".slate."); + setHasSubtypes(true); + } + + @Override + @SideOnly(Side.CLIENT) + @SuppressWarnings("unchecked") + public void getSubItems(Item id, CreativeTabs creativeTab, List list) { + for (int i = 0; i < names.length; i++) + list.add(new ItemStack(id, 1, i)); + } + + @Override + public String getUnlocalizedName(ItemStack stack) { + return super.getUnlocalizedName(stack) + names[stack.getItemDamage()]; + } + + @Override + @SideOnly(Side.CLIENT) + @SuppressWarnings("unchecked") + public void addInformation(ItemStack stack, EntityPlayer player, List list, boolean advanced) { + list.addAll(Arrays.asList(TextHelper.cutLongString(TextHelper.localizeEffect("tooltip.BloodMagic.slate.desc")))); + } +} diff --git a/src/main/java/WayofTime/bloodmagic/registry/ModItems.java b/src/main/java/WayofTime/bloodmagic/registry/ModItems.java index 0013710a..8b1af2ac 100644 --- a/src/main/java/WayofTime/bloodmagic/registry/ModItems.java +++ b/src/main/java/WayofTime/bloodmagic/registry/ModItems.java @@ -28,6 +28,8 @@ public class ModItems { public static Item bucketEssence; public static Item activationCrystal; + public static Item slate; + public static Item inscriptionTool; public static Item sacrificialDagger; public static Item packSelfSacrifice; @@ -65,6 +67,9 @@ public class ModItems { bucketEssence = registerItem(new ItemBucketEssence()); activationCrystal = registerItem(new ItemActivationCrystal()); + slate = registerItem(new ItemSlate()); + inscriptionTool = registerItem(new ItemInscriptionTool()); + BloodMagicAPI.setScribeItem(inscriptionTool); sacrificialDagger = registerItem(new ItemSacrificialDagger()); packSacrifice = registerItem(new ItemPackSacrifice()); @@ -101,6 +106,18 @@ public class ModItems { renderHelper.itemRender(activationCrystal, 1); renderHelper.itemRender(activationCrystal, 2, "ItemActivationCrystal0"); + renderHelper.itemRender(slate, 0); + renderHelper.itemRender(slate, 1); + renderHelper.itemRender(slate, 2); + renderHelper.itemRender(slate, 3); + + renderHelper.itemRender(inscriptionTool, 1); + renderHelper.itemRender(inscriptionTool, 2); + renderHelper.itemRender(inscriptionTool, 3); + renderHelper.itemRender(inscriptionTool, 4); + renderHelper.itemRender(inscriptionTool, 5); + renderHelper.itemRender(inscriptionTool, 6); + renderHelper.itemRender(sacrificialDagger, 0); renderHelper.itemRender(sacrificialDagger, 1); renderHelper.itemRender(packSacrifice); diff --git a/src/main/java/WayofTime/bloodmagic/registry/ModRecipes.java b/src/main/java/WayofTime/bloodmagic/registry/ModRecipes.java index 7857fca8..5e928383 100644 --- a/src/main/java/WayofTime/bloodmagic/registry/ModRecipes.java +++ b/src/main/java/WayofTime/bloodmagic/registry/ModRecipes.java @@ -4,6 +4,7 @@ import WayofTime.bloodmagic.api.altar.AltarRecipe; import WayofTime.bloodmagic.api.altar.EnumAltarTier; import WayofTime.bloodmagic.api.registry.AltarRecipeRegistry; import WayofTime.bloodmagic.api.registry.OrbRegistry; +import WayofTime.bloodmagic.api.ritual.EnumRuneType; import net.minecraft.init.Blocks; import net.minecraft.init.Items; import net.minecraft.item.ItemStack; @@ -14,8 +15,31 @@ public class ModRecipes { } public static void addAltarRecipes() { + // ONE AltarRecipeRegistry.registerRecipe(new AltarRecipe(new ItemStack(Items.diamond), OrbRegistry.getOrbStack(ModItems.orbWeak), EnumAltarTier.ONE, 2000, 2, 1, false)); + AltarRecipeRegistry.registerRecipe(new AltarRecipe(new ItemStack(Blocks.stone), new ItemStack(ModItems.slate), EnumAltarTier.ONE, 1000, 5, 5, false)); + + // TWO AltarRecipeRegistry.registerRecipe(new AltarRecipe(new ItemStack(Items.emerald), OrbRegistry.getOrbStack(ModItems.orbApprentice), EnumAltarTier.TWO, 5000, 2, 1, false)); + AltarRecipeRegistry.registerRecipe(new AltarRecipe(new ItemStack(ModItems.slate), new ItemStack(ModItems.slate, 1, 1), EnumAltarTier.TWO, 2000, 5, 5, false)); + + // THREE AltarRecipeRegistry.registerRecipe(new AltarRecipe(new ItemStack(Blocks.gold_block), OrbRegistry.getOrbStack(ModItems.orbMagician), EnumAltarTier.THREE, 25000, 2, 1, false)); + AltarRecipeRegistry.registerRecipe(new AltarRecipe(new ItemStack(ModItems.slate, 1, 1), new ItemStack(ModItems.slate, 1, 2), EnumAltarTier.THREE, 5000, 15, 10, false)); + AltarRecipeRegistry.registerRecipe(new AltarRecipe(new ItemStack(Blocks.obsidian), EnumRuneType.EARTH.getScribeStack(), EnumAltarTier.THREE, 1000, 5, 5, false)); + AltarRecipeRegistry.registerRecipe(new AltarRecipe(new ItemStack(Blocks.lapis_block), EnumRuneType.WATER.getScribeStack(), EnumAltarTier.THREE, 1000, 5, 5, false)); + AltarRecipeRegistry.registerRecipe(new AltarRecipe(new ItemStack(Items.magma_cream), EnumRuneType.FIRE.getScribeStack(), EnumAltarTier.THREE, 1000, 5, 5, false)); + AltarRecipeRegistry.registerRecipe(new AltarRecipe(new ItemStack(Items.ghast_tear), EnumRuneType.AIR.getScribeStack(), EnumAltarTier.THREE, 1000, 5, 5, false)); + + // FOUR + AltarRecipeRegistry.registerRecipe(new AltarRecipe(new ItemStack(ModItems.slate, 1, 2), new ItemStack(ModItems.slate, 1, 3), EnumAltarTier.FOUR, 15000, 20, 20, false)); + AltarRecipeRegistry.registerRecipe(new AltarRecipe(new ItemStack(Blocks.coal_block), EnumRuneType.DUSK.getScribeStack(), EnumAltarTier.FOUR, 2000, 20, 10, false)); + + // FIVE + AltarRecipeRegistry.registerRecipe(new AltarRecipe(new ItemStack(ModItems.slate, 1, 3), new ItemStack(ModItems.slate, 1, 4), EnumAltarTier.FIVE, 30000, 40, 100, false)); + + // SIX + AltarRecipeRegistry.registerRecipe(new AltarRecipe(new ItemStack(ModBlocks.crystal), OrbRegistry.getOrbStack(ModItems.orbTranscendent), EnumAltarTier.SIX, 200000, 100, 200, false)); + AltarRecipeRegistry.registerRecipe(new AltarRecipe(new ItemStack(Blocks.glowstone), EnumRuneType.DAWN.getScribeStack(), EnumAltarTier.SIX, 200000, 100, 200, false)); } } diff --git a/src/main/resources/assets/bloodmagic/lang/en_US.lang b/src/main/resources/assets/bloodmagic/lang/en_US.lang index 1fbbaef7..cda38903 100644 --- a/src/main/resources/assets/bloodmagic/lang/en_US.lang +++ b/src/main/resources/assets/bloodmagic/lang/en_US.lang @@ -13,12 +13,12 @@ item.BloodMagic.pack.sacrifice.name=Coat of Arms item.BloodMagic.bucket.lifeEssence.name=Bucket of Life -item.BloodMagic.scribe.water.name=Water Scribing Tools -item.BloodMagic.scribe.fire.name=Fire Scribing Tools -item.BloodMagic.scribe.earth.name=Earth Scribing Tools -item.BloodMagic.scribe.air.name=Air Scribing Tools -item.BloodMagic.scribe.dusk.name=Dusk Scribing Tools -item.BloodMagic.scribe.dawn.name=Dawn Scribing Tools +item.BloodMagic.scribe.water.name=Elemental Inscription Tool: Water +item.BloodMagic.scribe.fire.name=Elemental Inscription Tool: Fire +item.BloodMagic.scribe.earth.name=Elemental Inscription Tool: Earth +item.BloodMagic.scribe.air.name=Elemental Inscription Tool: Air +item.BloodMagic.scribe.dusk.name=Elemental Inscription Tool: Dusk +item.BloodMagic.scribe.dawn.name=Elemental Inscription Tool: Dawn item.BloodMagic.focus.weak.name=Teleposition Focus item.BloodMagic.focus.enhanced.name=Enhanced Teleposition Focus @@ -118,6 +118,8 @@ tooltip.BloodMagic.sigil.lava.desc=&oHOT! DO NOT EAT tooltip.BloodMagic.sigil.void.desc=&oBetter than a Swiffer®! tooltip.BloodMagic.sacrificialDagger.desc=Just a prick of the finger will suffice... +tooltip.BloodMagic.slate.desc=Infused stone inside of a Blood Altar +tooltip.BloodMagic.inscriber.desc=The writing is on the wall... tooltip.BloodMagic.pack.selfSacrifice.desc=This pack really chafes... tooltip.BloodMagic.pack.sacrifice.desc=Description diff --git a/src/main/resources/assets/bloodmagic/models/item/ItemScribeTool1.json b/src/main/resources/assets/bloodmagic/models/item/ItemInscriptionTool1.json similarity index 100% rename from src/main/resources/assets/bloodmagic/models/item/ItemScribeTool1.json rename to src/main/resources/assets/bloodmagic/models/item/ItemInscriptionTool1.json diff --git a/src/main/resources/assets/bloodmagic/models/item/ItemScribeTool2.json b/src/main/resources/assets/bloodmagic/models/item/ItemInscriptionTool2.json similarity index 100% rename from src/main/resources/assets/bloodmagic/models/item/ItemScribeTool2.json rename to src/main/resources/assets/bloodmagic/models/item/ItemInscriptionTool2.json diff --git a/src/main/resources/assets/bloodmagic/models/item/ItemScribeTool3.json b/src/main/resources/assets/bloodmagic/models/item/ItemInscriptionTool3.json similarity index 100% rename from src/main/resources/assets/bloodmagic/models/item/ItemScribeTool3.json rename to src/main/resources/assets/bloodmagic/models/item/ItemInscriptionTool3.json diff --git a/src/main/resources/assets/bloodmagic/models/item/ItemScribeTool4.json b/src/main/resources/assets/bloodmagic/models/item/ItemInscriptionTool4.json similarity index 100% rename from src/main/resources/assets/bloodmagic/models/item/ItemScribeTool4.json rename to src/main/resources/assets/bloodmagic/models/item/ItemInscriptionTool4.json diff --git a/src/main/resources/assets/bloodmagic/models/item/ItemScribeTool5.json b/src/main/resources/assets/bloodmagic/models/item/ItemInscriptionTool5.json similarity index 100% rename from src/main/resources/assets/bloodmagic/models/item/ItemScribeTool5.json rename to src/main/resources/assets/bloodmagic/models/item/ItemInscriptionTool5.json diff --git a/src/main/resources/assets/bloodmagic/models/item/ItemScribeTool6.json b/src/main/resources/assets/bloodmagic/models/item/ItemInscriptionTool6.json similarity index 100% rename from src/main/resources/assets/bloodmagic/models/item/ItemScribeTool6.json rename to src/main/resources/assets/bloodmagic/models/item/ItemInscriptionTool6.json