From e36546bbb6d48ac215863311389a4e84794f2387 Mon Sep 17 00:00:00 2001 From: Lizbeth Rika Date: Tue, 7 Jul 2015 19:56:58 +0100 Subject: [PATCH] Made the Pure Daisy more performant and added a water->snow recipe. --- .../java/vazkii/botania/api/package-info.java | 2 +- .../botania/api/recipe/RecipePureDaisy.java | 26 ++++++++++++++----- .../nei/RecipeHandlerPureDaisy.java | 3 ++- .../block/subtile/SubTilePureDaisy.java | 4 ++- .../common/crafting/ModPureDaisyRecipes.java | 2 ++ .../resources/assets/botania/lang/en_US.lang | 2 +- 6 files changed, 28 insertions(+), 11 deletions(-) diff --git a/src/main/java/vazkii/botania/api/package-info.java b/src/main/java/vazkii/botania/api/package-info.java index f1701e11b..50c7015c5 100644 --- a/src/main/java/vazkii/botania/api/package-info.java +++ b/src/main/java/vazkii/botania/api/package-info.java @@ -1,4 +1,4 @@ -@API(owner = "Botania", apiVersion = "55", provides = "BotaniaAPI") +@API(owner = "Botania", apiVersion = "56", provides = "BotaniaAPI") package vazkii.botania.api; import cpw.mods.fml.common.API; diff --git a/src/main/java/vazkii/botania/api/recipe/RecipePureDaisy.java b/src/main/java/vazkii/botania/api/recipe/RecipePureDaisy.java index 8f1174b3e..c4a5842a8 100644 --- a/src/main/java/vazkii/botania/api/recipe/RecipePureDaisy.java +++ b/src/main/java/vazkii/botania/api/recipe/RecipePureDaisy.java @@ -10,6 +10,10 @@ */ package vazkii.botania.api.recipe; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + import net.minecraft.block.Block; import net.minecraft.item.ItemStack; import net.minecraft.world.World; @@ -18,6 +22,8 @@ import vazkii.botania.api.subtile.SubTileEntity; public class RecipePureDaisy { + private static final Map> oreMap = new HashMap(); + Object input; Block output; int outputMeta; @@ -34,13 +40,11 @@ public class RecipePureDaisy { /** * This gets called every tick, please be careful with your checks. */ - public boolean matches(World world, int x, int y, int z, SubTileEntity pureDaisy) { - Block block = world.getBlock(x, y, z); - world.getBlockMetadata(x, y, z); - if(input instanceof Block && block == input) - return true; + public boolean matches(World world, int x, int y, int z, SubTileEntity pureDaisy, Block block, int meta) { + if(input instanceof Block) + return block == input; - ItemStack stack = new ItemStack(block, 1, world.getBlockMetadata(x, y, z)); + ItemStack stack = new ItemStack(block, 1, meta); String oredict = (String) input; return isOreDict(stack, oredict); } @@ -49,7 +53,15 @@ public class RecipePureDaisy { if(stack == null || stack.getItem() == null) return false; - for(ItemStack ostack : OreDictionary.getOres(entry)) { + List ores; + if(oreMap.containsKey(entry)) + ores = oreMap.get(entry); + else { + ores = OreDictionary.getOres(entry); + oreMap.put(entry, ores); + } + + for(ItemStack ostack : ores) { ItemStack cstack = ostack.copy(); if(cstack.getItemDamage() == Short.MAX_VALUE) cstack.setItemDamage(stack.getItemDamage()); diff --git a/src/main/java/vazkii/botania/client/integration/nei/RecipeHandlerPureDaisy.java b/src/main/java/vazkii/botania/client/integration/nei/RecipeHandlerPureDaisy.java index 88136d192..f0afaf5aa 100644 --- a/src/main/java/vazkii/botania/client/integration/nei/RecipeHandlerPureDaisy.java +++ b/src/main/java/vazkii/botania/client/integration/nei/RecipeHandlerPureDaisy.java @@ -5,6 +5,7 @@ import java.util.ArrayList; import java.util.Collection; import java.util.List; +import net.minecraft.block.Block; import net.minecraft.item.ItemStack; import net.minecraft.util.StatCollector; import net.minecraftforge.oredict.OreDictionary; @@ -36,7 +37,7 @@ public class RecipeHandlerPureDaisy extends TemplateRecipeHandler { if(recipe.getInput() instanceof String) inputs.add(new PositionedStack(OreDictionary.getOres((String) recipe.getInput()), 42, 23)); - else inputs.add(new PositionedStack(recipe.getInput(), 42, 23)); + else inputs.add(new PositionedStack(new ItemStack((Block) recipe.getInput()), 42, 23)); output = new PositionedStack(new ItemStack(recipe.getOutput()), 101, 23); } diff --git a/src/main/java/vazkii/botania/common/block/subtile/SubTilePureDaisy.java b/src/main/java/vazkii/botania/common/block/subtile/SubTilePureDaisy.java index 3f6613e40..3ff872c9a 100644 --- a/src/main/java/vazkii/botania/common/block/subtile/SubTilePureDaisy.java +++ b/src/main/java/vazkii/botania/common/block/subtile/SubTilePureDaisy.java @@ -54,9 +54,11 @@ public class SubTilePureDaisy extends SubTileEntity { ChunkCoordinates coords = new ChunkCoordinates(supertile.xCoord + acoords[0], supertile.yCoord + acoords[1], supertile.zCoord + acoords[2]); World world = supertile.getWorldObj(); if(!world.isAirBlock(coords.posX, coords.posY, coords.posZ)) { + Block block = world.getBlock(coords.posX, coords.posY, coords.posZ); + int meta = world.getBlockMetadata(coords.posX, coords.posY, coords.posZ); RecipePureDaisy recipe = null; for(RecipePureDaisy recipe_ : BotaniaAPI.pureDaisyRecipes) - if(recipe_.matches(world, coords.posX, coords.posY, coords.posZ, this)) { + if(recipe_.matches(world, coords.posX, coords.posY, coords.posZ, this, block, meta)) { recipe = recipe_; break; } diff --git a/src/main/java/vazkii/botania/common/crafting/ModPureDaisyRecipes.java b/src/main/java/vazkii/botania/common/crafting/ModPureDaisyRecipes.java index 72bf5738d..df6951a18 100644 --- a/src/main/java/vazkii/botania/common/crafting/ModPureDaisyRecipes.java +++ b/src/main/java/vazkii/botania/common/crafting/ModPureDaisyRecipes.java @@ -11,6 +11,7 @@ package vazkii.botania.common.crafting; import net.minecraft.init.Blocks; +import net.minecraft.item.ItemStack; import vazkii.botania.api.BotaniaAPI; import vazkii.botania.common.block.ModBlocks; import vazkii.botania.common.lib.LibOreDict; @@ -25,6 +26,7 @@ public final class ModPureDaisyRecipes { BotaniaAPI.registerPureDaisyRecipe("soulSand", Blocks.sand, 0); BotaniaAPI.registerPureDaisyRecipe("ice", Blocks.packed_ice, 0); BotaniaAPI.registerPureDaisyRecipe(LibOreDict.BLAZE_BLOCK, Blocks.obsidian, 0); + BotaniaAPI.registerPureDaisyRecipe(Blocks.water, Blocks.snow, 0); } } diff --git a/src/main/resources/assets/botania/lang/en_US.lang b/src/main/resources/assets/botania/lang/en_US.lang index b413a33c1..37bfc3d74 100644 --- a/src/main/resources/assets/botania/lang/en_US.lang +++ b/src/main/resources/assets/botania/lang/en_US.lang @@ -1516,7 +1516,7 @@ botania.entry.pureDaisy=Pure Daisy botania.page.pureDaisy0=The &1Pure Daisy&0 is not only the most basic, but also the most important flower a botanist can have.
This flower will purify any adjacent &1Wood&0 and &1Stone&0 blocks, as seen on the next page, into their purified counterparts, &1Livingwood&0 and &1Livingrock&0, which can be used for crafting. botania.page.pureDaisy1=Just give it &4a minute&0 or so... botania.page.pureDaisy2=&1Livingwood&0 can be turned into twigs -botania.page.pureDaisy4=A few other blocks can also be purified by placing them around the flower. While not as unique and essential as the living blocks, perhaps this might come in handy. This includes &1Netherrack&0 into &1Cobblestone&0, &1Soul Sand&0 into &1Sand&0 or &1Ice&0 into &1Packed Ice&0. +botania.page.pureDaisy4=A few other blocks can also be purified by placing them around the flower. While not as unique and essential as the living blocks, perhaps this might come in handy. This includes &1Netherrack&0 into &1Cobblestone&0, &1Soul Sand&0 into &1Sand&0, &1Ice&0 into &1Packed Ice&0 or &1Water&0 to &1Snow&0. botania.page.pureDaisy3=White is bright and pure # -- WAND OF THE FOREST