master
HybridDog 2013-04-12 18:58:02 +02:00
parent 009f3da016
commit d41c354c0e
2 changed files with 64 additions and 3 deletions

View File

@ -26,8 +26,9 @@ minetest.register_craft({
})
--Node------------------------------------------------------------------------------------
local function orenode(name, drops)
local function orenode(name, drops, desc)
minetest.register_node("extrablocks:"..name.."_ore", {
description = desc,
tile_images = {"default_stone.png^extrablocks_"..name.."_ore.png"},
groups = {cracky=3},
drop = drops,
@ -49,11 +50,11 @@ local function stonelikenode(name, desc)
monode(name, desc, default.node_sound_stone_defaults(), 0)
end
orenode("marble", "marble_clean")
stonelikenode("marble_ore", "Marble Ore")
stonelikenode("marble_tiling", "Tiling")
stonelikenode("marble_clean", "Marble")
orenode("lapis_lazuli", "lapis_lazuli_lump")
orenode("lapis_lazuli", "extrablocks:lapis_lazuli_lump", "Lapis Lazuli Ore")
stonelikenode("lapis_lazuli_block", "Lapis Lazuli Block")
stonelikenode("previous_cobble", "Previous Cobblestone")
@ -70,6 +71,14 @@ monode("goldblock", "Goldblock", LIGHT_MAX-1)
monode("gold", "Gold", LIGHT_MAX-1)
monode("acid", "Acid", LIGHT_MAX-1)
minetest.register_node("extrablocks:goldstone", {
description = "Gold in Stone",
tile_images = {"default_stone.png^extrablocks_goldstone.png"},
light_source = LIGHT_MAX-1,
groups = {cracky=3},
sounds = default.node_sound_stone_defaults(),
})
----------------------------------------plants----------------------------------------------------------------------------
local function plantnode(name, desc, selbox)
@ -218,3 +227,55 @@ minetest.register_craftitem("extrablocks:muffin", {
inventory_image = "extrablocks_muffin.png",
on_use = minetest.item_eat(20),
})
local function generate_ore(name, wherein, minp, maxp, seed, chunks_per_volume, 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 chunk_size = 3
if ore_per_chunk <= 4 then
chunk_size = 2
end
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
if (y_max-chunk_size+1 <= y_min) then return end
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_on_generated(function(minp, maxp, seed)
generate_ore("extrablocks:goldstone", "default:stone", minp, maxp, seed+112, 1/11/11/11, 4, -31000, -450)
generate_ore("extrablocks:goldstone", "default:stone", minp, maxp, seed+113, 1/11/11/11, 4, -31000, -1000)
generate_ore("extrablocks:lapis_lazuli_ore","default:stone", minp, maxp, seed+114, 1/10/10/10, 3, -300, -80)
generate_ore("extrablocks:lapis_lazuli_ore","default:stone", minp, maxp, seed+115, 1/10/10/10, 3, -300, -150)
generate_ore("extrablocks:marble_ore", "default:stone", minp, maxp, seed+116, 1/128, 20, -100, -32)
generate_ore("extrablocks:marble_ore", "default:stone", minp, maxp, seed+117, 1/10/10/10, 3, -100, -90)
end)

Binary file not shown.

After

Width:  |  Height:  |  Size: 971 B