- Баллы
- 76
- Имя в Minecraft
- Test
Код:
for (Region rg : Anarchy.getRegions()) { //Все регионы на сервере
if (!rg.getMembers().contains(p.getName())) {
int sizeRegion = Anarchy.getInstance().range(rg.getLevel());//Расстояние от центра во все стороны
Cuboid cub = new Cuboid(e.getPlayer().getWorld(), rg.getX() + sizeRegion, rg.getY() + sizeRegion, rg.getZ() + sizeRegion, rg.getX() - sizeRegion, rg.getY() - sizeRegion, rg.getZ() - sizeRegion).contract();
if ((!rg.getOwner().equals(p.getName())) && (cub.contains(e.getBlock()))) {
if (!rg.getMembers().contains(p.getName())) {
e.setCancelled(true);
p.sendMessage("Ты не можешь ломать здесь блоки");
return;
}
}
}
}
Имеется вот такой говно код. Этот код обрабатывается когда игрок ломает/ставит блоки или же взаимодействует с ними. Проблема в том что при наличие больше 200-ух сотен регионов начинаются ужасные задержки.
Причины таких задержек которые понял это:
1.Как я понял все связано с тем что обрабатывается каждый регион на сервере.
2.Используется вот такой кусочек кода (cub.contains(e.getBlock()).
Метод getRegions() возвращает все регионы из памяти cache в которую они загружены при загрузке плагина.
Прошу у вас помощи так как не знаю как убрать задержки(лаги).