Fixed mixture fluids not showing their color
This commit is contained in:
parent
053236fa1f
commit
4acf402225
7 changed files with 41 additions and 19 deletions
|
@ -105,7 +105,7 @@ public class RecipeUtils
|
||||||
@Override
|
@Override
|
||||||
public ItemStack getItemStack()
|
public ItemStack getItemStack()
|
||||||
{
|
{
|
||||||
return OreDictionary.getOres(name).get(0);
|
return OreDictionary.getOres(name).get(0).copy();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -7,6 +7,7 @@ import net.minecraft.tileentity.TileEntity;
|
||||||
import net.minecraft.world.IBlockAccess;
|
import net.minecraft.world.IBlockAccess;
|
||||||
import net.minecraft.world.World;
|
import net.minecraft.world.World;
|
||||||
import net.minecraftforge.fluids.BlockFluidClassic;
|
import net.minecraftforge.fluids.BlockFluidClassic;
|
||||||
|
import net.minecraftforge.fluids.BlockFluidFinite;
|
||||||
import net.minecraftforge.fluids.Fluid;
|
import net.minecraftforge.fluids.Fluid;
|
||||||
import net.minecraftforge.fluids.FluidContainerRegistry;
|
import net.minecraftforge.fluids.FluidContainerRegistry;
|
||||||
import net.minecraftforge.fluids.FluidStack;
|
import net.minecraftforge.fluids.FluidStack;
|
||||||
|
@ -18,7 +19,7 @@ import cpw.mods.fml.relauncher.SideOnly;
|
||||||
* @author Calclavia
|
* @author Calclavia
|
||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
public class BlockFluidMixture extends BlockFluidClassic implements ITileEntityProvider
|
public class BlockFluidMixture extends BlockFluidFinite implements ITileEntityProvider
|
||||||
{
|
{
|
||||||
public BlockFluidMixture(int id, Fluid fluid)
|
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)
|
public void setQuanta(World world, int x, int y, int z, int quanta)
|
||||||
{
|
{
|
||||||
if (quanta > 0)
|
if (quanta > 0)
|
||||||
world.setBlockMetadataWithNotify(x, y, z, 0, 3);
|
world.setBlockMetadataWithNotify(x, y, z, quanta, 3);
|
||||||
else
|
else
|
||||||
world.setBlockToAir(x, y, z);
|
world.setBlockToAir(x, y, z);
|
||||||
}
|
}
|
||||||
|
|
|
@ -3,13 +3,19 @@ package resonantinduction.core.resource.fluid;
|
||||||
import java.util.HashSet;
|
import java.util.HashSet;
|
||||||
import java.util.Set;
|
import java.util.Set;
|
||||||
|
|
||||||
|
import com.google.common.io.ByteArrayDataInput;
|
||||||
|
|
||||||
|
import net.minecraft.entity.player.EntityPlayer;
|
||||||
import net.minecraft.item.ItemStack;
|
import net.minecraft.item.ItemStack;
|
||||||
import net.minecraft.nbt.NBTTagCompound;
|
import net.minecraft.nbt.NBTTagCompound;
|
||||||
import net.minecraft.nbt.NBTTagList;
|
import net.minecraft.nbt.NBTTagList;
|
||||||
|
import net.minecraft.network.packet.Packet;
|
||||||
import net.minecraftforge.fluids.FluidStack;
|
import net.minecraftforge.fluids.FluidStack;
|
||||||
import resonantinduction.api.recipe.MachineRecipes;
|
import resonantinduction.api.recipe.MachineRecipes;
|
||||||
import resonantinduction.api.recipe.MachineRecipes.RecipeType;
|
import resonantinduction.api.recipe.MachineRecipes.RecipeType;
|
||||||
|
import resonantinduction.core.ResonantInduction;
|
||||||
import resonantinduction.core.resource.ResourceGenerator;
|
import resonantinduction.core.resource.ResourceGenerator;
|
||||||
|
import calclavia.lib.network.IPacketReceiver;
|
||||||
import calclavia.lib.prefab.tile.TileAdvanced;
|
import calclavia.lib.prefab.tile.TileAdvanced;
|
||||||
import cpw.mods.fml.relauncher.Side;
|
import cpw.mods.fml.relauncher.Side;
|
||||||
import cpw.mods.fml.relauncher.SideOnly;
|
import cpw.mods.fml.relauncher.SideOnly;
|
||||||
|
@ -18,11 +24,13 @@ import cpw.mods.fml.relauncher.SideOnly;
|
||||||
* @author Calclavia
|
* @author Calclavia
|
||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
public class TileLiquidMixture extends TileAdvanced
|
public class TileLiquidMixture extends TileAdvanced implements IPacketReceiver
|
||||||
{
|
{
|
||||||
public final Set<ItemStack> items = new HashSet<ItemStack>();
|
public final Set<ItemStack> items = new HashSet<ItemStack>();
|
||||||
public final Set<FluidStack> fluids = new HashSet<FluidStack>();
|
public final Set<FluidStack> fluids = new HashSet<FluidStack>();
|
||||||
|
|
||||||
|
private int clientColor = 0xFFFFFF;
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean canUpdate()
|
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.
|
* @return The color of the liquid based on the fluidStacks stored.
|
||||||
*/
|
*/
|
||||||
@SideOnly(Side.CLIENT)
|
@SideOnly(Side.CLIENT)
|
||||||
public int getColor()
|
public int getColor()
|
||||||
{
|
{
|
||||||
for (ItemStack item : items)
|
return clientColor;
|
||||||
{
|
|
||||||
return ResourceGenerator.getAverageColor(item);
|
|
||||||
}
|
|
||||||
|
|
||||||
return 0xFFFFFF;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
@ -137,4 +157,5 @@ public class TileLiquidMixture extends TileAdvanced
|
||||||
|
|
||||||
nbt.setTag("Items", itemList);
|
nbt.setTag("Items", itemList);
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -279,7 +279,7 @@ public class TileGrate extends TileAdvanced implements IFluidHandler, IDrain
|
||||||
currentWorldEdits++;
|
currentWorldEdits++;
|
||||||
iterator.remove();
|
iterator.remove();
|
||||||
|
|
||||||
if (resultStack.amount >= maxDrain)
|
if (resultStack != null && resultStack.amount >= maxDrain)
|
||||||
{
|
{
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
|
@ -2,6 +2,7 @@ package resonantinduction.mechanical.process;
|
||||||
|
|
||||||
import java.util.Random;
|
import java.util.Random;
|
||||||
|
|
||||||
|
import net.minecraft.block.Block;
|
||||||
import net.minecraft.block.ITileEntityProvider;
|
import net.minecraft.block.ITileEntityProvider;
|
||||||
import net.minecraft.item.ItemStack;
|
import net.minecraft.item.ItemStack;
|
||||||
import net.minecraft.tileentity.TileEntity;
|
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);
|
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.
|
* Leak the fluid down.
|
||||||
*/
|
*/
|
||||||
BlockFluidMixture fluidBlock = (BlockFluidMixture) ResonantInduction.blockFluidMixture;
|
BlockFluidMixture fluidBlock = (BlockFluidMixture) ResonantInduction.blockFluidMixture;
|
||||||
int amount = fluidBlock.getQuantaValue(world, x, y, z);
|
int amount = fluidBlock.getQuantaValue(world, x, y, z);
|
||||||
System.out.println(amount);
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* All fluid is filtered out, spawn all the items.
|
* All fluid is filtered out, spawn all the items.
|
||||||
*/
|
*/
|
||||||
//if (amount <= 1)
|
if (amount <= 1)
|
||||||
{
|
{
|
||||||
System.out.println("filter dropped");
|
System.out.println("filter dropped");
|
||||||
for (ItemStack itemStack : ((TileLiquidMixture) tileAbove).items)
|
for (ItemStack itemStack : ((TileLiquidMixture) tileAbove).items)
|
||||||
{
|
{
|
||||||
for (Resource resoure : MachineRecipes.INSTANCE.getOutput(RecipeType.MIXER, itemStack))
|
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
|
else
|
||||||
{
|
{
|
||||||
checkBelow.setBlock(world, ResonantInduction.blockFluidMixture.blockID);
|
checkBelow.setBlock(world, Block.waterStill.blockID, 3);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -63,7 +63,7 @@ public class TileMixer extends TileMechanical
|
||||||
{
|
{
|
||||||
Vector3 checkVector = new Vector3(this).translate(x, 0, z);
|
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);
|
checkVector.setBlock(worldObj, ResonantInduction.blockFluidMixture.blockID, 8, 3);
|
||||||
}
|
}
|
||||||
|
|
|
@ -24,7 +24,7 @@ tile.resonantinduction\:material.0.name=Industrial Brick
|
||||||
tile.resonantinduction\:material.1.name=Industrial Brick
|
tile.resonantinduction\:material.1.name=Industrial Brick
|
||||||
tile.resonantinduction\:material.2.name=Industrial Chiseled Brick
|
tile.resonantinduction\:material.2.name=Industrial Chiseled Brick
|
||||||
tile.resonantinduction\:material.3.name=Industrial Cobblestone
|
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.5.name=Industrial Stone
|
||||||
tile.resonantinduction\:material.6.name=Industrial Stone Slab
|
tile.resonantinduction\:material.6.name=Industrial Stone Slab
|
||||||
tile.resonantinduction\:material.7.name=Industrial Mossy Stone
|
tile.resonantinduction\:material.7.name=Industrial Mossy Stone
|
||||||
|
|
Loading…
Reference in a new issue