Liahim написал(а):Я бы в тик эвенте игрока проверял наличие подобных блоков в радиусе... И лучше это делать не каждый тик, а раз в секунду, например.
С другой стороны, если это у тебя тайл, то можно проверять через него по списку игроков выяснять, кто из них находится в радиусе.
Если что, то 20 тиков это 1 секунда. Здесь был @Ivasik
Maxik001 написал(а):Хорошая идея насчет счетчика. Я у тебя ее пожалуй стырю
WhiteWaeeior написал(а):Maxik001 написал(а):Хорошая идея насчет счетчика. Я у тебя ее пожалуй стырю
Счетчик грибов?
Maxik001 написал(а):Хорошая идея насчет счетчика. Я у тебя ее пожалуй стырю
// Нужно откуда-то достать игрока. Если будешь искать на клиенте, то можно так
EntityPlayer player = Minecraft.getMinecraft().thePlayer;
// Берем коробку вокруг игрока радиусом в 15 блоков.
AxisAlignedBB aabb = player.boundingBox.expand(15, 15, 15);
// Блок, который ищем
Block block = Blocks.cactus;
for (int x = (int) aabb.minX; x < aabb.maxX; ++x) {
for (int y = (int) aabb.minY; y < aabb.maxY; ++y) {
for (int z = (int) aabb.minZ; z < aabb.maxZ; ++z) {
if (player.worldObj.getBlock(x, y, z) == block) {
// Нашли блок!
player.addChatComponentMessage(new ChatComponentText("Cactus!!"));
}
}
}
}
// Если твой блок имеет тайл, то лучше так. Но это спорно.
// Если на карте будет загружено тайлов больше, чем ~ 30*30*30, то лучше использовать первый метод.
// Ищем блок сундука (у него есть тайл)
block = Blocks.chest;
for (TileEntity tile : (List<TileEntity>) player.worldObj.loadedTileEntityList) {
if (tile.blockType == block &&
aabb.isVecInside(Vec3.createVectorHelper(tile.xCoord, tile.yCoord, tile.zCoord))) {
// Нашли!!
player.addChatComponentMessage(new ChatComponentText("Chest!!"));
}
}
ПригодитсяDahaka написал(а):Код:// Нужно откуда-то достать игрока. Если будешь искать на клиенте, то можно так EntityPlayer player = Minecraft.getMinecraft().thePlayer; // Берем коробку вокруг игрока радиусом в 15 блоков. AxisAlignedBB aabb = player.boundingBox.expand(15, 15, 15); // Блок, который ищем Block block = Blocks.cactus; for (int x = (int) aabb.minX; x < aabb.maxX; ++x) { for (int y = (int) aabb.minY; y < aabb.maxY; ++y) { for (int z = (int) aabb.minZ; z < aabb.maxZ; ++z) { if (player.worldObj.getBlock(x, y, z) == block) { // Нашли блок! player.addChatComponentMessage(new ChatComponentText("Cactus!!")); } } } } // Если твой блок имеет тайл, то лучше так. Но это спорно. // Если на карте будет загружено тайлов больше, чем ~ 30*30*30, то лучше использовать первый метод. // Ищем блок сундука (у него есть тайл) block = Blocks.chest; for (TileEntity tile : (List<TileEntity>) player.worldObj.loadedTileEntityList) { if (tile.blockType == block && aabb.isVecInside(Vec3.createVectorHelper(tile.xCoord, tile.yCoord, tile.zCoord))) { // Нашли!! player.addChatComponentMessage(new ChatComponentText("Chest!!")); } }
Dahaka написал(а):Код:// Нужно откуда-то достать игрока. Если будешь искать на клиенте, то можно так EntityPlayer player = Minecraft.getMinecraft().thePlayer; // Берем коробку вокруг игрока радиусом в 15 блоков. AxisAlignedBB aabb = player.boundingBox.expand(15, 15, 15); // Блок, который ищем Block block = Blocks.cactus; for (int x = (int) aabb.minX; x < aabb.maxX; ++x) { for (int y = (int) aabb.minY; y < aabb.maxY; ++y) { for (int z = (int) aabb.minZ; z < aabb.maxZ; ++z) { if (player.worldObj.getBlock(x, y, z) == block) { // Нашли блок! player.addChatComponentMessage(new ChatComponentText("Cactus!!")); } } } } // Если твой блок имеет тайл, то лучше так. Но это спорно. // Если на карте будет загружено тайлов больше, чем ~ 30*30*30, то лучше использовать первый метод. // Ищем блок сундука (у него есть тайл) block = Blocks.chest; for (TileEntity tile : (List<TileEntity>) player.worldObj.loadedTileEntityList) { if (tile.blockType == block && aabb.isVecInside(Vec3.createVectorHelper(tile.xCoord, tile.yCoord, tile.zCoord))) { // Нашли!! player.addChatComponentMessage(new ChatComponentText("Chest!!")); } }
Liahim написал(а):Liahim написал(а):Я бы в тик эвенте игрока проверял наличие подобных блоков в радиусе... И лучше это делать не каждый тик, а раз в секунду, например.
С другой стороны, если это у тебя тайл, то можно проверять через него по списку игроков выяснять, кто из них находится в радиусе.
Если что, то 20 тиков это 1 секунда. Здесь был @Ivasik
Шо ж ты, Ivasik, делаешь-то?
В учебник, ко мне в тему зайди. Там про звуки было.svetliy написал(а):Подскажите как написать эвент звука?, то не разу не сталкивался с ним)
Ivasik написал(а):Эт не я, ты сам написал XD Я не одмен, я не умею писать в комменты, и баны давать.