Search in sources :

Example 1 with IInfusionHandler

use of mekanism.api.chemical.infuse.IInfusionHandler in project Mekanism by mekanism.

the class BoxedChemicalAcceptorCache method isChemicalAcceptorAndListen.

public boolean isChemicalAcceptorAndListen(@Nullable TileEntity tile, Direction side) {
    // TODO: Improve this to make it easier to add more chemical types
    Direction opposite = side.getOpposite();
    LazyOptional<IGasHandler> gasAcceptor = CapabilityUtils.getCapability(tile, Capabilities.GAS_HANDLER_CAPABILITY, opposite);
    LazyOptional<IInfusionHandler> infusionAcceptor = CapabilityUtils.getCapability(tile, Capabilities.INFUSION_HANDLER_CAPABILITY, opposite);
    LazyOptional<IPigmentHandler> pigmentAcceptor = CapabilityUtils.getCapability(tile, Capabilities.PIGMENT_HANDLER_CAPABILITY, opposite);
    LazyOptional<ISlurryHandler> slurryAcceptor = CapabilityUtils.getCapability(tile, Capabilities.SLURRY_HANDLER_CAPABILITY, opposite);
    if (gasAcceptor.isPresent() || infusionAcceptor.isPresent() || pigmentAcceptor.isPresent() || slurryAcceptor.isPresent()) {
        BoxedChemicalHandler chemicalHandler = new BoxedChemicalHandler();
        if (gasAcceptor.isPresent()) {
            chemicalHandler.addGasHandler(gasAcceptor);
        }
        if (infusionAcceptor.isPresent()) {
            chemicalHandler.addInfusionHandler(infusionAcceptor);
        }
        if (pigmentAcceptor.isPresent()) {
            chemicalHandler.addPigmentHandler(pigmentAcceptor);
        }
        if (slurryAcceptor.isPresent()) {
            chemicalHandler.addSlurryHandler(slurryAcceptor);
        }
        // Update the cached acceptor and if it changed, add a listener to it to listen for invalidation
        updateCachedAcceptorAndListen(side, tile, chemicalHandler);
        return true;
    }
    return false;
}
Also used : IInfusionHandler(mekanism.api.chemical.infuse.IInfusionHandler) IPigmentHandler(mekanism.api.chemical.pigment.IPigmentHandler) IGasHandler(mekanism.api.chemical.gas.IGasHandler) ISlurryHandler(mekanism.api.chemical.slurry.ISlurryHandler) BoxedChemicalHandler(mekanism.common.capabilities.chemical.BoxedChemicalHandler) Direction(net.minecraft.util.Direction)

Aggregations

IGasHandler (mekanism.api.chemical.gas.IGasHandler)1 IInfusionHandler (mekanism.api.chemical.infuse.IInfusionHandler)1 IPigmentHandler (mekanism.api.chemical.pigment.IPigmentHandler)1 ISlurryHandler (mekanism.api.chemical.slurry.ISlurryHandler)1 BoxedChemicalHandler (mekanism.common.capabilities.chemical.BoxedChemicalHandler)1 Direction (net.minecraft.util.Direction)1