This commit is contained in:
Raoul Van den Berge
2016-08-13 17:15:28 +02:00
parent b7c39d6489
commit b153f56046
7 changed files with 48 additions and 46 deletions

View File

@@ -4,9 +4,9 @@ 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.SlotFluidFilter;
import refinedstorage.container.slot.SlotFluid;
import refinedstorage.container.slot.SlotSpecimen;
import refinedstorage.inventory.ItemHandlerFluidFilter;
import refinedstorage.inventory.ItemHandlerFluid;
import refinedstorage.tile.TileBase;
public class ContainerStorage extends ContainerBase {
@@ -22,7 +22,7 @@ public class ContainerStorage extends ContainerBase {
protected void addFilterAndPlayerInventorySlots(IItemHandler filters) {
for (int i = 0; i < 9; ++i) {
addSlotToContainer(filters instanceof ItemHandlerFluidFilter ? new SlotFluidFilter(!getTile().getWorld().isRemote, filters, i, 8 + (18 * i), 20) : new SlotSpecimen(filters, i, 8 + (18 * i), 20));
addSlotToContainer(filters instanceof ItemHandlerFluid ? new SlotFluid(!getTile().getWorld().isRemote, filters, i, 8 + (18 * i), 20) : new SlotSpecimen(filters, i, 8 + (18 * i), 20));
}
addPlayerInventory(8, 129);

View File

@@ -3,10 +3,10 @@ package refinedstorage.container.slot;
import net.minecraft.item.ItemStack;
import net.minecraftforge.items.IItemHandler;
public class SlotFluidFilter extends SlotSpecimen {
public class SlotFluid extends SlotSpecimen {
private boolean server;
public SlotFluidFilter(boolean server, IItemHandler handler, int id, int x, int y) {
public SlotFluid(boolean server, IItemHandler handler, int id, int x, int y) {
super(handler, id, x, y);
this.server = server;

View File

@@ -17,7 +17,7 @@ import net.minecraftforge.items.SlotItemHandler;
import org.lwjgl.input.Mouse;
import refinedstorage.RefinedStorage;
import refinedstorage.gui.sidebutton.SideButton;
import refinedstorage.inventory.ItemHandlerFluidFilter;
import refinedstorage.inventory.ItemHandlerFluid;
import java.io.IOException;
import java.util.ArrayList;
@@ -131,8 +131,8 @@ public abstract class GuiBase extends GuiContainer {
for (int i = 0; i < inventorySlots.inventorySlots.size(); ++i) {
Slot slot = inventorySlots.inventorySlots.get(i);
if (slot instanceof SlotItemHandler && ((SlotItemHandler) slot).getItemHandler() instanceof ItemHandlerFluidFilter) {
FluidStack stack = ((ItemHandlerFluidFilter) ((SlotItemHandler) slot).getItemHandler()).getFilters()[slot.getSlotIndex()];
if (slot instanceof SlotItemHandler && ((SlotItemHandler) slot).getItemHandler() instanceof ItemHandlerFluid) {
FluidStack stack = ((ItemHandlerFluid) ((SlotItemHandler) slot).getItemHandler()).getFluids()[slot.getSlotIndex()];
if (stack != null) {
FLUID_RENDERER.draw(mc, slot.xDisplayPosition, slot.yDisplayPosition, stack);

View File

@@ -0,0 +1,34 @@
package refinedstorage.inventory;
import net.minecraft.item.ItemStack;
import net.minecraft.tileentity.TileEntity;
import net.minecraftforge.fluids.Fluid;
import net.minecraftforge.fluids.FluidStack;
import net.minecraftforge.fluids.capability.CapabilityFluidHandler;
public class ItemHandlerFluid extends ItemHandlerBasic {
private FluidStack[] fluids;
public ItemHandlerFluid(int size, TileEntity tile) {
super(size, tile, (IItemValidator) s -> s.hasCapability(CapabilityFluidHandler.FLUID_HANDLER_CAPABILITY, null) && s.getCapability(CapabilityFluidHandler.FLUID_HANDLER_CAPABILITY, null).drain(Fluid.BUCKET_VOLUME, false) != null);
this.fluids = new FluidStack[size];
}
@Override
protected void onContentsChanged(int slot) {
super.onContentsChanged(slot);
ItemStack stack = getStackInSlot(slot);
if (stack == null) {
fluids[slot] = null;
} else {
fluids[slot] = stack.getCapability(CapabilityFluidHandler.FLUID_HANDLER_CAPABILITY, null).drain(Fluid.BUCKET_VOLUME, false);
}
}
public FluidStack[] getFluids() {
return fluids;
}
}

View File

@@ -1,32 +0,0 @@
package refinedstorage.inventory;
import net.minecraft.item.ItemStack;
import net.minecraft.tileentity.TileEntity;
import net.minecraftforge.fluids.Fluid;
import net.minecraftforge.fluids.FluidStack;
import net.minecraftforge.fluids.capability.CapabilityFluidHandler;
public class ItemHandlerFluidFilter extends ItemHandlerBasic {
private FluidStack[] filters = new FluidStack[9];
public ItemHandlerFluidFilter(TileEntity tile) {
super(9, tile, (IItemValidator) s -> s.hasCapability(CapabilityFluidHandler.FLUID_HANDLER_CAPABILITY, null) && s.getCapability(CapabilityFluidHandler.FLUID_HANDLER_CAPABILITY, null).drain(Fluid.BUCKET_VOLUME, false) != null);
}
@Override
protected void onContentsChanged(int slot) {
super.onContentsChanged(slot);
ItemStack stack = getStackInSlot(slot);
if (stack == null) {
filters[slot] = null;
} else {
filters[slot] = stack.getCapability(CapabilityFluidHandler.FLUID_HANDLER_CAPABILITY, null).drain(Fluid.BUCKET_VOLUME, false);
}
}
public FluidStack[] getFilters() {
return filters;
}
}

View File

@@ -19,7 +19,7 @@ import refinedstorage.apiimpl.storage.fluid.FluidStorageNBT;
import refinedstorage.apiimpl.storage.fluid.FluidUtils;
import refinedstorage.block.EnumFluidStorageType;
import refinedstorage.inventory.ItemHandlerBasic;
import refinedstorage.inventory.ItemHandlerFluidFilter;
import refinedstorage.inventory.ItemHandlerFluid;
import refinedstorage.inventory.ItemValidatorBasic;
import refinedstorage.tile.config.IComparable;
import refinedstorage.tile.config.IFilterable;
@@ -93,7 +93,7 @@ public class TileFluidDiskDrive extends TileNode implements IFluidStorageProvide
}
};
private ItemHandlerFluidFilter filters = new ItemHandlerFluidFilter(this);
private ItemHandlerFluid filters = new ItemHandlerFluid(9, this);
private FluidStorage storages[] = new FluidStorage[8];

View File

@@ -6,7 +6,7 @@ import net.minecraft.tileentity.TileEntity;
import net.minecraftforge.fluids.FluidStack;
import net.minecraftforge.items.IItemHandler;
import refinedstorage.api.storage.CompareUtils;
import refinedstorage.inventory.ItemHandlerFluidFilter;
import refinedstorage.inventory.ItemHandlerFluid;
import refinedstorage.tile.data.ITileDataConsumer;
import refinedstorage.tile.data.ITileDataProducer;
import refinedstorage.tile.data.TileDataParameter;
@@ -63,12 +63,12 @@ public interface IFilterable {
return false;
}
static boolean canTakeFluids(ItemHandlerFluidFilter filters, int mode, int compare, FluidStack stack) {
static boolean canTakeFluids(ItemHandlerFluid filters, int mode, int compare, FluidStack stack) {
if (mode == WHITELIST) {
int slots = 0;
for (int i = 0; i < filters.getSlots(); ++i) {
FluidStack slot = filters.getFilters()[i];
FluidStack slot = filters.getFluids()[i];
if (slot != null) {
slots++;
@@ -82,7 +82,7 @@ public interface IFilterable {
return slots == 0;
} else if (mode == BLACKLIST) {
for (int i = 0; i < filters.getSlots(); ++i) {
FluidStack slot = filters.getFilters()[i];
FluidStack slot = filters.getFluids()[i];
if (slot != null && CompareUtils.compareStack(slot, stack, compare)) {
return false;