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."); }