Skip to content

Instantly share code, notes, and snippets.

@Jordach
Created September 29, 2012 17:53
Show Gist options
  • Star 1 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save Jordach/3804711 to your computer and use it in GitHub Desktop.
Save Jordach/3804711 to your computer and use it in GitHub Desktop.
init
local function generate_ore(name, wherein, minp, maxp, seed, chunks_per_volume, chunk_size, ore_per_chunk, height_min, height_max)
if maxp.y < height_min or minp.y > height_max then
return
end
local y_min = math.max(minp.y, height_min)
local y_max = math.min(maxp.y, height_max)
local volume = (maxp.x-minp.x+1)*(y_max-y_min+1)*(maxp.z-minp.z+1)
local pr = PseudoRandom(seed)
local num_chunks = math.floor(chunks_per_volume * volume)
local inverse_chance = math.floor(chunk_size*chunk_size*chunk_size / ore_per_chunk)
--print("generate_ore num_chunks: "..dump(num_chunks))
for i=1,num_chunks do
local y0 = pr:next(y_min, y_max-chunk_size+1)
if y0 >= height_min and y0 <= height_max then
local x0 = pr:next(minp.x, maxp.x-chunk_size+1)
local z0 = pr:next(minp.z, maxp.z-chunk_size+1)
local p0 = {x=x0, y=y0, z=z0}
for x1=0,chunk_size-1 do
for y1=0,chunk_size-1 do
for z1=0,chunk_size-1 do
if pr:next(1,inverse_chance) == 1 then
local x2 = x0+x1
local y2 = y0+y1
local z2 = z0+z1
local p2 = {x=x2, y=y2, z=z2}
if minetest.env:get_node(p2).name == wherein then
minetest.env:set_node(p2, {name=name})
end
end
end
end
end
end
end
--print("generate_ore done")
end
minetest.register_craft({
output = 'glowstone:glowblock',
recipe = {
{'glowstone:glow_ingot', 'glowstone:glow_ingot', 'glowstone:glow_ingot'},
{'glowstone:glow_ingot', 'glowstone:glow_ingot', 'glowstone:glow_ingot'},
{'glowstone:glow_ingot', 'glowstone:glow_ingot', 'glowstone:glow_ingot'},
}
})
minetest.register_craft({
type = "cooking",
output = "glowstone:glow_ingot",
recipe = "glowstone:glow_dust",
})
minetest.register_node("glowstone:glow_ore", {
description = "Glowing Ore",
tiles = {"default_stone.png^glowstone_ore.png"},
is_ground_content = true,
groups = {cracky=3},
drop = 'glowstone:glow_dust',
sounds = default.node_sound_stone_defaults(),
light_source = 8,
})
minetest.register_node("glowstone:glowblock", {
description = "Glowstone",
tiles = {"glowstone_block.png"},
is_ground_content = true,
groups = {cracky=3},
light_source = 30,
sounds = default.node_sound_stone_defaults(),
})
minetest.register_craftitem("glowstone:glow_dust", {
description = "Glowing Dust",
inventory_image = "glowstone_dust.png",
})
minetest.register_craftitem("glowstone:glow_ingot", {
description = "Glowing Ingot",
inventory_image = "glowstone_ingot.png",
})
minetest.register_on_generated(function(minp, maxp, seed)
-- Generate regular ores
generate_ore("glowstone:glow_ore", "default:stone", minp, maxp, seed+83, 1/12/12/12, 1, 2, -31000, -5000)
end)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment