1
0
mirror of https://github.com/HybridDog/nether-pack.git synced 2024-12-26 02:30:24 +01:00

Fix code style

I've also made a few other changes:
Use minetest.pos_to_string instead of manually creating the string
Do not use table_contains to test if a node id belongs to a nether tree, instead use lua table hashmap behaviour
This commit is contained in:
Hybrid Dog 2017-12-26 09:19:11 +01:00
parent 69b3e65c85
commit 12dc8ae004

View File

@ -83,11 +83,14 @@ local NETHER_SHROOM_FREQ = 100
--NETHER_APPLE_FREQ = 5 --NETHER_APPLE_FREQ = 5
-- Frequency of healing apples in a nether structure (higher is less frequent) -- Frequency of healing apples in a nether structure (higher is less frequent)
--NETHER_HEAL_APPLE_FREQ = 10 --NETHER_HEAL_APPLE_FREQ = 10
-- Start position for the Throne of Hades (y is relative to the bottom of the nether) -- Start position for the Throne of Hades (y is relative to the bottom of the
-- nether)
--HADES_THRONE_STARTPOS = {x=0, y=1, z=0} --HADES_THRONE_STARTPOS = {x=0, y=1, z=0}
-- Spawn pos for when the nether hasn't been loaded yet (i.e. no portal in the nether) (y is relative to the bottom of the nether) -- Spawn pos for when the nether hasn't been loaded yet (i.e. no portal in the
-- nether) (y is relative to the bottom of the nether)
--NETHER_SPAWNPOS = {x=0, y=5, z=0} --NETHER_SPAWNPOS = {x=0, y=5, z=0}
-- 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)
--== END OF EDITABLE OPTIONS ==-- --== END OF EDITABLE OPTIONS ==--
@ -96,7 +99,8 @@ if nether.info then
if spam <= self.max_spam then if spam <= self.max_spam then
local info local info
if t then if t then
info = string.format("[nether] "..msg.." after ca. %.2fs", os.clock() - t) info = "[nether] " .. msg ..
(" after ca. %.2fs"):format(os.clock() - t)
else else
info = "[nether] "..msg info = "[nether] "..msg
end end
@ -112,21 +116,12 @@ else
end end
local path = minetest.get_modpath("nether") local path = minetest.get_modpath"nether"
dofile(path.."/weird_mapgen_noise.lua") dofile(path.."/weird_mapgen_noise.lua")
dofile(path.."/items.lua") dofile(path.."/items.lua")
--dofile(path.."/furnace.lua") --dofile(path.."/furnace.lua")
dofile(path.."/pearl.lua") dofile(path.."/pearl.lua")
local function table_contains(t, v)
for _,i in pairs(t) do
if i == v then
return true
end
end
return false
end
-- Weierstrass function stuff from https://github.com/slemonide/gen -- Weierstrass function stuff from https://github.com/slemonide/gen
local SIZE = 1000 local SIZE = 1000
local ssize = math.ceil(math.abs(SIZE)) local ssize = math.ceil(math.abs(SIZE))
@ -139,7 +134,7 @@ local function do_ws_func(depth, a, x)
return SIZE * y / math.pi return SIZE * y / math.pi
end end
local chunksize = minetest.settings:get("chunksize") or 5 local chunksize = minetest.settings:get"chunksize" or 5
local ws_lists = {} local ws_lists = {}
local function get_ws_list(a,x) local function get_ws_list(a,x)
ws_lists[a] = ws_lists[a] or {} ws_lists[a] = ws_lists[a] or {}
@ -180,7 +175,7 @@ local function set_vm_data(manip, nodes, pos, t1, name, generated)
if generated then if generated then
spam = 3 spam = 3
end end
nether:inform(name.." grew at ("..pos.x.."|"..pos.y.."|"..pos.z..")", spam, t1) nether:inform(name.." grew at " .. minetest.pos_to_string(pos), spam, t1)
if not generated then if not generated then
local t1 = os.clock() local t1 = os.clock()
manip:update_map() manip:update_map()
@ -205,12 +200,14 @@ nether.buildings = NETHER_BOTTOM+12
--~ local NETHER_ROOF_ABS = (nether_middle - NETHER_RANDOM) --~ local NETHER_ROOF_ABS = (nether_middle - NETHER_RANDOM)
local f_yscale_top = (f_h_max-f_h_min)/2 local f_yscale_top = (f_h_max-f_h_min)/2
local f_yscale_bottom = f_yscale_top/2 local f_yscale_bottom = f_yscale_top/2
--HADES_THRONE_STARTPOS_ABS = {x=HADES_THRONE_STARTPOS.x, y=(NETHER_BOTTOM + HADES_THRONE_STARTPOS.y), z=HADES_THRONE_STARTPOS.z} --HADES_THRONE_STARTPOS_ABS = {x=HADES_THRONE_STARTPOS.x, y=(NETHER_BOTTOM +
--HADES_THRONE_STARTPOS.y), z=HADES_THRONE_STARTPOS.z}
--LAVA_Y = (NETHER_BOTTOM + LAVA_HEIGHT) --LAVA_Y = (NETHER_BOTTOM + LAVA_HEIGHT)
--HADES_THRONE_ABS = {} --HADES_THRONE_ABS = {}
--HADES_THRONE_ENDPOS_ABS = {} --HADES_THRONE_ENDPOS_ABS = {}
--HADES_THRONE_GENERATED = minetest.get_worldpath() .. "/netherhadesthrone.txt" --HADES_THRONE_GENERATED = minetest.get_worldpath() .. "/netherhadesthrone.txt"
--NETHER_SPAWNPOS_ABS = {x=NETHER_SPAWNPOS.x, y=(NETHER_BOTTOM + NETHER_SPAWNPOS.y), z=NETHER_SPAWNPOS.z} --NETHER_SPAWNPOS_ABS = {x=NETHER_SPAWNPOS.x, y=(NETHER_BOTTOM +
--NETHER_SPAWNPOS.y), z=NETHER_SPAWNPOS.z}
--[[for i,v in ipairs(HADES_THRONE) do --[[for i,v in ipairs(HADES_THRONE) do
v.pos.x = v.pos.x + HADES_THRONE_STARTPOS_ABS.x v.pos.x = v.pos.x + HADES_THRONE_STARTPOS_ABS.x
v.pos.y = v.pos.y + HADES_THRONE_STARTPOS_ABS.y v.pos.y = v.pos.y + HADES_THRONE_STARTPOS_ABS.y
@ -233,7 +230,7 @@ for i,v in ipairs(HADES_THRONE_ABS) do
end end
HADES_THRONE_ENDPOS_ABS = {x=htx, y=hty, z=htz}]] HADES_THRONE_ENDPOS_ABS = {x=htx, y=hty, z=htz}]]
local c local c, nether_tree_nodes
local function define_contents() local function define_contents()
c = { c = {
ignore = minetest.get_content_id("ignore"), ignore = minetest.get_content_id("ignore"),
@ -244,7 +241,8 @@ local function define_contents()
diamond = minetest.get_content_id("default:stone_with_diamond"), diamond = minetest.get_content_id("default:stone_with_diamond"),
mese = minetest.get_content_id("default:mese"), mese = minetest.get_content_id("default:mese"),
glowstone = minetest.get_content_id("glow:stone"), --https://github.com/Zeg9/minetest-glow --https://github.com/Zeg9/minetest-glow
glowstone = minetest.get_content_id("glow:stone"),
nether_shroom = minetest.get_content_id("riesenpilz:nether_shroom"), nether_shroom = minetest.get_content_id("riesenpilz:nether_shroom"),
@ -274,6 +272,12 @@ local function define_contents()
nether_dirt_top = minetest.get_content_id("nether:dirt_top"), nether_dirt_top = minetest.get_content_id("nether:dirt_top"),
nether_dirt_bottom = minetest.get_content_id("nether:dirt_bottom"), nether_dirt_bottom = minetest.get_content_id("nether:dirt_bottom"),
} }
local trn = {c.nether_tree, c.nether_tree_corner, c.nether_leaves,
c.nether_fruit}
nether_tree_nodes = {}
for i = 1,#trn do
nether_tree_nodes[trn[i]] = true
end
end end
local pr, contents_defined local pr, contents_defined
@ -353,12 +357,14 @@ local structures_enabled = true
local vine_maxlength = math.floor(NETHER_HEIGHT/4+0.5) local vine_maxlength = math.floor(NETHER_HEIGHT/4+0.5)
-- Create the Nether -- Create the Nether
minetest.register_on_generated(function(minp, maxp, seed) minetest.register_on_generated(function(minp, maxp, seed)
if not (maxp.y >= NETHER_BOTTOM-100 and minp.y <= nether.start) then --avoid big map generation --avoid big map generation
if not (maxp.y >= NETHER_BOTTOM-100 and minp.y <= nether.start) then
return return
end end
local t1 = os.clock() local t1 = os.clock()
nether:inform("generates at: x=["..minp.x.."; "..maxp.x.."]; y=["..minp.y.."; "..maxp.y.."]; z=["..minp.z.."; "..maxp.z.."]", 2) nether:inform("generates at: x=["..minp.x.."; "..maxp.x.."]; y=[" ..
minp.y.."; "..maxp.y.."]; z=["..minp.z.."; "..maxp.z.."]", 2)
if not contents_defined then if not contents_defined then
define_contents() define_contents()
@ -380,24 +386,29 @@ minetest.register_on_generated(function(minp, maxp, seed)
local tab,num = {},1 local tab,num = {},1
local trees,num_trees = {},1 local trees,num_trees = {},1
--local perlin1 = minetest.get_perlin(13,3, 0.5, 50) --Get map specific perlin --local perlin1 = minetest.get_perlin(13,3, 0.5, 50)
--local perlin2 = minetest.get_perlin(133,3, 0.5, 10) --local perlin2 = minetest.get_perlin(133,3, 0.5, 10)
--local perlin3 = minetest.get_perlin(112,3, 0.5, 5) --local perlin3 = minetest.get_perlin(112,3, 0.5, 5)
local side_length = maxp.x - minp.x + 1 local side_length = maxp.x - minp.x + 1
local map_lengths_xyz = {x=side_length, y=side_length, z=side_length} local map_lengths_xyz = {x=side_length, y=side_length, z=side_length}
local pmap1 = minetest.get_perlin_map(perlins[1], map_lengths_xyz):get2dMap_flat({x=minp.x, y=minp.z}) local pmap1 = minetest.get_perlin_map(perlins[1], map_lengths_xyz
local pmap2 = minetest.get_perlin_map(perlins[2], map_lengths_xyz):get2dMap_flat({x=minp.x, y=minp.z}) ):get2dMap_flat{x=minp.x, y=minp.z}
local pmap3 = minetest.get_perlin_map(perlins[3], map_lengths_xyz):get2dMap_flat({x=minp.x, y=minp.z}) local pmap2 = minetest.get_perlin_map(perlins[2], map_lengths_xyz
):get2dMap_flat{x=minp.x, y=minp.z}
local pmap3 = minetest.get_perlin_map(perlins[3], map_lengths_xyz
):get2dMap_flat{x=minp.x, y=minp.z}
local forest_possible = maxp.y > f_h_min and minp.y < f_h_max local forest_possible = maxp.y > f_h_min and minp.y < f_h_max
--local pmap_f_bottom = minetest.get_perlin_map(perlins.forest_bottom, map_lengths_xyz):get2dMap_flat({x=minp.x, y=minp.z}) --local pmap_f_bottom = minetest.get_perlin_map(perlins.forest_bottom,
-- map_lengths_xyz):get2dMap_flat({x=minp.x, y=minp.z})
local perlin_f_bottom, pmap_f_top, strassx, strassz local perlin_f_bottom, pmap_f_top, strassx, strassz
if forest_possible then if forest_possible then
perlin_f_bottom = minetest.get_perlin(11, 3, 0.8, tmp2) perlin_f_bottom = minetest.get_perlin(11, 3, 0.8, tmp2)
pmap_f_top = minetest.get_perlin_map(perlins.forest_top, map_lengths_xyz):get2dMap_flat({x=minp.x, y=minp.z}) pmap_f_top = minetest.get_perlin_map(perlins.forest_top, map_lengths_xyz
):get2dMap_flat{x=minp.x, y=minp.z}
strassx = get_ws_list(2, minp.x) strassx = get_ws_list(2, minp.x)
strassz = get_ws_list(2, minp.z) strassz = get_ws_list(2, minp.z)
end end
@ -405,7 +416,8 @@ minetest.register_on_generated(function(minp, maxp, seed)
local num2, tab2 local num2, tab2
if buildings >= 1 then if buildings >= 1 then
num2 = 1 num2 = 1
tab2 = nether_weird_noise({x=minp.x, y=nether.buildings-79, z=minp.z}, pymg, 200, 8, 10, side_length-1) tab2 = nether_weird_noise({x=minp.x, y=nether.buildings-79, z=minp.z},
pymg, 200, 8, 10, side_length-1)
end end
local count = 0 local count = 0
@ -474,15 +486,19 @@ minetest.register_on_generated(function(minp, maxp, seed)
local f_bottom, f_top, is_forest, f_h_dirt local f_bottom, f_top, is_forest, f_h_dirt
if forest_possible then if forest_possible then
local p = {x=math.floor(x/f_bottom_scale), z=math.floor(z/f_bottom_scale)} local p = {x=math.floor(x/f_bottom_scale),
z=math.floor(z/f_bottom_scale)}
local pstr = p.x.." "..p.z local pstr = p.x.." "..p.z
if not f_perlins[pstr] then if not f_perlins[pstr] then
f_perlins[pstr] = math.floor(f_h_min+(math.abs(perlin_f_bottom:get2d({x=p.x, y=p.z})+1))*f_yscale_bottom+0.5) f_perlins[pstr] = math.floor(f_h_min + (math.abs(
perlin_f_bottom:get2d{x=p.x, y=p.z} + 1))
* f_yscale_bottom + 0.5)
end end
local top_noise = pmap_f_top[count]+1 local top_noise = pmap_f_top[count]+1
if top_noise < 0 then if top_noise < 0 then
top_noise = -top_noise/10 top_noise = -top_noise/10
--nether:inform("ERROR: (perlin noise) "..pmap_f_top[count].." is not inside [-1; 1]", 1) --nether:inform("ERROR: (perlin noise) "..
-- pmap_f_top[count].." is not inside [-1; 1]", 1)
end end
f_top = math.floor(f_h_max - top_noise*f_yscale_top + 0.5) f_top = math.floor(f_h_max - top_noise*f_yscale_top + 0.5)
f_bottom = f_perlins[pstr]+pr:next(0,f_bottom_scale-1) f_bottom = f_perlins[pstr]+pr:next(0,f_bottom_scale-1)
@ -538,10 +554,7 @@ minetest.register_on_generated(function(minp, maxp, seed)
elseif is_forest elseif is_forest
and y > f_bottom and y > f_bottom
and y < f_top then and y < f_top then
if not table_contains( if not nether_tree_nodes[d_p_addp] then
{c.nether_tree, c.nether_tree_corner, c.nether_leaves, c.nether_fruit},
d_p_addp
) then
data[vi] = c.air data[vi] = c.air
end end
elseif is_forest elseif is_forest
@ -847,7 +860,8 @@ function nether.grow_tree(pos, generated)
--collectgarbage() --collectgarbage()
for i = -1,h_stem+1 do for i = -1,h_stem+1 do
trunk_ps[#trunk_ps+1] = {pos.z, pos.y+i, pos.x, 0} -- par 0 because of leaves -- param2 explicitly set 0 due to possibly previous leaves node
trunk_ps[#trunk_ps+1] = {pos.z, pos.y+i, pos.x, 0}
end end
local manip = minetest.get_voxel_manip() local manip = minetest.get_voxel_manip()
@ -895,7 +909,8 @@ function nether.grow_tree(pos, generated)
if generated then if generated then
spam = 3 spam = 3
end end
nether:inform("a nether tree with "..trunk_count.." branch trunk nodes grew at ("..pos.x.."|"..pos.y.."|"..pos.z..")", spam, t1) nether:inform("a nether tree with " .. trunk_count ..
" branch trunk nodes grew at " .. minetest.pos_to_string(pos), spam, t1)
if not generated then if not generated then
local t1 = os.clock() local t1 = os.clock()
manip:update_map() manip:update_map()
@ -929,7 +944,8 @@ minetest.register_abm({
action = function(pos) action = function(pos)
if minetest.get_node({x=pos.x, y=pos.y+2, z=pos.z}).name == "air" if minetest.get_node({x=pos.x, y=pos.y+2, z=pos.z}).name == "air"
and minetest.get_node({x=pos.x, y=pos.y+1, z=pos.z}).name == "air" then and minetest.get_node({x=pos.x, y=pos.y+1, z=pos.z}).name == "air" then
local udata = minetest.registered_nodes[minetest.get_node({x=pos.x, y=pos.y-1, z=pos.z}).name] local udata = minetest.registered_nodes[
minetest.get_node{x=pos.x, y=pos.y-1, z=pos.z}.name]
if udata if udata
and udata.groups and udata.groups
and udata.groups.nether_dirt then and udata.groups.nether_dirt then
@ -950,13 +966,15 @@ minetest.register_abm({
return return
end end
pos.y = pos.y+1 pos.y = pos.y+1
if (minetest.get_node_light(pos) or 16) > 7 then --mushrooms grow at dark places --mushrooms grow at dark places
if (minetest.get_node_light(pos) or 16) > 7 then
return return
end end
if minetest.get_node(pos).name == "air" then if minetest.get_node(pos).name == "air" then
minetest.set_node(pos, {name="riesenpilz:nether_shroom"}) minetest.set_node(pos, {name="riesenpilz:nether_shroom"})
pos.y = pos.y-1 pos.y = pos.y-1
minetest.set_node(pos, {name="nether:netherrack_soil", param2=par2-1}) minetest.set_node(pos,
{name="nether:netherrack_soil", param2=par2-1})
end end
end end
}) })
@ -1020,7 +1038,8 @@ minetest.register_abm({
}) })
minetest.register_privilege("nether", "Allows sending players to nether and extracting them") minetest.register_privilege("nether",
"Allows sending players to nether and extracting them")
dofile(path.."/crafting.lua") dofile(path.."/crafting.lua")
dofile(path.."/portal.lua") dofile(path.."/portal.lua")