Update disk drive on storage fullness to update the icons

This commit is contained in:
Raoul Van den Berge
2016-10-23 03:51:51 +02:00
parent 8f044d5e72
commit c9a575efd7

View File

@@ -41,8 +41,12 @@ public class TileDiskDrive extends TileNode implements IItemStorageProvider, IFl
public static final TileDataParameter<AccessType> ACCESS_TYPE = IAccessType.createParameter(); public static final TileDataParameter<AccessType> ACCESS_TYPE = IAccessType.createParameter();
public class ItemStorage extends ItemStorageNBT { public class ItemStorage extends ItemStorageNBT {
private boolean wasFull;
public ItemStorage(ItemStack disk) { public ItemStorage(ItemStack disk) {
super(disk.getTagCompound(), EnumItemStorageType.getById(disk.getItemDamage()).getCapacity(), TileDiskDrive.this); super(disk.getTagCompound(), EnumItemStorageType.getById(disk.getItemDamage()).getCapacity(), TileDiskDrive.this);
wasFull = isFull();
} }
@Override @Override
@@ -70,11 +74,30 @@ public class TileDiskDrive extends TileNode implements IItemStorageProvider, IFl
public AccessType getAccessType() { public AccessType getAccessType() {
return accessType; return accessType;
} }
@Override
public void onStorageChanged() {
super.onStorageChanged();
if (wasFull != isFull()) {
wasFull = isFull();
updateBlock();
}
}
public boolean isFull() {
return getStored() == getCapacity();
}
} }
public class FluidStorage extends FluidStorageNBT { public class FluidStorage extends FluidStorageNBT {
private boolean wasFull;
public FluidStorage(ItemStack disk) { public FluidStorage(ItemStack disk) {
super(disk.getTagCompound(), EnumFluidStorageType.getById(disk.getItemDamage()).getCapacity(), TileDiskDrive.this); super(disk.getTagCompound(), EnumFluidStorageType.getById(disk.getItemDamage()).getCapacity(), TileDiskDrive.this);
wasFull = isFull();
} }
@Override @Override
@@ -102,6 +125,21 @@ public class TileDiskDrive extends TileNode implements IItemStorageProvider, IFl
public AccessType getAccessType() { public AccessType getAccessType() {
return accessType; return accessType;
} }
@Override
public void onStorageChanged() {
super.onStorageChanged();
if (wasFull != isFull()) {
wasFull = isFull();
updateBlock();
}
}
public boolean isFull() {
return getStored() == getCapacity();
}
} }
private static final String NBT_PRIORITY = "Priority"; private static final String NBT_PRIORITY = "Priority";
@@ -305,8 +343,7 @@ public class TileDiskDrive extends TileNode implements IItemStorageProvider, IFl
} else { } else {
state = DISK_STATE_NORMAL; state = DISK_STATE_NORMAL;
if ((itemStorages[i] != null && itemStorages[i].getStored() == itemStorages[i].getCapacity()) || if ((itemStorages[i] != null && itemStorages[i].isFull()) || (fluidStorages[i] != null && fluidStorages[i].isFull())) {
(fluidStorages[i] != null && fluidStorages[i].getStored() == fluidStorages[i].getCapacity())) {
state = DISK_STATE_FULL; state = DISK_STATE_FULL;
} }
} }