91 lines
3 KiB
Java
91 lines
3 KiB
Java
package WayofTime.bloodmagic.tile.routing;
|
|
|
|
import net.minecraft.item.ItemStack;
|
|
import net.minecraft.tileentity.TileEntity;
|
|
import net.minecraft.util.EnumFacing;
|
|
import net.minecraftforge.fluids.capability.CapabilityFluidHandler;
|
|
import net.minecraftforge.fluids.capability.IFluidHandler;
|
|
import net.minecraftforge.items.IItemHandler;
|
|
import WayofTime.bloodmagic.item.routing.IFluidFilterProvider;
|
|
import WayofTime.bloodmagic.item.routing.IItemFilterProvider;
|
|
import WayofTime.bloodmagic.routing.DefaultItemFilter;
|
|
import WayofTime.bloodmagic.routing.IFluidFilter;
|
|
import WayofTime.bloodmagic.routing.IItemFilter;
|
|
import WayofTime.bloodmagic.routing.IOutputFluidRoutingNode;
|
|
import WayofTime.bloodmagic.routing.IOutputItemRoutingNode;
|
|
import WayofTime.bloodmagic.util.Utils;
|
|
|
|
public class TileOutputRoutingNode extends TileFilteredRoutingNode implements IOutputItemRoutingNode, IOutputFluidRoutingNode
|
|
{
|
|
public TileOutputRoutingNode()
|
|
{
|
|
super(6, "outputNode");
|
|
}
|
|
|
|
@Override
|
|
public boolean isOutput(EnumFacing side)
|
|
{
|
|
return true;
|
|
}
|
|
|
|
@Override
|
|
public IItemFilter getOutputFilterForSide(EnumFacing side)
|
|
{
|
|
TileEntity tile = worldObj.getTileEntity(pos.offset(side));
|
|
if (tile != null)
|
|
{
|
|
IItemHandler handler = Utils.getInventory(tile, side.getOpposite());
|
|
if (handler != null)
|
|
{
|
|
ItemStack filterStack = this.getFilterStack(side);
|
|
|
|
if (filterStack == null)
|
|
{
|
|
IItemFilter filter = new DefaultItemFilter();
|
|
filter.initializeFilter(null, tile, handler, true);
|
|
return filter;
|
|
} else if (!(filterStack.getItem() instanceof IItemFilterProvider))
|
|
{
|
|
return null;
|
|
}
|
|
|
|
IItemFilterProvider filter = (IItemFilterProvider) filterStack.getItem();
|
|
return filter.getOutputItemFilter(filterStack, tile, handler);
|
|
}
|
|
}
|
|
|
|
return null;
|
|
}
|
|
|
|
@Override
|
|
public boolean isFluidOutput(EnumFacing side)
|
|
{
|
|
return true;
|
|
}
|
|
|
|
@Override
|
|
public IFluidFilter getOutputFluidFilterForSide(EnumFacing side)
|
|
{
|
|
TileEntity tile = worldObj.getTileEntity(pos.offset(side));
|
|
if (tile != null && tile.hasCapability(CapabilityFluidHandler.FLUID_HANDLER_CAPABILITY, side))
|
|
{
|
|
IFluidHandler handler = tile.getCapability(CapabilityFluidHandler.FLUID_HANDLER_CAPABILITY, side);
|
|
ItemStack filterStack = this.getFilterStack(side);
|
|
if (filterStack == null || !(filterStack.getItem() instanceof IFluidFilterProvider))
|
|
{
|
|
return null;
|
|
}
|
|
|
|
return ((IFluidFilterProvider) filterStack.getItem()).getOutputFluidFilter(filterStack, tile, handler);
|
|
}
|
|
|
|
return null;
|
|
}
|
|
|
|
@Override
|
|
public boolean isTankConnectedToSide(EnumFacing side)
|
|
{
|
|
return true;
|
|
}
|
|
}
|