@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(); }
@Override public synchronized void refresh() { Set<IGridTransmitter<FluidNetwork>> iterPipes = (Set<IGridTransmitter<FluidNetwork>>) transmitters.clone(); Iterator it = iterPipes.iterator(); possibleAcceptors.clear(); acceptorDirections.clear(); while (it.hasNext()) { IGridTransmitter<FluidNetwork> conductor = (IGridTransmitter<FluidNetwork>) it.next(); if (conductor == null || ((TileEntity) conductor).isInvalid()) { it.remove(); transmitters.remove(conductor); } else { conductor.setTransmitterNetwork(this); } } for (IGridTransmitter<FluidNetwork> transmitter : iterPipes) { IFluidHandler[] acceptors = PipeUtils.getConnectedAcceptors((TileEntity) transmitter); for (IFluidHandler acceptor : acceptors) { ForgeDirection side = ForgeDirection.getOrientation(Arrays.asList(acceptors).indexOf(acceptor)); if (side != null && acceptor != null && !(acceptor instanceof IGridTransmitter) && transmitter.canConnectToAcceptor(side, true)) { possibleAcceptors.add(acceptor); acceptorDirections.put( acceptor, ForgeDirection.getOrientation(Arrays.asList(acceptors).indexOf(acceptor))); } } } }