Remove fluid disk drive, put that logic into disk drives
This commit is contained in:
@@ -24,6 +24,5 @@ public final class RefinedStorageBlocks {
|
||||
public static final BlockProcessingPatternEncoder PROCESSING_PATTERN_ENCODER = new BlockProcessingPatternEncoder();
|
||||
public static final BlockNetworkTransmitter NETWORK_TRANSMITTER = new BlockNetworkTransmitter();
|
||||
public static final BlockNetworkReceiver NETWORK_RECEIVER = new BlockNetworkReceiver();
|
||||
public static final BlockFluidDiskDrive FLUID_DISK_DRIVE = new BlockFluidDiskDrive();
|
||||
public static final BlockFluidInterface FLUID_INTERFACE = new BlockFluidInterface();
|
||||
}
|
@@ -20,6 +20,6 @@ public final class RefinedStorageGui {
|
||||
public static final int PROCESSING_PATTERN_ENCODER = 16;
|
||||
public static final int GRID_FILTER = 17;
|
||||
public static final int NETWORK_TRANSMITTER = 18;
|
||||
public static final int FLUID_DISK_DRIVE = 19;
|
||||
public static final int FLUID_INTERFACE = 20;
|
||||
public static final int FLUID_INTERFACE = 19;
|
||||
public static final int EXTERNAL_STORAGE = 20;
|
||||
}
|
||||
|
@@ -75,7 +75,7 @@ public class BlockExternalStorage extends BlockCable {
|
||||
}
|
||||
|
||||
if (!world.isRemote) {
|
||||
player.openGui(RefinedStorage.INSTANCE, RefinedStorageGui.STORAGE, world, pos.getX(), pos.getY(), pos.getZ());
|
||||
player.openGui(RefinedStorage.INSTANCE, RefinedStorageGui.EXTERNAL_STORAGE, world, pos.getX(), pos.getY(), pos.getZ());
|
||||
}
|
||||
|
||||
return true;
|
||||
|
@@ -1,58 +0,0 @@
|
||||
package refinedstorage.block;
|
||||
|
||||
import net.minecraft.block.properties.PropertyInteger;
|
||||
import net.minecraft.block.state.BlockStateContainer;
|
||||
import net.minecraft.block.state.IBlockState;
|
||||
import net.minecraft.entity.player.EntityPlayer;
|
||||
import net.minecraft.item.ItemStack;
|
||||
import net.minecraft.tileentity.TileEntity;
|
||||
import net.minecraft.util.EnumFacing;
|
||||
import net.minecraft.util.EnumHand;
|
||||
import net.minecraft.util.math.BlockPos;
|
||||
import net.minecraft.world.IBlockAccess;
|
||||
import net.minecraft.world.World;
|
||||
import refinedstorage.RefinedStorage;
|
||||
import refinedstorage.RefinedStorageGui;
|
||||
import refinedstorage.tile.TileFluidDiskDrive;
|
||||
|
||||
public class BlockFluidDiskDrive extends BlockNode {
|
||||
private static final PropertyInteger STORED = PropertyInteger.create("stored", 0, 7);
|
||||
|
||||
public BlockFluidDiskDrive() {
|
||||
super("fluid_disk_drive");
|
||||
}
|
||||
|
||||
@Override
|
||||
public TileEntity createTileEntity(World world, IBlockState state) {
|
||||
return new TileFluidDiskDrive();
|
||||
}
|
||||
|
||||
@Override
|
||||
public BlockStateContainer createBlockState() {
|
||||
return createBlockStateBuilder()
|
||||
.add(STORED)
|
||||
.build();
|
||||
}
|
||||
|
||||
@Override
|
||||
public IBlockState getActualState(IBlockState state, IBlockAccess world, BlockPos pos) {
|
||||
return super.getActualState(state, world, pos)
|
||||
.withProperty(STORED, Math.max(0, ((TileFluidDiskDrive) world.getTileEntity(pos)).getStoredForDisplay()));
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean onBlockActivated(World world, BlockPos pos, IBlockState state, EntityPlayer player, EnumHand hand, ItemStack heldItem, EnumFacing side, float hitX, float hitY, float hitZ) {
|
||||
if (!world.isRemote) {
|
||||
player.openGui(RefinedStorage.INSTANCE, RefinedStorageGui.FLUID_DISK_DRIVE, world, pos.getX(), pos.getY(), pos.getZ());
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void breakBlock(World world, BlockPos pos, IBlockState state) {
|
||||
((TileFluidDiskDrive) world.getTileEntity(pos)).onBreak();
|
||||
|
||||
super.breakBlock(world, pos, state);
|
||||
}
|
||||
}
|
@@ -6,7 +6,7 @@ import net.minecraft.item.ItemStack;
|
||||
import net.minecraftforge.items.SlotItemHandler;
|
||||
import refinedstorage.tile.TileCrafter;
|
||||
|
||||
public class ContainerCrafter extends ContainerStorage {
|
||||
public class ContainerCrafter extends ContainerBase {
|
||||
public ContainerCrafter(TileCrafter crafter, EntityPlayer player) {
|
||||
super(crafter, player);
|
||||
|
||||
|
@@ -4,9 +4,10 @@ import net.minecraft.entity.player.EntityPlayer;
|
||||
import net.minecraft.inventory.Slot;
|
||||
import net.minecraft.item.ItemStack;
|
||||
import net.minecraftforge.items.SlotItemHandler;
|
||||
import refinedstorage.container.slot.SlotSpecimenType;
|
||||
import refinedstorage.tile.TileDiskDrive;
|
||||
|
||||
public class ContainerDiskDrive extends ContainerStorage {
|
||||
public class ContainerDiskDrive extends ContainerBase {
|
||||
public ContainerDiskDrive(TileDiskDrive drive, EntityPlayer player) {
|
||||
super(drive, player);
|
||||
|
||||
@@ -18,7 +19,11 @@ public class ContainerDiskDrive extends ContainerStorage {
|
||||
addSlotToContainer(new SlotItemHandler(drive.getDisks(), 4 + i, 98 + (i * 18), 96));
|
||||
}
|
||||
|
||||
addFilterAndPlayerInventorySlots(drive.getFilters());
|
||||
for (int i = 0; i < 9; ++i) {
|
||||
addSlotToContainer(new SlotSpecimenType(drive, i, 8 + (18 * i), 20));
|
||||
}
|
||||
|
||||
addPlayerInventory(8, 129);
|
||||
}
|
||||
|
||||
@Override
|
||||
|
30
src/main/java/refinedstorage/container/ContainerExternalStorage.java
Executable file
30
src/main/java/refinedstorage/container/ContainerExternalStorage.java
Executable file
@@ -0,0 +1,30 @@
|
||||
package refinedstorage.container;
|
||||
|
||||
import net.minecraft.entity.player.EntityPlayer;
|
||||
import net.minecraft.inventory.Slot;
|
||||
import net.minecraft.item.ItemStack;
|
||||
import refinedstorage.container.slot.SlotSpecimen;
|
||||
import refinedstorage.tile.externalstorage.TileExternalStorage;
|
||||
|
||||
public class ContainerExternalStorage extends ContainerBase {
|
||||
public ContainerExternalStorage(TileExternalStorage tile, EntityPlayer player) {
|
||||
super(tile, player);
|
||||
|
||||
for (int i = 0; i < 9; ++i) {
|
||||
addSlotToContainer(new SlotSpecimen(tile.getFilters(), i, 8 + (18 * i), 20));
|
||||
}
|
||||
|
||||
addPlayerInventory(8, 129);
|
||||
}
|
||||
|
||||
@Override
|
||||
public ItemStack transferStackInSlot(EntityPlayer player, int index) {
|
||||
Slot slot = getSlot(index);
|
||||
|
||||
if (slot != null && slot.getHasStack() && index >= 8) {
|
||||
return mergeItemStackToSpecimen(slot.getStack(), 0, 9);
|
||||
}
|
||||
|
||||
return null;
|
||||
}
|
||||
}
|
@@ -1,50 +0,0 @@
|
||||
package refinedstorage.container;
|
||||
|
||||
import net.minecraft.entity.player.EntityPlayer;
|
||||
import net.minecraft.inventory.Slot;
|
||||
import net.minecraft.item.ItemStack;
|
||||
import net.minecraftforge.items.SlotItemHandler;
|
||||
import refinedstorage.tile.TileFluidDiskDrive;
|
||||
|
||||
public class ContainerFluidDiskDrive extends ContainerStorage {
|
||||
public ContainerFluidDiskDrive(TileFluidDiskDrive drive, EntityPlayer player) {
|
||||
super(drive, player);
|
||||
|
||||
for (int i = 0; i < 4; ++i) {
|
||||
addSlotToContainer(new SlotItemHandler(drive.getDisks(), i, 98 + (i * 18), 78));
|
||||
}
|
||||
|
||||
for (int i = 0; i < 4; ++i) {
|
||||
addSlotToContainer(new SlotItemHandler(drive.getDisks(), 4 + i, 98 + (i * 18), 96));
|
||||
}
|
||||
|
||||
addFilterAndPlayerInventorySlots(drive.getFilters());
|
||||
}
|
||||
|
||||
@Override
|
||||
public ItemStack transferStackInSlot(EntityPlayer player, int index) {
|
||||
ItemStack stack = null;
|
||||
|
||||
Slot slot = getSlot(index);
|
||||
|
||||
if (slot != null && slot.getHasStack()) {
|
||||
stack = slot.getStack();
|
||||
|
||||
if (index < 8) {
|
||||
if (!mergeItemStack(stack, 8 + 9, inventorySlots.size(), false)) {
|
||||
return null;
|
||||
}
|
||||
} else if (!mergeItemStack(stack, 0, 8, false)) {
|
||||
return mergeItemStackToSpecimen(stack, 8, 8 + 9);
|
||||
}
|
||||
|
||||
if (stack.stackSize == 0) {
|
||||
slot.putStack(null);
|
||||
} else {
|
||||
slot.onSlotChanged();
|
||||
}
|
||||
}
|
||||
|
||||
return stack;
|
||||
}
|
||||
}
|
@@ -3,26 +3,15 @@ package refinedstorage.container;
|
||||
import net.minecraft.entity.player.EntityPlayer;
|
||||
import net.minecraft.inventory.Slot;
|
||||
import net.minecraft.item.ItemStack;
|
||||
import net.minecraftforge.items.IItemHandler;
|
||||
import refinedstorage.container.slot.SlotSpecimen;
|
||||
import refinedstorage.container.slot.SlotSpecimenFluid;
|
||||
import refinedstorage.inventory.ItemHandlerFluid;
|
||||
import refinedstorage.tile.TileBase;
|
||||
import refinedstorage.tile.TileStorage;
|
||||
|
||||
public class ContainerStorage extends ContainerBase {
|
||||
public ContainerStorage(TileBase tile, EntityPlayer player) {
|
||||
public ContainerStorage(TileStorage tile, EntityPlayer player) {
|
||||
super(tile, player);
|
||||
}
|
||||
|
||||
public ContainerStorage(TileBase tile, EntityPlayer player, IItemHandler filters) {
|
||||
this(tile, player);
|
||||
|
||||
addFilterAndPlayerInventorySlots(filters);
|
||||
}
|
||||
|
||||
protected void addFilterAndPlayerInventorySlots(IItemHandler filters) {
|
||||
for (int i = 0; i < 9; ++i) {
|
||||
addSlotToContainer(filters instanceof ItemHandlerFluid ? new SlotSpecimenFluid(!getTile().getWorld().isRemote, filters, i, 8 + (18 * i), 20) : new SlotSpecimen(filters, i, 8 + (18 * i), 20));
|
||||
addSlotToContainer(new SlotSpecimen(tile.getFilters(), i, 8 + (18 * i), 20));
|
||||
}
|
||||
|
||||
addPlayerInventory(8, 129);
|
||||
|
@@ -11,6 +11,7 @@ import refinedstorage.RefinedStorageGui;
|
||||
import refinedstorage.container.*;
|
||||
import refinedstorage.gui.grid.GuiGrid;
|
||||
import refinedstorage.tile.*;
|
||||
import refinedstorage.tile.externalstorage.TileExternalStorage;
|
||||
import refinedstorage.tile.grid.TileGrid;
|
||||
import refinedstorage.tile.grid.WirelessGrid;
|
||||
|
||||
@@ -36,7 +37,9 @@ public class GuiHandler implements IGuiHandler {
|
||||
case RefinedStorageGui.CONSTRUCTOR:
|
||||
return new ContainerConstructor((TileConstructor) tile, player);
|
||||
case RefinedStorageGui.STORAGE:
|
||||
return new ContainerStorage((TileBase) tile, player, ((IStorageGui) tile).getFilters());
|
||||
return new ContainerStorage((TileStorage) tile, player);
|
||||
case RefinedStorageGui.EXTERNAL_STORAGE:
|
||||
return new ContainerExternalStorage((TileExternalStorage) tile, player);
|
||||
case RefinedStorageGui.RELAY:
|
||||
return new ContainerRelay((TileRelay) tile, player);
|
||||
case RefinedStorageGui.INTERFACE:
|
||||
@@ -51,8 +54,6 @@ public class GuiHandler implements IGuiHandler {
|
||||
return new ContainerProcessingPatternEncoder((TileProcessingPatternEncoder) tile, player);
|
||||
case RefinedStorageGui.NETWORK_TRANSMITTER:
|
||||
return new ContainerNetworkTransmitter((TileNetworkTransmitter) tile, player);
|
||||
case RefinedStorageGui.FLUID_DISK_DRIVE:
|
||||
return new ContainerFluidDiskDrive((TileFluidDiskDrive) tile, player);
|
||||
case RefinedStorageGui.FLUID_INTERFACE:
|
||||
return new ContainerFluidInterface((TileFluidInterface) tile, player);
|
||||
default:
|
||||
@@ -109,7 +110,9 @@ public class GuiHandler implements IGuiHandler {
|
||||
case RefinedStorageGui.CONSTRUCTOR:
|
||||
return new GuiConstructor((ContainerConstructor) getContainer(ID, player, tile));
|
||||
case RefinedStorageGui.STORAGE:
|
||||
return new GuiStorage((ContainerStorage) getContainer(ID, player, tile), (IStorageGui) tile);
|
||||
return new GuiStorage((ContainerStorage) getContainer(ID, player, tile), (TileStorage) tile);
|
||||
case RefinedStorageGui.EXTERNAL_STORAGE:
|
||||
return new GuiStorage((ContainerExternalStorage) getContainer(ID, player, tile), (TileExternalStorage) tile);
|
||||
case RefinedStorageGui.RELAY:
|
||||
return new GuiRelay((ContainerRelay) getContainer(ID, player, tile));
|
||||
case RefinedStorageGui.INTERFACE:
|
||||
@@ -126,8 +129,6 @@ public class GuiHandler implements IGuiHandler {
|
||||
return new GuiGridFilter(getGridFilterContainer(player, x));
|
||||
case RefinedStorageGui.NETWORK_TRANSMITTER:
|
||||
return new GuiNetworkTransmitter((ContainerNetworkTransmitter) getContainer(ID, player, tile), (TileNetworkTransmitter) tile);
|
||||
case RefinedStorageGui.FLUID_DISK_DRIVE:
|
||||
return new GuiStorage((ContainerFluidDiskDrive) getContainer(ID, player, tile), (IStorageGui) tile, "gui/disk_drive.png");
|
||||
case RefinedStorageGui.FLUID_INTERFACE:
|
||||
return new GuiFluidInterface((ContainerFluidInterface) getContainer(ID, player, tile));
|
||||
default:
|
||||
|
@@ -3,10 +3,11 @@ package refinedstorage.gui;
|
||||
import com.google.common.primitives.Ints;
|
||||
import net.minecraft.client.gui.GuiTextField;
|
||||
import refinedstorage.api.storage.CompareUtils;
|
||||
import refinedstorage.container.ContainerStorage;
|
||||
import refinedstorage.container.ContainerBase;
|
||||
import refinedstorage.gui.sidebutton.SideButtonCompare;
|
||||
import refinedstorage.gui.sidebutton.SideButtonMode;
|
||||
import refinedstorage.gui.sidebutton.SideButtonRedstoneMode;
|
||||
import refinedstorage.gui.sidebutton.SideButtonType;
|
||||
import refinedstorage.tile.IStorageGui;
|
||||
import refinedstorage.tile.data.TileDataManager;
|
||||
|
||||
@@ -23,14 +24,14 @@ public class GuiStorage extends GuiBase {
|
||||
private int barWidth = 16;
|
||||
private int barHeight = 58;
|
||||
|
||||
public GuiStorage(ContainerStorage container, IStorageGui gui, String texture) {
|
||||
public GuiStorage(ContainerBase container, IStorageGui gui, String texture) {
|
||||
super(container, 176, 211);
|
||||
|
||||
this.gui = gui;
|
||||
this.texture = texture;
|
||||
}
|
||||
|
||||
public GuiStorage(ContainerStorage container, IStorageGui gui) {
|
||||
public GuiStorage(ContainerBase container, IStorageGui gui) {
|
||||
this(container, gui, "gui/storage.png");
|
||||
}
|
||||
|
||||
@@ -40,18 +41,17 @@ public class GuiStorage extends GuiBase {
|
||||
addSideButton(new SideButtonRedstoneMode(gui.getRedstoneModeParameter()));
|
||||
}
|
||||
|
||||
if (gui.getTypeParameter() != null) {
|
||||
addSideButton(new SideButtonType(gui.getTypeParameter()));
|
||||
}
|
||||
|
||||
if (gui.getFilterParameter() != null) {
|
||||
addSideButton(new SideButtonMode(gui.getFilterParameter()));
|
||||
}
|
||||
|
||||
if (gui.getCompareParameter() != null) {
|
||||
if (gui.hasComparisonFor(CompareUtils.COMPARE_DAMAGE)) {
|
||||
addSideButton(new SideButtonCompare(gui.getCompareParameter(), CompareUtils.COMPARE_DAMAGE));
|
||||
}
|
||||
|
||||
if (gui.hasComparisonFor(CompareUtils.COMPARE_NBT)) {
|
||||
addSideButton(new SideButtonCompare(gui.getCompareParameter(), CompareUtils.COMPARE_NBT));
|
||||
}
|
||||
addSideButton(new SideButtonCompare(gui.getCompareParameter(), CompareUtils.COMPARE_DAMAGE));
|
||||
addSideButton(new SideButtonCompare(gui.getCompareParameter(), CompareUtils.COMPARE_NBT));
|
||||
}
|
||||
|
||||
priorityField = new GuiTextField(0, fontRendererObj, x + 98 + 1, y + 54 + 1, 25, fontRendererObj.FONT_HEIGHT);
|
||||
|
@@ -257,6 +257,5 @@ public class ClientProxy extends CommonProxy {
|
||||
ModelLoader.setCustomModelResourceLocation(Item.getItemFromBlock(RefinedStorageBlocks.STORAGE), EnumItemStorageType.TYPE_16K.getId(), new ModelResourceLocation("refinedstorage:storage", "type=16k"));
|
||||
ModelLoader.setCustomModelResourceLocation(Item.getItemFromBlock(RefinedStorageBlocks.STORAGE), EnumItemStorageType.TYPE_64K.getId(), new ModelResourceLocation("refinedstorage:storage", "type=64k"));
|
||||
ModelLoader.setCustomModelResourceLocation(Item.getItemFromBlock(RefinedStorageBlocks.STORAGE), EnumItemStorageType.TYPE_CREATIVE.getId(), new ModelResourceLocation("refinedstorage:storage", "type=creative"));
|
||||
ModelLoader.setCustomModelResourceLocation(Item.getItemFromBlock(RefinedStorageBlocks.FLUID_DISK_DRIVE), 0, new ModelResourceLocation("refinedstorage:disk_drive", "inventory"));
|
||||
}
|
||||
}
|
||||
|
@@ -85,7 +85,6 @@ public class CommonProxy {
|
||||
registerTile(TileCable.class, "cable");
|
||||
registerTile(TileNetworkReceiver.class, "network_receiver");
|
||||
registerTile(TileNetworkTransmitter.class, "network_transmitter");
|
||||
registerTile(TileFluidDiskDrive.class, "fluid_disk_drive");
|
||||
registerTile(TileFluidInterface.class, "fluid_interface");
|
||||
|
||||
registerBlock(RefinedStorageBlocks.CONTROLLER);
|
||||
@@ -109,7 +108,6 @@ public class CommonProxy {
|
||||
registerBlock(RefinedStorageBlocks.MACHINE_CASING);
|
||||
registerBlock(RefinedStorageBlocks.NETWORK_TRANSMITTER);
|
||||
registerBlock(RefinedStorageBlocks.NETWORK_RECEIVER);
|
||||
registerBlock(RefinedStorageBlocks.FLUID_DISK_DRIVE);
|
||||
registerBlock(RefinedStorageBlocks.FLUID_INTERFACE);
|
||||
|
||||
registerItem(RefinedStorageItems.QUARTZ_ENRICHED_IRON);
|
||||
@@ -206,15 +204,6 @@ public class CommonProxy {
|
||||
new ItemStack(Blocks.CHEST)
|
||||
));
|
||||
|
||||
// Fluid Disk Drive
|
||||
RefinedStorageAPI.SOLDERER_REGISTRY.addRecipe(new SoldererRecipeBasic(
|
||||
new ItemStack(RefinedStorageBlocks.FLUID_DISK_DRIVE),
|
||||
500,
|
||||
new ItemStack(RefinedStorageItems.PROCESSOR, 1, ItemProcessor.TYPE_ADVANCED),
|
||||
new ItemStack(RefinedStorageBlocks.MACHINE_CASING),
|
||||
new ItemStack(Items.BUCKET)
|
||||
));
|
||||
|
||||
// Cable
|
||||
GameRegistry.addRecipe(new ShapedOreRecipe(new ItemStack(RefinedStorageBlocks.CABLE, 12),
|
||||
"EEE",
|
||||
|
@@ -8,14 +8,12 @@ public interface IStorageGui {
|
||||
|
||||
IItemHandler getFilters();
|
||||
|
||||
TileDataParameter<Integer> getTypeParameter();
|
||||
|
||||
TileDataParameter<Integer> getRedstoneModeParameter();
|
||||
|
||||
TileDataParameter<Integer> getCompareParameter();
|
||||
|
||||
default boolean hasComparisonFor(int compare) {
|
||||
return true;
|
||||
}
|
||||
|
||||
TileDataParameter<Integer> getFilterParameter();
|
||||
|
||||
TileDataParameter<Integer> getPriorityParameter();
|
||||
|
@@ -4,6 +4,7 @@ import net.minecraft.item.ItemStack;
|
||||
import net.minecraft.nbt.NBTTagCompound;
|
||||
import net.minecraft.util.EnumFacing;
|
||||
import net.minecraftforge.common.capabilities.Capability;
|
||||
import net.minecraftforge.fluids.FluidStack;
|
||||
import net.minecraftforge.fml.common.FMLCommonHandler;
|
||||
import net.minecraftforge.fml.relauncher.Side;
|
||||
import net.minecraftforge.items.CapabilityItemHandler;
|
||||
@@ -12,23 +13,31 @@ import net.minecraftforge.items.ItemHandlerHelper;
|
||||
import refinedstorage.RefinedStorage;
|
||||
import refinedstorage.RefinedStorageItems;
|
||||
import refinedstorage.api.network.INetworkMaster;
|
||||
import refinedstorage.api.storage.fluid.IFluidStorage;
|
||||
import refinedstorage.api.storage.fluid.IFluidStorageProvider;
|
||||
import refinedstorage.api.storage.item.IItemStorage;
|
||||
import refinedstorage.api.storage.item.IItemStorageProvider;
|
||||
import refinedstorage.apiimpl.storage.fluid.FluidStorageNBT;
|
||||
import refinedstorage.apiimpl.storage.fluid.FluidUtils;
|
||||
import refinedstorage.apiimpl.storage.item.ItemStorageNBT;
|
||||
import refinedstorage.block.EnumFluidStorageType;
|
||||
import refinedstorage.block.EnumItemStorageType;
|
||||
import refinedstorage.inventory.ItemHandlerBasic;
|
||||
import refinedstorage.inventory.ItemHandlerFluid;
|
||||
import refinedstorage.inventory.ItemValidatorBasic;
|
||||
import refinedstorage.tile.config.IComparable;
|
||||
import refinedstorage.tile.config.IFilterable;
|
||||
import refinedstorage.tile.config.IPrioritizable;
|
||||
import refinedstorage.tile.config.IType;
|
||||
import refinedstorage.tile.data.TileDataParameter;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
public class TileDiskDrive extends TileNode implements IItemStorageProvider, IStorageGui, IComparable, IFilterable, IPrioritizable {
|
||||
public class TileDiskDrive extends TileNode implements IItemStorageProvider, IFluidStorageProvider, IStorageGui, IComparable, IFilterable, IPrioritizable, IType {
|
||||
public static final TileDataParameter<Integer> PRIORITY = IPrioritizable.createParameter();
|
||||
public static final TileDataParameter<Integer> COMPARE = IComparable.createParameter();
|
||||
public static final TileDataParameter<Integer> MODE = IFilterable.createParameter();
|
||||
public static final TileDataParameter<Integer> TYPE = IType.createParameter();
|
||||
|
||||
public class ItemStorage extends ItemStorageNBT {
|
||||
public ItemStorage(ItemStack disk) {
|
||||
@@ -42,7 +51,7 @@ public class TileDiskDrive extends TileNode implements IItemStorageProvider, ISt
|
||||
|
||||
@Override
|
||||
public ItemStack insertItem(ItemStack stack, int size, boolean simulate) {
|
||||
if (!IFilterable.canTake(getFilters(), mode, getCompare(), stack)) {
|
||||
if (!IFilterable.canTake(itemFilters, mode, getCompare(), stack)) {
|
||||
return ItemHandlerHelper.copyStackWithSize(stack, size);
|
||||
}
|
||||
|
||||
@@ -50,16 +59,42 @@ public class TileDiskDrive extends TileNode implements IItemStorageProvider, ISt
|
||||
}
|
||||
}
|
||||
|
||||
public class FluidStorage extends FluidStorageNBT {
|
||||
public FluidStorage(ItemStack disk) {
|
||||
super(disk.getTagCompound(), EnumFluidStorageType.getById(disk.getItemDamage()).getCapacity(), TileDiskDrive.this);
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getPriority() {
|
||||
return priority;
|
||||
}
|
||||
|
||||
@Override
|
||||
public FluidStack insertFluid(FluidStack stack, int size, boolean simulate) {
|
||||
if (!IFilterable.canTakeFluids(fluidFilters, mode, getCompare(), stack)) {
|
||||
return FluidUtils.copyStackWithSize(stack, size);
|
||||
}
|
||||
|
||||
return super.insertFluid(stack, size, simulate);
|
||||
}
|
||||
}
|
||||
|
||||
private static final String NBT_PRIORITY = "Priority";
|
||||
private static final String NBT_COMPARE = "Compare";
|
||||
private static final String NBT_MODE = "Mode";
|
||||
private static final String NBT_STORED = "Stored";
|
||||
private static final String NBT_TYPE = "Type";
|
||||
|
||||
private ItemHandlerBasic disks = new ItemHandlerBasic(8, this, new ItemValidatorBasic(RefinedStorageItems.STORAGE_DISK) {
|
||||
@Override
|
||||
public boolean isValid(ItemStack disk) {
|
||||
return super.isValid(disk) && ItemStorageNBT.isValid(disk);
|
||||
}
|
||||
}, new ItemValidatorBasic(RefinedStorageItems.FLUID_STORAGE_DISK) {
|
||||
@Override
|
||||
public boolean isValid(ItemStack disk) {
|
||||
return super.isValid(disk) && FluidStorageNBT.isValid(disk);
|
||||
}
|
||||
}) {
|
||||
@Override
|
||||
protected void onContentsChanged(int slot) {
|
||||
@@ -69,40 +104,56 @@ public class TileDiskDrive extends TileNode implements IItemStorageProvider, ISt
|
||||
ItemStack disk = getStackInSlot(slot);
|
||||
|
||||
if (disk == null) {
|
||||
storages[slot] = null;
|
||||
itemStorages[slot] = null;
|
||||
fluidStorages[slot] = null;
|
||||
} else {
|
||||
storages[slot] = new ItemStorage(disk);
|
||||
if (disk.getItem() == RefinedStorageItems.STORAGE_DISK) {
|
||||
itemStorages[slot] = new ItemStorage(disk);
|
||||
} else if (disk.getItem() == RefinedStorageItems.FLUID_STORAGE_DISK) {
|
||||
fluidStorages[slot] = new FluidStorage(disk);
|
||||
}
|
||||
}
|
||||
|
||||
if (network != null) {
|
||||
network.getItemStorage().rebuild();
|
||||
network.getFluidStorage().rebuild();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public ItemStack extractItem(int slot, int amount, boolean simulate) {
|
||||
if (storages[slot] != null) {
|
||||
storages[slot].writeToNBT();
|
||||
if (itemStorages[slot] != null) {
|
||||
itemStorages[slot].writeToNBT();
|
||||
}
|
||||
|
||||
if (fluidStorages[slot] != null) {
|
||||
fluidStorages[slot].writeToNBT();
|
||||
}
|
||||
|
||||
|
||||
return super.extractItem(slot, amount, simulate);
|
||||
}
|
||||
};
|
||||
|
||||
private ItemHandlerBasic filters = new ItemHandlerBasic(9, this);
|
||||
private ItemHandlerBasic itemFilters = new ItemHandlerBasic(9, this);
|
||||
private ItemHandlerFluid fluidFilters = new ItemHandlerFluid(9, this);
|
||||
|
||||
private ItemStorage storages[] = new ItemStorage[8];
|
||||
private ItemStorage itemStorages[] = new ItemStorage[8];
|
||||
private FluidStorage fluidStorages[] = new FluidStorage[8];
|
||||
|
||||
private int priority = 0;
|
||||
private int compare = 0;
|
||||
private int mode = IFilterable.WHITELIST;
|
||||
private int type = IType.ITEMS;
|
||||
|
||||
private int stored = 0;
|
||||
|
||||
public TileDiskDrive() {
|
||||
dataManager.addWatchedParameter(PRIORITY);
|
||||
dataManager.addWatchedParameter(COMPARE);
|
||||
dataManager.addWatchedParameter(MODE);
|
||||
dataManager.addWatchedParameter(TYPE);
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -136,7 +187,13 @@ public class TileDiskDrive extends TileNode implements IItemStorageProvider, ISt
|
||||
}
|
||||
|
||||
public void onBreak() {
|
||||
for (ItemStorage storage : this.storages) {
|
||||
for (ItemStorage storage : this.itemStorages) {
|
||||
if (storage != null) {
|
||||
storage.writeToNBT();
|
||||
}
|
||||
}
|
||||
|
||||
for (FluidStorage storage : this.fluidStorages) {
|
||||
if (storage != null) {
|
||||
storage.writeToNBT();
|
||||
}
|
||||
@@ -148,11 +205,21 @@ public class TileDiskDrive extends TileNode implements IItemStorageProvider, ISt
|
||||
super.onConnectionChange(network, state);
|
||||
|
||||
network.getItemStorage().rebuild();
|
||||
network.getFluidStorage().rebuild();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void addItemStorages(List<IItemStorage> storages) {
|
||||
for (IItemStorage storage : this.storages) {
|
||||
for (IItemStorage storage : this.itemStorages) {
|
||||
if (storage != null) {
|
||||
storages.add(storage);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void addFluidStorages(List<IFluidStorage> storages) {
|
||||
for (IFluidStorage storage : this.fluidStorages) {
|
||||
if (storage != null) {
|
||||
storages.add(storage);
|
||||
}
|
||||
@@ -164,7 +231,8 @@ public class TileDiskDrive extends TileNode implements IItemStorageProvider, ISt
|
||||
super.read(tag);
|
||||
|
||||
readItems(disks, 0, tag);
|
||||
readItems(filters, 1, tag);
|
||||
readItems(itemFilters, 1, tag);
|
||||
readItems(fluidFilters, 2, tag);
|
||||
|
||||
if (tag.hasKey(NBT_PRIORITY)) {
|
||||
priority = tag.getInteger(NBT_PRIORITY);
|
||||
@@ -177,6 +245,10 @@ public class TileDiskDrive extends TileNode implements IItemStorageProvider, ISt
|
||||
if (tag.hasKey(NBT_MODE)) {
|
||||
mode = tag.getInteger(NBT_MODE);
|
||||
}
|
||||
|
||||
if (tag.hasKey(NBT_TYPE)) {
|
||||
type = tag.getInteger(NBT_TYPE);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -184,17 +256,23 @@ public class TileDiskDrive extends TileNode implements IItemStorageProvider, ISt
|
||||
super.write(tag);
|
||||
|
||||
for (int i = 0; i < disks.getSlots(); ++i) {
|
||||
if (storages[i] != null) {
|
||||
storages[i].writeToNBT();
|
||||
if (itemStorages[i] != null) {
|
||||
itemStorages[i].writeToNBT();
|
||||
}
|
||||
|
||||
if (fluidStorages[i] != null) {
|
||||
fluidStorages[i].writeToNBT();
|
||||
}
|
||||
}
|
||||
|
||||
writeItems(disks, 0, tag);
|
||||
writeItems(filters, 1, tag);
|
||||
writeItems(itemFilters, 1, tag);
|
||||
writeItems(fluidFilters, 2, tag);
|
||||
|
||||
tag.setInteger(NBT_PRIORITY, priority);
|
||||
tag.setInteger(NBT_COMPARE, compare);
|
||||
tag.setInteger(NBT_MODE, mode);
|
||||
tag.setInteger(NBT_TYPE, type);
|
||||
|
||||
return tag;
|
||||
}
|
||||
@@ -241,28 +319,28 @@ public class TileDiskDrive extends TileNode implements IItemStorageProvider, ISt
|
||||
|
||||
public int getStoredForDisplayServer() {
|
||||
float stored = 0;
|
||||
float storedMax = 0;
|
||||
float capacity = 0;
|
||||
|
||||
for (int i = 0; i < disks.getSlots(); ++i) {
|
||||
ItemStack disk = disks.getStackInSlot(i);
|
||||
|
||||
if (disk != null) {
|
||||
int capacity = EnumItemStorageType.getById(disk.getItemDamage()).getCapacity();
|
||||
int diskCapacity = disk.getItem() == RefinedStorageItems.STORAGE_DISK ? EnumItemStorageType.getById(disk.getItemDamage()).getCapacity() : EnumFluidStorageType.getById(disk.getItemDamage()).getCapacity();
|
||||
|
||||
if (capacity == -1) {
|
||||
return 0;
|
||||
}
|
||||
|
||||
stored += ItemStorageNBT.getStoredFromNBT(disk.getTagCompound());
|
||||
storedMax += EnumItemStorageType.getById(disk.getItemDamage()).getCapacity();
|
||||
stored += disk.getItem() == RefinedStorageItems.STORAGE_DISK ? ItemStorageNBT.getStoredFromNBT(disk.getTagCompound()) : FluidStorageNBT.getStoredFromNBT(disk.getTagCompound());
|
||||
capacity += diskCapacity;
|
||||
}
|
||||
}
|
||||
|
||||
if (storedMax == 0) {
|
||||
if (capacity == 0) {
|
||||
return 0;
|
||||
}
|
||||
|
||||
return (int) Math.floor((stored / storedMax) * 7f);
|
||||
return (int) Math.floor((stored / capacity) * 7F);
|
||||
}
|
||||
|
||||
public int getStoredForDisplay() {
|
||||
@@ -276,7 +354,12 @@ public class TileDiskDrive extends TileNode implements IItemStorageProvider, ISt
|
||||
|
||||
@Override
|
||||
public IItemHandler getFilters() {
|
||||
return filters;
|
||||
return itemFilters;
|
||||
}
|
||||
|
||||
@Override
|
||||
public TileDataParameter<Integer> getTypeParameter() {
|
||||
return TYPE;
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -316,10 +399,10 @@ public class TileDiskDrive extends TileNode implements IItemStorageProvider, ISt
|
||||
int stored = 0;
|
||||
|
||||
for (int i = 0; i < disks.getSlots(); ++i) {
|
||||
ItemStack stack = disks.getStackInSlot(i);
|
||||
ItemStack disk = disks.getStackInSlot(i);
|
||||
|
||||
if (stack != null) {
|
||||
stored += ItemStorageNBT.getStoredFromNBT(stack.getTagCompound());
|
||||
if (disk != null) {
|
||||
stored += disk.getItem() == RefinedStorageItems.STORAGE_DISK ? ItemStorageNBT.getStoredFromNBT(disk.getTagCompound()) : FluidStorageNBT.getStoredFromNBT(disk.getTagCompound());
|
||||
}
|
||||
}
|
||||
|
||||
@@ -331,10 +414,10 @@ public class TileDiskDrive extends TileNode implements IItemStorageProvider, ISt
|
||||
int capacity = 0;
|
||||
|
||||
for (int i = 0; i < disks.getSlots(); ++i) {
|
||||
ItemStack stack = disks.getStackInSlot(i);
|
||||
ItemStack disk = disks.getStackInSlot(i);
|
||||
|
||||
if (stack != null) {
|
||||
int diskCapacity = EnumItemStorageType.getById(stack.getItemDamage()).getCapacity();
|
||||
if (disk != null) {
|
||||
int diskCapacity = disk.getItem() == RefinedStorageItems.STORAGE_DISK ? EnumItemStorageType.getById(disk.getItemDamage()).getCapacity() : EnumFluidStorageType.getById(disk.getItemDamage()).getCapacity();
|
||||
|
||||
if (diskCapacity == -1) {
|
||||
return -1;
|
||||
@@ -351,6 +434,23 @@ public class TileDiskDrive extends TileNode implements IItemStorageProvider, ISt
|
||||
return disks;
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getType() {
|
||||
return worldObj.isRemote ? TYPE.getValue() : type;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setType(int type) {
|
||||
this.type = type;
|
||||
|
||||
markDirty();
|
||||
}
|
||||
|
||||
@Override
|
||||
public IItemHandler getFilterInventory() {
|
||||
return getType() == IType.ITEMS ? itemFilters : fluidFilters;
|
||||
}
|
||||
|
||||
@Override
|
||||
public IItemHandler getDrops() {
|
||||
return disks;
|
||||
|
@@ -1,380 +0,0 @@
|
||||
package refinedstorage.tile;
|
||||
|
||||
import net.minecraft.item.ItemStack;
|
||||
import net.minecraft.nbt.NBTTagCompound;
|
||||
import net.minecraft.util.EnumFacing;
|
||||
import net.minecraftforge.common.capabilities.Capability;
|
||||
import net.minecraftforge.fluids.FluidStack;
|
||||
import net.minecraftforge.fml.common.FMLCommonHandler;
|
||||
import net.minecraftforge.fml.relauncher.Side;
|
||||
import net.minecraftforge.items.CapabilityItemHandler;
|
||||
import net.minecraftforge.items.IItemHandler;
|
||||
import refinedstorage.RefinedStorage;
|
||||
import refinedstorage.RefinedStorageItems;
|
||||
import refinedstorage.api.network.INetworkMaster;
|
||||
import refinedstorage.api.storage.CompareUtils;
|
||||
import refinedstorage.api.storage.fluid.IFluidStorage;
|
||||
import refinedstorage.api.storage.fluid.IFluidStorageProvider;
|
||||
import refinedstorage.apiimpl.storage.fluid.FluidStorageNBT;
|
||||
import refinedstorage.apiimpl.storage.fluid.FluidUtils;
|
||||
import refinedstorage.block.EnumFluidStorageType;
|
||||
import refinedstorage.inventory.ItemHandlerBasic;
|
||||
import refinedstorage.inventory.ItemHandlerFluid;
|
||||
import refinedstorage.inventory.ItemValidatorBasic;
|
||||
import refinedstorage.tile.config.IComparable;
|
||||
import refinedstorage.tile.config.IFilterable;
|
||||
import refinedstorage.tile.config.IPrioritizable;
|
||||
import refinedstorage.tile.data.TileDataParameter;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
public class TileFluidDiskDrive extends TileNode implements IFluidStorageProvider, IStorageGui, IComparable, IFilterable, IPrioritizable {
|
||||
public static final TileDataParameter<Integer> PRIORITY = IPrioritizable.createParameter();
|
||||
public static final TileDataParameter<Integer> COMPARE = IComparable.createParameter();
|
||||
public static final TileDataParameter<Integer> MODE = IFilterable.createParameter();
|
||||
|
||||
public class FluidStorage extends FluidStorageNBT {
|
||||
public FluidStorage(ItemStack disk) {
|
||||
super(disk.getTagCompound(), EnumFluidStorageType.getById(disk.getItemDamage()).getCapacity(), TileFluidDiskDrive.this);
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getPriority() {
|
||||
return priority;
|
||||
}
|
||||
|
||||
@Override
|
||||
public FluidStack insertFluid(FluidStack stack, int size, boolean simulate) {
|
||||
if (!IFilterable.canTakeFluids(filters, mode, getCompare(), stack)) {
|
||||
return FluidUtils.copyStackWithSize(stack, size);
|
||||
}
|
||||
|
||||
return super.insertFluid(stack, size, simulate);
|
||||
}
|
||||
}
|
||||
|
||||
private static final String NBT_PRIORITY = "Priority";
|
||||
private static final String NBT_COMPARE = "Compare";
|
||||
private static final String NBT_MODE = "Mode";
|
||||
private static final String NBT_STORED = "Stored";
|
||||
|
||||
private ItemHandlerBasic disks = new ItemHandlerBasic(8, this, new ItemValidatorBasic(RefinedStorageItems.FLUID_STORAGE_DISK) {
|
||||
@Override
|
||||
public boolean isValid(ItemStack disk) {
|
||||
return super.isValid(disk) && FluidStorageNBT.isValid(disk);
|
||||
}
|
||||
}) {
|
||||
@Override
|
||||
protected void onContentsChanged(int slot) {
|
||||
super.onContentsChanged(slot);
|
||||
|
||||
if (FMLCommonHandler.instance().getEffectiveSide() == Side.SERVER) {
|
||||
ItemStack disk = getStackInSlot(slot);
|
||||
|
||||
if (disk == null) {
|
||||
storages[slot] = null;
|
||||
} else {
|
||||
storages[slot] = new FluidStorage(disk);
|
||||
}
|
||||
|
||||
if (network != null) {
|
||||
network.getFluidStorage().rebuild();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public ItemStack extractItem(int slot, int amount, boolean simulate) {
|
||||
if (storages[slot] != null) {
|
||||
storages[slot].writeToNBT();
|
||||
}
|
||||
|
||||
return super.extractItem(slot, amount, simulate);
|
||||
}
|
||||
};
|
||||
|
||||
private ItemHandlerFluid filters = new ItemHandlerFluid(9, this);
|
||||
|
||||
private FluidStorage storages[] = new FluidStorage[8];
|
||||
|
||||
private int priority = 0;
|
||||
private int compare = 0;
|
||||
private int mode = IFilterable.WHITELIST;
|
||||
private int stored = 0;
|
||||
|
||||
public TileFluidDiskDrive() {
|
||||
dataManager.addWatchedParameter(PRIORITY);
|
||||
dataManager.addWatchedParameter(COMPARE);
|
||||
dataManager.addWatchedParameter(MODE);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void update() {
|
||||
if (!worldObj.isRemote) {
|
||||
if (stored != getStoredForDisplayServer()) {
|
||||
stored = getStoredForDisplayServer();
|
||||
|
||||
updateBlock();
|
||||
}
|
||||
}
|
||||
|
||||
super.update();
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getEnergyUsage() {
|
||||
int usage = RefinedStorage.INSTANCE.fluidDiskDriveUsage;
|
||||
|
||||
for (int i = 0; i < disks.getSlots(); ++i) {
|
||||
if (disks.getStackInSlot(i) != null) {
|
||||
usage += RefinedStorage.INSTANCE.fluidDiskDrivePerDiskUsage;
|
||||
}
|
||||
}
|
||||
|
||||
return usage;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void updateNode() {
|
||||
}
|
||||
|
||||
public void onBreak() {
|
||||
for (FluidStorage storage : this.storages) {
|
||||
if (storage != null) {
|
||||
storage.writeToNBT();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onConnectionChange(INetworkMaster network, boolean state) {
|
||||
super.onConnectionChange(network, state);
|
||||
|
||||
network.getFluidStorage().rebuild();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void addFluidStorages(List<IFluidStorage> storages) {
|
||||
for (IFluidStorage storage : this.storages) {
|
||||
if (storage != null) {
|
||||
storages.add(storage);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void read(NBTTagCompound tag) {
|
||||
super.read(tag);
|
||||
|
||||
readItems(disks, 0, tag);
|
||||
readItems(filters, 1, tag);
|
||||
|
||||
if (tag.hasKey(NBT_PRIORITY)) {
|
||||
priority = tag.getInteger(NBT_PRIORITY);
|
||||
}
|
||||
|
||||
if (tag.hasKey(NBT_COMPARE)) {
|
||||
compare = tag.getInteger(NBT_COMPARE);
|
||||
}
|
||||
|
||||
if (tag.hasKey(NBT_MODE)) {
|
||||
mode = tag.getInteger(NBT_MODE);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public NBTTagCompound write(NBTTagCompound tag) {
|
||||
super.write(tag);
|
||||
|
||||
for (int i = 0; i < disks.getSlots(); ++i) {
|
||||
if (storages[i] != null) {
|
||||
storages[i].writeToNBT();
|
||||
}
|
||||
}
|
||||
|
||||
writeItems(disks, 0, tag);
|
||||
writeItems(filters, 1, tag);
|
||||
|
||||
tag.setInteger(NBT_PRIORITY, priority);
|
||||
tag.setInteger(NBT_COMPARE, compare);
|
||||
tag.setInteger(NBT_MODE, mode);
|
||||
|
||||
return tag;
|
||||
}
|
||||
|
||||
@Override
|
||||
public NBTTagCompound writeUpdate(NBTTagCompound tag) {
|
||||
super.writeUpdate(tag);
|
||||
|
||||
tag.setInteger(NBT_STORED, stored);
|
||||
|
||||
return tag;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void readUpdate(NBTTagCompound tag) {
|
||||
stored = tag.getInteger(NBT_STORED);
|
||||
|
||||
super.readUpdate(tag);
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getCompare() {
|
||||
return compare;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setCompare(int compare) {
|
||||
this.compare = compare;
|
||||
|
||||
markDirty();
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getMode() {
|
||||
return mode;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setMode(int mode) {
|
||||
this.mode = mode;
|
||||
|
||||
markDirty();
|
||||
}
|
||||
|
||||
public int getStoredForDisplayServer() {
|
||||
float stored = 0;
|
||||
float storedMax = 0;
|
||||
|
||||
for (int i = 0; i < disks.getSlots(); ++i) {
|
||||
ItemStack disk = disks.getStackInSlot(i);
|
||||
|
||||
if (disk != null) {
|
||||
int capacity = EnumFluidStorageType.getById(disk.getItemDamage()).getCapacity();
|
||||
|
||||
if (capacity == -1) {
|
||||
return 0;
|
||||
}
|
||||
|
||||
stored += FluidStorageNBT.getStoredFromNBT(disk.getTagCompound());
|
||||
storedMax += EnumFluidStorageType.getById(disk.getItemDamage()).getCapacity();
|
||||
}
|
||||
}
|
||||
|
||||
if (storedMax == 0) {
|
||||
return 0;
|
||||
}
|
||||
|
||||
return (int) Math.floor((stored / storedMax) * 7f);
|
||||
}
|
||||
|
||||
public int getStoredForDisplay() {
|
||||
return stored;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getGuiTitle() {
|
||||
return "block.refinedstorage:fluid_disk_drive.name";
|
||||
}
|
||||
|
||||
@Override
|
||||
public IItemHandler getFilters() {
|
||||
return filters;
|
||||
}
|
||||
|
||||
@Override
|
||||
public TileDataParameter<Integer> getRedstoneModeParameter() {
|
||||
return REDSTONE_MODE;
|
||||
}
|
||||
|
||||
@Override
|
||||
public TileDataParameter<Integer> getCompareParameter() {
|
||||
return COMPARE;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean hasComparisonFor(int compare) {
|
||||
return compare == CompareUtils.COMPARE_NBT;
|
||||
}
|
||||
|
||||
@Override
|
||||
public TileDataParameter<Integer> getFilterParameter() {
|
||||
return MODE;
|
||||
}
|
||||
|
||||
@Override
|
||||
public TileDataParameter<Integer> getPriorityParameter() {
|
||||
return PRIORITY;
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getPriority() {
|
||||
return priority;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setPriority(int priority) {
|
||||
this.priority = priority;
|
||||
|
||||
markDirty();
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getStored() {
|
||||
int stored = 0;
|
||||
|
||||
for (int i = 0; i < disks.getSlots(); ++i) {
|
||||
ItemStack stack = disks.getStackInSlot(i);
|
||||
|
||||
if (stack != null) {
|
||||
stored += FluidStorageNBT.getStoredFromNBT(stack.getTagCompound());
|
||||
}
|
||||
}
|
||||
|
||||
return stored;
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getCapacity() {
|
||||
int capacity = 0;
|
||||
|
||||
for (int i = 0; i < disks.getSlots(); ++i) {
|
||||
ItemStack stack = disks.getStackInSlot(i);
|
||||
|
||||
if (stack != null) {
|
||||
int diskCapacity = EnumFluidStorageType.getById(stack.getItemDamage()).getCapacity();
|
||||
|
||||
if (diskCapacity == -1) {
|
||||
return -1;
|
||||
}
|
||||
|
||||
capacity += diskCapacity;
|
||||
}
|
||||
}
|
||||
|
||||
return capacity;
|
||||
}
|
||||
|
||||
public IItemHandler getDisks() {
|
||||
return disks;
|
||||
}
|
||||
|
||||
@Override
|
||||
public IItemHandler getDrops() {
|
||||
return disks;
|
||||
}
|
||||
|
||||
@Override
|
||||
public <T> T getCapability(Capability<T> capability, EnumFacing facing) {
|
||||
if (capability == CapabilityItemHandler.ITEM_HANDLER_CAPABILITY) {
|
||||
return (T) disks;
|
||||
}
|
||||
|
||||
return super.getCapability(capability, facing);
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean hasCapability(Capability<?> capability, EnumFacing facing) {
|
||||
return capability == CapabilityItemHandler.ITEM_HANDLER_CAPABILITY || super.hasCapability(capability, facing);
|
||||
}
|
||||
}
|
@@ -204,6 +204,11 @@ public class TileStorage extends TileNode implements IItemStorageProvider, IStor
|
||||
return filters;
|
||||
}
|
||||
|
||||
@Override
|
||||
public TileDataParameter<Integer> getTypeParameter() {
|
||||
return null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public TileDataParameter<Integer> getRedstoneModeParameter() {
|
||||
return REDSTONE_MODE;
|
||||
|
@@ -264,4 +264,10 @@ public class TileExternalStorage extends TileMultipartNode implements IItemStora
|
||||
public IItemHandler getFilters() {
|
||||
return filters;
|
||||
}
|
||||
|
||||
// @TODO: Implement
|
||||
@Override
|
||||
public TileDataParameter<Integer> getTypeParameter() {
|
||||
return null;
|
||||
}
|
||||
}
|
||||
|
Reference in New Issue
Block a user