working on liquid storage tank

its a WIP but in the process of setting it all up i worked on the normal
boiler and improved the MHelper file which contains the liqiud trade
method, corner finder method and surrounding TileEntity finder.
This commit is contained in:
Rseifert 2012-10-08 21:52:03 -04:00
parent 3bd9b857d4
commit 7734f98cc1
24 changed files with 808 additions and 392 deletions

View file

@ -0,0 +1,197 @@
package basicpipes.LTanks;
import com.google.common.io.ByteArrayDataInput;
import universalelectricity.network.IPacketReceiver;
import universalelectricity.network.PacketManager;
import universalelectricity.prefab.Vector3;
import basicpipes.BasicPipesMain;
import basicpipes.pipes.api.ILiquidConsumer;
import basicpipes.pipes.api.ILiquidProducer;
import basicpipes.pipes.api.Liquid;
import basicpipes.pipes.api.MHelper;
import net.minecraft.src.EntityPlayer;
import net.minecraft.src.ItemStack;
import net.minecraft.src.NBTTagCompound;
import net.minecraft.src.NBTTagList;
import net.minecraft.src.NetworkManager;
import net.minecraft.src.Packet;
import net.minecraft.src.Packet250CustomPayload;
import net.minecraft.src.TileEntity;
import net.minecraftforge.common.ForgeDirection;
public class TileEntityLTank extends TileEntity implements ILiquidConsumer,ILiquidProducer,IPacketReceiver{
public TileEntity[] cc = {null,null,null,null,null,null};
public Liquid type = Liquid.DEFUALT;
public int LStored = 0;
public int pLStored = 0;
public int LMax = 4;
private int count = 0;
private int count2 = 0;
private boolean firstUpdate = true;
public void updateEntity()
{
if(++count >= 10)
{
count = 0;
this.cc = MHelper.getSourounding(this);
if(!worldObj.isRemote)
{
MHelper.shareLiquid(this, type, LStored);
if(firstUpdate ||(this.LStored != pLStored)|| count2 >= 100)
{
count2 = 0;
firstUpdate = false;
Packet packet = PacketManager.getPacket(BasicPipesMain.channel, this, new Object[]{type.ordinal(),LStored});
PacketManager.sendPacketToClients(packet, worldObj, Vector3.get(this), 20);
}
this.pLStored = this.LStored;
}
}
}
public void writeToNBT(NBTTagCompound nbt)
{
super.writeToNBT(nbt);
nbt.setInteger("Vol", this.LStored);
nbt.setInteger("type", this.type.ordinal());
}
@Override
public void readFromNBT(NBTTagCompound nbt)
{
super.readFromNBT(nbt);
this.LStored = nbt.getInteger("Vol");
this.type = Liquid.getLiquid(nbt.getInteger("type"));
}
//--------------------
//Liquid stuff
//------------------------------------
@Override
public int onReceiveLiquid(Liquid type, int vol, ForgeDirection side)
{
if(type == this.type)
{
int rejectedVolume = Math.max((this.getStoredLiquid(type) + vol) - this.LMax, 0);
this.LStored = Math.min(Math.max((LStored + vol - rejectedVolume),0),this.LMax);
return rejectedVolume;
}
return vol;
}
@Override
public boolean canRecieveLiquid(Liquid type, ForgeDirection side) {
if(type == this.type)
{
if(this.type.isGas && side == ForgeDirection.UP)
{
return false;
}
if(!this.type.isGas && side == ForgeDirection.DOWN)
{
return false;
}
return true;
}
return false;
}
@Override
public int getStoredLiquid(Liquid type) {
if(type == this.type)
{
return LStored;
}
return 0;
}
@Override
public int getLiquidCapacity(Liquid type) {
if(type == this.type)
{
return LMax;
}
return 0;
}
public Liquid getType() {
// TODO Auto-generated method stub
return type;
}
@Override
public int onProduceLiquid(Liquid type, int vol, ForgeDirection side) {
if(type == this.type)
{
int aVol = Math.max(((this.getStoredLiquid(type) - vol) + this.LMax)-vol, 0);
this.LStored = Math.min(Math.max((LStored - aVol),0),this.LMax);
return aVol;
}
return 0;
}
@Override
public boolean canProduceLiquid(Liquid type, ForgeDirection side) {
if(type == this.type)
{
if(this.type.isGas && side == ForgeDirection.UP)
{
return true;
}
if(!this.type.isGas && side == ForgeDirection.DOWN)
{
return true;
}
}
return false;
}
@Override
public boolean canProducePresure(Liquid type, ForgeDirection side) {
if(type == this.type)
{
if(this.type.isGas && side == ForgeDirection.UP)
{
return true;
}
if(!this.type.isGas && side == ForgeDirection.DOWN)
{
return true;
}
}
return false;
}
@Override
public int presureOutput(Liquid type, ForgeDirection side) {
if(type == this.type)
{
if(this.type.isGas && side == ForgeDirection.UP)
{
return this.type.defaultPresure;
}
if(!this.type.isGas && side == ForgeDirection.DOWN)
{
return this.type.defaultPresure;
}
}
return 0;
}
@Override
public void handlePacketData(NetworkManager network,
Packet250CustomPayload packet, EntityPlayer player,
ByteArrayDataInput dataStream) {
try
{
this.type = Liquid.getLiquid(dataStream.readInt());
this.LStored = dataStream.readInt();
}catch(Exception e)
{
e.printStackTrace();
System.out.print("Fail reading data for Storage tank \n");
}
}
}

View file

@ -67,8 +67,6 @@ public class ItemGuage extends Item
print = typeName +" " + steam +" @ "+pressure+"PSI"; print = typeName +" " + steam +" @ "+pressure+"PSI";
player.sendChatToPlayer(print); player.sendChatToPlayer(print);
player.sendChatToPlayer("hPre: "+pipeEntity.hPressure+" hPPre:"+pipeEntity.hPProducer);
player.sendChatToPlayer("cUnits: "+pipeEntity.connectedUnits);
return true; return true;
} }
if(blockEntity instanceof IMechanical) if(blockEntity instanceof IMechanical)

View file

@ -20,6 +20,7 @@ public class TileEntityPipe extends TileEntity implements ILiquidConsumer,IPacke
public int capacity = 2; public int capacity = 2;
private int count = 0; private int count = 0;
private int count2 = 0;
public int presure = 0; public int presure = 0;
public int connectedUnits = 0; public int connectedUnits = 0;
public int hPressure = 0; public int hPressure = 0;
@ -87,8 +88,9 @@ public class TileEntityPipe extends TileEntity implements ILiquidConsumer,IPacke
BlockPipe.updateConductorTileEntity(this.worldObj, this.xCoord, this.yCoord, this.zCoord); BlockPipe.updateConductorTileEntity(this.worldObj, this.xCoord, this.yCoord, this.zCoord);
if(!this.worldObj.isRemote) if(!this.worldObj.isRemote)
{ {
if(firstUpdate) if(firstUpdate || count2++ >= 10)
{ firstUpdate = false; { count2= 0;
firstUpdate = false;
Packet packet = PacketManager.getPacket("Pipes",this, new Object[]{this.type.ordinal()}); Packet packet = PacketManager.getPacket("Pipes",this, new Object[]{this.type.ordinal()});
PacketManager.sendPacketToClients(packet, worldObj, Vector3.get(this), 60); PacketManager.sendPacketToClients(packet, worldObj, Vector3.get(this), 60);
} }
@ -132,7 +134,7 @@ public class TileEntityPipe extends TileEntity implements ILiquidConsumer,IPacke
} }
//only trade liquid if there is more than one thing connect and its pressure is higher than 1 //only trade liquid if there is more than one thing connect and its pressure is higher than 1
if(this.connectedUnits > 0 && this.presure > 0 && this.liquidStored > 0) if(this.connectedUnits > 0 && this.presure > 0)
{ {
for(int i = 0; i < 6; i++) for(int i = 0; i < 6; i++)
{ {

View file

@ -6,7 +6,7 @@ import universalelectricity.implement.IElectricityReceiver;
import universalelectricity.prefab.TileEntityElectricityReceiver; import universalelectricity.prefab.TileEntityElectricityReceiver;
import basicpipes.pipes.api.ILiquidProducer; import basicpipes.pipes.api.ILiquidProducer;
import basicpipes.pipes.api.Liquid; import basicpipes.pipes.api.Liquid;
import basicpipes.pipes.api.TradeHelper; import basicpipes.pipes.api.MHelper;
public class TileEntityPump extends TileEntityElectricityReceiver implements ILiquidProducer,IElectricityReceiver { public class TileEntityPump extends TileEntityElectricityReceiver implements ILiquidProducer,IElectricityReceiver {
int dCount = 0; int dCount = 0;
@ -37,7 +37,7 @@ public class TileEntityPump extends TileEntityElectricityReceiver implements ILi
if(count++ >= 20) if(count++ >= 20)
{ {
count = 0; count = 0;
sList = TradeHelper.getSourounding(this); sList = MHelper.getSourounding(this);
int bBlock = worldObj.getBlockId(xCoord, yCoord -1, zCoord); int bBlock = worldObj.getBlockId(xCoord, yCoord -1, zCoord);
Liquid bellow = Liquid.getLiquidByBlock(bBlock); Liquid bellow = Liquid.getLiquidByBlock(bBlock);

View file

@ -5,7 +5,7 @@ import net.minecraftforge.common.ForgeDirection;
import basicpipes.conductors.TileEntityPipe; import basicpipes.conductors.TileEntityPipe;
import basicpipes.pipes.api.ILiquidConsumer; import basicpipes.pipes.api.ILiquidConsumer;
import basicpipes.pipes.api.Liquid; import basicpipes.pipes.api.Liquid;
import basicpipes.pipes.api.TradeHelper; import basicpipes.pipes.api.MHelper;
public class TileEntityValve extends TileEntity implements ILiquidConsumer { public class TileEntityValve extends TileEntity implements ILiquidConsumer {
Liquid type = Liquid.DEFUALT; Liquid type = Liquid.DEFUALT;
@ -55,7 +55,7 @@ boolean on = false;
case 4: deltaX++;break; case 4: deltaX++;break;
} }
connected = TradeHelper.getSourounding(this); connected = MHelper.getSourounding(this);
for(int i = 0;i<6;i++) for(int i = 0;i<6;i++)
{ {
if(!(connected[i] instanceof TileEntityPipe)) if(!(connected[i] instanceof TileEntityPipe))

View file

@ -3,7 +3,7 @@
"modid": "basicPipes", "modid": "basicPipes",
"name": "Basic Pipes", "name": "Basic Pipes",
"description": "Simple liquid transport system for UE based mods", "description": "Simple liquid transport system for UE based mods",
"version": "r9", "version": "1.8",
"mcversion": "1.3.2", "mcversion": "1.3.2",
"url": "http://www.minecraftforge.net/forum/index.php/topic,604.0.html", "url": "http://www.minecraftforge.net/forum/index.php/topic,604.0.html",
"updateUrl": "", "updateUrl": "",

View file

@ -9,30 +9,32 @@ import net.minecraft.src.Block;
*/ */
public enum Liquid { public enum Liquid {
// -1 == null || unused // -1 == null || unused
STEAM("Steam",false,true,-1,-1), STEAM("Steam",false,true,-1,-1,100),
WATER("Water",false,false,Block.waterStill.blockID,Block.waterMoving.blockID), WATER("Water",false,false,Block.waterStill.blockID,Block.waterMoving.blockID,32),
LAVA("Lava",false,false,Block.lavaStill.blockID,Block.lavaMoving.blockID), LAVA("Lava",false,false,Block.lavaStill.blockID,Block.lavaMoving.blockID,20),
OIL("Oil",true,false,-1,-1),//BasicComponents.oilStill.blockID,BasicComponents.oilMoving.blockID), OIL("Oil",true,false,-1,-1,32),//BasicComponents.oilStill.blockID,BasicComponents.oilMoving.blockID),
Fuel("Fuel",true,false,-1,-1), Fuel("Fuel",true,false,-1,-1,40),
Air("Air",false,true,0,-1), Air("Air",false,true,0,-1,100),
Methain("Methain",true,true,-1,-1), Methain("Methain",true,true,-1,-1,100),
BioFuel("BioFuel",true,false,-1,-1), BioFuel("BioFuel",true,false,-1,-1,40),
Coolent("Coolent",false,false,-1,-1), Coolent("Coolent",false,false,-1,-1,40),
NukeWaste("NukeWaste",false,false,-1,-1), NukeWaste("NukeWaste",false,false,-1,-1,20),
Ether("Ether",false,false,-1,-1), Ether("Ether",false,false,-1,-1,100),
DEFUALT("Empty",false,false,-1,-1); DEFUALT("Empty",false,false,-1,-1,0);
public final boolean flamable;//can it catch on fire, not used but might be public final boolean flamable;//can it catch on fire, not used but might be
public final boolean isGas;//is it a gas, used to find if it floats public final boolean isGas;//is it a gas, used to find if it floats
public final int Still;//if there is a block of still liquid linked to this public final int Still;//if there is a block of still liquid linked to this
public final int Moving;//if there is a block of moving liquid linked to this public final int Moving;//if there is a block of moving liquid linked to this
public final String lName; public final String lName;//Default name for the liquid
private Liquid(String name,boolean flame,boolean gas,int block, int Moving) public final int defaultPresure;//default pressure output of the liquid
private Liquid(String name,boolean flame,boolean gas,int block, int Moving,int dPressure)
{ {
this.flamable = flame; this.flamable = flame;
this.isGas = gas; this.isGas = gas;
this.Still = block; this.Still = block;
this.Moving = Moving; this.Moving = Moving;
this.lName = name; this.lName = name;
this.defaultPresure = dPressure;
} }
/** /**
* Only use this if you are converting from the old system * Only use this if you are converting from the old system

View file

@ -0,0 +1,96 @@
package basicpipes.pipes.api;
import net.minecraft.src.TileEntity;
import net.minecraftforge.common.ForgeDirection;
public class MHelper {
/**
*
* @param entity - entity at center of search
* @return an Array containing TileEntities around the TileEntity
*/
public static TileEntity[] getSourounding(TileEntity te)
{
TileEntity[] list = new TileEntity[]{null,null,null,null,null,null};
for(int i =0; i< 6;i++)
{
ForgeDirection d = ForgeDirection.getOrientation(i);
TileEntity aEntity = te.worldObj.getBlockTileEntity(te.xCoord+d.offsetX, te.yCoord+d.offsetY, te.zCoord+d.offsetZ);
if(aEntity instanceof TileEntity)
{
list[i] = aEntity;
}
}
return list;
}
/**
* Used to help trade liquid without having to do too much work
* @param blockEntity - tile entity trading the liquid
* @param type - liquid type being traded
* @param vol - the volume to be traded
* @return the remaining untraded liquid
*/
public static int shareLiquid(TileEntity te, Liquid type,int vol)
{
int currentVol = vol;
boolean rise = type.isGas;
ForgeDirection st = ForgeDirection.getOrientation(rise ? 1 : 0);
TileEntity first = te.worldObj.getBlockTileEntity(te.xCoord+st.offsetX, te.yCoord+st.offsetX, te.zCoord+st.offsetX);
//trades to the first, bottom for liquid, top for gas
if(first instanceof ILiquidConsumer && ((ILiquidConsumer) first).getStoredLiquid(type) < ((ILiquidConsumer) first).getLiquidCapacity(type))
{
currentVol = ((ILiquidConsumer) first).onReceiveLiquid(type, vol, st);
}
//trades to side if anything is left
for(int i = 2; i < 6;i++)
{
ForgeDirection side = ForgeDirection.getOrientation(i);
TileEntity sSide = te.worldObj.getBlockTileEntity(te.xCoord+side.offsetX, te.yCoord+side.offsetX, te.zCoord+side.offsetX);
if(sSide instanceof ILiquidConsumer && ((ILiquidConsumer) sSide).getStoredLiquid(type) < ((ILiquidConsumer) sSide).getLiquidCapacity(type)
&& currentVol > 0)
{
currentVol = ((ILiquidConsumer) sSide).onReceiveLiquid(type, vol, st);
}
}
//trades to the opposite of the first if anything is left
if(currentVol > 0)
{
TileEntity last = te.worldObj.getBlockTileEntity(te.xCoord+st.getOpposite().offsetX, te.yCoord+st.getOpposite().offsetX, te.zCoord+st.getOpposite().offsetX);
if(last instanceof ILiquidConsumer && ((ILiquidConsumer) last).getStoredLiquid(type) < ((ILiquidConsumer) last).getLiquidCapacity(type))
{
currentVol = ((ILiquidConsumer) last).onReceiveLiquid(type, vol, st);
}
}
return Math.max(currentVol,0);
}
/**
*
* @param entity - entity in question
* @return 1-4 if corner 0 if not a corner
* you have to figure out which is which depending on what your using this for
* 1 should be north east 2 south east
*/
public static int corner(TileEntity entity)
{
TileEntity[] en = getSourounding(entity);
if(en[4] != null && en[2] != null && en[5] == null && en[3] == null)
{
return 3;
}
if(en[2] != null && en[5] != null && en[3] == null && en[4] == null)
{
return 4;
}
if(en[5] != null && en[3] != null && en[4] == null && en[2] == null)
{
return 1;
}
if(en[3] != null && en[4] != null && en[2] == null && en[5] == null)
{
return 2;
}
return 0;
}
}

View file

@ -1,173 +0,0 @@
package basicpipes.pipes.api;
import net.minecraft.src.TileEntity;
import net.minecraftforge.common.ForgeDirection;
public class TradeHelper {
/**
*
* @param entity - entity at center of search
* @return an Array containing found entities and nulls of nonEntities
*/
public static TileEntity[] getSourounding(TileEntity entity)
{
TileEntity[] list = new TileEntity[]{null,null,null,null,null,null};
for(int i =0; i< 6;i++)
{
int x = entity.xCoord;
int y = entity.yCoord;
int z = entity.zCoord;
switch(i)
{
case 0: y = y - 1;break;//down
case 1: y = y + 1;break;//up
case 2: z = z + 1;break;//north
case 3: z = z - 1;break;//south
case 4: x = x + 1;break;//east
case 5: x = x - 1;break;//west
}
TileEntity aEntity = entity.worldObj.getBlockTileEntity(x, y, z);
if(aEntity instanceof TileEntity)
{
list[i] = aEntity;
}
}
return list;
}
/**
* Only works for steam Power's boiler. Still needs recode to work for all things
* @param blockEntity - tile entity trading the liquid
* @param type - liquid type see chart for info
* @param rise - does the liquid rise up like a gas
* @return the remaining untraded liquid
*/
public static int shareLiquid(TileEntity blockEntity,Liquid type,boolean rise)
{
TileEntity[] connectedBlocks = getSourounding(blockEntity);
ILiquidConsumer blockMachine = (ILiquidConsumer) blockEntity;
int wSum = ((ILiquidConsumer)blockEntity).getStoredLiquid(type);
int ammountStored = blockMachine.getStoredLiquid(type);
int tankCount = 1;
boolean bottom = false;
TileEntity firstEntity = null;
TileEntity secondEntity = null;
if(rise)
{
firstEntity = connectedBlocks[1];
secondEntity = connectedBlocks[0];
}
else
{
firstEntity = connectedBlocks[0];
secondEntity = connectedBlocks[1];
}
//checks wether or not the block bellow it is a tank to move liquid too
if(firstEntity instanceof ILiquidConsumer)
{
int bWater = ((ILiquidConsumer) firstEntity).getStoredLiquid(type);
int bMax = ((ILiquidConsumer) firstEntity).getLiquidCapacity(type);
//checks if that tank has room to get liquid.
if(bWater < bMax)
{
int tradeVol = 0;
int emptyVol = Math.max( bMax - bWater,0);
tradeVol = Math.min(emptyVol, ammountStored);
int rejected = ((ILiquidConsumer) firstEntity).onReceiveLiquid(type, tradeVol, ForgeDirection.getOrientation(1));
ammountStored = ammountStored + rejected - tradeVol;
wSum -= tradeVol;
}
else
{
bottom = true;
}
}
else
{
//there was no tank bellow this tank
bottom = true;
}
//if this is the bottom tank or bottom tank is full. Update average water ammount.
if(bottom)
{
//get average water around center tank
for(int i = 2; i<6;i++)
{
TileEntity entityA = connectedBlocks[i];
if(entityA instanceof ILiquidConsumer)
{
//if is a tank add to the sum
wSum += ((ILiquidConsumer) entityA).getStoredLiquid(type);
tankCount += 1;
}
}
//if this is the bottom tank or bottom tank is full then trade liquid with tanks around it.
for(int i = 2; i<6;i++)
{
int average = Math.round((float)wSum / (float)tankCount);// takes the sum and makes it an average
int tradeSum = 0;
TileEntity entity = connectedBlocks[i];
if(entity instanceof ILiquidConsumer)
{
int targetW = ((ILiquidConsumer) entity).getStoredLiquid(type);
if(targetW < average)
{
tradeSum = Math.min(average, ammountStored); //gets the ammount to give to the target tank
int rejectedAm = ((ILiquidConsumer) entity).onReceiveLiquid(type, tradeSum, ForgeDirection.getOrientation(i)); //send that ammount with safty incase some comes back
ammountStored =rejectedAm + ammountStored - tradeSum; //counts up current water sum after trade
}
}
}
if(secondEntity instanceof ILiquidConsumer)
{
int bWater = ((ILiquidConsumer) secondEntity).getStoredLiquid(type);
int bMax = ((ILiquidConsumer) secondEntity).getLiquidCapacity(type);
if(bottom && ammountStored > 0)
{
if(bWater < bMax)
{
int emptyVolS = Math.max( bMax - bWater,0);
int tradeVolS = Math.min(emptyVolS, ammountStored);
int rejectedS = ((ILiquidConsumer) secondEntity).onReceiveLiquid(type, tradeVolS, ForgeDirection.getOrientation(0));;
ammountStored =rejectedS + ammountStored - tradeVolS;
wSum -= tradeVolS;
}
}
}
}
return ammountStored;
}
/**
*
* @param entity - entity in question
* @return 1-4 if corner 0 if not a corner
* you have to figure out which is which depending on what your using this for
* 1 should be north east 2 south east
*/
public static int corner(TileEntity entity)
{
TileEntity[] en = getSourounding(entity);
if(en[4] != null && en[2] != null && en[5] == null && en[3] == null)
{
return 1;
}
if(en[2] != null && en[5] != null && en[3] == null && en[4] == null)
{
return 2;
}
if(en[5] != null && en[3] != null && en[4] == null && en[2] == null)
{
return 3;
}
if(en[3] != null && en[4] != null && en[2] == null && en[5] == null)
{
return 4;
}
return 0;
}
}

View file

@ -1,175 +0,0 @@
package steampower;
import basicpipes.pipes.api.ILiquidConsumer;
import basicpipes.pipes.api.Liquid;
import net.minecraft.src.TileEntity;
import net.minecraftforge.common.ForgeDirection;
public class TradeHelper {
/**
*
* @param entity - entity at center of search
* @return an Array containing found entities and nulls of nonEntities
*/
public static TileEntity[] getSourounding(TileEntity entity)
{
TileEntity[] list = new TileEntity[]{null,null,null,null,null,null};
for(int i =0; i< 6;i++)
{
int x = entity.xCoord;
int y = entity.yCoord;
int z = entity.zCoord;
switch(i)
{
case 0: y = y - 1;break;//down
case 1: y = y + 1;break;//up
case 2: z = z + 1;break;//north
case 3: z = z - 1;break;//south
case 4: x = x + 1;break;//east
case 5: x = x - 1;break;//west
}
TileEntity aEntity = entity.worldObj.getBlockTileEntity(x, y, z);
if(aEntity instanceof TileEntity)
{
list[i] = aEntity;
}
}
return list;
}
/**
* Only works for steam Power's boiler. Still needs recode to work for all things
* @param blockEntity - tile entity trading the liquid
* @param type - liquid type see chart for info
* @param rise - does the liquid rise up like a gas
* @return the remaining untraded liquid
*/
public static int shareLiquid(TileEntity blockEntity,Liquid type,boolean rise)
{
TileEntity[] connectedBlocks = getSourounding(blockEntity);
ILiquidConsumer blockMachine = (ILiquidConsumer) blockEntity;
int wSum = ((ILiquidConsumer)blockEntity).getStoredLiquid(type);
int ammountStored = blockMachine.getStoredLiquid(type);
int tankCount = 1;
boolean bottom = false;
TileEntity firstEntity = null;
TileEntity secondEntity = null;
if(rise)
{
firstEntity = connectedBlocks[1];
secondEntity = connectedBlocks[0];
}
else
{
firstEntity = connectedBlocks[0];
secondEntity = connectedBlocks[1];
}
//checks wether or not the block bellow it is a tank to move liquid too
if(firstEntity instanceof ILiquidConsumer)
{
int bWater = ((ILiquidConsumer) firstEntity).getStoredLiquid(type);
int bMax = ((ILiquidConsumer) firstEntity).getLiquidCapacity(type);
//checks if that tank has room to get liquid.
if(bWater < bMax)
{
int tradeVol = 0;
int emptyVol = Math.max( bMax - bWater,0);
tradeVol = Math.min(emptyVol, ammountStored);
int rejected = ((ILiquidConsumer) firstEntity).onReceiveLiquid(type, tradeVol, ForgeDirection.getOrientation(1));
ammountStored = ammountStored + rejected - tradeVol;
wSum -= tradeVol;
}
else
{
bottom = true;
}
}
else
{
//there was no tank bellow this tank
bottom = true;
}
//if this is the bottom tank or bottom tank is full. Update average water ammount.
if(bottom)
{
//get average water around center tank
for(int i = 2; i<6;i++)
{
TileEntity entityA = connectedBlocks[i];
if(entityA instanceof ILiquidConsumer)
{
//if is a tank add to the sum
wSum += ((ILiquidConsumer) entityA).getStoredLiquid(type);
tankCount += 1;
}
}
//if this is the bottom tank or bottom tank is full then trade liquid with tanks around it.
for(int i = 2; i<6;i++)
{
int average = Math.round((float)wSum / (float)tankCount);// takes the sum and makes it an average
int tradeSum = 0;
TileEntity entity = connectedBlocks[i];
if(entity instanceof ILiquidConsumer)
{
int targetW = ((ILiquidConsumer) entity).getStoredLiquid(type);
if(targetW < average)
{
tradeSum = Math.min(average, ammountStored); //gets the ammount to give to the target tank
int rejectedAm = ((ILiquidConsumer) entity).onReceiveLiquid(type, tradeSum, ForgeDirection.getOrientation(i)); //send that ammount with safty incase some comes back
ammountStored =rejectedAm + ammountStored - tradeSum; //counts up current water sum after trade
}
}
}
if(secondEntity instanceof ILiquidConsumer)
{
int bWater = ((ILiquidConsumer) secondEntity).getStoredLiquid(type);
int bMax = ((ILiquidConsumer) secondEntity).getLiquidCapacity(type);
if(bottom && ammountStored > 0)
{
if(bWater < bMax)
{
int emptyVolS = Math.max( bMax - bWater,0);
int tradeVolS = Math.min(emptyVolS, ammountStored);
int rejectedS = ((ILiquidConsumer) secondEntity).onReceiveLiquid(type, tradeVolS, ForgeDirection.getOrientation(0));;
ammountStored =rejectedS + ammountStored - tradeVolS;
wSum -= tradeVolS;
}
}
}
}
return ammountStored;
}
/**
*
* @param entity - entity in question
* @return 1-4 if corner 0 if not a corner
* you have to figure out which is which depending on what your using this for
* 1 should be north east 2 south east
*/
public static int corner(TileEntity entity)
{
TileEntity[] en = getSourounding(entity);
if(en[4] != null && en[2] != null && en[5] == null && en[3] == null)
{
return 1;
}
if(en[2] != null && en[5] != null && en[3] == null && en[4] == null)
{
return 2;
}
if(en[5] != null && en[3] != null && en[4] == null && en[2] == null)
{
return 3;
}
if(en[3] != null && en[4] != null && en[2] == null && en[5] == null)
{
return 4;
}
return 0;
}
}

View file

@ -12,13 +12,12 @@ import net.minecraft.src.TileEntity;
import net.minecraftforge.common.ForgeDirection; import net.minecraftforge.common.ForgeDirection;
import steampower.SteamPowerMain; import steampower.SteamPowerMain;
import steampower.TileEntityMachine; import steampower.TileEntityMachine;
import steampower.TradeHelper;
import steampower.burner.TileEntityFireBox;
import universalelectricity.network.IPacketReceiver; import universalelectricity.network.IPacketReceiver;
import basicpipes.pipes.api.IHeatProducer; import basicpipes.pipes.api.IHeatProducer;
import basicpipes.pipes.api.ILiquidConsumer; import basicpipes.pipes.api.ILiquidConsumer;
import basicpipes.pipes.api.ILiquidProducer; import basicpipes.pipes.api.ILiquidProducer;
import basicpipes.pipes.api.Liquid; import basicpipes.pipes.api.Liquid;
import basicpipes.pipes.api.MHelper;
import com.google.common.io.ByteArrayDataInput; import com.google.common.io.ByteArrayDataInput;
@ -130,7 +129,7 @@ public class TileEntityBoiler extends TileEntityMachine implements IPacketReceiv
{ {
count = 0; count = 0;
//update/resets connection list //update/resets connection list
TileEntity[] entityList = TradeHelper.getSourounding(this); TileEntity[] entityList = MHelper.getSourounding(this);
tankCount = 0; tankCount = 0;
for(int c = 0; c< 6; c++) for(int c = 0; c< 6; c++)
{ {
@ -168,8 +167,8 @@ public class TileEntityBoiler extends TileEntityMachine implements IPacketReceiv
emptyBuckets(); emptyBuckets();
//adds water from container slot //adds water from container slot
this.waterStored = TradeHelper.shareLiquid(this, Liquid.WATER, false); this.waterStored = MHelper.shareLiquid(this, Liquid.WATER, this.waterStored);
this.steamStored = TradeHelper.shareLiquid(this, Liquid.STEAM, true); this.steamStored = MHelper.shareLiquid(this, Liquid.STEAM, this.steamStored);
if(waterStored > 0 && hullHeated && heatStored > heatNeeded) if(waterStored > 0 && hullHeated && heatStored > heatNeeded)

View file

@ -8,15 +8,13 @@ import net.minecraft.src.NBTTagCompound;
import net.minecraft.src.NetworkManager; import net.minecraft.src.NetworkManager;
import net.minecraft.src.Packet250CustomPayload; import net.minecraft.src.Packet250CustomPayload;
import net.minecraft.src.TileEntity; import net.minecraft.src.TileEntity;
import net.minecraftforge.common.ForgeDirection;
import net.minecraftforge.common.ISidedInventory; import net.minecraftforge.common.ISidedInventory;
import steampower.SteamPowerMain; import steampower.SteamPowerMain;
import steampower.TileEntityMachine; import steampower.TileEntityMachine;
import steampower.TradeHelper;
import steampower.boiler.TileEntityBoiler; import steampower.boiler.TileEntityBoiler;
import universalelectricity.network.IPacketReceiver; import universalelectricity.network.IPacketReceiver;
import basicpipes.pipes.api.IHeatProducer; import basicpipes.pipes.api.IHeatProducer;
import basicpipes.pipes.api.MHelper;
import com.google.common.io.ByteArrayDataInput; import com.google.common.io.ByteArrayDataInput;
@ -144,7 +142,7 @@ public class TileEntityFireBox extends TileEntityMachine implements IPacketRecei
public void addConnection() public void addConnection()
{ {
connectedUnits = 0; connectedUnits = 0;
TileEntity[] aEntity = TradeHelper.getSourounding(this); TileEntity[] aEntity = MHelper.getSourounding(this);
for(int i = 0; i<6; i++) for(int i = 0; i<6; i++)
{ {

View file

@ -3,7 +3,7 @@
"modid": "SteamPower", "modid": "SteamPower",
"name": "Steam Power", "name": "Steam Power",
"description": "Basic coal fired power plant generator pack for UE", "description": "Basic coal fired power plant generator pack for UE",
"version": "r5", "version": "1.8",
"mcversion": "1.3.2", "mcversion": "1.3.2",
"url": "http://www.minecraftforge.net/forum/index.php/topic,222.0.html", "url": "http://www.minecraftforge.net/forum/index.php/topic,222.0.html",
"updateUrl": "", "updateUrl": "",

View file

@ -0,0 +1,427 @@
// Date: 10/8/2012 7:31:40 PM
// Template version 1.1
// Java generated by Techne
// Keep in mind that you still need to fill in some blanks
// - ZeuX
package basicpipes.renderTank;
import basicpipes.LTanks.TileEntityLTank;
import basicpipes.conductors.TileEntityPipe;
import net.minecraft.src.Entity;
import net.minecraft.src.ModelBase;
import net.minecraft.src.ModelRenderer;
import net.minecraft.src.TileEntity;
import net.minecraftforge.common.ForgeDirection;
public class ModelLiquidTank extends ModelBase
{
//fields
ModelRenderer Mid;
ModelRenderer Corner;
ModelRenderer Corner2;
ModelRenderer Corner3;
ModelRenderer Corner4;
ModelRenderer C8;
ModelRenderer C7;
ModelRenderer C6;
ModelRenderer C5;
ModelRenderer C4;
ModelRenderer C;
ModelRenderer C3;
ModelRenderer C2;
ModelRenderer GuageT;
ModelRenderer GuageB;
ModelRenderer Guage;
ModelRenderer GuageR;
ModelRenderer GuageGlass;
ModelRenderer GuageL;
ModelRenderer GuageT2;
ModelRenderer GuageB2;
ModelRenderer Guage2;
ModelRenderer GuageR2;
ModelRenderer GuageGlass2;
ModelRenderer GuageL2;
ModelRenderer GuageT3;
ModelRenderer GuageB3;
ModelRenderer Guage3;
ModelRenderer GuageR3;
ModelRenderer GuageGlass3;
ModelRenderer GuageL3;
ModelRenderer GuageT4;
ModelRenderer GuageB4;
ModelRenderer Guage4;
ModelRenderer GuageR4;
ModelRenderer GuageGlass4;
ModelRenderer GuageL4;
ModelRenderer CCBottom;
ModelRenderer CCRight;
ModelRenderer CCLeft;
ModelRenderer CCFront;
ModelRenderer CCBack;
ModelRenderer CCTop;
public ModelLiquidTank()
{
textureWidth = 128;
textureHeight = 128;
Mid = new ModelRenderer(this, 0, 50);
Mid.addBox(-6F, 0F, -6F, 12, 14, 12);
Mid.setRotationPoint(0F, 9F, 0F);
Mid.setTextureSize(128, 128);
Mid.mirror = true;
setRotation(Mid, 0F, 0F, 0F);
Corner = new ModelRenderer(this, 0, 30);
Corner.addBox(-1F, 0F, -1F, 2, 16, 2);
Corner.setRotationPoint(-7F, 8F, 7F);
Corner.setTextureSize(128, 128);
Corner.mirror = true;
setRotation(Corner, 0F, 0F, 0F);
Corner2 = new ModelRenderer(this, 0, 30);
Corner2.addBox(-1F, 0F, -1F, 2, 16, 2);
Corner2.setRotationPoint(-7F, 8F, -7F);
Corner2.setTextureSize(128, 128);
Corner2.mirror = true;
setRotation(Corner2, 0F, 0F, 0F);
Corner3 = new ModelRenderer(this, 0, 30);
Corner3.addBox(-1F, 0F, -1F, 2, 16, 2);
Corner3.setRotationPoint(7F, 8F, -7F);
Corner3.setTextureSize(128, 128);
Corner3.mirror = true;
setRotation(Corner3, 0F, 0F, 0F);
Corner4 = new ModelRenderer(this, 0, 30);
Corner4.addBox(-1F, 0F, -1F, 2, 16, 2);
Corner4.setRotationPoint(7F, 8F, 7F);
Corner4.setTextureSize(128, 128);
Corner4.mirror = true;
setRotation(Corner4, 0F, 0F, 0F);
C8 = new ModelRenderer(this, 9, 35);
C8.addBox(-1F, 0F, -1F, 2, 2, 12);
C8.setRotationPoint(6F, 22F, -5F);
C8.setTextureSize(128, 128);
C8.mirror = true;
setRotation(C8, 0F, 0F, 0F);
C7 = new ModelRenderer(this, 9, 35);
C7.addBox(-1F, 0F, -1F, 2, 2, 12);
C7.setRotationPoint(-6F, 8F, -5F);
C7.setTextureSize(128, 128);
C7.mirror = true;
setRotation(C7, 0F, 0F, 0F);
C6 = new ModelRenderer(this, 9, 35);
C6.addBox(-1F, 0F, -1F, 2, 2, 12);
C6.setRotationPoint(6F, 8F, -5F);
C6.setTextureSize(128, 128);
C6.mirror = true;
setRotation(C6, 0F, 0F, 0F);
C5 = new ModelRenderer(this, 9, 30);
C5.addBox(-1F, 0F, -1F, 12, 2, 2);
C5.setRotationPoint(-5F, 8F, 6F);
C5.setTextureSize(128, 128);
C5.mirror = true;
setRotation(C5, 0F, 0F, 0F);
C4 = new ModelRenderer(this, 9, 35);
C4.addBox(-1F, 0F, -1F, 2, 2, 12);
C4.setRotationPoint(-6F, 22F, -5F);
C4.setTextureSize(128, 128);
C4.mirror = true;
setRotation(C4, 0F, 0F, 0F);
C = new ModelRenderer(this, 9, 30);
C.addBox(-1F, 0F, -1F, 12, 2, 2);
C.setRotationPoint(-5F, 22F, 6F);
C.setTextureSize(128, 128);
C.mirror = true;
setRotation(C, 0F, 0F, 0F);
C3 = new ModelRenderer(this, 9, 30);
C3.addBox(-1F, 0F, -1F, 12, 2, 2);
C3.setRotationPoint(-5F, 8F, -6F);
C3.setTextureSize(128, 128);
C3.mirror = true;
setRotation(C3, 0F, 0F, 0F);
C2 = new ModelRenderer(this, 9, 30);
C2.addBox(-1F, 0F, -1F, 12, 2, 2);
C2.setRotationPoint(-5F, 22F, -6F);
C2.setTextureSize(128, 128);
C2.mirror = true;
setRotation(C2, 0F, 0F, 0F);
//G1--------------------------------------
GuageT = new ModelRenderer(this, 54, 42);
GuageT.addBox(-1F, -1F, 0F, 2, 1, 2);
GuageT.setRotationPoint(0F, 12F, -8F);
GuageT.setTextureSize(128, 128);
GuageT.mirror = true;
setRotation(GuageT, 0F, 0F, 0F);
GuageB = new ModelRenderer(this, 54, 42);
GuageB.addBox(-1F, 8F, 0F, 2, 1, 2);
GuageB.setRotationPoint(0F, 12F, -8F);
GuageB.setTextureSize(128, 128);
GuageB.mirror = true;
setRotation(GuageB, 0F, 0F, 0F);
Guage = new ModelRenderer(this, 54, 32);
Guage.addBox(-1F, 0F, 0F, 2, 8, 1);
Guage.setRotationPoint(0F, 12F, -7F);
Guage.setTextureSize(128, 128);
Guage.mirror = true;
setRotation(Guage, 0F, 0F, 0F);
GuageR = new ModelRenderer(this, 44, 32);
GuageR.addBox(1F, -1F, -1F, 2, 10, 2);
GuageR.setRotationPoint(0F, 12F, -7F);
GuageR.setTextureSize(128, 128);
GuageR.mirror = true;
setRotation(GuageR, 0F, 0F, 0F);
GuageGlass = new ModelRenderer(this, 60, 32);
GuageGlass.addBox(-1F, 0F, 0F, 2, 8, 1);
GuageGlass.setRotationPoint(0F, 12F, -8F);
GuageGlass.setTextureSize(128, 128);
GuageGlass.mirror = true;
setRotation(GuageGlass, 0F, 0F, 0F);
GuageL = new ModelRenderer(this, 44, 32);
GuageL.addBox(-3F, -1F, -1F, 2, 10, 2);
GuageL.setRotationPoint(0F, 12F, -7F);
GuageL.setTextureSize(128, 128);
GuageL.mirror = true;
setRotation(GuageL, 0F, 0F, 0F);
//G2----------------------------------
GuageT2 = new ModelRenderer(this, 54, 42);
GuageT2.addBox(-1F, -1F, 0F, 2, 1, 2);
GuageT2.setRotationPoint(-8F, 12F, 0F);
GuageT2.setTextureSize(128, 128);
GuageT2.mirror = true;
setRotation(GuageT2, 0F, 1.570796F, 0F);
GuageB2 = new ModelRenderer(this, 54, 42);
GuageB2.addBox(-1F, 8F, 0F, 2, 1, 2);
GuageB2.setRotationPoint(-8F, 12F, 0F);
GuageB2.setTextureSize(128, 128);
GuageB2.mirror = true;
setRotation(GuageB2, 0F, 1.570796F, 0F);
Guage2 = new ModelRenderer(this, 54, 32);
Guage2.addBox(-1F, 0F, 0F, 2, 8, 1);
Guage2.setRotationPoint(-7F, 12F, 0F);
Guage2.setTextureSize(128, 128);
Guage2.mirror = true;
setRotation(Guage2, 0F, 1.570796F, 0F);
GuageR2 = new ModelRenderer(this, 44, 32);
GuageR2.addBox(1F, -1F, -1F, 2, 10, 2);
GuageR2.setRotationPoint(-7F, 12F, 0F);
GuageR2.setTextureSize(128, 128);
GuageR2.mirror = true;
setRotation(GuageR2, 0F, 1.570796F, 0F);
GuageGlass2 = new ModelRenderer(this, 60, 32);
GuageGlass2.addBox(-1F, 0F, 0F, 2, 8, 1);
GuageGlass2.setRotationPoint(-8F, 12F, 0F);
GuageGlass2.setTextureSize(128, 128);
GuageGlass2.mirror = true;
setRotation(GuageGlass2, 0F, 1.570796F, 0F);
GuageL2 = new ModelRenderer(this, 44, 32);
GuageL2.addBox(-3F, -1F, -1F, 2, 10, 2);
GuageL2.setRotationPoint(-7F, 12F, 0F);
GuageL2.setTextureSize(128, 128);
GuageL2.mirror = true;
setRotation(GuageL2, 0F, 1.570796F, 0F);
//G3--------------------------------------
GuageT3 = new ModelRenderer(this, 54, 42);
GuageT3.addBox(-1F, -1F, 0F, 2, 1, 2);
GuageT3.setRotationPoint(0F, 12F, 8F);
GuageT3.setTextureSize(128, 128);
GuageT3.mirror = true;
setRotation(GuageT3, 0F, 3.141593F, 0F);
GuageB3 = new ModelRenderer(this, 54, 42);
GuageB3.addBox(-1F, 8F, 0F, 2, 1, 2);
GuageB3.setRotationPoint(0F, 12F, 8F);
GuageB3.setTextureSize(128, 128);
GuageB3.mirror = true;
setRotation(GuageB3, 0F, 3.141593F, 0F);
Guage3 = new ModelRenderer(this, 54, 32);
Guage3.addBox(-1F, 0F, 0F, 2, 8, 1);
Guage3.setRotationPoint(0F, 12F, 7F);
Guage3.setTextureSize(128, 128);
Guage3.mirror = true;
setRotation(Guage3, 0F, 3.141593F, 0F);
GuageR3 = new ModelRenderer(this, 44, 32);
GuageR3.addBox(1F, -1F, -1F, 2, 10, 2);
GuageR3.setRotationPoint(0F, 12F, 7F);
GuageR3.setTextureSize(128, 128);
GuageR3.mirror = true;
setRotation(GuageR3, 0F, 3.141593F, 0F);
GuageGlass3 = new ModelRenderer(this, 60, 32);
GuageGlass3.addBox(-1F, 0F, 0F, 2, 8, 1);
GuageGlass3.setRotationPoint(0F, 12F, 8F);
GuageGlass3.setTextureSize(128, 128);
GuageGlass3.mirror = true;
setRotation(GuageGlass3, 0F, 3.141593F, 0F);
GuageL3 = new ModelRenderer(this, 44, 32);
GuageL3.addBox(-3F, -1F, -1F, 2, 10, 2);
GuageL3.setRotationPoint(0F, 12F, 7F);
GuageL3.setTextureSize(128, 128);
GuageL3.mirror = true;
setRotation(GuageL3, 0F, 3.141593F, 0F);
//G4-------------------------------
GuageT4 = new ModelRenderer(this, 54, 42);
GuageT4.addBox(-1F, -1F, 0F, 2, 1, 2);
GuageT4.setRotationPoint(8F, 12F, 0F);
GuageT4.setTextureSize(128, 128);
GuageT4.mirror = true;
setRotation(GuageT4, 0F, -1.570796F, 0F);
GuageB4 = new ModelRenderer(this, 54, 42);
GuageB4.addBox(-1F, 8F, 0F, 2, 1, 2);
GuageB4.setRotationPoint(8F, 12F, 0F);
GuageB4.setTextureSize(128, 128);
GuageB4.mirror = true;
setRotation(GuageB4, 0F, -1.570796F, 0F);
Guage4 = new ModelRenderer(this, 54, 32);
Guage4.addBox(-1F, 0F, 0F, 2, 8, 1);
Guage4.setRotationPoint(7F, 12F, 0F);
Guage4.setTextureSize(128, 128);
Guage4.mirror = true;
setRotation(Guage4, 0F, -1.570796F, 0F);
GuageR4 = new ModelRenderer(this, 44, 32);
GuageR4.addBox(1F, -1F, -1F, 2, 10, 2);
GuageR4.setRotationPoint(7F, 12F, 0F);
GuageR4.setTextureSize(128, 128);
GuageR4.mirror = true;
setRotation(GuageR4, 0F, -1.570796F, 0F);
GuageGlass4 = new ModelRenderer(this, 60, 32);
GuageGlass4.addBox(-1F, 0F, 0F, 2, 8, 1);
GuageGlass4.setRotationPoint(8F, 12F, 0F);
GuageGlass4.setTextureSize(128, 128);
GuageGlass4.mirror = true;
setRotation(GuageGlass4, 0F, -1.570796F, 0F);
GuageL4 = new ModelRenderer(this, 44, 32);
GuageL4.addBox(-3F, -1F, -1F, 2, 10, 2);
GuageL4.setRotationPoint(7F, 12F, 0F);
GuageL4.setTextureSize(128, 128);
GuageL4.mirror = true;
setRotation(GuageL4, 0F, -1.570796F, 0F);
//Pipe Connectors
CCBottom = new ModelRenderer(this, 0, 0);
CCBottom.addBox(-3F, -9F, -3F, 6, 1, 6);
CCBottom.setRotationPoint(0F, 15F, 0F);
CCBottom.setTextureSize(128, 128);
CCBottom.mirror = true;
setRotation(CCBottom, 3.141593F, 0F, 0F);
CCRight = new ModelRenderer(this, 0, 0);
CCRight.addBox(-3F, -8F, -3F, 6, 2, 6);
CCRight.setRotationPoint(0F, 15F, 0F);
CCRight.setTextureSize(128, 128);
CCRight.mirror = true;
setRotation(CCRight, 0F, 0F, -1.570796F);
CCLeft = new ModelRenderer(this, 0, 0);
CCLeft.addBox(-3F, -8F, -3F, 6, 2, 6);
CCLeft.setRotationPoint(0F, 15F, 0F);
CCLeft.setTextureSize(128, 128);
CCLeft.mirror = true;
setRotation(CCLeft, 0F, 0F, 1.570796F);
CCFront = new ModelRenderer(this, 0, 0);
CCFront.addBox(-3F, -8F, -3F, 6, 2, 6);
CCFront.setRotationPoint(0F, 15F, 0F);
CCFront.setTextureSize(128, 128);
CCFront.mirror = true;
setRotation(CCFront, 1.570796F, 0F, 0F);
CCBack = new ModelRenderer(this, 0, 0);
CCBack.addBox(-3F, -8F, -3F, 6, 2, 6);
CCBack.setRotationPoint(0F, 15F, 0F);
CCBack.setTextureSize(128, 128);
CCBack.mirror = true;
setRotation(CCBack, -1.570796F, 0F, 0F);
CCTop = new ModelRenderer(this, 0, 0);
CCTop.addBox(-3F, -7F, -3F, 6, 1, 6);
CCTop.setRotationPoint(0F, 15F, 0F);
CCTop.setTextureSize(128, 128);
CCTop.mirror = true;
setRotation(CCTop, 0F, 0F, 0F);
}
public void renderMain(TileEntityLTank te ,float f5)
{
//render regardless of sides
Mid.render(f5);
Corner.render(f5);
Corner2.render(f5);
Corner3.render(f5);
Corner4.render(f5);
C8.render(f5);
C7.render(f5);
C6.render(f5);
C5.render(f5);
C4.render(f5);
C.render(f5);
C3.render(f5);
C2.render(f5);
CCTop.render(f5);CCBottom.render(f5);
//Front
if(te.cc[2] instanceof TileEntityPipe)
{
CCFront.render(f5);
}else
{
GuageT.render(f5);
GuageB.render(f5);
Guage.render(f5);
GuageR.render(f5);
GuageGlass.render(f5);
GuageL.render(f5);
}
//back
if(te.cc[3] instanceof TileEntityPipe)
{
CCBack.render(f5);
}else
{
GuageT3.render(f5);
Guage3.render(f5);
Guage3.render(f5);
GuageR3.render(f5);
GuageGlass3.render(f5);
GuageL3.render(f5);
}
//right
if(te.cc[4] instanceof TileEntityPipe)
{
CCRight.render(f5);
}else
{
GuageT4.render(f5);
Guage4.render(f5);
Guage4.render(f5);
GuageR4.render(f5);
GuageGlass4.render(f5);
GuageL4.render(f5);
}
//left
if(te.cc[5] instanceof TileEntityPipe)
{
CCLeft.render(f5);
}else
{
GuageT2.render(f5);
Guage2.render(f5);
Guage2.render(f5);
GuageR2.render(f5);
GuageGlass2.render(f5);
GuageL2.render(f5);
}
}
private void setRotation(ModelRenderer model, float x, float y, float z)
{
model.rotateAngleX = x;
model.rotateAngleY = y;
model.rotateAngleZ = z;
}
public void setRotationAngles(float f, float f1, float f2, float f3, float f4, float f5)
{
super.setRotationAngles(f, f1, f2, f3, f4, f5);
}
}

View file

@ -0,0 +1,51 @@
package basicpipes.renderTank;
import net.minecraft.src.ModelBase;
import net.minecraft.src.TileEntity;
import net.minecraft.src.TileEntitySpecialRenderer;
import org.lwjgl.opengl.GL11;
import basicpipes.BasicPipesMain;
import basicpipes.ModelLargePipe;
import basicpipes.ModelPipe;
import basicpipes.LTanks.TileEntityLTank;
import basicpipes.conductors.TileEntityPipe;
import basicpipes.pipes.api.Liquid;
public class RenderLTank extends TileEntitySpecialRenderer
{
private Liquid type = Liquid.DEFUALT;
private ModelLiquidTank model;
private int pos = 0;
public RenderLTank()
{
model = new ModelLiquidTank();
}
public void renderAModelAt(TileEntityLTank te, double d, double d1, double d2, float f)
{
type = te.getType();
pos = Math.min(te.getStoredLiquid(type),4);
GL11.glPushMatrix();
GL11.glTranslatef((float) d + 0.5F, (float) d1 + 1.5F, (float) d2 + 0.5F);
GL11.glScalef(1.0F, -1F, -1F);
switch(type.ordinal())
{
//case 0: bindTextureByName(BasicPipesMain.textureFile+"/pipes/SixSteamPipe.png");break;
default:bindTextureByName(BasicPipesMain.textureFile+"/tanks/LiquidTank"+pos+".png"); break;
}
model.renderMain(te, 0.0625F);
GL11.glPopMatrix();
}
@Override
public void renderTileEntityAt(TileEntity tileEntity, double var2, double var4, double var6, float var8) {
this.renderAModelAt((TileEntityLTank)tileEntity, var2, var4, var6, var8);
}
}

View file

@ -34,8 +34,6 @@ import universalelectricity.electricity.ElectricInfo.ElectricUnit;
String displayText = ""; String displayText = "";
String displayText2 = ""; String displayText2 = "";
String displayText3 = ""; String displayText3 = "";
String displayText4 = "";
String displayText5 = "";
/** /**
if(tileEntity.connectedElectricUnit == null) if(tileEntity.connectedElectricUnit == null)
{ {
@ -57,18 +55,13 @@ import universalelectricity.electricity.ElectricInfo.ElectricUnit;
{ {
//displayText = ElectricUnit.getWattDisplay((int)(tileEntity.generateRate*20)); //displayText = ElectricUnit.getWattDisplay((int)(tileEntity.generateRate*20));
displayText = "ForceOut: "+tileEntity.force+"N"; displayText = "ForceOut: "+tileEntity.force+"N";
}
displayText2 = "water" + "-" + tileEntity.water; displayText2 = "water" + "-" + tileEntity.water;
displayText3 = "steam" + "-" + tileEntity.steam; displayText3 = "steam" + "-" + tileEntity.steam;
}
displayText4 = "Db:PacketsReceived " + "=" + tileEntity.pCount;
//displayText5 = "Debug:bforce" + "=" + tileEntity.bForce;
this.fontRenderer.drawString(displayText, (int)(105-displayText.length()*1), 45, 4210752); this.fontRenderer.drawString(displayText, (int)(105-displayText.length()*1), 45, 4210752);
this.fontRenderer.drawString(displayText2, (int)(105-displayText.length()*1), 55, 4210752); this.fontRenderer.drawString(displayText2, (int)(105-displayText.length()*1), 55, 4210752);
this.fontRenderer.drawString(displayText3, (int)(105-displayText.length()*1), 65, 4210752); this.fontRenderer.drawString(displayText3, (int)(105-displayText.length()*1), 65, 4210752);
this.fontRenderer.drawString(displayText4, (int)(105-displayText.length()*1), 75, 4210752);
// this.fontRenderer.drawString(displayText5, (int)(105-displayText.length()*1), 85, 4210752);
this.fontRenderer.drawString(StatCollector.translateToLocal("container.inventory"), 8, this.ySize - 96 + 2, 4210752); this.fontRenderer.drawString(StatCollector.translateToLocal("container.inventory"), 8, this.ySize - 96 + 2, 4210752);
} }

View file

@ -6,6 +6,7 @@ import net.minecraft.src.TileEntitySpecialRenderer;
import org.lwjgl.opengl.GL11; import org.lwjgl.opengl.GL11;
import steampower.boiler.TileEntityBoiler; import steampower.boiler.TileEntityBoiler;
import basicpipes.pipes.api.MHelper;
public class RenderBoiler extends TileEntitySpecialRenderer public class RenderBoiler extends TileEntitySpecialRenderer
{ {
@ -36,14 +37,14 @@ public class RenderBoiler extends TileEntitySpecialRenderer
model.generalRender(0.0625F); model.generalRender(0.0625F);
} }
else else
if(TradeHelper.corner(tileEntity) == 0 || ((TileEntityBoiler)tileEntity).tankCount > 2) if(MHelper.corner(tileEntity) == 0 || ((TileEntityBoiler)tileEntity).tankCount > 2)
{ {
bindTextureByName(SteamPowerMain.textureFile+"tankBlock.png"); bindTextureByName(SteamPowerMain.textureFile+"tankBlock.png");
model2.renderBlock(0.0625F); model2.renderBlock(0.0625F);
} }
else else
{ {
int corner = TradeHelper.corner(tileEntity); int corner = MHelper.corner(tileEntity);
bindTextureByName(SteamPowerMain.textureFile+"CornerTank.png"); bindTextureByName(SteamPowerMain.textureFile+"CornerTank.png");
switch(corner) switch(corner)
{ {

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 614 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 594 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 626 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 626 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 623 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 614 B