Only update ext storage on neighbour update
This commit is contained in:
@@ -1,5 +1,6 @@
|
|||||||
package refinedstorage.block;
|
package refinedstorage.block;
|
||||||
|
|
||||||
|
import net.minecraft.block.Block;
|
||||||
import net.minecraft.block.state.IBlockState;
|
import net.minecraft.block.state.IBlockState;
|
||||||
import net.minecraft.entity.player.EntityPlayer;
|
import net.minecraft.entity.player.EntityPlayer;
|
||||||
import net.minecraft.item.ItemStack;
|
import net.minecraft.item.ItemStack;
|
||||||
@@ -31,6 +32,15 @@ public class BlockExternalStorage extends BlockSlave {
|
|||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void neighborChanged(IBlockState state, World world, BlockPos pos, Block block) {
|
||||||
|
super.neighborChanged(state, world, pos, block);
|
||||||
|
|
||||||
|
if (!world.isRemote) {
|
||||||
|
((TileExternalStorage) world.getTileEntity(pos)).refreshStorage();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean hasOppositeFacingOnSneakPlace() {
|
public boolean hasOppositeFacingOnSneakPlace() {
|
||||||
return true;
|
return true;
|
||||||
|
|||||||
@@ -22,6 +22,7 @@ import refinedstorage.tile.config.IModeConfig;
|
|||||||
import refinedstorage.tile.config.IRedstoneModeConfig;
|
import refinedstorage.tile.config.IRedstoneModeConfig;
|
||||||
import refinedstorage.tile.config.ModeConstants;
|
import refinedstorage.tile.config.ModeConstants;
|
||||||
|
|
||||||
|
import java.util.ArrayList;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
public class TileExternalStorage extends TileSlave implements IStorageProvider, IStorageGui, ICompareConfig, IModeConfig {
|
public class TileExternalStorage extends TileSlave implements IStorageProvider, IStorageGui, ICompareConfig, IModeConfig {
|
||||||
@@ -37,11 +38,12 @@ public class TileExternalStorage extends TileSlave implements IStorageProvider,
|
|||||||
|
|
||||||
private int stored;
|
private int stored;
|
||||||
private int capacity;
|
private int capacity;
|
||||||
private int energyUsage;
|
|
||||||
|
private List<ExternalStorage> storages = new ArrayList<ExternalStorage>();
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public int getEnergyUsage() {
|
public int getEnergyUsage() {
|
||||||
return energyUsage;
|
return storages.size();
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@@ -142,63 +144,38 @@ public class TileExternalStorage extends TileSlave implements IStorageProvider,
|
|||||||
markDirty();
|
markDirty();
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
// Called when the neighbor block changes
|
||||||
public void addStorages(List<IStorage> storages) {
|
public void refreshStorage() {
|
||||||
|
storages.clear();
|
||||||
|
|
||||||
TileEntity facing = getFacingTile();
|
TileEntity facing = getFacingTile();
|
||||||
|
|
||||||
if (facing instanceof IDrawerGroup) {
|
if (facing instanceof IDrawerGroup) {
|
||||||
IDrawerGroup group = (IDrawerGroup) facing;
|
IDrawerGroup group = (IDrawerGroup) facing;
|
||||||
|
|
||||||
|
|
||||||
energyUsage = group.getDrawerCount();
|
|
||||||
stored = 0;
|
|
||||||
capacity = 0;
|
|
||||||
|
|
||||||
for (int i = 0; i < group.getDrawerCount(); ++i) {
|
for (int i = 0; i < group.getDrawerCount(); ++i) {
|
||||||
if (group.isDrawerEnabled(i)) {
|
if (group.isDrawerEnabled(i)) {
|
||||||
DrawerStorage storage = new DrawerStorage(this, group.getDrawer(i));
|
storages.add(new DrawerStorage(this, group.getDrawer(i)));
|
||||||
|
|
||||||
storages.add(storage);
|
|
||||||
|
|
||||||
stored += storage.getStored();
|
|
||||||
capacity += storage.getCapacity();
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
} else if (facing instanceof IDrawer) {
|
} else if (facing instanceof IDrawer) {
|
||||||
DrawerStorage storage = new DrawerStorage(this, (IDrawer) facing);
|
storages.add(new DrawerStorage(this, (IDrawer) facing));
|
||||||
|
|
||||||
energyUsage = 1;
|
|
||||||
stored = storage.getStored();
|
|
||||||
capacity = storage.getCapacity();
|
|
||||||
|
|
||||||
storages.add(storage);
|
|
||||||
} else if (facing instanceof IDeepStorageUnit) {
|
} else if (facing instanceof IDeepStorageUnit) {
|
||||||
DeepStorageUnitStorage storage = new DeepStorageUnitStorage(this, (IDeepStorageUnit) facing);
|
storages.add(new DeepStorageUnitStorage(this, (IDeepStorageUnit) facing));
|
||||||
|
|
||||||
energyUsage = 1;
|
|
||||||
stored = storage.getStored();
|
|
||||||
capacity = storage.getCapacity();
|
|
||||||
|
|
||||||
storages.add(storage);
|
|
||||||
} else {
|
} else {
|
||||||
IItemHandler handler = RefinedStorageUtils.getItemHandler(facing, getDirection().getOpposite());
|
IItemHandler handler = RefinedStorageUtils.getItemHandler(facing, getDirection().getOpposite());
|
||||||
|
|
||||||
if (handler != null) {
|
if (handler != null) {
|
||||||
ItemHandlerStorage storage = new ItemHandlerStorage(this, handler);
|
storages.add(new ItemHandlerStorage(this, handler));
|
||||||
|
|
||||||
energyUsage = 1;
|
|
||||||
stored = storage.getStored();
|
|
||||||
capacity = storage.getCapacity();
|
|
||||||
|
|
||||||
storages.add(storage);
|
|
||||||
} else {
|
|
||||||
energyUsage = 0;
|
|
||||||
stored = 0;
|
|
||||||
capacity = 0;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void addStorages(List<IStorage> storages) {
|
||||||
|
storages.addAll(this.storages);
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public String getGuiTitle() {
|
public String getGuiTitle() {
|
||||||
return "gui.refinedstorage:external_storage";
|
return "gui.refinedstorage:external_storage";
|
||||||
@@ -221,11 +198,31 @@ public class TileExternalStorage extends TileSlave implements IStorageProvider,
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public int getStored() {
|
public int getStored() {
|
||||||
|
if (!worldObj.isRemote) {
|
||||||
|
int stored = 0;
|
||||||
|
|
||||||
|
for (ExternalStorage storage : storages) {
|
||||||
|
stored += storage.getStored();
|
||||||
|
}
|
||||||
|
|
||||||
|
return stored;
|
||||||
|
}
|
||||||
|
|
||||||
return stored;
|
return stored;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public int getCapacity() {
|
public int getCapacity() {
|
||||||
|
if (!worldObj.isRemote) {
|
||||||
|
int capacity = 0;
|
||||||
|
|
||||||
|
for (ExternalStorage storage : storages) {
|
||||||
|
capacity += storage.getCapacity();
|
||||||
|
}
|
||||||
|
|
||||||
|
return capacity;
|
||||||
|
}
|
||||||
|
|
||||||
return capacity;
|
return capacity;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user