Hbm-s-Nuclear-Tech-GIT/src/main/java/com/hbm/tileentity/machine/oil/TileEntityMachineFrackingTower.java

114 lines
2.6 KiB
Java

package com.hbm.tileentity.machine.oil;
import com.hbm.blocks.ModBlocks;
import com.hbm.handler.FluidTypeHandler.FluidType;
import com.hbm.interfaces.IFluidAcceptor;
import com.hbm.inventory.FluidTank;
import com.hbm.world.feature.OilSpot;
import net.minecraft.block.Block;
import net.minecraft.block.material.Material;
import net.minecraft.init.Blocks;
public class TileEntityMachineFrackingTower extends TileEntityOilDrillBase implements IFluidAcceptor {
public TileEntityMachineFrackingTower() {
super();
tanks = new FluidTank[3];
tanks[0] = new FluidTank(FluidType.OIL, 64_000, 0);
tanks[1] = new FluidTank(FluidType.GAS, 64_000, 1);
tanks[2] = new FluidTank(FluidType.FRACKSOL, 64_000, 2);
}
@Override
public String getName() {
return "container.frackingTower";
}
@Override
public long getMaxPower() {
return 5_000_000;
}
@Override
public int getPowerReq() {
return 5000;
}
@Override
public int getDelay() {
return 20;
}
@Override
public int getDrillDepth() {
return 0;
}
@Override
public boolean canPump() {
boolean b = this.tanks[2].getFill() >= 10;
if(!b) {
this.indicator = 3;
}
return b;
}
@Override
public boolean canSuckBlock(Block b) {
return super.canSuckBlock(b) || b == ModBlocks.ore_bedrock_oil;
}
@Override
public void doSuck(int x, int y, int z) {
super.doSuck(x, y, z);
if(worldObj.getBlock(x, y, z) == ModBlocks.ore_bedrock_oil) {
onSuck(x, y, z);
}
}
@Override
public void onSuck(int x, int y, int z) {
Block b = worldObj.getBlock(x, y, z);
int oil = 0;
int gas = 0;
if(b == ModBlocks.ore_oil) {
oil = 1000;
gas = 100 + worldObj.rand.nextInt(401);
}
if(b == ModBlocks.ore_bedrock_oil) {
oil = 100;
gas = 10 + worldObj.rand.nextInt(41);
}
this.tanks[0].setFill(this.tanks[0].getFill() + oil);
if(this.tanks[0].getFill() > this.tanks[0].getMaxFill()) this.tanks[0].setFill(tanks[0].getMaxFill());
this.tanks[1].setFill(this.tanks[1].getFill() + gas);
if(this.tanks[1].getFill() > this.tanks[1].getMaxFill()) this.tanks[1].setFill(tanks[1].getMaxFill());
this.tanks[2].setFill(tanks[2].getFill() - 10);
OilSpot.generateOilSpot(worldObj, xCoord, zCoord, 75, 10);
}
@Override
public void fillFluidInit(FluidType type) {
fillFluid(this.xCoord - 1, this.yCoord, this.zCoord, getTact(), type);
fillFluid(this.xCoord + 1, this.yCoord, this.zCoord, getTact(), type);
fillFluid(this.xCoord, this.yCoord, this.zCoord - 1, getTact(), type);
fillFluid(this.xCoord, this.yCoord, this.zCoord + 1, getTact(), type);
}
@Override
public int getMaxFluidFill(FluidType type) {
return type == tanks[2].getTankType() ? tanks[2].getMaxFill() : 0;
}
}