Bugfixes
This commit is contained in:
@@ -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
|
||||
|
@@ -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())) {
|
||||
|
@@ -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
|
||||
|
@@ -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());
|
||||
|
||||
|
@@ -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();
|
||||
|
@@ -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());
|
||||
}
|
||||
}
|
||||
|
Reference in New Issue
Block a user