forked from MineClone5/MineClone5
101 lines
2.7 KiB
Lua
101 lines
2.7 KiB
Lua
mcl_compatibility = mcl_compatibility or {}
|
|
mcl_vars = mcl_vars or {}
|
|
|
|
local modname = minetest.get_current_modname()
|
|
local modpath = minetest.get_modpath(modname)
|
|
|
|
if not bit then
|
|
bit = {}
|
|
function bit.bxor(a, b)
|
|
-- fake! mock! speedify for now! TODO: make proper xor bitwise
|
|
return math.ceil(math.abs(math.floor(a/0.14) * b * 1.001 + b))
|
|
end
|
|
end
|
|
|
|
function math.round(x)
|
|
if x >= 0 then
|
|
return math.floor(x + 0.5)
|
|
end
|
|
return math.ceil(x - 0.5)
|
|
end
|
|
|
|
dofile(modpath .. "/vector.lua")
|
|
|
|
local minetest_get_node = minetest.get_node
|
|
|
|
mcl_compatibility.sort_nodes = function(nodes)
|
|
if not nodes then return {} end
|
|
for _, pos in pairs(nodes) do
|
|
if not pos.x or not pos.y or not pos.z then
|
|
return nodes
|
|
end
|
|
end
|
|
local new_nodes = {}
|
|
for _, pos in pairs(nodes) do
|
|
local node = minetest_get_node(pos)
|
|
local name = node.name
|
|
if not new_nodes[name] then
|
|
new_nodes[name] = { pos }
|
|
else
|
|
table.insert(new_nodes[name], pos)
|
|
end
|
|
end
|
|
return new_nodes
|
|
end
|
|
|
|
local minetest_find_nodes_in_area = minetest.find_nodes_in_area
|
|
minetest.find_nodes_in_area = function(pos1, pos2, nodenames, grouped)
|
|
local nodes, num = minetest_find_nodes_in_area(pos1, pos2, nodenames, grouped)
|
|
if not grouped or not nodes or next(nodes) == nil then
|
|
return nodes, num
|
|
end
|
|
return mcl_compatibility.sort_nodes(nodes)
|
|
end
|
|
|
|
function mcl_vars.pos_to_block(pos)
|
|
return mcl_mapgen and mcl_mapgen.pos_to_block(pos)
|
|
end
|
|
|
|
function mcl_vars.pos_to_chunk(pos)
|
|
return mcl_mapgen and mcl_mapgen.pos_to_chunk(pos)
|
|
end
|
|
|
|
function mcl_vars.get_chunk_number(pos)
|
|
return mcl_mapgen and get_chunk_number(pos)
|
|
end
|
|
|
|
function mcl_vars.is_generated(pos)
|
|
local node = minetest.get_node(pos)
|
|
if not node then return false end
|
|
if node.name == "ignore" then return false end
|
|
return true
|
|
end
|
|
|
|
function mcl_vars.get_node(p, force, us_timeout)
|
|
if not p or not p.x or not p.y or not p.z then return {name="error"} end
|
|
local node = minetest.get_node(p)
|
|
if node.name ~= "ignore" then return node end
|
|
minetest.get_voxel_manip():read_from_map(p, p)
|
|
return minetest.get_node(pos)
|
|
end
|
|
|
|
mcl_vars.mg_overworld_min = -62
|
|
mcl_vars.mg_overworld_max_official = 198
|
|
mcl_vars.mg_bedrock_overworld_min = -62
|
|
mcl_vars.mg_bedrock_overworld_max = -58
|
|
mcl_vars.mg_lava_overworld_max = -52
|
|
mcl_vars.mg_lava = true
|
|
mcl_vars.mg_bedrock_is_rough = true
|
|
mcl_vars.mg_overworld_max = 30927
|
|
mcl_vars.mg_nether_min = -29067
|
|
mcl_vars.mg_nether_max = -28939
|
|
mcl_vars.mg_bedrock_nether_bottom_min = -29067
|
|
mcl_vars.mg_bedrock_nether_top_max = -29063
|
|
mcl_vars.mg_end_min = -27073
|
|
mcl_vars.mg_end_max_official = -26817
|
|
mcl_vars.mg_end_max = -2062
|
|
mcl_vars.mg_end_platform_pos = { x = 100, y = -26999, z = 0 }
|
|
mcl_vars.mg_realm_barrier_overworld_end_max = -2062
|
|
mcl_vars.mg_realm_barrier_overworld_end_min = -2073
|
|
mcl_vars.mg_dungeons = true
|