示例#1
0
  @Override
  public void update() {
    if (!world().isRemote) {
      if (cacheFluid != null) {
        if (getTransmitterNetwork().fluidStored == null) {
          getTransmitterNetwork().fluidStored = cacheFluid;
        } else {
          getTransmitterNetwork().fluidStored.amount += cacheFluid.amount;
        }

        cacheFluid = null;
      }

      if (getTransmitterNetwork(false) != null && getTransmitterNetwork(false).getSize() > 0) {
        int last = lastWrite != null ? lastWrite.amount : 0;

        if (last != getSaveShare()) {
          MekanismUtils.saveChunk(tile());
        }
      }

      IFluidHandler[] connectedAcceptors = PipeUtils.getConnectedAcceptors(tile());

      for (ForgeDirection side : getConnections(ConnectionType.PULL)) {
        if (connectedAcceptors[side.ordinal()] != null) {
          IFluidHandler container = connectedAcceptors[side.ordinal()];

          if (container != null) {
            FluidStack received = container.drain(side.getOpposite(), 100, false);

            if (received != null && received.amount != 0) {
              container.drain(
                  side.getOpposite(), getTransmitterNetwork().emit(received, true), true);
            }
          }
        }
      }
    }

    super.update();
  }