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 # 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 ### 0.7.18
**Bugfixes** **Bugfixes**
- Fixed cables sending updates when not needed - 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.GridPullFlags;
import refinedstorage.api.network.IGridHandler; import refinedstorage.api.network.IGridHandler;
import refinedstorage.api.network.INetworkMaster; import refinedstorage.api.network.INetworkMaster;
import refinedstorage.api.storage.CompareFlags;
import refinedstorage.item.ItemWirelessGrid; import refinedstorage.item.ItemWirelessGrid;
public class GridHandler implements IGridHandler { public class GridHandler implements IGridHandler {
@@ -44,6 +45,11 @@ public class GridHandler implements IGridHandler {
ItemStack took = network.take(stack, size); 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 (took != null) {
if (GridPullFlags.isPullingWithShift(flags)) { if (GridPullFlags.isPullingWithShift(flags)) {
if (!player.inventory.addItemStackToInventory(took.copy())) { if (!player.inventory.addItemStackToInventory(took.copy())) {

View File

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

View File

@@ -66,9 +66,8 @@ public abstract class TileSlave extends TileBase implements INetworkSlave, ISync
public void connect(World world, INetworkMaster network) { public void connect(World world, INetworkMaster network) {
if (network.canRun()) { if (network.canRun()) {
this.network = network; this.network = network;
this.connected = true;
this.network.addSlave(this); this.network.addSlave(this);
this.connected = true;
world.notifyNeighborsOfStateChange(pos, getBlockType()); 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 EnergyStorage energy = new EnergyStorage(ENERGY_CAPACITY);
private int energyUsage; private int energyUsage;
private int lastEnergyDisplay;
private int lastEnergyComparator;
private boolean couldRun; private boolean couldRun;
private long lastEnergyUpdate;
private EnumControllerType type; private EnumControllerType type;
@@ -130,8 +132,6 @@ public class TileController extends TileBase implements INetworkMaster, IEnergyR
slaves.removeAll(slavesToRemove); slaves.removeAll(slavesToRemove);
slavesToRemove.clear(); slavesToRemove.clear();
int lastEnergy = energy.getEnergyStored();
if (canRun()) { if (canRun()) {
if (ticks % 20 == 0 || forceUpdate) { if (ticks % 20 == 0 || forceUpdate) {
updateSlaves(); updateSlaves();
@@ -165,21 +165,13 @@ public class TileController extends TileBase implements INetworkMaster, IEnergyR
craftingTasks.pop(); craftingTasks.pop();
} }
} }
} else if (!slaves.isEmpty()) { } else {
disconnectSlaves(); disconnectSlaves();
updateSlaves();
}
if (couldRun != canRun()) {
couldRun = canRun();
worldObj.notifyNeighborsOfStateChange(pos, RefinedStorageBlocks.CONTROLLER);
} }
wirelessGridHandler.update(); wirelessGridHandler.update();
if (getType() == EnumControllerType.NORMAL && energyUsage > 0) { if (canRun() && getType() == EnumControllerType.NORMAL) {
if (energy.getEnergyStored() - energyUsage >= 0) { if (energy.getEnergyStored() - energyUsage >= 0) {
energy.extractEnergy(energyUsage, false); energy.extractEnergy(energyUsage, false);
} else { } else {
@@ -189,14 +181,22 @@ public class TileController extends TileBase implements INetworkMaster, IEnergyR
energy.setEnergyStored(energy.getMaxEnergyStored()); 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); 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); return (int) ((float) energy.getEnergyStored() / (float) ENERGY_CAPACITY * (float) i);
} }
public int getEnergyScaledForDisplay() {
return getEnergyScaled(8);
}
public int getEnergyScaledForComparator() {
return getEnergyScaled(15);
}
@Override @Override
public int getMaxEnergyStored(EnumFacing from) { public int getMaxEnergyStored(EnumFacing from) {
return energy.getMaxEnergyStored(); return energy.getMaxEnergyStored();

View File

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