Example usage for net.minecraftforge.fluids FluidStack equals

List of usage examples for net.minecraftforge.fluids FluidStack equals

Introduction

In this page you can find the example usage for net.minecraftforge.fluids FluidStack equals.

Prototype

@Override
public final boolean equals(Object o) 

Source Link

Document

Default equality comparison for a FluidStack.

Usage

From source file:buildcraft.transport.PipeTransportFluids.java

License:Minecraft Mod Public

/**
 * Computes the PacketFluidUpdate packet for transmission to a client
 *
 * @param initPacket everything is sent, no delta stuff ( first packet )
 * @param persistChange The render cache change is persisted
 * @return PacketFluidUpdate liquid update packet
 *///www . ja  va  2 s.com
private PacketFluidUpdate computeFluidUpdate(boolean initPacket, boolean persistChange) {

    boolean changed = false;
    BitSet delta = new BitSet(PacketFluidUpdate.FLUID_DATA_NUM * ForgeDirection.VALID_DIRECTIONS.length);

    if (initClient > 0) {
        initClient--;
        if (initClient == 1) {
            changed = true;
            delta.set(0, PacketFluidUpdate.FLUID_DATA_NUM * ForgeDirection.VALID_DIRECTIONS.length);
        }
    }

    FluidStack[] renderCacheCopy = this.renderCache.clone();
    int[] colorRenderCacheCopy = this.colorRenderCache.clone();

    for (ForgeDirection dir : orientations) {
        FluidStack current = internalTanks[dir.ordinal()].getFluid();
        FluidStack prev = renderCacheCopy[dir.ordinal()];

        if (current != null && current.getFluid() == null) {
            continue;
        }

        if (prev == null && current == null) {
            continue;
        }

        if (prev == null ^ current == null) {
            changed = true;
            if (current != null) {
                renderCacheCopy[dir.ordinal()] = current.copy();
                colorRenderCacheCopy[dir.ordinal()] = current.getFluid().getColor(current);
            } else {
                renderCacheCopy[dir.ordinal()] = null;
                colorRenderCacheCopy[dir.ordinal()] = 0xFFFFFF;
            }
            delta.set(dir.ordinal() * PacketFluidUpdate.FLUID_DATA_NUM + PacketFluidUpdate.FLUID_ID_BIT);
            delta.set(dir.ordinal() * PacketFluidUpdate.FLUID_DATA_NUM + PacketFluidUpdate.FLUID_AMOUNT_BIT);
            continue;
        }

        if (prev == null || current == null) {
            continue;
        }

        if (!prev.equals(current) || initPacket) {
            changed = true;
            renderCacheCopy[dir.ordinal()] = current;
            colorRenderCacheCopy[dir.ordinal()] = current.getFluid().getColor(current);
            delta.set(dir.ordinal() * PacketFluidUpdate.FLUID_DATA_NUM + PacketFluidUpdate.FLUID_ID_BIT);
        }

        int displayQty = (prev.amount * 4 + current.amount) / 5;
        if (displayQty == 0 && current.amount > 0 || initPacket) {
            displayQty = current.amount;
        }
        displayQty = Math.min(getCapacity(), displayQty);

        if (prev.amount != displayQty || initPacket) {
            changed = true;
            renderCacheCopy[dir.ordinal()].amount = displayQty;
            delta.set(dir.ordinal() * PacketFluidUpdate.FLUID_DATA_NUM + PacketFluidUpdate.FLUID_AMOUNT_BIT);
        }
    }

    if (persistChange) {
        this.renderCache = renderCacheCopy;
        this.colorRenderCache = colorRenderCacheCopy;
    }

    if (changed || initPacket) {
        PacketFluidUpdate packet = new PacketFluidUpdate(container.xCoord, container.yCoord, container.zCoord,
                initPacket);
        packet.renderCache = renderCacheCopy;
        packet.colorRenderCache = colorRenderCacheCopy;
        packet.delta = delta;
        return packet;
    }

    return null;

}

From source file:ocelot.mods.qp2.TileRefineryPlus.java

License:Open Source License

@Override
public FluidStack drain(ForgeDirection from, FluidStack resource, boolean doDrain) {
    // if (resource == null) return null;
    if (resource.equals(this.res))
        return drain(from, resource.amount, doDrain);
    if (resource.equals(this.src1)) {
        FluidStack ret = this.src1.copy();
        ret.amount = Math.min(resource.amount, ret.amount);
        if (doDrain) {
            this.src1.amount -= ret.amount;
            if (this.src1.amount == 0)
                this.src1 = null;
        }/*from ww w  . j a v a  2  s.  c  o m*/
        return ret;
    }
    if (resource.equals(this.src2)) {
        FluidStack ret = this.src2.copy();
        ret.amount = Math.min(resource.amount, ret.amount);
        if (doDrain) {
            this.src2.amount -= ret.amount;
            if (this.src2.amount == 0)
                this.src2 = null;
        }
        return ret;
    }
    return null;
}