Allows you to "whitelist" a location for a certain bot, but "blacklist" it for others. Create with 'LocationWhitelistCollection.Create(...)'.
Example usage
The code below finds the closest diamond block and attempts to move to it and then mine it. When we find a diamond ore we add it to a whitelist, where it's "whitelisted" to the current bot, but it's "blacklisted" from all other bots.
This may not ensure that two bots don't pick the same block, due to how multi-threading works. To ensure that locking is required.
privatestaticLocationWhitelistCollection whitelist =LocationWhitelistCollection.Create(3); // 3 blacklist 3x3 are around the location for other bots.publicasyncTaskOnTick() {constushort diamondOre =56;var block =Context.World.FindClosest(128,64,// search a 256x128 area. diamondOre,CpuMode.Medium_Usage,// search for diamond ore blocks. block =>!whitelist.IsTaken(context,block.GetLocation())); // do not include blocks that are taken.if(block ==null) {Console.WriteLine("Could not find any reachable diamond ores");return; } // Mark this location as taken, so other bots that are // searching for a location don't take the pick this block as well.whitelist.Take(context,block.GetLocation()); // Move to the closest diamond ore.var moveTask =awaitblock.MoveToInteractionRange().Task;if(moveTask.Result!=MoveResultType.Completed) {Console.WriteLine($"Could not reach ore at {block.GetLocation()}.");return; } // Reached the block, mine it.awaitblock.Dig(); // We mined the block and no longer care about it, nor do we // have to keep it "blacklisted" from other bots. Therefore we // should release our current block.whitelist.Release(context);}