diff --git a/src/main/java/resonantinduction/api/recipe/RecipeUtils.java b/src/main/java/resonantinduction/api/recipe/RecipeUtils.java index 6368fae1..db9c4985 100644 --- a/src/main/java/resonantinduction/api/recipe/RecipeUtils.java +++ b/src/main/java/resonantinduction/api/recipe/RecipeUtils.java @@ -105,7 +105,7 @@ public class RecipeUtils @Override public ItemStack getItemStack() { - return OreDictionary.getOres(name).get(0); + return OreDictionary.getOres(name).get(0).copy(); } } diff --git a/src/main/java/resonantinduction/core/resource/fluid/BlockFluidMixture.java b/src/main/java/resonantinduction/core/resource/fluid/BlockFluidMixture.java index 9c5eaa9f..c2169571 100644 --- a/src/main/java/resonantinduction/core/resource/fluid/BlockFluidMixture.java +++ b/src/main/java/resonantinduction/core/resource/fluid/BlockFluidMixture.java @@ -7,6 +7,7 @@ import net.minecraft.tileentity.TileEntity; import net.minecraft.world.IBlockAccess; import net.minecraft.world.World; import net.minecraftforge.fluids.BlockFluidClassic; +import net.minecraftforge.fluids.BlockFluidFinite; import net.minecraftforge.fluids.Fluid; import net.minecraftforge.fluids.FluidContainerRegistry; import net.minecraftforge.fluids.FluidStack; @@ -18,7 +19,7 @@ import cpw.mods.fml.relauncher.SideOnly; * @author Calclavia * */ -public class BlockFluidMixture extends BlockFluidClassic implements ITileEntityProvider +public class BlockFluidMixture extends BlockFluidFinite implements ITileEntityProvider { public BlockFluidMixture(int id, Fluid fluid) { @@ -29,7 +30,7 @@ public class BlockFluidMixture extends BlockFluidClassic implements ITileEntityP public void setQuanta(World world, int x, int y, int z, int quanta) { if (quanta > 0) - world.setBlockMetadataWithNotify(x, y, z, 0, 3); + world.setBlockMetadataWithNotify(x, y, z, quanta, 3); else world.setBlockToAir(x, y, z); } diff --git a/src/main/java/resonantinduction/core/resource/fluid/TileLiquidMixture.java b/src/main/java/resonantinduction/core/resource/fluid/TileLiquidMixture.java index ebf5424e..911b3294 100644 --- a/src/main/java/resonantinduction/core/resource/fluid/TileLiquidMixture.java +++ b/src/main/java/resonantinduction/core/resource/fluid/TileLiquidMixture.java @@ -3,13 +3,19 @@ package resonantinduction.core.resource.fluid; import java.util.HashSet; import java.util.Set; +import com.google.common.io.ByteArrayDataInput; + +import net.minecraft.entity.player.EntityPlayer; import net.minecraft.item.ItemStack; import net.minecraft.nbt.NBTTagCompound; import net.minecraft.nbt.NBTTagList; +import net.minecraft.network.packet.Packet; import net.minecraftforge.fluids.FluidStack; import resonantinduction.api.recipe.MachineRecipes; import resonantinduction.api.recipe.MachineRecipes.RecipeType; +import resonantinduction.core.ResonantInduction; import resonantinduction.core.resource.ResourceGenerator; +import calclavia.lib.network.IPacketReceiver; import calclavia.lib.prefab.tile.TileAdvanced; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; @@ -18,11 +24,13 @@ import cpw.mods.fml.relauncher.SideOnly; * @author Calclavia * */ -public class TileLiquidMixture extends TileAdvanced +public class TileLiquidMixture extends TileAdvanced implements IPacketReceiver { public final Set items = new HashSet(); public final Set fluids = new HashSet(); + private int clientColor = 0xFFFFFF; + @Override public boolean canUpdate() { @@ -63,18 +71,30 @@ public class TileLiquidMixture extends TileAdvanced } } + @Override + public void onReceivePacket(ByteArrayDataInput data, EntityPlayer player, Object... extra) + { + clientColor = data.readInt(); + worldObj.markBlockForRenderUpdate(xCoord, yCoord, zCoord); + } + + @Override + public Packet getDescriptionPacket() + { + for (ItemStack item : items) + { + return ResonantInduction.PACKET_TILE.getPacket(this, ResourceGenerator.getAverageColor(item)); + } + return null; + } + /** * @return The color of the liquid based on the fluidStacks stored. */ @SideOnly(Side.CLIENT) public int getColor() { - for (ItemStack item : items) - { - return ResourceGenerator.getAverageColor(item); - } - - return 0xFFFFFF; + return clientColor; } @Override @@ -137,4 +157,5 @@ public class TileLiquidMixture extends TileAdvanced nbt.setTag("Items", itemList); } + } diff --git a/src/main/java/resonantinduction/mechanical/fluid/pump/TileGrate.java b/src/main/java/resonantinduction/mechanical/fluid/pump/TileGrate.java index 83357d38..71fb3a67 100644 --- a/src/main/java/resonantinduction/mechanical/fluid/pump/TileGrate.java +++ b/src/main/java/resonantinduction/mechanical/fluid/pump/TileGrate.java @@ -279,7 +279,7 @@ public class TileGrate extends TileAdvanced implements IFluidHandler, IDrain currentWorldEdits++; iterator.remove(); - if (resultStack.amount >= maxDrain) + if (resultStack != null && resultStack.amount >= maxDrain) { break; } diff --git a/src/main/java/resonantinduction/mechanical/process/BlockFilter.java b/src/main/java/resonantinduction/mechanical/process/BlockFilter.java index bd74e042..a562f267 100644 --- a/src/main/java/resonantinduction/mechanical/process/BlockFilter.java +++ b/src/main/java/resonantinduction/mechanical/process/BlockFilter.java @@ -2,6 +2,7 @@ package resonantinduction.mechanical.process; import java.util.Random; +import net.minecraft.block.Block; import net.minecraft.block.ITileEntityProvider; import net.minecraft.item.ItemStack; import net.minecraft.tileentity.TileEntity; @@ -56,26 +57,25 @@ public class BlockFilter extends BlockRI implements ITileEntityProvider { world.spawnParticle("dripWater", x + 0.5, y, z + 0.5, 0, 0, 0); - if (((TileLiquidMixture) tileAbove).items.size() > 0 && random.nextFloat() > 0.9f) + if (((TileLiquidMixture) tileAbove).items.size() > 0) { /** * Leak the fluid down. */ BlockFluidMixture fluidBlock = (BlockFluidMixture) ResonantInduction.blockFluidMixture; int amount = fluidBlock.getQuantaValue(world, x, y, z); - System.out.println(amount); - + /** * All fluid is filtered out, spawn all the items. */ - //if (amount <= 1) + if (amount <= 1) { System.out.println("filter dropped"); for (ItemStack itemStack : ((TileLiquidMixture) tileAbove).items) { for (Resource resoure : MachineRecipes.INSTANCE.getOutput(RecipeType.MIXER, itemStack)) { - InventoryUtility.dropItemStack(world, checkAbove.clone().add(0.5), resoure.getItemStack()); + InventoryUtility.dropItemStack(world, checkAbove.clone().add(0.5), resoure.getItemStack().copy()); } } } @@ -104,7 +104,7 @@ public class BlockFilter extends BlockRI implements ITileEntityProvider } else { - checkBelow.setBlock(world, ResonantInduction.blockFluidMixture.blockID); + checkBelow.setBlock(world, Block.waterStill.blockID, 3); } } } diff --git a/src/main/java/resonantinduction/mechanical/process/TileMixer.java b/src/main/java/resonantinduction/mechanical/process/TileMixer.java index 05318c6e..3b6f9848 100644 --- a/src/main/java/resonantinduction/mechanical/process/TileMixer.java +++ b/src/main/java/resonantinduction/mechanical/process/TileMixer.java @@ -63,7 +63,7 @@ public class TileMixer extends TileMechanical { Vector3 checkVector = new Vector3(this).translate(x, 0, z); - if (checkVector.getBlockID(worldObj) == Block.waterStill.blockID) + if (checkVector.getBlockID(worldObj) == Block.waterStill.blockID || checkVector.getBlockID(worldObj) == Block.waterMoving.blockID) { checkVector.setBlock(worldObj, ResonantInduction.blockFluidMixture.blockID, 8, 3); } diff --git a/src/main/resources/assets/resonantinduction/languages/en_US.properties b/src/main/resources/assets/resonantinduction/languages/en_US.properties index 169fe23f..259a4363 100644 --- a/src/main/resources/assets/resonantinduction/languages/en_US.properties +++ b/src/main/resources/assets/resonantinduction/languages/en_US.properties @@ -24,7 +24,7 @@ tile.resonantinduction\:material.0.name=Industrial Brick tile.resonantinduction\:material.1.name=Industrial Brick tile.resonantinduction\:material.2.name=Industrial Chiseled Brick tile.resonantinduction\:material.3.name=Industrial Cobblestone -tile.resonantinduction\:material.4.name=Indutrial Cracked Stone +tile.resonantinduction\:material.4.name=Industrial Cracked Stone tile.resonantinduction\:material.5.name=Industrial Stone tile.resonantinduction\:material.6.name=Industrial Stone Slab tile.resonantinduction\:material.7.name=Industrial Mossy Stone