controller emits a comparator signal now

This commit is contained in:
Raoul Van den Berge
2015-12-23 16:27:22 +01:00
parent c4bcba1ed6
commit 9f9ab2dca3
2 changed files with 29 additions and 5 deletions

View File

@@ -45,6 +45,20 @@ public class BlockController extends BlockBase implements ITileEntityProvider
super.onBlockPreDestroy(world, x, y, z, meta); super.onBlockPreDestroy(world, x, y, z, meta);
} }
@Override
public boolean hasComparatorInputOverride()
{
return true;
}
@Override
public int getComparatorInputOverride(World world, int x, int y, int z, int side)
{
TileController tile = (TileController) world.getTileEntity(x, y, z);
return tile.getEnergyScaled(15);
}
@Override @Override
public void registerBlockIcons(IIconRegister register) public void registerBlockIcons(IIconRegister register)
{ {
@@ -63,7 +77,7 @@ public class BlockController extends BlockBase implements ITileEntityProvider
if (side == tile.getDirection().ordinal()) if (side == tile.getDirection().ordinal())
{ {
return icons[(int) ((float) tile.getEnergyStored(null) / (float) tile.getMaxEnergyStored(null) * 8f)]; return icons[tile.getEnergyScaled(8)];
} }
return sideIcon; return sideIcon;

View File

@@ -10,6 +10,7 @@ import net.minecraft.nbt.NBTTagCompound;
import net.minecraft.tileentity.TileEntity; import net.minecraft.tileentity.TileEntity;
import net.minecraft.util.Vec3; import net.minecraft.util.Vec3;
import net.minecraftforge.common.util.ForgeDirection; import net.minecraftforge.common.util.ForgeDirection;
import storagecraft.StorageCraftBlocks;
import storagecraft.storage.IStorage; import storagecraft.storage.IStorage;
import storagecraft.storage.IStorageProvider; import storagecraft.storage.IStorageProvider;
import storagecraft.storage.StorageItem; import storagecraft.storage.StorageItem;
@@ -43,6 +44,8 @@ public class TileController extends TileBase implements IEnergyReceiver, INetwor
if (!worldObj.isRemote) if (!worldObj.isRemote)
{ {
int lastEnergy = energy.getEnergyStored();
if (ticks % 40 == 0) if (ticks % 40 == 0)
{ {
if (!isActive()) if (!isActive())
@@ -110,10 +113,12 @@ public class TileController extends TileBase implements IEnergyReceiver, INetwor
} }
energy.extractEnergy(energyUsage, false); energy.extractEnergy(energyUsage, false);
}
else if (lastEnergy != energy.getEnergyStored())
{ {
worldObj.markBlockForUpdate(xCoord, yCoord, zCoord); worldObj.markBlockForUpdate(xCoord, yCoord, zCoord);
worldObj.notifyBlocksOfNeighborChange(xCoord, yCoord, zCoord, StorageCraftBlocks.CONTROLLER);
}
} }
} }
@@ -299,6 +304,11 @@ public class TileController extends TileBase implements IEnergyReceiver, INetwor
return energy.getEnergyStored(); return energy.getEnergyStored();
} }
public int getEnergyScaled(int i)
{
return (int) ((float) energy.getEnergyStored() / (float) energy.getMaxEnergyStored() * (float) i);
}
@Override @Override
public int getMaxEnergyStored(ForgeDirection from) public int getMaxEnergyStored(ForgeDirection from)
{ {