forked from mtcontrib/nether-pack
Fixed a lot of bugs with the portal generator
This commit is contained in:
parent
c63b569709
commit
00dced390c
@ -232,8 +232,10 @@ HADES_THRONE = {
|
|||||||
{pos={x=5,y=4,z=3}, block="nether:nether_torch_bottom"},
|
{pos={x=5,y=4,z=3}, block="nether:nether_torch_bottom"},
|
||||||
{pos={x=4,y=4,z=6}, block="nether:nether_torch_bottom"},
|
{pos={x=4,y=4,z=6}, block="nether:nether_torch_bottom"},
|
||||||
{pos={x=5,y=4,z=6}, block="nether:nether_torch_bottom"},
|
{pos={x=5,y=4,z=6}, block="nether:nether_torch_bottom"},
|
||||||
-- Floor 6
|
{pos={x=0,y=4,z=6}, block="nether:nether_torch_bottom"},
|
||||||
{pos={x=1,y=5,z=6}, block="nether:nether_portal_creator"},
|
{pos={x=1,y=4,z=6}, block="nether:nether_torch_bottom"},
|
||||||
|
-- Nether Portal
|
||||||
|
{pos={x=1,y=5,z=6}, portalblock=true},
|
||||||
}
|
}
|
||||||
-- Structure of the nether portal (all is relative to the nether portal creator block)
|
-- Structure of the nether portal (all is relative to the nether portal creator block)
|
||||||
NETHER_PORTAL = {
|
NETHER_PORTAL = {
|
||||||
@ -591,7 +593,13 @@ minetest.register_on_generated(function(minp, maxp)
|
|||||||
end
|
end
|
||||||
-- Pass 4: Throne of Hades
|
-- Pass 4: Throne of Hades
|
||||||
for i,v in ipairs(HADES_THRONE_ABS) do
|
for i,v in ipairs(HADES_THRONE_ABS) do
|
||||||
minetest.env:add_node(v.pos, {name=v.block})
|
if v.portalblock == true then
|
||||||
|
NETHER_PORTALS_FROM_NETHER[table.getn(NETHER_PORTALS_FROM_NETHER)+1] = v.pos
|
||||||
|
nether:save_portal_from_nether(v.pos)
|
||||||
|
nether:createportal(v.pos)
|
||||||
|
else
|
||||||
|
minetest.env:add_node(v.pos, {name=v.block})
|
||||||
|
end
|
||||||
end
|
end
|
||||||
nether:touch(HADES_THRONE_GENERATED)
|
nether:touch(HADES_THRONE_GENERATED)
|
||||||
end
|
end
|
||||||
@ -884,36 +892,47 @@ function nether:teleport_player(from_nether, player)
|
|||||||
player:setpos(teleportpos)
|
player:setpos(teleportpos)
|
||||||
end
|
end
|
||||||
|
|
||||||
|
-- Creates a portal
|
||||||
|
function nether:createportal(pos)
|
||||||
|
local currx
|
||||||
|
local curry
|
||||||
|
local currz
|
||||||
|
local currpos = {}
|
||||||
|
for i,v in ipairs(NETHER_PORTAL) do
|
||||||
|
currx = v.pos.x + pos.x
|
||||||
|
curry = v.pos.y + pos.y
|
||||||
|
currz = v.pos.z + pos.z
|
||||||
|
currpos = {x=currx, y=curry, z=currz}
|
||||||
|
minetest.env:add_node(currpos, {name=v.block})
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
-- Portal Creator
|
-- Portal Creator
|
||||||
minetest.register_node("nether:nether_portal_creator", {
|
minetest.register_node("nether:nether_portal_creator", {
|
||||||
description = "Nether Portal Creator",
|
|
||||||
tile_images = {"nether_portal_creator.png"},
|
tile_images = {"nether_portal_creator.png"},
|
||||||
|
description = "Nether Portal Creator",
|
||||||
})
|
})
|
||||||
|
|
||||||
|
minetest.register_on_placenode(function(pos, node)
|
||||||
|
if node.name == "nether:nether_portal_creator" then
|
||||||
|
if nether:inside_nether(pos) then
|
||||||
|
NETHER_PORTALS_FROM_NETHER[table.getn(NETHER_PORTALS_FROM_NETHER)+1] = pos
|
||||||
|
nether:save_portal_from_nether(pos)
|
||||||
|
else
|
||||||
|
NETHER_PORTALS_TO_NETHER[table.getn(NETHER_PORTALS_TO_NETHER)+1] = pos
|
||||||
|
nether:save_portal_to_nether(pos)
|
||||||
|
end
|
||||||
|
nether:createportal(pos)
|
||||||
|
end
|
||||||
|
nodeupdate(pos)
|
||||||
|
end)
|
||||||
|
|
||||||
minetest.register_abm({
|
minetest.register_abm({
|
||||||
nodenames = "nether:nether_portal_creator",
|
nodenames = "nether:nether_portal_creator",
|
||||||
interval = 1.0,
|
interval = 1.0,
|
||||||
chance = 1,
|
chance = 1,
|
||||||
action = function(pos, node, active_object_count, active_object_count_wider)
|
action = function(pos)
|
||||||
local nodemeta = minetest.env:get_meta(pos)
|
nether:createportal(pos)
|
||||||
if nodemeta:get_string("generatingportal") == "" or nodemeta:get_string("generatingportal") == nil then
|
|
||||||
nodemeta:set_string("generatingportal", "true")
|
|
||||||
for i,v in ipairs(NETHER_PORTAL) do
|
|
||||||
v.pos.x = v.pos.x + pos.x
|
|
||||||
v.pos.y = v.pos.y + pos.y
|
|
||||||
v.pos.z = v.pos.z + pos.z
|
|
||||||
minetest.env:add_node(v.pos, {name=v.block})
|
|
||||||
end
|
|
||||||
if nether:inside_nether(pos) then
|
|
||||||
NETHER_PORTALS_FROM_NETHER[table.getn(NETHER_PORTALS_FROM_NETHER)+1] = pos
|
|
||||||
nether:save_portals_from_nether()
|
|
||||||
nether:read_portals_from_nether()
|
|
||||||
else
|
|
||||||
NETHER_PORTALS_TO_NETHER[table.getn(NETHER_PORTALS_TO_NETHER)+1] = pos
|
|
||||||
nether:save_portals_to_nether()
|
|
||||||
nether:read_portals_to_nether()
|
|
||||||
end
|
|
||||||
end
|
|
||||||
end
|
end
|
||||||
})
|
})
|
||||||
|
|
||||||
|
@ -232,8 +232,10 @@ HADES_THRONE = {
|
|||||||
{pos={x=5,y=4,z=3}, block="nether:nether_torch_bottom"},
|
{pos={x=5,y=4,z=3}, block="nether:nether_torch_bottom"},
|
||||||
{pos={x=4,y=4,z=6}, block="nether:nether_torch_bottom"},
|
{pos={x=4,y=4,z=6}, block="nether:nether_torch_bottom"},
|
||||||
{pos={x=5,y=4,z=6}, block="nether:nether_torch_bottom"},
|
{pos={x=5,y=4,z=6}, block="nether:nether_torch_bottom"},
|
||||||
-- Floor 6
|
{pos={x=0,y=4,z=6}, block="nether:nether_torch_bottom"},
|
||||||
{pos={x=1,y=5,z=6}, block="nether:nether_portal_creator"},
|
{pos={x=1,y=4,z=6}, block="nether:nether_torch_bottom"},
|
||||||
|
-- Nether Portal
|
||||||
|
{pos={x=1,y=5,z=6}, portalblock=true},
|
||||||
}
|
}
|
||||||
-- Structure of the nether portal (all is relative to the nether portal creator block)
|
-- Structure of the nether portal (all is relative to the nether portal creator block)
|
||||||
NETHER_PORTAL = {
|
NETHER_PORTAL = {
|
||||||
@ -548,9 +550,9 @@ minetest.register_on_generated(function(minp, maxp)
|
|||||||
minetest.env:add_node(addpos, {name="nether:netherrack"})
|
minetest.env:add_node(addpos, {name="nether:netherrack"})
|
||||||
elseif (math.floor(math.random(0, GLOWSTONE_FREQ_ROOF)) == 1) and (y >= NETHER_ROOF_ABS-1) and (nether:can_add_sticky_node(addpos) == true) then
|
elseif (math.floor(math.random(0, GLOWSTONE_FREQ_ROOF)) == 1) and (y >= NETHER_ROOF_ABS-1) and (nether:can_add_sticky_node(addpos) == true) then
|
||||||
minetest.env:add_node(addpos, {name="nether:glowstone"})
|
minetest.env:add_node(addpos, {name="nether:glowstone"})
|
||||||
elseif (math.floor(math.random(0, GLOWSTONE_FREQ_LAVA)) == 1) and ((nether:nodebelow(addpos) == "nether:lava_source") or (nether:nodebelow(addpos) == "nether:lava_flowing")) then
|
--[[elseif (math.floor(math.random(0, GLOWSTONE_FREQ_LAVA)) == 1) and ((nether:nodebelow(addpos) == "nether:lava_source") or (nether:nodebelow(addpos) == "nether:lava_flowing")) then
|
||||||
minetest.env:add_node(addpos, {name="nether:glowstone"})
|
minetest.env:add_node(addpos, {name="nether:glowstone"})
|
||||||
print("GLOWSTONE" .. "X:" .. addpos.x .. "Y:" .. addpos.y .. "Z:" .. addpos.z)
|
print("GLOWSTONE" .. "X:" .. addpos.x .. "Y:" .. addpos.y .. "Z:" .. addpos.z)]]
|
||||||
elseif (y == math.floor(math.random((NETHER_DEPTH-NETHER_RANDOM), NETHER_DEPTH))) and (nether:can_add_sticky_node(addpos) == true) then
|
elseif (y == math.floor(math.random((NETHER_DEPTH-NETHER_RANDOM), NETHER_DEPTH))) and (nether:can_add_sticky_node(addpos) == true) then
|
||||||
minetest.env:add_node(addpos, {name="nether:netherrack"})
|
minetest.env:add_node(addpos, {name="nether:netherrack"})
|
||||||
elseif (y == math.floor(math.random(NETHER_BOTTOM, (NETHER_BOTTOM+NETHER_RANDOM)))) and (nether:can_add_sticky_node(addpos) == true) then
|
elseif (y == math.floor(math.random(NETHER_BOTTOM, (NETHER_BOTTOM+NETHER_RANDOM)))) and (nether:can_add_sticky_node(addpos) == true) then
|
||||||
@ -591,7 +593,13 @@ minetest.register_on_generated(function(minp, maxp)
|
|||||||
end
|
end
|
||||||
-- Pass 4: Throne of Hades
|
-- Pass 4: Throne of Hades
|
||||||
for i,v in ipairs(HADES_THRONE_ABS) do
|
for i,v in ipairs(HADES_THRONE_ABS) do
|
||||||
minetest.env:add_node(v.pos, {name=v.block})
|
if v.portalblock == true then
|
||||||
|
NETHER_PORTALS_FROM_NETHER[table.getn(NETHER_PORTALS_FROM_NETHER)+1] = v.pos
|
||||||
|
nether:save_portal_from_nether(v.pos)
|
||||||
|
nether:createportal(v.pos)
|
||||||
|
else
|
||||||
|
minetest.env:add_node(v.pos, {name=v.block})
|
||||||
|
end
|
||||||
end
|
end
|
||||||
nether:touch(HADES_THRONE_GENERATED)
|
nether:touch(HADES_THRONE_GENERATED)
|
||||||
end
|
end
|
||||||
@ -884,36 +892,47 @@ function nether:teleport_player(from_nether, player)
|
|||||||
player:setpos(teleportpos)
|
player:setpos(teleportpos)
|
||||||
end
|
end
|
||||||
|
|
||||||
|
-- Creates a portal
|
||||||
|
function nether:createportal(pos)
|
||||||
|
local currx
|
||||||
|
local curry
|
||||||
|
local currz
|
||||||
|
local currpos = {}
|
||||||
|
for i,v in ipairs(NETHER_PORTAL) do
|
||||||
|
currx = v.pos.x + pos.x
|
||||||
|
curry = v.pos.y + pos.y
|
||||||
|
currz = v.pos.z + pos.z
|
||||||
|
currpos = {x=currx, y=curry, z=currz}
|
||||||
|
minetest.env:add_node(v.pos, {name=v.block})
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
-- Portal Creator
|
-- Portal Creator
|
||||||
minetest.register_node("nether:nether_portal_creator", {
|
minetest.register_node("nether:nether_portal_creator", {
|
||||||
description = "Nether Portal Creator",
|
|
||||||
tile_images = {"nether_portal_creator.png"},
|
tile_images = {"nether_portal_creator.png"},
|
||||||
|
description = "Nether Portal Creator",
|
||||||
})
|
})
|
||||||
|
|
||||||
|
minetest.register_on_placenode(function(pos, node)
|
||||||
|
if node.name == "nether:nether_portal_creator" then
|
||||||
|
if nether:inside_nether(pos) then
|
||||||
|
NETHER_PORTALS_FROM_NETHER[table.getn(NETHER_PORTALS_FROM_NETHER)+1] = pos
|
||||||
|
nether:save_portal_from_nether(pos)
|
||||||
|
else
|
||||||
|
NETHER_PORTALS_TO_NETHER[table.getn(NETHER_PORTALS_TO_NETHER)+1] = pos
|
||||||
|
nether:save_portal_to_nether(pos)
|
||||||
|
end
|
||||||
|
nether:createportal(pos)
|
||||||
|
end
|
||||||
|
nodeupdate(pos)
|
||||||
|
end)
|
||||||
|
|
||||||
minetest.register_abm({
|
minetest.register_abm({
|
||||||
nodenames = "nether:nether_portal_creator",
|
nodenames = "nether:nether_portal_creator",
|
||||||
interval = 1.0,
|
interval = 1.0,
|
||||||
chance = 1,
|
chance = 1,
|
||||||
action = function(pos, node, active_object_count, active_object_count_wider)
|
action = function(pos)
|
||||||
local nodemeta = minetest.env:get_meta(pos)
|
nether:createportal(pos)
|
||||||
if nodemeta:get_string("generatingportal") == "" or nodemeta:get_string("generatingportal") == nil then
|
|
||||||
nodemeta:set_string("generatingportal", "true")
|
|
||||||
for i,v in ipairs(NETHER_PORTAL) do
|
|
||||||
v.pos.x = v.pos.x + pos.x
|
|
||||||
v.pos.y = v.pos.y + pos.y
|
|
||||||
v.pos.z = v.pos.z + pos.z
|
|
||||||
minetest.env:add_node(v.pos, {name=v.block})
|
|
||||||
end
|
|
||||||
if nether:inside_nether(pos) then
|
|
||||||
NETHER_PORTALS_FROM_NETHER[table.getn(NETHER_PORTALS_FROM_NETHER)+1] = pos
|
|
||||||
nether:save_portals_from_nether()
|
|
||||||
nether:read_portals_from_nether()
|
|
||||||
else
|
|
||||||
NETHER_PORTALS_TO_NETHER[table.getn(NETHER_PORTALS_TO_NETHER)+1] = pos
|
|
||||||
nether:save_portals_to_nether()
|
|
||||||
nether:read_portals_to_nether()
|
|
||||||
end
|
|
||||||
end
|
|
||||||
end
|
end
|
||||||
})
|
})
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user