05-14-2017, 02:08 AM
05-14-2017, 03:39 AM
world:GetBlock(lastBedPos.x, lastBedPos.y, lastBedPos.z)
05-14-2017, 03:47 AM
Note that this function only works as expected if the chunk which you're querying is loaded. If you have a reasonable doubt that the chunk may be unloaded, you'll need to use the cWorld:ChunkStay() method to force-load it.
05-14-2017, 07:27 PM
Like this?
Or you know a simpler way?
PHP Code:
function LoadMyChunk(X,Z,World)
World:ChunkStay({{math.floor(X / 16), math.floor(Z / 16)}}, nil,
function()
_, Height = World:TryGetHeight(X, Z)
print(X, Height, Z, _)
end
)
end
Or you know a simpler way?
05-14-2017, 08:59 PM
(05-14-2017, 03:47 AM)xoft Wrote: [ -> ]Note that this function only works as expected if the chunk which you're querying is loaded. If you have a reasonable doubt that the chunk may be unloaded, you'll need to use the cWorld:ChunkStay() method to force-load it.
I have two function with a little difference. But the first one works fine and the other one works not. In the first function (LoadBedBlock) can i use "Height" out of the inner function and in GetRandomHeight i cant use "Height" out of the inner function, why?
Result: LoadBedBlock Height: 64 IsLaoded: true
PHP Code:
function LoadBedBlock(X,Y,Z,World)
local _, Height
local BedBlock
World:ChunkStay({{math.floor(X / 16), math.floor(Z / 16)}}, nil,
function()
_, Height = World:TryGetHeight(X, Z)
--print(X, Height, Z, _)
end
)
print("LoadBedBlock ","Height:",Height," IsLaoded:",_)
BedBlock=World:GetBlock(X, Y, Z)
return BedBlock
end
Result: GetRandomHeight Height: nil IsLaoded: nil
PHP Code:
function GetRandomHeight(X,Z,World)
local _, Height
World:ChunkStay({{math.floor(X / 16), math.floor(Z / 16)}}, nil,
function()
_, Height = World:TryGetHeight(X, Z)
--print(X, Height, Z, _)
end
)
print("GetRandomHeight ","Height:",Height," IsLaoded:",_)
return Height
end
05-15-2017, 05:25 AM
No, these won't work reliably. Once the callback given to ChunkStay finishes, Cuberite is free to unload the chunk again. Whatever processing you need to do, you need to do it in the ChunkStay's callback function. So the World:GetBlock() call in your first function may still return "chunk unloaded".
Note that naming a variable "_" in Lua basically means "drop this value, I'm not interested in it". You need to give a proper name to the variable if you want to use it.
True, I still don't know why exactly your code isn't working. If you uncomment the print() calls in the callbacks, do they print the correct values?
Note that naming a variable "_" in Lua basically means "drop this value, I'm not interested in it". You need to give a proper name to the variable if you want to use it.
True, I still don't know why exactly your code isn't working. If you uncomment the print() calls in the callbacks, do they print the correct values?