From ef721d287c94b833217e80a5433ede39b56cbe1e Mon Sep 17 00:00:00 2001 From: Vasco Lavos Date: Wed, 18 Jun 2014 01:07:44 +0100 Subject: [PATCH] Added the Rod of the Seas. --- .../botania/common/block/BlockAltar.java | 15 +++-- .../common/crafting/ModCrafingRecipes.java | 9 +++ .../botania/common/item/ItemDirtRod.java | 6 +- .../botania/common/item/ItemWaterRod.java | 53 ++++++++++++++++++ .../vazkii/botania/common/item/ModItems.java | 2 + .../botania/common/lexicon/LexiconData.java | 6 +- .../botania/common/lib/LibItemNames.java | 1 + .../vazkii/botania/common/lib/LibLexicon.java | 1 + resources/assets/botania/lang/en_US.lang | 6 ++ .../botania/textures/items/waterRod.png | Bin 0 -> 3312 bytes 10 files changed, 90 insertions(+), 9 deletions(-) create mode 100644 MODSRC/vazkii/botania/common/item/ItemWaterRod.java create mode 100644 resources/assets/botania/textures/items/waterRod.png diff --git a/MODSRC/vazkii/botania/common/block/BlockAltar.java b/MODSRC/vazkii/botania/common/block/BlockAltar.java index c0441a7d5..b3b315701 100644 --- a/MODSRC/vazkii/botania/common/block/BlockAltar.java +++ b/MODSRC/vazkii/botania/common/block/BlockAltar.java @@ -21,6 +21,7 @@ import net.minecraft.entity.item.EntityItem; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.init.Blocks; import net.minecraft.init.Items; +import net.minecraft.item.Item; import net.minecraft.item.ItemStack; import net.minecraft.nbt.NBTTagCompound; import net.minecraft.tileentity.TileEntity; @@ -28,9 +29,12 @@ import net.minecraft.util.IIcon; import net.minecraft.world.World; import vazkii.botania.api.lexicon.ILexiconable; import vazkii.botania.api.lexicon.LexiconEntry; +import vazkii.botania.api.mana.ManaItemHandler; import vazkii.botania.client.lib.LibRenderIDs; import vazkii.botania.common.block.tile.TileAltar; import vazkii.botania.common.block.tile.TileSimpleInventory; +import vazkii.botania.common.item.ItemWaterRod; +import vazkii.botania.common.item.ModItems; import vazkii.botania.common.lexicon.LexiconData; import vazkii.botania.common.lib.LibBlockNames; @@ -67,7 +71,7 @@ public class BlockAltar extends BlockModContainer implements ILexiconable { public boolean onBlockActivated(World par1World, int par2, int par3, int par4, EntityPlayer par5EntityPlayer, int par6, float par7, float par8, float par9) { ItemStack stack = par5EntityPlayer.getCurrentEquippedItem(); TileAltar tile = (TileAltar) par1World.getTileEntity(par2, par3, par4); - + if(par5EntityPlayer.isSneaking()) { for(int i = tile.getSizeInventory() - 1; i >= 0; i--) { ItemStack stackAt = tile.getStackInSlot(i); @@ -81,10 +85,13 @@ public class BlockAltar extends BlockModContainer implements ILexiconable { } } } else { - if(stack != null && stack.getItem() == Items.water_bucket) { + if(stack != null && (stack.getItem() == Items.water_bucket || (stack.getItem() == ModItems.waterRod && ManaItemHandler.requestManaExact(stack, par5EntityPlayer, ItemWaterRod.COST, false)))) { if(!tile.hasWater) { - if(!par5EntityPlayer.capabilities.isCreativeMode) + if(stack.getItem() == ModItems.waterRod) + ManaItemHandler.requestManaExact(stack, par5EntityPlayer, ItemWaterRod.COST, true); + else if(!par5EntityPlayer.capabilities.isCreativeMode) par5EntityPlayer.inventory.setInventorySlotContents(par5EntityPlayer.inventory.currentItem, new ItemStack(Items.bucket)); + tile.hasWater = true; par1World.func_147453_f(par2, par3, par4, this); par1World.markBlockForUpdate(par2, par3, par4); @@ -93,7 +100,7 @@ public class BlockAltar extends BlockModContainer implements ILexiconable { return true; } } - + return false; } diff --git a/MODSRC/vazkii/botania/common/crafting/ModCrafingRecipes.java b/MODSRC/vazkii/botania/common/crafting/ModCrafingRecipes.java index 81a849cef..10c65dd1e 100644 --- a/MODSRC/vazkii/botania/common/crafting/ModCrafingRecipes.java +++ b/MODSRC/vazkii/botania/common/crafting/ModCrafingRecipes.java @@ -130,6 +130,7 @@ public final class ModCrafingRecipes { public static IRecipe recipeRedQuartz; public static IRecipe recipeAlfPortal; public static IRecipe recipeNaturaPylon; + public static IRecipe recipeWaterRod; public static void init() { // Lexicon Recipe @@ -725,6 +726,14 @@ public final class ModCrafingRecipes { addShapelessOreDictRecipe(new ItemStack(ModBlocks.pylon, 1, 1), ModBlocks.pylon, LibOreDict.LIFE_ESSENCE, LibOreDict.LIFE_ESSENCE); recipeNaturaPylon = BotaniaAPI.getLatestAddedRecipe(); + // Rod of the Seas Recipe + addOreDictRecipe(new ItemStack(ModItems.waterRod), + " B", " T ", "R ", + 'B', new ItemStack(Items.potionitem), + 'T', LibOreDict.LIVINGWOOD_TWIG, + 'R', LibOreDict.RUNE[0]); + recipeWaterRod = BotaniaAPI.getLatestAddedRecipe(); + // Mana and Terrasteel Block Recipes addOreDictRecipe(new ItemStack(ModBlocks.storage, 1, 0), "III", "III", "III", diff --git a/MODSRC/vazkii/botania/common/item/ItemDirtRod.java b/MODSRC/vazkii/botania/common/item/ItemDirtRod.java index 433eb94e3..c41993816 100644 --- a/MODSRC/vazkii/botania/common/item/ItemDirtRod.java +++ b/MODSRC/vazkii/botania/common/item/ItemDirtRod.java @@ -62,7 +62,5 @@ public class ItemDirtRod extends ItemMod implements IManaUsingItem { public boolean usesMana(ItemStack stack) { return true; } - - -} - + +} \ No newline at end of file diff --git a/MODSRC/vazkii/botania/common/item/ItemWaterRod.java b/MODSRC/vazkii/botania/common/item/ItemWaterRod.java new file mode 100644 index 000000000..107b340ee --- /dev/null +++ b/MODSRC/vazkii/botania/common/item/ItemWaterRod.java @@ -0,0 +1,53 @@ +package vazkii.botania.common.item; + +import net.minecraft.block.Block; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.init.Blocks; +import net.minecraft.init.Items; +import net.minecraft.item.ItemStack; +import net.minecraft.world.World; +import net.minecraftforge.common.util.ForgeDirection; +import vazkii.botania.api.mana.IManaUsingItem; +import vazkii.botania.api.mana.ManaItemHandler; +import vazkii.botania.common.Botania; +import vazkii.botania.common.block.ModBlocks; +import vazkii.botania.common.lib.LibItemNames; + +public class ItemWaterRod extends ItemMod implements IManaUsingItem { + + public static final int COST = 75; + + public ItemWaterRod() { + super(); + setMaxStackSize(1); + setUnlocalizedName(LibItemNames.WATER_ROD); + } + + @Override + public boolean onItemUse(ItemStack par1ItemStack, EntityPlayer par2EntityPlayer, World par3World, int par4, int par5, int par6, int par7, float par8, float par9, float par10) { + if(ManaItemHandler.requestManaExact(par1ItemStack, par2EntityPlayer, COST, false)) { + ForgeDirection dir = ForgeDirection.getOrientation(par7); + + ItemStack stackToPlace = new ItemStack(Blocks.flowing_water); + stackToPlace.tryPlaceItemIntoWorld(par2EntityPlayer, par3World, par4, par5, par6, par7, par8, par9, par10); + + if(stackToPlace.stackSize == 0) { + ManaItemHandler.requestManaExact(par1ItemStack, par2EntityPlayer, COST, true); + for(int i = 0; i < 6; i++) + Botania.proxy.sparkleFX(par3World, par4 + dir.offsetX + Math.random(), par5 + dir.offsetY + Math.random(), par6 + dir.offsetZ + Math.random(), 0.2F, 0.2F, 1F, 1F, 5); + } + } + return true; + } + + @Override + public boolean isFull3D() { + return true; + } + + @Override + public boolean usesMana(ItemStack stack) { + return true; + } + +} diff --git a/MODSRC/vazkii/botania/common/item/ModItems.java b/MODSRC/vazkii/botania/common/item/ModItems.java index 1c5814fc5..d93d711d9 100644 --- a/MODSRC/vazkii/botania/common/item/ModItems.java +++ b/MODSRC/vazkii/botania/common/item/ModItems.java @@ -101,6 +101,7 @@ public final class ModItems { public static Item flightTiara; public static Item enderDagger; public static Item quartz; + public static Item waterRod; public static void init() { lexicon = new ItemLexicon(); @@ -154,6 +155,7 @@ public final class ModItems { flightTiara = new ItemFlightTiara(); enderDagger = new ItemEnderDagger(); quartz = new ItemQuartz(); + waterRod = new ItemWaterRod(); OreDictionary.registerOre(LibOreDict.LEXICON, lexicon); for(int i = 0; i < 16; i++) { diff --git a/MODSRC/vazkii/botania/common/lexicon/LexiconData.java b/MODSRC/vazkii/botania/common/lexicon/LexiconData.java index d0d285827..a48a4716d 100644 --- a/MODSRC/vazkii/botania/common/lexicon/LexiconData.java +++ b/MODSRC/vazkii/botania/common/lexicon/LexiconData.java @@ -127,6 +127,7 @@ public final class LexiconData { public static LexiconEntry terraBlade; public static LexiconEntry terraPick; public static LexiconEntry enderDagger; + public static LexiconEntry waterRod; public static LexiconEntry baublesIntro; public static LexiconEntry tinyPlanet; @@ -411,6 +412,9 @@ public final class LexiconData { enderDagger = new BLexiconEntry(LibLexicon.TOOL_ENDER_DAGGER, categoryTools); enderDagger.setLexiconPages(new PageText("0"), new PageText("1"), new PageCraftingRecipe("2", ModCrafingRecipes.recipeEnderDagger)); + waterRod = new BLexiconEntry(LibLexicon.TOOL_WATER_ROD, categoryTools); + waterRod.setLexiconPages(new PageText("0"), new PageCraftingRecipe("1", ModCrafingRecipes.recipeWaterRod)); + // BAUBLES ENTRIES baublesIntro = new BLexiconEntry(LibLexicon.BAUBLE_INTRO, categoryBaubles); baublesIntro.setPriority().setLexiconPages(new PageText("0"), new PageImage("1", LibResources.ENTRY_BAUBLES), new PageText("2")); @@ -464,7 +468,7 @@ public final class LexiconData { elvenMessage.setPriority().setLexiconPages(new PageImage("0", LibResources.ENTRY_ELVEN_GARDE), new PageText("1"), new PageText("2"), new PageText("3"), new PageText("4"), new PageText("5"), new PageText("6")); elvenResources = new ALexiconEntry(LibLexicon.ALF_RESOURCES, categoryAlfhomancy); - elvenResources.setPriority().setLexiconPages(new PageText("0"), new PageElvenRecipe("1", ModElvenTradeRecipes.dreamwoodRecipe), new PageElvenRecipe("2", ModElvenTradeRecipes.elementiumRecipe), new PageElvenRecipe("3", ModElvenTradeRecipes.pixieDustRecipe), new PageElvenRecipe("3", ModElvenTradeRecipes.dragonstoneRecipe)); + elvenResources.setPriority().setLexiconPages(new PageText("0"), new PageElvenRecipe("1", ModElvenTradeRecipes.dreamwoodRecipe), new PageElvenRecipe("2", ModElvenTradeRecipes.elementiumRecipe), new PageElvenRecipe("3", ModElvenTradeRecipes.pixieDustRecipe), new PageElvenRecipe("4", ModElvenTradeRecipes.dragonstoneRecipe)); // MISCLENAEOUS ENTRIES unstableBlocks = new BLexiconEntry(LibLexicon.MISC_UNSTABLE_BLOCKS, categoryMisc); diff --git a/MODSRC/vazkii/botania/common/lib/LibItemNames.java b/MODSRC/vazkii/botania/common/lib/LibItemNames.java index 3dc5e2b87..3b2cdd4e5 100644 --- a/MODSRC/vazkii/botania/common/lib/LibItemNames.java +++ b/MODSRC/vazkii/botania/common/lib/LibItemNames.java @@ -64,6 +64,7 @@ public final class LibItemNames { public static final String FLIGHT_TIARA = "flightTiara"; public static final String ENDER_DAGGER = "enderDagger"; public static final String QUARTZ = "quartz"; + public static final String WATER_ROD = "waterRod"; public static final String[] LENS_NAMES = new String[] { "lensNormal", diff --git a/MODSRC/vazkii/botania/common/lib/LibLexicon.java b/MODSRC/vazkii/botania/common/lib/LibLexicon.java index c3af05951..6659e3291 100644 --- a/MODSRC/vazkii/botania/common/lib/LibLexicon.java +++ b/MODSRC/vazkii/botania/common/lib/LibLexicon.java @@ -105,6 +105,7 @@ public final class LibLexicon { public static final String TOOL_TERRA_SWORD = "terraSword"; public static final String TOOL_TERRA_PICK = "terraPick"; public static final String TOOL_ENDER_DAGGER = "enderDagger"; + public static final String TOOL_WATER_ROD = "waterRod"; public static final String BAUBLE_INTRO = "bIntro"; public static final String BAUBLE_TINY_PLANET = "tinyPlanet"; diff --git a/resources/assets/botania/lang/en_US.lang b/resources/assets/botania/lang/en_US.lang index 7a8985e18..d6e374ad6 100644 --- a/resources/assets/botania/lang/en_US.lang +++ b/resources/assets/botania/lang/en_US.lang @@ -465,6 +465,7 @@ item.botania:quartz4.name=Redquartz item.botania:elementium.name=Elementium Ingot item.botania:pixieDust.name=Pixie Dust item.botania:dragonstone.name=Dragonstone +item.botania:waterRod.name=Rod of the Seas # GUI TEXT botania.gui.lexicon.header=Lexica Botania, %s Edition's Index - Pick which category you would like to study: @@ -979,6 +980,11 @@ botania.page.enderDagger0=Those &4Endermen&0. They're the second more pesky thin botania.page.enderDagger1=Due of the type of infusion, though, the dagger only lasts for a few kills, and the energy that radiates from it prevents the &1Manasteel&0 from gathering &4Mana&0 to avoid damage, like typical tools would. Still, all in the name of killing those monsters. botania.page.enderDagger2=Strike my Soul +# -- ROD OF THE SEAS +botania.entry.waterRod=Rod of the Seas +botania.page.waterRod0=Similarly to it's land counterpart, the &1Rod of the Seas&0 will, at the cost of some &4Mana&0, place down a &1Water&0 block wherever it's used on. Furthermore, it can also be used to refil a &1Petal Apothecary&0. +botania.page.waterRod1=Keep the Earth clean, it isn't Uranus + # - BAUBLES # -- AN INTRODUCTION TO BAUBLES botania.entry.bIntro=An Introduction to Baubles diff --git a/resources/assets/botania/textures/items/waterRod.png b/resources/assets/botania/textures/items/waterRod.png new file mode 100644 index 0000000000000000000000000000000000000000..609b93787ee2ea14b40994cf852f194a72cb8f06 GIT binary patch literal 3312 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 uH1Sxi$LU973`!|{-{