APIDump: Added example to HOOK_CHUNK_GENERATED.
This commit is contained in:
parent
23b4aa4820
commit
8f5ed6511a
@ -2182,6 +2182,43 @@ end;
|
|||||||
<p>
|
<p>
|
||||||
In either case, MCServer will then store the data from ChunkDesc as the chunk's contents in the world.
|
In either case, MCServer will then store the data from ChunkDesc as the chunk's contents in the world.
|
||||||
]],
|
]],
|
||||||
|
CodeExamples =
|
||||||
|
{
|
||||||
|
{
|
||||||
|
Title = "Generate emerald ore",
|
||||||
|
Desc = "This example callback function generates one block of emerald ore in each chunk, under the condition that the randomly chosen location is in an ExtremeHills biome.",
|
||||||
|
Code = [[
|
||||||
|
function OnChunkGenerated(a_World, a_ChunkX, a_ChunkZ, a_ChunkDesc)
|
||||||
|
-- Generate a psaudorandom value that is always the same for the same X/Z pair, but is otherwise random enough:
|
||||||
|
-- This is actually similar to how MCServer does its noise functions
|
||||||
|
local PseudoRandom = (a_ChunkX * 57 + a_ChunkZ) * 57 + 19785486
|
||||||
|
PseudoRandom = PseudoRandom * 8192 + PseudoRandom;
|
||||||
|
PseudoRandom = ((PseudoRandom * (PseudoRandom * PseudoRandom * 15731 + 789221) + 1376312589) % 0x7fffffff;
|
||||||
|
PseudoRandom = PseudoRandom / 7;
|
||||||
|
|
||||||
|
-- Based on the PseudoRandom value, choose a location for the ore:
|
||||||
|
local OreX = PseudoRandom % 16;
|
||||||
|
local OreY = 2 + ((PseudoRandom / 16) % 20);
|
||||||
|
local OreZ = (PseudoRandom / 320) % 16;
|
||||||
|
|
||||||
|
-- Check if the location is in ExtremeHills:
|
||||||
|
if (a_ChunkDesc:GetBiome(OreX, OreZ) ~= biExtremeHills) then
|
||||||
|
return false;
|
||||||
|
end
|
||||||
|
|
||||||
|
-- Only replace allowed blocks with the ore:
|
||||||
|
local CurrBlock = a_ChunDesc:GetBlockType(OreX, OreY, OreZ);
|
||||||
|
if (
|
||||||
|
(CurrBlock == E_BLOCK_STONE) or
|
||||||
|
(CurrBlock == E_BLOCK_DIRT) or
|
||||||
|
(CurrBlock == E_BLOCK_GRAVEL)
|
||||||
|
) then
|
||||||
|
a_ChunkDesc:SetBlockTypeMeta(OreX, OreY, OreZ, E_BLOCK_EMERALD_ORE, 0);
|
||||||
|
end
|
||||||
|
end;
|
||||||
|
]],
|
||||||
|
},
|
||||||
|
} , -- CodeExamples
|
||||||
}, -- HOOK_CHUNK_GENERATED
|
}, -- HOOK_CHUNK_GENERATED
|
||||||
}, -- Hooks[]
|
}, -- Hooks[]
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user