BloodMagic/src/main/java/WayofTime/bloodmagic/tile/routing/TileInputRoutingNode.java
Nicholas Ignoffo 4035d91151 Run migration mappings
Everything is still broken, but at least we reduced the amount of errors by hundreds, if not thousands.
2019-09-22 12:55:43 -07:00

73 lines
2.6 KiB
Java

package WayofTime.bloodmagic.tile.routing;
import WayofTime.bloodmagic.item.routing.IFluidFilterProvider;
import WayofTime.bloodmagic.item.routing.IItemFilterProvider;
import WayofTime.bloodmagic.routing.*;
import WayofTime.bloodmagic.util.Utils;
import net.minecraft.item.ItemStack;
import net.minecraft.tileentity.TileEntity;
import net.minecraft.util.Direction;
import net.minecraftforge.fluids.capability.CapabilityFluidHandler;
import net.minecraftforge.fluids.capability.IFluidHandler;
import net.minecraftforge.items.IItemHandler;
public class TileInputRoutingNode extends TileFilteredRoutingNode implements IInputItemRoutingNode, IInputFluidRoutingNode {
public TileInputRoutingNode() {
super(6, "inputNode");
}
@Override
public boolean isInput(Direction side) {
return true;
}
@Override
public IItemFilter getInputFilterForSide(Direction side) {
TileEntity tile = getWorld().getTileEntity(pos.offset(side));
if (tile != null) {
IItemHandler handler = Utils.getInventory(tile, side.getOpposite());
if (handler != null) {
ItemStack filterStack = this.getFilterStack(side);
if (filterStack.isEmpty()) {
IItemFilter filter = new DefaultItemFilter();
filter.initializeFilter(null, tile, handler, false);
return filter;
} else if (!(filterStack.getItem() instanceof IItemFilterProvider)) {
return null;
}
IItemFilterProvider filter = (IItemFilterProvider) filterStack.getItem();
return filter.getInputItemFilter(filterStack, tile, handler);
}
}
return null;
}
@Override
public boolean isFluidInput(Direction side) {
return true;
}
@Override
public IFluidFilter getInputFluidFilterForSide(Direction side) {
TileEntity tile = getWorld().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()).getInputFluidFilter(filterStack, tile, handler);
}
return null;
}
@Override
public boolean isTankConnectedToSide(Direction side) {
return true;
}
}