Added sink block

simple, nicer looking way of filling buckets, water viels, cleaning
color off of armor.
This commit is contained in:
Rseifert 2013-01-22 03:36:59 -05:00
parent 79eb211126
commit eb923b84db
12 changed files with 523 additions and 31 deletions

View file

@ -7,6 +7,7 @@ import liquidmechanics.client.render.RenderGenerator;
import liquidmechanics.client.render.RenderPipe; import liquidmechanics.client.render.RenderPipe;
import liquidmechanics.client.render.RenderPump; import liquidmechanics.client.render.RenderPump;
import liquidmechanics.client.render.RenderReleaseValve; import liquidmechanics.client.render.RenderReleaseValve;
import liquidmechanics.client.render.RenderSink;
import liquidmechanics.client.render.RenderTank; import liquidmechanics.client.render.RenderTank;
import liquidmechanics.common.CommonProxy; import liquidmechanics.common.CommonProxy;
import liquidmechanics.common.LiquidMechanics; import liquidmechanics.common.LiquidMechanics;
@ -15,6 +16,7 @@ import liquidmechanics.common.tileentity.TileEntityPipe;
import liquidmechanics.common.tileentity.TileEntityPump; import liquidmechanics.common.tileentity.TileEntityPump;
import liquidmechanics.common.tileentity.TileEntityReleaseValve; import liquidmechanics.common.tileentity.TileEntityReleaseValve;
import liquidmechanics.common.tileentity.TileEntityRod; import liquidmechanics.common.tileentity.TileEntityRod;
import liquidmechanics.common.tileentity.TileEntitySink;
import liquidmechanics.common.tileentity.TileEntityTank; import liquidmechanics.common.tileentity.TileEntityTank;
import net.minecraftforge.client.MinecraftForgeClient; import net.minecraftforge.client.MinecraftForgeClient;
import cpw.mods.fml.client.registry.ClientRegistry; import cpw.mods.fml.client.registry.ClientRegistry;
@ -38,6 +40,7 @@ public class ClientProxy extends CommonProxy
ClientRegistry.bindTileEntitySpecialRenderer(TileEntityGenerator.class, new RenderGenerator()); ClientRegistry.bindTileEntitySpecialRenderer(TileEntityGenerator.class, new RenderGenerator());
ClientRegistry.bindTileEntitySpecialRenderer(TileEntityTank.class, new RenderTank()); ClientRegistry.bindTileEntitySpecialRenderer(TileEntityTank.class, new RenderTank());
ClientRegistry.bindTileEntitySpecialRenderer(TileEntityReleaseValve.class, new RenderReleaseValve()); ClientRegistry.bindTileEntitySpecialRenderer(TileEntityReleaseValve.class, new RenderReleaseValve());
ClientRegistry.bindTileEntitySpecialRenderer(TileEntitySink.class, new RenderSink());
MinecraftForgeClient.registerItemRenderer(LiquidMechanics.blockPipe.blockID, new ItemRenderHelper()); MinecraftForgeClient.registerItemRenderer(LiquidMechanics.blockPipe.blockID, new ItemRenderHelper());
MinecraftForgeClient.registerItemRenderer(LiquidMechanics.blockReleaseValve.blockID, new ItemRenderHelper()); MinecraftForgeClient.registerItemRenderer(LiquidMechanics.blockReleaseValve.blockID, new ItemRenderHelper());
RenderingRegistry.registerBlockHandler(new BlockRenderHelper()); RenderingRegistry.registerBlockHandler(new BlockRenderHelper());

View file

@ -0,0 +1,112 @@
// Date: 1/22/2013 12:21:32 AM
// Template version 1.1
// Java generated by Techne
// Keep in mind that you still need to fill in some blanks
// - ZeuX
package liquidmechanics.client.model;
import net.minecraft.client.model.ModelBase;
import net.minecraft.client.model.ModelRenderer;
import net.minecraft.entity.Entity;
public class ModelSink extends ModelBase
{
// fields
ModelRenderer Base;
ModelRenderer FrontLip;
ModelRenderer BottomLip;
ModelRenderer RightLip;
ModelRenderer LeftLip;
ModelRenderer BLip;
ModelRenderer Edge;
ModelRenderer Edge2;
ModelRenderer Water;
public ModelSink()
{
textureWidth = 128;
textureHeight = 128;
Base = new ModelRenderer(this, 0, 0);
Base.addBox(-7F, 0F, -7F, 14, 12, 14);
Base.setRotationPoint(0F, 12F, 0F);
Base.setTextureSize(128, 128);
Base.mirror = true;
setRotation(Base, 0F, 0F, 0F);
FrontLip = new ModelRenderer(this, 10, 62);
FrontLip.addBox(-8F, -4F, -8F, 16, 4, 2);
FrontLip.setRotationPoint(0F, 12F, 0F);
FrontLip.setTextureSize(128, 128);
FrontLip.mirror = true;
setRotation(FrontLip, 0F, 0F, 0F);
BottomLip = new ModelRenderer(this, 5, 37);
BottomLip.addBox(-8F, -4F, 4F, 16, 4, 4);
BottomLip.setRotationPoint(0F, 12F, 0F);
BottomLip.setTextureSize(128, 128);
BottomLip.mirror = true;
setRotation(BottomLip, 0F, 0F, 0F);
RightLip = new ModelRenderer(this, 0, 47);
RightLip.addBox(-8F, -4F, -6F, 2, 4, 10);
RightLip.setRotationPoint(0F, 12F, 0F);
RightLip.setTextureSize(128, 128);
RightLip.mirror = true;
setRotation(RightLip, 0F, 0F, 0F);
LeftLip = new ModelRenderer(this, 25, 47);
LeftLip.addBox(6F, -4F, -6F, 2, 4, 10);
LeftLip.setRotationPoint(0F, 12F, 0F);
LeftLip.setTextureSize(128, 128);
LeftLip.mirror = true;
setRotation(LeftLip, 0F, 0F, 0F);
BLip = new ModelRenderer(this, 9, 32);
BLip.addBox(-1F, -1F, 4F, 2, 2, 2);
BLip.setRotationPoint(0F, 12F, 0F);
BLip.setTextureSize(128, 128);
BLip.mirror = true;
setRotation(BLip, 0.5061455F, 0F, 0F);
Edge = new ModelRenderer(this, 5, 64);
Edge.addBox(0F, 0F, 0F, 1, 12, 1);
Edge.setRotationPoint(7F, 12F, 7F);
Edge.setTextureSize(128, 128);
Edge.mirror = true;
setRotation(Edge, 0F, 0F, 0F);
Edge2 = new ModelRenderer(this, 0, 64);
Edge2.addBox(0F, 0F, 0F, 1, 12, 1);
Edge2.setRotationPoint(-8F, 12F, 7F);
Edge2.setTextureSize(128, 128);
Edge2.mirror = true;
setRotation(Edge2, 0F, 0F, 0F);
Water = new ModelRenderer(this, 0, 0);
Water.addBox(-6F, 0F, -6F, 12, 0, 10);
Water.setRotationPoint(0F, 12F, 0F);
Water.setTextureSize(128, 128);
Water.mirror = true;
setRotation(Water, 0F, 0F, 0F);
}
public void render(float f5)
{
Base.render(f5);
FrontLip.render(f5);
BottomLip.render(f5);
RightLip.render(f5);
LeftLip.render(f5);
BLip.render(f5);
Edge.render(f5);
Edge2.render(f5);
}
public void renderLiquid(float f5,float level)
{
Water.setRotationPoint(0F, 12F - level, 0F);
Water.render(f5);
}
private void setRotation(ModelRenderer model, float x, float y, float z)
{
model.rotateAngleX = x;
model.rotateAngleY = y;
model.rotateAngleZ = z;
}
}

View file

@ -7,6 +7,7 @@ import liquidmechanics.client.model.ModelLargePipe;
import liquidmechanics.client.model.ModelLiquidTank; import liquidmechanics.client.model.ModelLiquidTank;
import liquidmechanics.client.model.ModelPump; import liquidmechanics.client.model.ModelPump;
import liquidmechanics.client.model.ModelReleaseValve; import liquidmechanics.client.model.ModelReleaseValve;
import liquidmechanics.client.model.ModelSink;
import liquidmechanics.common.LiquidMechanics; import liquidmechanics.common.LiquidMechanics;
import liquidmechanics.common.tileentity.TileEntityReleaseValve; import liquidmechanics.common.tileentity.TileEntityReleaseValve;
import net.minecraft.block.Block; import net.minecraft.block.Block;
@ -30,6 +31,7 @@ public class BlockRenderHelper implements ISimpleBlockRenderingHandler
private ModelLargePipe SixPipe = new ModelLargePipe(); private ModelLargePipe SixPipe = new ModelLargePipe();
private ModelLiquidTank tank = new ModelLiquidTank(); private ModelLiquidTank tank = new ModelLiquidTank();
private ModelReleaseValve valve = new ModelReleaseValve(); private ModelReleaseValve valve = new ModelReleaseValve();
private ModelSink sink = new ModelSink();
@Override @Override
public void renderInventoryBlock(Block block, int metadata, int modelID, RenderBlocks renderer) public void renderInventoryBlock(Block block, int metadata, int modelID, RenderBlocks renderer)
@ -46,15 +48,24 @@ public class BlockRenderHelper implements ISimpleBlockRenderingHandler
modelPump.renderC3(0.0725F); modelPump.renderC3(0.0725F);
GL11.glPopMatrix(); GL11.glPopMatrix();
} }
if (block.blockID == LiquidMechanics.blockSink.blockID)
{
GL11.glPushMatrix();
GL11.glTranslatef((float) 0.0F, (float) .8F, (float) 0.0F);
GL11.glRotatef(180f, 0f, 0f, 1f);
GL11.glBindTexture(GL11.GL_TEXTURE_2D, FMLClientHandler.instance().getClient().renderEngine.getTexture(LiquidMechanics.RESOURCE_PATH + "Sink.png"));
sink.render(0.0565F);
GL11.glPopMatrix();
}
if (block.blockID == LiquidMechanics.blockTank.blockID) if (block.blockID == LiquidMechanics.blockTank.blockID)
{ {
GL11.glPushMatrix(); GL11.glPushMatrix();
GL11.glTranslatef((float) 0.0F, (float) 1.1F, (float) 0.0F); GL11.glTranslatef((float) 0.0F, (float) 1.0F, (float) 0.0F);
GL11.glRotatef(180f, 0f, 0f, 1f); GL11.glRotatef(180f, 0f, 0f, 1f);
GL11.glBindTexture(GL11.GL_TEXTURE_2D, FMLClientHandler.instance().getClient().renderEngine.getTexture(RenderTank.getTankTexture(metadata))); GL11.glBindTexture(GL11.GL_TEXTURE_2D, FMLClientHandler.instance().getClient().renderEngine.getTexture(RenderTank.getTankTexture(metadata)));
tank.renderMain(0.0625F); tank.renderMain(0.0625F);
GL11.glBindTexture(GL11.GL_TEXTURE_2D, FMLClientHandler.instance().getClient().renderEngine.getTexture(RenderTank.getGuageTexture(metadata,4))); GL11.glBindTexture(GL11.GL_TEXTURE_2D, FMLClientHandler.instance().getClient().renderEngine.getTexture(RenderTank.getGuageTexture(metadata,4)));
tank.renderMeter(null, 0.0625F); tank.renderMeter(null, 0.0565F);
GL11.glPopMatrix(); GL11.glPopMatrix();
} }
if (block.blockID == LiquidMechanics.blockRod.blockID) if (block.blockID == LiquidMechanics.blockRod.blockID)
@ -69,30 +80,13 @@ public class BlockRenderHelper implements ISimpleBlockRenderingHandler
if (block.blockID == LiquidMechanics.blockGenerator.blockID) if (block.blockID == LiquidMechanics.blockGenerator.blockID)
{ {
GL11.glPushMatrix(); GL11.glPushMatrix();
GL11.glTranslatef((float) 0.0F, (float) 1.3F, (float) 0.0F); GL11.glTranslatef((float) 0.0F, (float) 1.0F, (float) 0.0F);
GL11.glRotatef(180f, 0f, 0f, 1f); GL11.glRotatef(180f, 0f, 0f, 1f);
GL11.glBindTexture(GL11.GL_TEXTURE_2D, FMLClientHandler.instance().getClient().renderEngine.getTexture(LiquidMechanics.RESOURCE_PATH + "mechanical/Generator.png")); GL11.glBindTexture(GL11.GL_TEXTURE_2D, FMLClientHandler.instance().getClient().renderEngine.getTexture(LiquidMechanics.RESOURCE_PATH + "mechanical/Generator.png"));
modelGen.render(null); modelGen.render(null);
GL11.glPopMatrix(); GL11.glPopMatrix();
} }
} }
public void renderPipeItem(RenderBlocks renderer, int meta)
{
GL11.glPushMatrix();
GL11.glBindTexture(GL11.GL_TEXTURE_2D, FMLClientHandler.instance().getClient().renderEngine.getTexture(RenderPipe.getPipeTexture(meta)));
GL11.glTranslatef(0.5F, -0.5F, 0.5F);
SixPipe.renderRight();
SixPipe.renderLeft();
SixPipe.renderMiddle();
GL11.glPopMatrix();
}
public boolean renderWorldBlock(IBlockAccess world, int x, int y, int z, Block block, int modelId, RenderBlocks renderer) public boolean renderWorldBlock(IBlockAccess world, int x, int y, int z, Block block, int modelId, RenderBlocks renderer)
{ {
return false; return false;

View file

@ -0,0 +1,74 @@
package liquidmechanics.client.render;
import liquidmechanics.client.model.ModelSink;
import liquidmechanics.common.LiquidMechanics;
import liquidmechanics.common.tileentity.TileEntitySink;
import net.minecraft.block.Block;
import net.minecraft.client.renderer.RenderBlocks;
import net.minecraft.client.renderer.tileentity.TileEntitySpecialRenderer;
import net.minecraft.tileentity.TileEntity;
import net.minecraftforge.client.ForgeHooksClient;
import net.minecraftforge.liquids.LiquidContainerRegistry;
import net.minecraftforge.liquids.LiquidStack;
import org.lwjgl.opengl.GL11;
public class RenderSink extends TileEntitySpecialRenderer
{
int type = 0;
private ModelSink model;
public RenderSink()
{
model = new ModelSink();
}
public void renderWater(LiquidStack stack)
{
if (stack == null || stack.amount <= 1) { return; }
bindTextureByName(LiquidMechanics.RESOURCE_PATH + "blue.png");
float p = 0;
if(stack.amount > 0)p = 0.5f;
if(stack.amount > 500)p=1.5f;
if(stack.amount > 1000)p=2.5f;
if(stack.amount > 1500)p=3.5f;
model.renderLiquid(0.0625F, p);
}
public void renderAModelAt(TileEntitySink te, double d, double d1, double d2, float f)
{
int meta = te.worldObj.getBlockMetadata(te.xCoord, te.yCoord, te.zCoord);
bindTextureByName(LiquidMechanics.RESOURCE_PATH + "Sink.png");
GL11.glPushMatrix();
GL11.glTranslatef((float) d + 0.5F, (float) d1 + 1.5F, (float) d2 + 0.5F);
GL11.glScalef(1.0F, -1F, -1F);
switch (meta)
{
case 3:
GL11.glRotatef(90f, 0f, 1f, 0f);
break;
case 0:
GL11.glRotatef(180f, 0f, 1f, 0f);
break;
case 1:
GL11.glRotatef(270f, 0f, 1f, 0f);
break;
case 2:
GL11.glRotatef(0f, 0f, 1f, 0f);
break;
}
model.render(0.0625F);
renderWater(te.getStack());
GL11.glPopMatrix();
}
@Override
public void renderTileEntityAt(TileEntity tileEntity, double var2, double var4, double var6, float var8)
{
this.renderAModelAt((TileEntitySink) tileEntity, var2, var4, var6, var8);
}
}

View file

@ -10,6 +10,7 @@ import liquidmechanics.common.block.BlockPumpMachine;
import liquidmechanics.common.block.BlockPipe; import liquidmechanics.common.block.BlockPipe;
import liquidmechanics.common.block.BlockReleaseValve; import liquidmechanics.common.block.BlockReleaseValve;
import liquidmechanics.common.block.BlockRod; import liquidmechanics.common.block.BlockRod;
import liquidmechanics.common.block.BlockSink;
import liquidmechanics.common.block.BlockTank; import liquidmechanics.common.block.BlockTank;
import liquidmechanics.common.block.BlockWasteLiquid; import liquidmechanics.common.block.BlockWasteLiquid;
import liquidmechanics.common.item.ItemGuage; import liquidmechanics.common.item.ItemGuage;
@ -24,6 +25,7 @@ import liquidmechanics.common.tileentity.TileEntityPipe;
import liquidmechanics.common.tileentity.TileEntityPump; import liquidmechanics.common.tileentity.TileEntityPump;
import liquidmechanics.common.tileentity.TileEntityReleaseValve; import liquidmechanics.common.tileentity.TileEntityReleaseValve;
import liquidmechanics.common.tileentity.TileEntityRod; import liquidmechanics.common.tileentity.TileEntityRod;
import liquidmechanics.common.tileentity.TileEntitySink;
import liquidmechanics.common.tileentity.TileEntityTank; import liquidmechanics.common.tileentity.TileEntityTank;
import net.minecraft.block.Block; import net.minecraft.block.Block;
import net.minecraft.item.Item; import net.minecraft.item.Item;
@ -60,7 +62,7 @@ import cpw.mods.fml.common.registry.GameRegistry;
public class LiquidMechanics extends DummyModContainer public class LiquidMechanics extends DummyModContainer
{ {
// TODO Change in Version Release // TODO Change in Version Release
public static final String VERSION = "0.2.5"; public static final String VERSION = "0.2.6";
// Constants // Constants
public static final String NAME = "Liquid Mechanics"; public static final String NAME = "Liquid Mechanics";
@ -85,6 +87,7 @@ public class LiquidMechanics extends DummyModContainer
public static Block blockRod; public static Block blockRod;
public static Block blockGenerator; public static Block blockGenerator;
public static Block blockReleaseValve; public static Block blockReleaseValve;
public static Block blockSink;
public static Block blockWasteLiquid; public static Block blockWasteLiquid;
@ -115,6 +118,7 @@ public class LiquidMechanics extends DummyModContainer
blockReleaseValve = new BlockReleaseValve((this.CONFIGURATION.getBlock("Release Valve", BLOCK_ID_PREFIX + 5).getInt())); blockReleaseValve = new BlockReleaseValve((this.CONFIGURATION.getBlock("Release Valve", BLOCK_ID_PREFIX + 5).getInt()));
blockTank = new BlockTank(this.CONFIGURATION.getBlock("Tank", BLOCK_ID_PREFIX + 6).getInt()); blockTank = new BlockTank(this.CONFIGURATION.getBlock("Tank", BLOCK_ID_PREFIX + 6).getInt());
blockWasteLiquid = new BlockWasteLiquid(this.CONFIGURATION.getBlock("WasteLiquid", BLOCK_ID_PREFIX + 7).getInt()); blockWasteLiquid = new BlockWasteLiquid(this.CONFIGURATION.getBlock("WasteLiquid", BLOCK_ID_PREFIX + 7).getInt());
blockSink = new BlockSink(this.CONFIGURATION.getBlock("Sink", BLOCK_ID_PREFIX + 8).getInt());
// Items // Items
itemParts = new ItemParts(this.CONFIGURATION.getItem("Parts", ITEM_ID_PREFIX).getInt()); itemParts = new ItemParts(this.CONFIGURATION.getItem("Parts", ITEM_ID_PREFIX).getInt());
@ -135,6 +139,7 @@ public class LiquidMechanics extends DummyModContainer
GameRegistry.registerBlock(blockGenerator, "lmGen"); GameRegistry.registerBlock(blockGenerator, "lmGen");
GameRegistry.registerBlock(blockMachine, ItemLiquidMachine.class, "lmMachines"); GameRegistry.registerBlock(blockMachine, ItemLiquidMachine.class, "lmMachines");
GameRegistry.registerBlock(blockTank, ItemTank.class, "lmTank"); GameRegistry.registerBlock(blockTank, ItemTank.class, "lmTank");
GameRegistry.registerBlock(blockSink, "lmSink");
} }
@Init @Init
@ -148,6 +153,7 @@ public class LiquidMechanics extends DummyModContainer
GameRegistry.registerTileEntity(TileEntityReleaseValve.class, "lmeValve"); GameRegistry.registerTileEntity(TileEntityReleaseValve.class, "lmeValve");
GameRegistry.registerTileEntity(TileEntityTank.class, "lmTank"); GameRegistry.registerTileEntity(TileEntityTank.class, "lmTank");
GameRegistry.registerTileEntity(TileEntityGenerator.class, "lmGen"); GameRegistry.registerTileEntity(TileEntityGenerator.class, "lmGen");
GameRegistry.registerTileEntity(TileEntitySink.class,"lmSink");
System.out.println("Fluid Mechanics Loaded: " + TranslationHelper.loadLanguages(LANGUAGE_PATH, LANGUAGES_SUPPORTED) + " Languages."); System.out.println("Fluid Mechanics Loaded: " + TranslationHelper.loadLanguages(LANGUAGE_PATH, LANGUAGES_SUPPORTED) + " Languages.");
} }
@ -167,7 +173,7 @@ public class LiquidMechanics extends DummyModContainer
// pipe gauge // pipe gauge
GameRegistry.addRecipe(new ItemStack(this.itemGauge, 1, 0), new Object[] { GameRegistry.addRecipe(new ItemStack(this.itemGauge, 1, 0), new Object[] {
"TVT", " T ", "TVT", " T ",
'V', new ItemStack(itemParts, 1, 7), 'V', new ItemStack(itemParts, 1, Parts.Valve.ordinal()),
'T', new ItemStack(itemParts, 1, Parts.Iron.ordinal()) }); 'T', new ItemStack(itemParts, 1, Parts.Iron.ordinal()) });
// iron tube // iron tube
GameRegistry.addRecipe(new ItemStack(itemParts, 4, Parts.Iron.ordinal()), new Object[] { GameRegistry.addRecipe(new ItemStack(itemParts, 4, Parts.Iron.ordinal()), new Object[] {

View file

@ -1,24 +1,154 @@
package liquidmechanics.common.block; package liquidmechanics.common.block;
import universalelectricity.prefab.tile.TileEntityAdvanced;
import liquidmechanics.client.render.BlockRenderHelper;
import liquidmechanics.common.MetaGroup;
import liquidmechanics.common.TabLiquidMechanics;
import liquidmechanics.common.tileentity.TileEntitySink;
import net.minecraft.block.BlockContainer; import net.minecraft.block.BlockContainer;
import net.minecraft.block.material.Material; import net.minecraft.block.material.Material;
import net.minecraft.entity.EntityLiving;
import net.minecraft.entity.item.EntityItem;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.entity.player.EntityPlayerMP;
import net.minecraft.item.EnumArmorMaterial;
import net.minecraft.item.Item;
import net.minecraft.item.ItemArmor;
import net.minecraft.item.ItemStack;
import net.minecraft.tileentity.TileEntity; import net.minecraft.tileentity.TileEntity;
import net.minecraft.util.MathHelper;
import net.minecraft.util.MovingObjectPosition;
import net.minecraft.world.World; import net.minecraft.world.World;
import net.minecraft.world.WorldProvider;
import net.minecraftforge.common.ForgeDirection;
import net.minecraftforge.liquids.ILiquidTank;
import net.minecraftforge.liquids.LiquidContainerRegistry;
import net.minecraftforge.liquids.LiquidStack;
public class BlockSink extends BlockContainer public class BlockSink extends BlockContainer
{ {
public BlockSink(int par1)
protected BlockSink(int par1)
{ {
super(par1, Material.iron); super(par1, Material.iron);
// TODO Auto-generated constructor stub this.setResistance(4f);
this.setHardness(4f);
this.setBlockName("lmSink");
this.setCreativeTab(TabLiquidMechanics.INSTANCE);
} }
@Override @Override
public TileEntity createNewTileEntity(World var1) public TileEntity createNewTileEntity(World var1)
{ {
// TODO Auto-generated method stub return new TileEntitySink();
return null;
} }
public boolean onBlockActivated(World world, int x, int y, int z, EntityPlayer player, int side, float sx, float sy, float sz)
{
ItemStack heldItem = player.inventory.getCurrentItem();
TileEntity ent = world.getBlockTileEntity(x, y, z);
int meta = world.getBlockMetadata(x, y, z);
int grouping = MetaGroup.getGrouping(meta);
if (heldItem == null || !(ent instanceof TileEntitySink)) { return false; }
TileEntitySink sink = (TileEntitySink) ent;
if (world.isRemote)
{
return true;
}
else
// ItemStack var12 = new ItemStack(Item.potion, 1, 0);heldItem.itemID ==
// Item.glassBottle.itemID
{
ILiquidTank tank = sink.getTanks(ForgeDirection.UNKNOWN)[0];
LiquidStack stack = tank.getLiquid();
if (grouping == 0 || grouping == 1)
{
if (heldItem.itemID == Item.bucketWater.itemID)
{
LiquidStack filling = LiquidContainerRegistry.getLiquidForFilledItem(heldItem);
if (stack == null || (stack != null && stack.amount < tank.getCapacity()))
{
int f = sink.fill(ForgeDirection.getOrientation(side), filling, true);
if (f > 0)
{
player.inventory.setInventorySlotContents(player.inventory.currentItem, new ItemStack(Item.bucketEmpty));
return true;
}
}
}
else if (heldItem.itemID == Item.bucketEmpty.itemID)
{
LiquidStack drain = tank.drain(LiquidContainerRegistry.BUCKET_VOLUME, false);
if (drain != null && drain.amount >= LiquidContainerRegistry.BUCKET_VOLUME)
{
player.inventory.setInventorySlotContents(player.inventory.currentItem, new ItemStack(Item.bucketWater));
tank.drain(LiquidContainerRegistry.BUCKET_VOLUME, true);
return true;
}
}
else if (heldItem.itemID == Item.glassBottle.itemID)
{
LiquidStack drain = tank.drain(LiquidContainerRegistry.BUCKET_VOLUME / 4, false);
if (drain != null && drain.amount >= LiquidContainerRegistry.BUCKET_VOLUME / 4)
{
player.inventory.setInventorySlotContents(player.inventory.currentItem, new ItemStack(Item.potion, 1, 0));
tank.drain(LiquidContainerRegistry.BUCKET_VOLUME / 4, true);
return true;
}
}
else if (heldItem.getItem() instanceof ItemArmor && ((ItemArmor) heldItem.getItem()).getArmorMaterial() == EnumArmorMaterial.CLOTH)
{
ItemArmor var13 = (ItemArmor) heldItem.getItem();
var13.removeColor(heldItem);
return true;
}
}
}
return false;
}
@Override
public void onBlockPlacedBy(World world, int x, int y, int z, EntityLiving par5EntityLiving)
{
int meta = world.getBlockMetadata(x, y, z);
int angle = MathHelper.floor_double((par5EntityLiving.rotationYaw * 4.0F / 360.0F) + 0.5D) & 3;
TileEntity ent = world.getBlockTileEntity(x, y, z);
world.setBlockMetadata(x, y, z, angle + MetaGroup.getGroupStartMeta(MetaGroup.getGrouping(meta)));
if (ent instanceof TileEntityAdvanced)
{
((TileEntityAdvanced) world.getBlockTileEntity(x, y, z)).initiate();
}
world.notifyBlocksOfNeighborChange(x, y, z, this.blockID);
}
@Override
public ItemStack getPickBlock(MovingObjectPosition target, World world, int x, int y, int z)
{
int meta = world.getBlockMetadata(x, y, z);
return new ItemStack(this, 1, 0);
}
@Override
public boolean isOpaqueCube()
{
return false;
}
@Override
public boolean renderAsNormalBlock()
{
return false;
}
@Override
public int getRenderType()
{
return BlockRenderHelper.renderID;
}
} }

View file

@ -274,9 +274,8 @@ public class TileEntityPipe extends TileEntity implements ITankContainer, IReadO
{ {
connectedBlocks[i] = null; connectedBlocks[i] = null;
} }
//TODO switch side catch for IPressure
if (this.color != ColorCode.NONE && ent instanceof TileEntityTank && ((TileEntityTank) ent).getColor() != ColorCode.NONE && color != ((TileEntityTank) ent).getColor() if (this.color != ColorCode.NONE && ent instanceof TileEntityTank && ((TileEntityTank) ent).getColor() != ColorCode.NONE && color != ((TileEntityTank) ent).getColor())
)
{ {
connectedBlocks[i] = null; connectedBlocks[i] = null;
} }

View file

@ -0,0 +1,173 @@
package liquidmechanics.common.tileentity;
import javax.swing.colorchooser.ColorSelectionModel;
import liquidmechanics.api.IColorCoded;
import liquidmechanics.api.IReadOut;
import liquidmechanics.api.IPressure;
import liquidmechanics.api.helpers.LiquidData;
import liquidmechanics.api.helpers.LiquidHandler;
import liquidmechanics.api.helpers.ColorCode;
import liquidmechanics.api.helpers.connectionHelper;
import liquidmechanics.common.LiquidMechanics;
import liquidmechanics.common.handlers.UpdateConverter;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.nbt.NBTTagCompound;
import net.minecraft.network.INetworkManager;
import net.minecraft.network.packet.Packet;
import net.minecraft.network.packet.Packet250CustomPayload;
import net.minecraft.tileentity.TileEntity;
import net.minecraftforge.common.ForgeDirection;
import net.minecraftforge.liquids.ILiquidTank;
import net.minecraftforge.liquids.ITankContainer;
import net.minecraftforge.liquids.LiquidContainerRegistry;
import net.minecraftforge.liquids.LiquidStack;
import net.minecraftforge.liquids.LiquidTank;
import universalelectricity.core.vector.Vector3;
import universalelectricity.prefab.network.IPacketReceiver;
import universalelectricity.prefab.network.PacketManager;
import com.google.common.io.ByteArrayDataInput;
public class TileEntitySink extends TileEntity implements IPacketReceiver, ITankContainer, IColorCoded
{
public TileEntity[] cc = { null, null, null, null, null, null };
private ColorCode color = ColorCode.BLUE;
public static final int LMax = 2;
private int count = 100;
private LiquidTank tank = new LiquidTank(LiquidContainerRegistry.BUCKET_VOLUME * LMax);
@Override
public void updateEntity()
{
if (count++ >= 100)
{
triggerUpdate();
}
}
/**
*/
public void triggerUpdate()
{
if (!worldObj.isRemote)
{
LiquidStack stack = new LiquidStack(0, 0, 0);
if (this.tank.getLiquid() != null)
{
stack = this.tank.getLiquid();
}
Packet packet = PacketManager.getPacket(LiquidMechanics.CHANNEL, this, new Object[] { stack.itemID, stack.amount, stack.itemMeta });
PacketManager.sendPacketToClients(packet, worldObj, new Vector3(this), 20);
}
}
public LiquidStack getStack()
{
return tank.getLiquid();
}
@Override
public void readFromNBT(NBTTagCompound nbt)
{
super.readFromNBT(nbt);
LiquidStack liquid = new LiquidStack(0, 0, 0);
liquid.readFromNBT(nbt.getCompoundTag("stored"));
tank.setLiquid(liquid);
}
@Override
public void writeToNBT(NBTTagCompound nbt)
{
super.writeToNBT(nbt);
if (tank.getLiquid() != null)
{
nbt.setTag("stored", tank.getLiquid().writeToNBT(new NBTTagCompound()));
}
}
@Override
public void handlePacketData(INetworkManager network, int packetType, Packet250CustomPayload packet, EntityPlayer player, ByteArrayDataInput data)
{
try
{
this.tank.setLiquid(new LiquidStack(data.readInt(), data.readInt(), data.readInt()));
}
catch (Exception e)
{
e.printStackTrace();
System.out.print("Fail reading data for Storage tank \n");
}
}
@Override
public int fill(ForgeDirection from, LiquidStack resource, boolean doFill)
{
if (resource == null || (!LiquidHandler.isEqual(resource, color.getLiquidData().getStack()))) { return 0; }
return this.fill(0, resource, doFill);
}
@Override
public int fill(int tankIndex, LiquidStack resource, boolean doFill)
{
if (resource == null || tankIndex != 0) { return 0; }
if (doFill)
{
triggerUpdate();
}
return this.tank.fill(resource, doFill);
}
@Override
public LiquidStack drain(ForgeDirection from, int maxDrain, boolean doDrain)
{
return this.drain(0, maxDrain, doDrain);
}
@Override
public LiquidStack drain(int tankIndex, int maxDrain, boolean doDrain)
{
if (tankIndex != 0 || this.tank.getLiquid() == null) { return null; }
LiquidStack stack = this.tank.getLiquid();
if (maxDrain < this.tank.getLiquid().amount)
{
stack = LiquidHandler.getStack(stack, maxDrain);
}
if (doDrain)
{
triggerUpdate();
this.tank.drain(maxDrain, doDrain);
}
return stack;
}
@Override
public ILiquidTank[] getTanks(ForgeDirection direction)
{
return new ILiquidTank[] { tank };
}
@Override
public ILiquidTank getTank(ForgeDirection direction, LiquidStack type)
{
return null;
}
@Override
public void setColor(Object obj)
{
// this.color = ColorCode.get(cc);
}
@Override
public ColorCode getColor()
{
return color;
}
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.7 KiB

View file

@ -7,6 +7,7 @@ tile.lmMachines.0.name=Pump
tile.MechanicRod.name=Geared Rod tile.MechanicRod.name=Geared Rod
tile.eValve.0.name=Release Valve tile.eValve.0.name=Release Valve
tile.lmTank.name = Tank tile.lmTank.name = Tank
tile.lmSink.name = Sink
tile.lmPipe.0.name =Oil Pipe tile.lmPipe.0.name =Oil Pipe
tile.lmPipe.1.name =Lava Pipe tile.lmPipe.1.name =Lava Pipe
@ -52,5 +53,5 @@ item.lmPart.5.name=Slime Seal
item.lmPart.6.name=Unfinished Tank item.lmPart.6.name=Unfinished Tank
item.lmPart.7.name=Valve item.lmPart.7.name=Valve
item.lmTool.0.name=Pipe Guage item.lmTool.0.name=Pipe Gauge

BIN
resources/models/Sink.tcn Normal file

Binary file not shown.