Fixed RS using internal code for disk drive display instead of API

This commit is contained in:
raoulvdberge
2017-03-01 14:54:29 +01:00
parent 459b1cc931
commit 57d2cc8215
2 changed files with 46 additions and 33 deletions

View File

@@ -1,7 +1,6 @@
package com.raoulvdberge.refinedstorage.apiimpl.network.node.diskdrive;
import com.raoulvdberge.refinedstorage.RS;
import com.raoulvdberge.refinedstorage.RSItems;
import com.raoulvdberge.refinedstorage.RSUtils;
import com.raoulvdberge.refinedstorage.api.network.INetworkMaster;
import com.raoulvdberge.refinedstorage.api.storage.AccessType;
@@ -12,10 +11,6 @@ import com.raoulvdberge.refinedstorage.api.util.IComparer;
import com.raoulvdberge.refinedstorage.apiimpl.network.node.IGuiStorage;
import com.raoulvdberge.refinedstorage.apiimpl.network.node.INetworkNodeHolder;
import com.raoulvdberge.refinedstorage.apiimpl.network.node.NetworkNode;
import com.raoulvdberge.refinedstorage.apiimpl.storage.StorageDiskFluid;
import com.raoulvdberge.refinedstorage.apiimpl.storage.StorageDiskItem;
import com.raoulvdberge.refinedstorage.block.FluidStorageType;
import com.raoulvdberge.refinedstorage.block.ItemStorageType;
import com.raoulvdberge.refinedstorage.inventory.IItemValidator;
import com.raoulvdberge.refinedstorage.inventory.ItemHandlerBasic;
import com.raoulvdberge.refinedstorage.inventory.ItemHandlerFluid;
@@ -309,38 +304,12 @@ public class NetworkNodeDiskDrive extends NetworkNode implements IGuiStorage, IS
@Override
public int getStored() {
int stored = 0;
for (int i = 0; i < disks.getSlots(); ++i) {
ItemStack disk = disks.getStackInSlot(i);
if (!disk.isEmpty()) {
stored += disk.getItem() == RSItems.STORAGE_DISK ? StorageDiskItem.getStored(disk.getTagCompound()) : StorageDiskFluid.getStored(disk.getTagCompound());
}
}
return stored;
return TileDiskDrive.STORED.getValue();
}
@Override
public int getCapacity() {
int capacity = 0;
for (int i = 0; i < disks.getSlots(); ++i) {
ItemStack disk = disks.getStackInSlot(i);
if (!disk.isEmpty()) {
int diskCapacity = disk.getItem() == RSItems.STORAGE_DISK ? ItemStorageType.getById(disk.getItemDamage()).getCapacity() : FluidStorageType.getById(disk.getItemDamage()).getCapacity();
if (diskCapacity == -1) {
return -1;
}
capacity += diskCapacity;
}
}
return capacity;
return TileDiskDrive.CAPACITY.getValue();
}
@Override

View File

@@ -4,8 +4,10 @@ import com.raoulvdberge.refinedstorage.api.storage.AccessType;
import com.raoulvdberge.refinedstorage.api.storage.IStorageDisk;
import com.raoulvdberge.refinedstorage.apiimpl.network.node.diskdrive.NetworkNodeDiskDrive;
import com.raoulvdberge.refinedstorage.tile.config.*;
import com.raoulvdberge.refinedstorage.tile.data.ITileDataProducer;
import com.raoulvdberge.refinedstorage.tile.data.TileDataParameter;
import net.minecraft.nbt.NBTTagCompound;
import net.minecraft.network.datasync.DataSerializers;
import net.minecraft.util.EnumFacing;
import net.minecraftforge.common.capabilities.Capability;
import net.minecraftforge.items.CapabilityItemHandler;
@@ -20,6 +22,46 @@ public class TileDiskDrive extends TileNode<NetworkNodeDiskDrive> {
public static final TileDataParameter<Integer> TYPE = IType.createParameter();
public static final TileDataParameter<Boolean> VOID_EXCESS = IExcessVoidable.createParameter();
public static final TileDataParameter<AccessType> ACCESS_TYPE = IAccessType.createParameter();
public static final TileDataParameter<Integer> STORED = new TileDataParameter<>(DataSerializers.VARINT, 0, new ITileDataProducer<Integer, TileDiskDrive>() {
@Override
public Integer getValue(TileDiskDrive tile) {
int stored = 0;
for (IStorageDisk storage : tile.getNode().getItemStorages()) {
if (storage != null) {
stored += storage.getStored();
}
}
for (IStorageDisk storage : tile.getNode().getFluidStorages()) {
if (storage != null) {
stored += storage.getStored();
}
}
return stored;
}
});
public static final TileDataParameter<Integer> CAPACITY = new TileDataParameter<>(DataSerializers.VARINT, 0, new ITileDataProducer<Integer, TileDiskDrive>() {
@Override
public Integer getValue(TileDiskDrive tile) {
int capacity = 0;
for (IStorageDisk storage : tile.getNode().getItemStorages()) {
if (storage != null) {
capacity += storage.getCapacity();
}
}
for (IStorageDisk storage : tile.getNode().getFluidStorages()) {
if (storage != null) {
capacity += storage.getCapacity();
}
}
return capacity;
}
});
private static final String NBT_DISK_STATE = "DiskState_%d";
@@ -38,6 +80,8 @@ public class TileDiskDrive extends TileNode<NetworkNodeDiskDrive> {
dataManager.addWatchedParameter(TYPE);
dataManager.addWatchedParameter(VOID_EXCESS);
dataManager.addWatchedParameter(ACCESS_TYPE);
dataManager.addWatchedParameter(STORED);
dataManager.addWatchedParameter(CAPACITY);
initDiskState(diskState);
}