From beb453df1ef60a8dc7a20242471d3fe85aaad03d Mon Sep 17 00:00:00 2001 From: Calclavia Date: Wed, 26 Feb 2014 00:11:09 +0800 Subject: [PATCH] Fixed crash between fluid names and ore dict names --- .../archaic/firebox/TileFirebox.java | 2 +- .../mechanical/process/BlockFilter.java | 6 ++- .../process/purifier/TileMixer.java | 3 +- .../core/ResonantInduction.java | 4 +- .../core/nei/NEIResonantInductionConfig.java | 4 +- .../core/resource/ResourceGenerator.java | 47 ++++++++++++++++--- .../resource/fluid/BlockFluidMixture.java | 5 ++ 7 files changed, 57 insertions(+), 14 deletions(-) diff --git a/archaic/src/main/java/resonantinduction/archaic/firebox/TileFirebox.java b/archaic/src/main/java/resonantinduction/archaic/firebox/TileFirebox.java index 7ad40014..8f0facae 100644 --- a/archaic/src/main/java/resonantinduction/archaic/firebox/TileFirebox.java +++ b/archaic/src/main/java/resonantinduction/archaic/firebox/TileFirebox.java @@ -126,7 +126,7 @@ public class TileFirebox extends TileElectricalInventory implements IPacketRecei if (heatEnergy >= getMeltIronEnergy((meta / 8f) * 1000)) { // TODO: Make refined dust yield more molten fluid than normal dust. - worldObj.setBlock(xCoord, yCoord + 1, zCoord, ResourceGenerator.getFluidMaterial(name).blockID, meta, 3); + worldObj.setBlock(xCoord, yCoord + 1, zCoord, ResourceGenerator.getMolten(name).blockID, meta, 3); TileEntity tile = worldObj.getBlockTileEntity(xCoord, yCoord + 1, zCoord); if (tile instanceof TileMaterial) diff --git a/mechanical/src/main/java/resonantinduction/mechanical/process/BlockFilter.java b/mechanical/src/main/java/resonantinduction/mechanical/process/BlockFilter.java index a321e00d..8becc002 100644 --- a/mechanical/src/main/java/resonantinduction/mechanical/process/BlockFilter.java +++ b/mechanical/src/main/java/resonantinduction/mechanical/process/BlockFilter.java @@ -13,6 +13,7 @@ import net.minecraftforge.fluids.IFluidHandler; import resonantinduction.api.recipe.MachineRecipes; import resonantinduction.api.recipe.MachineRecipes.RecipeType; import resonantinduction.api.recipe.RecipeResource; +import resonantinduction.core.resource.ResourceGenerator; import resonantinduction.core.resource.fluid.BlockFluidMixture; import universalelectricity.api.vector.Vector3; import calclavia.lib.prefab.block.BlockTile; @@ -71,17 +72,18 @@ public class BlockFilter extends BlockTile */ BlockFluidMixture fluidBlock = (BlockFluidMixture) bAbove; int amount = fluidBlock.getQuantaValue(world, checkAbove.intX(), checkAbove.intY(), checkAbove.intZ()); + int leakAmount = 2; /** * Drop item from fluid. */ - for (RecipeResource resoure : MachineRecipes.INSTANCE.getOutput(RecipeType.MIXER, "dust" + LanguageUtility.capitalizeFirst(fluidBlock.getFluid().getName().replace("mixture", "")))) + for (RecipeResource resoure : MachineRecipes.INSTANCE.getOutput(RecipeType.MIXER, "dust" + ResourceGenerator.mixtureToMaterial(fluidBlock.getFluid().getName()))) { InventoryUtility.dropItemStack(world, checkAbove.clone().add(0.5), resoure.getItemStack().copy()); } // TODO: Check if this is correct? - int remaining = amount - 2; + int remaining = amount - leakAmount; /** * Remove liquid from top. diff --git a/mechanical/src/main/java/resonantinduction/mechanical/process/purifier/TileMixer.java b/mechanical/src/main/java/resonantinduction/mechanical/process/purifier/TileMixer.java index f4d88b8f..ff048bfb 100644 --- a/mechanical/src/main/java/resonantinduction/mechanical/process/purifier/TileMixer.java +++ b/mechanical/src/main/java/resonantinduction/mechanical/process/purifier/TileMixer.java @@ -15,6 +15,7 @@ import resonantinduction.api.recipe.MachineRecipes; import resonantinduction.api.recipe.MachineRecipes.RecipeType; import resonantinduction.core.Reference; import resonantinduction.core.ResonantInduction; +import resonantinduction.core.resource.ResourceGenerator; import resonantinduction.core.resource.fluid.BlockFluidMixture; import resonantinduction.mechanical.network.TileMechanical; import resonantinduction.mechanical.process.Timer; @@ -153,7 +154,7 @@ public class TileMixer extends TileMechanical } else if (worldObj.isAirBlock(mixPosition.intX(), mixPosition.intY(), mixPosition.intZ()) || block.blockID == Block.waterStill.blockID || block.blockID == Block.waterMoving.blockID) { - mixPosition.setBlock(worldObj, ResonantInduction.blockFluidMixtures.get(entity.getEntityItem().getItemDamage()).blockID); + mixPosition.setBlock(worldObj, ResourceGenerator.getMixture(ResourceGenerator.getName(entity.getEntityItem().getItemDamage())).blockID); } return false; diff --git a/src/main/java/resonantinduction/core/ResonantInduction.java b/src/main/java/resonantinduction/core/ResonantInduction.java index 679fa648..4a1047c2 100644 --- a/src/main/java/resonantinduction/core/ResonantInduction.java +++ b/src/main/java/resonantinduction/core/ResonantInduction.java @@ -77,8 +77,8 @@ public class ResonantInduction public static ItemOreResource itemDust; public static ItemOreResource itemRefinedDust; public static Block blockDust; - public static final List blockFluidMixtures = new ArrayList(); - public static final List blockFluidMaterials = new ArrayList(); + public static final List blockMixtureFluids = new ArrayList(); + public static final List blockMoltenFluid = new ArrayList(); public static Block blockMachinePart; public static List fluidMixtures = new ArrayList(); diff --git a/src/main/java/resonantinduction/core/nei/NEIResonantInductionConfig.java b/src/main/java/resonantinduction/core/nei/NEIResonantInductionConfig.java index 0c9c66e4..2680bbf1 100644 --- a/src/main/java/resonantinduction/core/nei/NEIResonantInductionConfig.java +++ b/src/main/java/resonantinduction/core/nei/NEIResonantInductionConfig.java @@ -26,10 +26,10 @@ public class NEIResonantInductionConfig implements IConfigureNEI API.registerRecipeHandler(new RISmelterRecipeHandler()); API.registerUsageHandler(new RISmelterRecipeHandler()); - for (Block block : ResonantInduction.blockFluidMixtures) + for (Block block : ResonantInduction.blockMixtureFluids) API.hideItem(block.blockID); - for (Block block : ResonantInduction.blockFluidMaterials) + for (Block block : ResonantInduction.blockMoltenFluid) API.hideItem(block.blockID); API.hideItem(ResonantInduction.blockDust.blockID); diff --git a/src/main/java/resonantinduction/core/resource/ResourceGenerator.java b/src/main/java/resonantinduction/core/resource/ResourceGenerator.java index 43cdbcf9..765d4786 100644 --- a/src/main/java/resonantinduction/core/resource/ResourceGenerator.java +++ b/src/main/java/resonantinduction/core/resource/ResourceGenerator.java @@ -103,23 +103,23 @@ public class ResourceGenerator /** * Generate molten fluids */ - Fluid fluidMolten = new Fluid("molten" + nameCaps); + Fluid fluidMolten = new Fluid(materialNameToMolten(materialName)); fluidMolten.setDensity(7); fluidMolten.setViscosity(5000); fluidMolten.setTemperature(273 + 1538); FluidRegistry.registerFluid(fluidMolten); Block blockFluidMaterial = new BlockFluidMaterial(fluidMolten); GameRegistry.registerBlock(blockFluidMaterial, "molten" + nameCaps); - ResonantInduction.blockFluidMaterials.add(blockFluidMaterial); + ResonantInduction.blockMoltenFluid.add(blockFluidMaterial); /** * Generate dust mixture fluids */ - Fluid fluidMixture = new Fluid("mixture" + nameCaps); + Fluid fluidMixture = new Fluid(materialNameToMixture(materialName)); FluidRegistry.registerFluid(fluidMixture); Block blockFluidMixture = new BlockFluidMixture(fluidMixture); GameRegistry.registerBlock(blockFluidMixture, "mixture" + nameCaps); - ResonantInduction.blockFluidMixtures.add(blockFluidMixture); + ResonantInduction.blockMixtureFluids.add(blockFluidMixture); if (OreDictionary.getOres("ore" + nameCaps).size() > 0) { @@ -252,9 +252,44 @@ public class ResourceGenerator return 0xFFFFFF; } - public static Block getFluidMaterial(String name) + public static String moltenNameToMaterial(String fluidName) { - return ResonantInduction.blockFluidMaterials.get((getID(name))); + return fluidNameToMaterial(fluidName, "molten"); + } + + public static String materialNameToMolten(String fluidName) + { + return materialNameToFluid(fluidName, "molten"); + } + + public static String mixtureToMaterial(String fluidName) + { + return fluidNameToMaterial(fluidName, "mixture"); + } + + public static String materialNameToMixture(String fluidName) + { + return materialNameToFluid(fluidName, "mixture"); + } + + public static String fluidNameToMaterial(String fluidName, String type) + { + return LanguageUtility.underscoreToCamel(fluidName).replace(type, ""); + } + + public static String materialNameToFluid(String materialName, String type) + { + return type + "_" + LanguageUtility.camelToLowerUnderscore(materialName); + } + + public static Block getMixture(String name) + { + return ResonantInduction.blockMixtureFluids.get((getID(name))); + } + + public static Block getMolten(String name) + { + return ResonantInduction.blockMoltenFluid.get((getID(name))); } public static int getID(String name) diff --git a/src/main/java/resonantinduction/core/resource/fluid/BlockFluidMixture.java b/src/main/java/resonantinduction/core/resource/fluid/BlockFluidMixture.java index d45aa02e..90be42f9 100644 --- a/src/main/java/resonantinduction/core/resource/fluid/BlockFluidMixture.java +++ b/src/main/java/resonantinduction/core/resource/fluid/BlockFluidMixture.java @@ -74,4 +74,9 @@ public class BlockFluidMixture extends BlockFluidFinite { return true; } + + public int getQuantaPerBlock() + { + return quantaPerBlock; + } }