public override void SetBlock(World world, int x, int y, int z, Block block, bool notify = true) { if (!IsHeightLimit(y)) { return; } Chunk chunk = world.GetChunk(x, y, z); if (chunk == null) { return; } SetBlockAndNotify(world, x, y, z, block); world.CheckAndRecalculateMesh(x, y, z, block); LiquidSpreadSource spreadSource = LiquidSpreadSourceManager.GetSpreadSource(); spreadSource.chunk = chunk; spreadSource.liquidType = block.BlockType; // spreadSource.AddRelationLiquidType(BlockType.StillWater); spreadSource.pos = new WorldPos(x - chunk.worldPos.x, y - chunk.worldPos.y, z - chunk.worldPos.z); spreadSource.curSpreadLevel = block.ExtendId > BAC_FlowingWater.waterExtendLevel ? 0 : (int)block.ExtendId; spreadSource.spreadMaxLevel = BAC_FlowingWater.waterExtendLevel; spreadSource.OnSpreadPlaneFinish += HandleOnSpreadPlaneFinish; spreadSource.StartSpread(); }