проверка света

318
12
Как сделать проверку ли на блок светит Солнце? Типа на блок должно светить Солнце и тогда он выполняет функции. В TileEntity.
 
Код:
Block block = world.getBlock(x, y, z);
float light = world.getLightBrightness(x, y + 1, z);

if (world.canBlockSeeTheSky(x, y + 1, z) && light >= 0.9F) {
if (block == MyMod.my_block) {
//А зомби и скелеты не проверял их логику гореть днём?
}
}
 
[font=Verdana, Helvetica, Arial, sans-serif]timaxa007 не работает(. Мне надо что бы это раотало в TileEntity а не в самом блоке.[/font]
 
Yarik, мало значит знаешь, но вроде надо как-то так:
Код:
Block block = worldObj.getBlock(xCoord, yCoord, zCoord);
float light = worldObj.getLightBrightness(xCoord, yCoord + 1, zCoord);

if (worldObj.canBlockSeeTheSky(xCoord, yCoord + 1, zCoord) && light >= 0.9F) {
if (block == MyMod.my_block) {
//А зомби и скелеты не проверял их логику гореть днём?
}
}
 
Странно, но не проверял на наличии других источников света, возможно из-за этого он у тебя сработал. Но если надо на проверку на день, то примерно так:
Код:
...
if (worldObj.provider.isDaytime() && worldObj.canBlockSeeTheSky(xCoord, yCoord + 1, zCoord) && light >= 0.9F) {
...
 
Тогда извини, больше ни чем помочь не смогу. Я понятия не имею почему у тебя не работает.
 
float light = worldObj.getLightBrightness(xCoord, yCoord + 1, zCoord);
if (worldObj.getBlock(xCoord, yCoord, zCoord) == XMod.blockPower && worldObj.provider.isDaytime() && worldObj.canBlockSeeTheSky(xCoord, yCoord + 1, zCoord) && light >= 0.9F && worldObj.canBlockSeeTheSky(xCoord, yCoord + 1, zCoord)) 
{ System.out.println("day"); 
}
 
И в каком методе, этот код находиться?
[merge_posts_bbcode]Добавлено: 13.05.2015 22:30:06[/merge_posts_bbcode]

Решил попробовать на TileEntity этот код дествительно днём и ночью "light == 1.0F". Ищу альтернативу этому коду.
[merge_posts_bbcode]Добавлено: 13.05.2015 22:47:23[/merge_posts_bbcode]

Ну как-то так.
Код:
Block block = worldObj.getBlock(xCoord, yCoord, zCoord);
float light = worldObj.getSunBrightness(1.0F);

if (worldObj.canBlockSeeTheSky(xCoord, yCoord + 1, zCoord) && light >= 0.9F) {
    if (block == Mod.block) {
        //System.out.println("day - " + light);
    }
}
light - в данном случаи он не реагирует на другие источники света, но реагирует на погоду. "1.0F" - день, "0.2F" [лунный свет] - ночь.
[merge_posts_bbcode]Добавлено: 13.05.2015 23:12:19[/merge_posts_bbcode]
Хотя точно не знаю, как лучше сделать.
 
Назад
Сверху