This commit is contained in:
Raoul Van den Berge
2016-06-25 02:53:32 +02:00
parent 3df60fc4a8
commit 0dddbbf328
6 changed files with 44 additions and 25 deletions

View File

@@ -1,5 +1,11 @@
# Refined Storage Changelog
### 0.7.19
**Bugfixes**
- Fixed controller being buggy with reconnecting
- Fixed controller texture updating too slow when energy changes
- Fixed not being able to take item from grid at times
### 0.7.18
**Bugfixes**
- Fixed cables sending updates when not needed

View File

@@ -9,6 +9,7 @@ import refinedstorage.api.autocrafting.ICraftingTask;
import refinedstorage.api.network.GridPullFlags;
import refinedstorage.api.network.IGridHandler;
import refinedstorage.api.network.INetworkMaster;
import refinedstorage.api.storage.CompareFlags;
import refinedstorage.item.ItemWirelessGrid;
public class GridHandler implements IGridHandler {
@@ -44,6 +45,11 @@ public class GridHandler implements IGridHandler {
ItemStack took = network.take(stack, size);
// Fallback for corner cases where NBT changes
if (took == null) {
took = network.take(stack, size, CompareFlags.COMPARE_DAMAGE);
}
if (took != null) {
if (GridPullFlags.isPullingWithShift(flags)) {
if (!player.inventory.addItemStackToInventory(took.copy())) {

View File

@@ -65,7 +65,7 @@ public class BlockController extends BlockBase {
TileController controller = (TileController) world.getTileEntity(pos);
return super.getActualState(state, world, pos)
.withProperty(ENERGY, controller.getEnergyScaled(8));
.withProperty(ENERGY, controller.getEnergyScaledForDisplay());
}
@Override
@@ -132,7 +132,7 @@ public class BlockController extends BlockBase {
@Override
public int getComparatorInputOverride(IBlockState state, World world, BlockPos pos) {
return ((TileController) world.getTileEntity(pos)).getEnergyScaled(15);
return ((TileController) world.getTileEntity(pos)).getEnergyScaledForComparator();
}
@Override

View File

@@ -66,9 +66,8 @@ public abstract class TileSlave extends TileBase implements INetworkSlave, ISync
public void connect(World world, INetworkMaster network) {
if (network.canRun()) {
this.network = network;
this.connected = true;
this.network.addSlave(this);
this.connected = true;
world.notifyNeighborsOfStateChange(pos, getBlockType());

View File

@@ -76,8 +76,10 @@ public class TileController extends TileBase implements INetworkMaster, IEnergyR
private EnergyStorage energy = new EnergyStorage(ENERGY_CAPACITY);
private int energyUsage;
private int lastEnergyDisplay;
private int lastEnergyComparator;
private boolean couldRun;
private long lastEnergyUpdate;
private EnumControllerType type;
@@ -130,8 +132,6 @@ public class TileController extends TileBase implements INetworkMaster, IEnergyR
slaves.removeAll(slavesToRemove);
slavesToRemove.clear();
int lastEnergy = energy.getEnergyStored();
if (canRun()) {
if (ticks % 20 == 0 || forceUpdate) {
updateSlaves();
@@ -165,21 +165,13 @@ public class TileController extends TileBase implements INetworkMaster, IEnergyR
craftingTasks.pop();
}
}
} else if (!slaves.isEmpty()) {
} else {
disconnectSlaves();
updateSlaves();
}
if (couldRun != canRun()) {
couldRun = canRun();
worldObj.notifyNeighborsOfStateChange(pos, RefinedStorageBlocks.CONTROLLER);
}
wirelessGridHandler.update();
if (getType() == EnumControllerType.NORMAL && energyUsage > 0) {
if (canRun() && getType() == EnumControllerType.NORMAL) {
if (energy.getEnergyStored() - energyUsage >= 0) {
energy.extractEnergy(energyUsage, false);
} else {
@@ -189,14 +181,22 @@ public class TileController extends TileBase implements INetworkMaster, IEnergyR
energy.setEnergyStored(energy.getMaxEnergyStored());
}
if (energy.getEnergyStored() != lastEnergy) {
if (couldRun != canRun()) {
couldRun = canRun();
worldObj.notifyNeighborsOfStateChange(pos, RefinedStorageBlocks.CONTROLLER);
}
if (getEnergyScaledForDisplay() != lastEnergyDisplay) {
lastEnergyDisplay = getEnergyScaledForDisplay();
RefinedStorageUtils.updateBlock(worldObj, pos);
}
if (getEnergyScaledForComparator() != lastEnergyComparator) {
lastEnergyComparator = getEnergyScaledForComparator();
worldObj.updateComparatorOutputLevel(pos, RefinedStorageBlocks.CONTROLLER);
if (System.currentTimeMillis() - lastEnergyUpdate > 1500) {
lastEnergyUpdate = System.currentTimeMillis();
RefinedStorageUtils.updateBlock(worldObj, pos);
}
}
}
@@ -645,6 +645,14 @@ public class TileController extends TileBase implements INetworkMaster, IEnergyR
return (int) ((float) energy.getEnergyStored() / (float) ENERGY_CAPACITY * (float) i);
}
public int getEnergyScaledForDisplay() {
return getEnergyScaled(8);
}
public int getEnergyScaledForComparator() {
return getEnergyScaled(15);
}
@Override
public int getMaxEnergyStored(EnumFacing from) {
return energy.getMaxEnergyStored();

View File

@@ -25,7 +25,7 @@ public class DrawerStorage extends ExternalStorage {
@Override
public void addItems(List<ItemStack> items) {
if (!drawer.isEmpty()) {
if (!drawer.isEmpty() && drawer.getStoredItemCount() > 0) {
items.add(drawer.getStoredItemCopy());
}
}