Add files via upload

master
NO11 2021-08-18 13:59:09 +02:00 committed by GitHub
parent 5226a890c2
commit 0e50a1d4c9
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 60 additions and 0 deletions

57
init.lua Normal file
View File

@ -0,0 +1,57 @@
randomizer = {}
local id = minetest.get_content_id
local function allowed_node(node, def)
local allowed = node ~= "" and node ~= "air" and node ~= "ignore" and node ~= "unknown"
and def and def.description and def.description ~= ""
and not string.match(node, "stair") and not string.match(node, "slab")
and not string.match(node, "fence") and not string.match(node, "bed")
and not string.match(node, "door") and def.light_source == 0
and def.groups.not_in_creative_inventory ~= 1
and node ~= "mcl_core:bedrock" and node ~= "default:water_source"
and node ~= "default:water_flowing" and node ~= "default:river_water_source"
and node ~= "default:river_water_flowing" and node ~= "default:lava_source"
and node ~= "default:lava_flowing" and node ~= "mcl_core:water_source"
and node ~= "mcl_core:water_flowing" and node ~= "mcl_core:lava_source"
and node ~= "mcl_core:lava_flowing" and node ~= "mcl_mobspawners:spawner"
return allowed
end
minetest.register_on_mods_loaded(function()
for node, def in pairs(minetest.registered_nodes) do
if allowed_node(node, def) then
table.insert(randomizer, node)
end
end
for _, node in pairs(randomizer) do
-- this is faster then check for all nodes in the randomizer list
-- in a loop in the minetest.register_on_generated function
minetest.override_item(node, {
randomizer = randomizer[math.random(#randomizer)]
})
end
end)
local data = {}
minetest.register_on_generated(function(minp, maxp, blockseed)
local vm, emin, emax = minetest.get_mapgen_object("voxelmanip")
local area = VoxelArea:new{ MinEdge = emin, MaxEdge = emax }
vm:get_data(data)
local data = vm:get_data()
for z = minp.z, maxp.z do
for y = minp.y, maxp.y do
for x = minp.x, maxp.x do
local vi = area:index(x, y, z)
local node_name = minetest.get_name_from_content_id(data[vi])
local node_def = minetest.registered_nodes[node_name]
if node_def.randomizer then
data[vi] = minetest.get_content_id(node_def.randomizer)
end
end
end
end
vm:set_data(data)
vm:write_to_map(true)
end)

3
mod.conf Normal file
View File

@ -0,0 +1,3 @@
name = randomizer
author = NO11
description = A survival challenge.