Update init.lua

master
NO11 2021-08-18 08:26:13 -05:00 committed by GitHub
parent 2547fe7369
commit d087f56714
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
1 changed files with 23 additions and 20 deletions

View File

@ -1,34 +1,37 @@
randomizer = {}
randomizer = {
-- distinguish between nodes that can be replaced and nodes that CAN replace something
-- some node drawtypes cause low fps (e.g. plantlikes)
can_be_replaced = {},
can_replace = {},
}
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"
local function can_be_replaced(node, def)
local allowed = node ~= "mcl_core:bedrock" and node ~= "air" and node ~= "mcl_mobspawners:spawner"
and def.drawtype ~= "liquid" and def.drawtype ~= "flowingliquid"
return allowed
end
local function can_replace(node, def)
local allowed = def.drawtype == "normal" and def.groups.not_in_creative_inventory ~= 1
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)
if can_be_replaced(node, def) then
table.insert(randomizer.can_be_replaced, node)
end
if can_replace(node, def) then
table.insert(randomizer.can_replace, node)
end
end
for _, node in pairs(randomizer) do
for _, node in pairs(randomizer.can_be_replaced) 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)]
randomizer = randomizer.can_replace[math.random(#randomizer.can_replace)]
})
end
end)
@ -37,8 +40,8 @@ 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 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