package mods.eln.sixnode.TreeResinCollector;
import mods.eln.Eln;
import mods.eln.misc.Direction;
import mods.eln.misc.Utils;
import net.minecraft.init.Blocks;
import net.minecraft.nbt.NBTTagCompound;
import net.minecraft.tileentity.TileEntity;
public class TreeResinCollectorTileEntity extends TileEntity {
float occupancy = 0f;
final float occupancyMax = 2f;
final float occupancyProductPerSecondPerTreeBlock = 1f / 5f / 5f;
final float timeRandom = 0.2f;
float timeTarget = (float) (Math.random() * timeRandom);
float timeCounter = 0;
boolean onBlockActivated() {
if (worldObj.isRemote) return true;
while (occupancy >= 1f) {
Utils.dropItem(Eln.treeResin.newItemStack(1), xCoord, yCoord, zCoord, worldObj);
occupancy -= 1f;
}
return true;
}
@Override
public boolean canUpdate() {
return true;
}
@Override
public void updateEntity() {
if (worldObj.isRemote) return;
timeCounter += 1f / 20f;
if (timeCounter > timeTarget) {
int[] posWood = new int[3];
int[] posCollector = new int[3];
Direction woodDirection = Direction.fromIntMinecraftSide(getBlockMetadata()).getInverse();
posWood[0] = xCoord;
posWood[1] = yCoord;
posWood[2] = zCoord;
posCollector[0] = xCoord;
posCollector[1] = yCoord;
posCollector[2] = zCoord;
woodDirection.applyTo(posWood, 1);
int yStart, yEnd;
while (worldObj.getBlock(posWood[0], posWood[1] - 1, posWood[2]) == Blocks.log) {
posWood[1]--;
}
yStart = posWood[1];
posWood[1] = yCoord;
timeCounter -= timeTarget;
while (worldObj.getBlock(posWood[0], posWood[1] + 1, posWood[2]) == Blocks.log) {
posWood[1]++;
}
yEnd = posWood[1];
int collectiorCount = 0;
posCollector[1] = yStart;
for (posCollector[1] = yStart; posCollector[1] <= yEnd; posCollector[1]++) {
////// if (worldObj.getBlockId(posCollector[0], posCollector[1] + 1, posCollector[2]) == Eln.treeResinCollectorBlock.blockID)
{
////// collectiorCount++;
}
}
occupancy += occupancyProductPerSecondPerTreeBlock * (yEnd - yStart + 1) * timeTarget / collectiorCount;
if (occupancy > occupancyMax) occupancy = occupancyMax;
Utils.println("Occupancy : " + occupancy);
timeTarget = (float) (Math.random() * timeRandom);
}
}
@Override
public void writeToNBT(NBTTagCompound nbt) {
super.writeToNBT(nbt);
nbt.setFloat("occupancy", occupancy);
// woodDirection.writeToNBT(nbt, "woodDirection");
}
@Override
public void readFromNBT(NBTTagCompound nbt) {
super.readFromNBT(nbt);
occupancy = nbt.getFloat("occupancy");
// woodDirection = Direction.readFromNBT(nbt, "woodDirection");
}
}