O(n)
, если чекаешь все блоки в радиусе сложность будет O(radius^3)
. Нетрудно догадаться, что графики роста сложности при росте кол-ва блоков выглядят так: private boolean hasPlayerInRadius(TileEntity tile) {
int chunkX = tile.xCoord >> 4;
int chunkY = tile.yCoord >> 4;
int chunkZ = tile.zCoord >> 4;
int minX = chunkX - 3;
int minY = chunkY - 3;
int minZ = chunkZ - 3;
int maxX = chunkX + 3;
int maxY = chunkY + 3;
int maxZ = chunkZ + 3;
int locX, locY, locZ;
for (EntityPlayer player : (List<EntityPlayer>) worldObj.playerEntities) {
locX = player.chunkCoordX;
locY = player.chunkCoordY;
locZ = player.chunkCoordZ;
if (minX <= locX && locX <= maxX && minY <= locY && locY <= maxY && minZ <= locZ && locZ <= maxZ)
return true;
}
return false;
}
Каким образом ты проверишь в блоке, что в радиусе от него кому-то дали по башке? Никак. Это надо делать только в ивенте.Ну ему тогда однозначно делать тайлом надо и аля как в маяке, а не блок искать.