From 9f9ab2dca362d8112b179b278f1fb0b5bb06fe16 Mon Sep 17 00:00:00 2001 From: Raoul Van den Berge Date: Wed, 23 Dec 2015 16:27:22 +0100 Subject: [PATCH] controller emits a comparator signal now --- .../storagecraft/block/BlockController.java | 16 +++++++++++++++- .../java/storagecraft/tile/TileController.java | 18 ++++++++++++++---- 2 files changed, 29 insertions(+), 5 deletions(-) diff --git a/src/main/java/storagecraft/block/BlockController.java b/src/main/java/storagecraft/block/BlockController.java index 5f4c1b275..6be8d4442 100644 --- a/src/main/java/storagecraft/block/BlockController.java +++ b/src/main/java/storagecraft/block/BlockController.java @@ -45,6 +45,20 @@ public class BlockController extends BlockBase implements ITileEntityProvider 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 public void registerBlockIcons(IIconRegister register) { @@ -63,7 +77,7 @@ public class BlockController extends BlockBase implements ITileEntityProvider if (side == tile.getDirection().ordinal()) { - return icons[(int) ((float) tile.getEnergyStored(null) / (float) tile.getMaxEnergyStored(null) * 8f)]; + return icons[tile.getEnergyScaled(8)]; } return sideIcon; diff --git a/src/main/java/storagecraft/tile/TileController.java b/src/main/java/storagecraft/tile/TileController.java index a99c4c174..c090b367a 100644 --- a/src/main/java/storagecraft/tile/TileController.java +++ b/src/main/java/storagecraft/tile/TileController.java @@ -10,6 +10,7 @@ import net.minecraft.nbt.NBTTagCompound; import net.minecraft.tileentity.TileEntity; import net.minecraft.util.Vec3; import net.minecraftforge.common.util.ForgeDirection; +import storagecraft.StorageCraftBlocks; import storagecraft.storage.IStorage; import storagecraft.storage.IStorageProvider; import storagecraft.storage.StorageItem; @@ -43,6 +44,8 @@ public class TileController extends TileBase implements IEnergyReceiver, INetwor if (!worldObj.isRemote) { + int lastEnergy = energy.getEnergyStored(); + if (ticks % 40 == 0) { if (!isActive()) @@ -110,10 +113,12 @@ public class TileController extends TileBase implements IEnergyReceiver, INetwor } energy.extractEnergy(energyUsage, false); - } - else - { - worldObj.markBlockForUpdate(xCoord, yCoord, zCoord); + + if (lastEnergy != energy.getEnergyStored()) + { + 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(); } + public int getEnergyScaled(int i) + { + return (int) ((float) energy.getEnergyStored() / (float) energy.getMaxEnergyStored() * (float) i); + } + @Override public int getMaxEnergyStored(ForgeDirection from) {