From 1c56fba9bc780475410de000316302e8c835badb Mon Sep 17 00:00:00 2001 From: Calclavia Date: Wed, 26 Feb 2014 12:32:33 +0800 Subject: [PATCH] Fixed some resource generator and liquid issues --- .../mechanical/process/BlockFilter.java | 5 +- .../core/ResonantInduction.java | 6 +- .../core/nei/NEIResonantInductionConfig.java | 4 +- .../core/resource/ResourceGenerator.java | 77 +++++++++++++++++-- .../resource/fluid/BlockFluidMixture.java | 2 +- .../resource/fluid/ItemOreResourceBucket.java | 4 +- 6 files changed, 82 insertions(+), 16 deletions(-) diff --git a/mechanical/src/main/java/resonantinduction/mechanical/process/BlockFilter.java b/mechanical/src/main/java/resonantinduction/mechanical/process/BlockFilter.java index 8becc002..4c919782 100644 --- a/mechanical/src/main/java/resonantinduction/mechanical/process/BlockFilter.java +++ b/mechanical/src/main/java/resonantinduction/mechanical/process/BlockFilter.java @@ -55,6 +55,8 @@ public class BlockFilter extends BlockTile Block bAbove = Block.blocksList[checkAbove.getBlockID(world)]; Block bBelow = Block.blocksList[checkAbove.getBlockID(world)]; + world.scheduleBlockUpdate(x, y, z, blockID, 20); + if (bAbove instanceof BlockFluidMixture && (world.isAirBlock(checkBelow.intX(), checkBelow.intY(), checkBelow.intZ()) || checkBelow.getTileEntity(world) instanceof IFluidHandler)) { world.spawnParticle("dripWater", x + 0.5, y, z + 0.5, 0, 0, 0); @@ -77,7 +79,7 @@ public class BlockFilter extends BlockTile /** * Drop item from fluid. */ - for (RecipeResource resoure : MachineRecipes.INSTANCE.getOutput(RecipeType.MIXER, "dust" + ResourceGenerator.mixtureToMaterial(fluidBlock.getFluid().getName()))) + for (RecipeResource resoure : MachineRecipes.INSTANCE.getOutput(RecipeType.MIXER, "dust" + LanguageUtility.capitalizeFirst(ResourceGenerator.mixtureToMaterial(fluidBlock.getFluid().getName())))) { InventoryUtility.dropItemStack(world, checkAbove.clone().add(0.5), resoure.getItemStack().copy()); } @@ -104,6 +106,7 @@ public class BlockFilter extends BlockTile checkBelow.setBlock(world, Block.waterMoving.blockID); } } + } @Override diff --git a/src/main/java/resonantinduction/core/ResonantInduction.java b/src/main/java/resonantinduction/core/ResonantInduction.java index 4494ac5a..b73cf2fd 100644 --- a/src/main/java/resonantinduction/core/ResonantInduction.java +++ b/src/main/java/resonantinduction/core/ResonantInduction.java @@ -1,6 +1,7 @@ package resonantinduction.core; import java.util.ArrayList; +import java.util.HashMap; import java.util.List; import java.util.logging.Logger; @@ -8,6 +9,7 @@ import net.minecraft.block.Block; import net.minecraft.item.ItemStack; import net.minecraftforge.common.MinecraftForge; import net.minecraftforge.fluids.Fluid; +import net.minecraftforge.fluids.FluidContainerRegistry; import org.modstats.ModstatInfo; import org.modstats.Modstats; @@ -75,8 +77,8 @@ public class ResonantInduction public static ItemOreResource itemRubble, itemDust, itemRefinedDust; public static ItemOreResourceBucket itemBucketMixture, itemBucketMolten; public static Block blockDust; - public static final List blockMixtureFluids = new ArrayList(); - public static final List blockMoltenFluid = new ArrayList(); + public static final HashMap blockMixtureFluids = new HashMap(); + public static final HashMap blockMoltenFluid = new HashMap(); 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 2680bbf1..38a4f86a 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.blockMixtureFluids) + for (Block block : ResonantInduction.blockMixtureFluids.values()) API.hideItem(block.blockID); - for (Block block : ResonantInduction.blockMoltenFluid) + for (Block block : ResonantInduction.blockMoltenFluid.values()) 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 99db7646..075edee5 100644 --- a/src/main/java/resonantinduction/core/resource/ResourceGenerator.java +++ b/src/main/java/resonantinduction/core/resource/ResourceGenerator.java @@ -2,10 +2,12 @@ package resonantinduction.core.resource; import java.awt.Color; import java.awt.image.BufferedImage; +import java.io.File; import java.io.InputStream; +import java.util.ArrayList; import java.util.HashMap; import java.util.List; -import java.util.Set; +import java.util.Map.Entry; import javax.imageio.ImageIO; @@ -14,6 +16,8 @@ import net.minecraft.client.Minecraft; import net.minecraft.item.Item; import net.minecraft.item.ItemStack; import net.minecraft.item.crafting.FurnaceRecipes; +import net.minecraft.nbt.NBTTagCompound; +import net.minecraft.nbt.NBTTagList; import net.minecraft.util.Icon; import net.minecraft.util.ResourceLocation; import net.minecraftforge.client.event.TextureStitchEvent; @@ -33,6 +37,9 @@ import resonantinduction.core.Settings; import resonantinduction.core.resource.fluid.BlockFluidMaterial; import resonantinduction.core.resource.fluid.BlockFluidMixture; import calclavia.lib.utility.LanguageUtility; +import calclavia.lib.utility.nbt.IVirtualObject; +import calclavia.lib.utility.nbt.NBTUtility; +import calclavia.lib.utility.nbt.SaveManager; import com.google.common.collect.HashBiMap; @@ -41,7 +48,7 @@ import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; /** @author Calclavia */ -public class ResourceGenerator +public class ResourceGenerator implements IVirtualObject { public static final ResourceGenerator INSTANCE = new ResourceGenerator(); @@ -59,7 +66,8 @@ public class ResourceGenerator static { - OreDetectionBlackList.addIngot("refinedIron"); + OreDetectionBlackList.addIngot("ingotRefinedIron"); + SaveManager.register(INSTANCE); } @ForgeSubscribe @@ -119,14 +127,16 @@ public class ResourceGenerator FluidRegistry.registerFluid(fluidMolten); Block blockFluidMaterial = new BlockFluidMaterial(fluidMolten); GameRegistry.registerBlock(blockFluidMaterial, "molten" + nameCaps); - ResonantInduction.blockMoltenFluid.add(blockFluidMaterial); + ResonantInduction.blockMoltenFluid.put(getID(materialName), blockFluidMaterial); + FluidContainerRegistry.registerFluidContainer(fluidMolten, ResonantInduction.itemBucketMolten.getStackFromMaterial(materialName)); /** Generate dust mixture fluids */ Fluid fluidMixture = new Fluid(materialNameToMixture(materialName)); FluidRegistry.registerFluid(fluidMixture); Block blockFluidMixture = new BlockFluidMixture(fluidMixture); GameRegistry.registerBlock(blockFluidMixture, "mixture" + nameCaps); - ResonantInduction.blockMixtureFluids.add(blockFluidMixture); + ResonantInduction.blockMixtureFluids.put(getID(materialName), blockFluidMixture); + FluidContainerRegistry.registerFluidContainer(fluidMixture, ResonantInduction.itemBucketMixture.getStackFromMaterial(materialName)); if (OreDictionary.getOres("ore" + nameCaps).size() > 0) { @@ -279,7 +289,7 @@ public class ResourceGenerator public static String fluidNameToMaterial(String fluidName, String type) { - return LanguageUtility.underscoreToCamel(fluidName).replace(type, ""); + return LanguageUtility.decapitalizeFirst(LanguageUtility.underscoreToCamel(fluidName).replace(type, "")); } public static String materialNameToFluid(String materialName, String type) @@ -323,8 +333,59 @@ public class ResourceGenerator return 0xFFFFFF; } - public static Set getMaterials() + public static List getMaterials() { - return materials.keySet(); + List returnMaterials = new ArrayList(); + + for (int i = 0; i < materials.size(); i++) + { + returnMaterials.add(getName(i)); + } + + return returnMaterials; + } + + @Override + public void save(NBTTagCompound nbt) + { + NBTTagList list = new NBTTagList(); + + for (Entry entry : materials.entrySet()) + { + NBTTagCompound node = new NBTTagCompound(); + node.setString("materialName", entry.getKey()); + node.setInteger("materialID", entry.getValue()); + list.appendTag(node); + } + + nbt.setTag("materialIDMap", list); + } + + @Override + public void load(NBTTagCompound nbt) + { + if (nbt.hasKey("materialIDMap")) + { + materials.clear(); + NBTTagList nbtList = nbt.getTagList("materialIDMap"); + + for (int i = 0; i < nbtList.tagCount(); ++i) + { + NBTTagCompound node = (NBTTagCompound) nbtList.tagAt(i); + materials.put(node.getString("materialName"), node.getInteger("materialID")); + } + } + } + + @Override + public File getSaveFile() + { + return new File(NBTUtility.getSaveDirectory(), "Resource_Generator.dat"); + } + + @Override + public void setSaveFile(File file) + { + } } diff --git a/src/main/java/resonantinduction/core/resource/fluid/BlockFluidMixture.java b/src/main/java/resonantinduction/core/resource/fluid/BlockFluidMixture.java index 90be42f9..79c422b1 100644 --- a/src/main/java/resonantinduction/core/resource/fluid/BlockFluidMixture.java +++ b/src/main/java/resonantinduction/core/resource/fluid/BlockFluidMixture.java @@ -51,7 +51,7 @@ public class BlockFluidMixture extends BlockFluidFinite @Override public int colorMultiplier(IBlockAccess access, int x, int y, int z) { - return ResourceGenerator.getColor(getFluid().getName().replace("mixture", "")); + return ResourceGenerator.getColor(ResourceGenerator.mixtureToMaterial(getFluid().getName())); } public boolean mix(World world, int x, int y, int z, ItemStack stack) diff --git a/src/main/java/resonantinduction/core/resource/fluid/ItemOreResourceBucket.java b/src/main/java/resonantinduction/core/resource/fluid/ItemOreResourceBucket.java index a04018de..f4413f36 100644 --- a/src/main/java/resonantinduction/core/resource/fluid/ItemOreResourceBucket.java +++ b/src/main/java/resonantinduction/core/resource/fluid/ItemOreResourceBucket.java @@ -64,7 +64,7 @@ public class ItemOreResourceBucket extends Item return (LanguageUtility.getLocal(this.getUnlocalizedName() + ".name")).replace("%v", name).replace(" ", " "); } } - + return (FluidRegistry.getFluid(ResourceGenerator.materialNameToMixture(getMaterialFromStack(is))).getLocalizedName() + " Bucket"); } return null; @@ -253,7 +253,7 @@ public class ItemOreResourceBucket extends Item world.destroyBlock(x, y, z, true); } - world.setBlock(x, y, z, fluidID, 0, 3); + world.setBlock(x, y, z, fluidID, 8, 3); return true; }