Add mcl_secret_ores for x-ray safe netherite

This commit is contained in:
cora 2022-06-29 21:36:24 +02:00
parent 14cba8197e
commit e772bd12f0
2 changed files with 65 additions and 0 deletions

View File

@ -0,0 +1,63 @@
mcl_secret_ores = {}
mcl_secret_ores.registered_ores = {}
local adjacents = {
{ x =-1, y = 0, z = 0},
{ x = 1, y = 0, z = 0},
{ x = 0, y =-1, z = 0},
{ x = 0, y = 1, z = 0},
{ x = 0, y = 0, z =-1},
{ x = 0, y = 0, z = 1}
}
local seed = minetest.get_mapgen_setting("seed")
local function is_occluded(pos,dp)
for k,v in pairs(adjacents) do
local np=vector.add(pos,v)
local n = minetest.get_node(np)
if not vector.equals(np,dp) and n.name=="air" then return false end
end
return true
end
function mcl_secret_ores.on_dig(pos, oldnode,def)
for k,v in pairs(adjacents) do
local p=vector.add(pos,v)
local n=minetest.get_node_or_nil(p)
if n and table.indexof(def.wherein,n.name) and n.param2 == 0 and is_occluded(p,pos) and def.randomfunc(p) then
minetest.set_node(p,{name=def.ore})
return
end
end
end
function mcl_secret_ores.register_ore(def)
if not def.randomfunc then
def.randomfunc = function(p) return math.random(100) == 1 end
end
table.insert(mcl_secret_ores.registered_ores,def)
end
minetest.register_on_mods_loaded(function()
for _,def in pairs(mcl_secret_ores.registered_ores) do
for _,n in pairs(def.wherein) do
local node = minetest.registered_nodes[n]
local old_on_dig = node.on_dig
minetest.override_item(n, {on_dig = function(pos,oldnode,digger)
mcl_secret_ores.on_dig(pos, oldnode,def)
old_on_dig(pos,oldnode,digger)
end,
place_param2 = 1
})
end
end
end)
mcl_secret_ores.register_ore({
wherein = {"mcl_nether:netherrack"},
ore = "mcl_nether:ancient_debris",
randomfunc = function(p)
p = vector.round(p)
local pr = PseudoRandom(p.x*p.y*p.z)
if pr:next(1,1000) == 1 then return true end
end,
})

View File

@ -0,0 +1,2 @@
name = mcl_secret_ores
author = cora