public void sendPersistentChunksToPlayer(EntityPlayerMP player) {
    if (!AdditionalPipes.instance.chunkSight) {
      return;
    }
    if (sightRange > MAX_SIGHT_RANGE) sightRange = MAX_SIGHT_RANGE;

    SetMultimap<ChunkCoordIntPair, Ticket> persistentChunks =
        ForgeChunkManager.getPersistentChunksFor(player.worldObj);
    List<ChunkCoordIntPair> chunksInRange = new LinkedList<ChunkCoordIntPair>();
    int playerX = (((int) player.posX) >> 4) - sightRange / 2,
        playerZ = (((int) player.posZ) >> 4) - sightRange / 2;

    for (int i = -sightRange; i <= sightRange; i++) {
      for (int j = -sightRange; j <= sightRange; j++) {
        ChunkCoordIntPair coords = new ChunkCoordIntPair(playerX + i, playerZ + j);
        if (persistentChunks.containsKey(coords)) {
          chunksInRange.add(coords);
        }
      }
    }

    MessageChunkloadData message = new MessageChunkloadData(chunksInRange);

    PacketHandler.INSTANCE.sendTo(message, player);

    AdditionalPipes.instance.logger.info(
        "[ChunkLoadViewDataProxy] Sent chunks within " + sightRange + " of player.");
  }
  @SideOnly(Side.CLIENT)
  public void requestPersistentChunks() {

    MessageChunkloadRequest message = new MessageChunkloadRequest();
    PacketHandler.INSTANCE.sendToServer(message);
  }