Какой алгоритм, ммм.
1. isValidFloor(Location)
вместе с циклом проверки можно убрать, самое бесполезное в этом коде.
2. Загрузка чанка - самое вредительское действие в этом алгоритме, чанк грузить не надо.(Ты ведь даже чанк неправильный грузишь.)
3. Генератор случайных позиций ужасен.
4. Вместо Map<String, Location>
можно использовать Multimap<UUID, Location>
(.equals(Object)
у UUID
куда быстрее, чем у String
)
5. Ну и судя по выводу в консоль, генерируется не 3 позиции, а очень много. При этом грузятся неизвестно какие чанки(уж точно не те, в которых находится заданный Location
)