diff --git a/.luacheckrc b/.luacheckrc index 2933f30..459b2e2 100644 --- a/.luacheckrc +++ b/.luacheckrc @@ -1,17 +1,30 @@ +std = "lua51+minetest" unused_args = false allow_defined_top = true +max_line_length = 999 +max_comment_line_length = 999 -read_globals = { - "DIR_DELIM", - "minetest", "core", - "dump", - "vector", "nodeupdate", - "VoxelManip", "VoxelArea", - "PseudoRandom", "ItemStack", - "intllib", - "default", - table = { fields = { "copy", "getn" } }, - "biome_lib", - "stairs", "stairsplus", +stds.minetest = { + read_globals = { + "minetest", + "vector", + "VoxelManip", + "VoxelArea", + "PseudoRandom", + "ItemStack", + "default", + table = { + fields = { + "copy", + }, + }, + "dump", + } } +read_globals = { + "biome_lib", + "stairsplus", + "stairs", + "doors", +} diff --git a/cocos_palm.lua b/cocos_palm.lua index 391819b..d8273b5 100644 --- a/cocos_palm.lua +++ b/cocos_palm.lua @@ -23,7 +23,11 @@ end ftrunk.drop = "moretrees:palm_trunk" gftrunk.drop = "moretrees:palm_trunk" ftrunk.after_destruct = function(pos, oldnode) - local coconuts = minetest.find_nodes_in_area({x=pos.x-1, y=pos.y, z=pos.z-1}, {x=pos.x+1, y=pos.y, z=pos.z+1}, {"group:moretrees_coconut"}) + local coconuts = minetest.find_nodes_in_area( + {x=pos.x-1, y=pos.y, z=pos.z-1}, + {x=pos.x+1, y=pos.y, z=pos.z+1}, + {"group:moretrees_coconut"} + ) for _,coconutpos in pairs(coconuts) do -- minetest.dig_node(coconutpos) does not cause nearby coconuts to be dropped :-( ... --minetest.dig_node(coconutpos) @@ -46,7 +50,11 @@ local coconut_regrow_abm_spec = { interval = moretrees.coconut_flower_interval, chance = moretrees.coconut_flower_chance, action = function(pos, node, active_object_count, active_object_count_wider) - local coconuts = minetest.find_nodes_in_area({x=pos.x-1, y=pos.y, z=pos.z-1}, {x=pos.x+1, y=pos.y, z=pos.z+1}, "group:moretrees_coconut") + local coconuts = minetest.find_nodes_in_area( + {x=pos.x-1, y=pos.y, z=pos.z-1}, + {x=pos.x+1, y=pos.y, z=pos.z+1}, + "group:moretrees_coconut" + ) -- Expected growth interval increases exponentially with number of coconuts already hanging. -- Also: if more coconuts are hanging, the chance of picking an empty spot decreases as well... if math.random(2^#coconuts) <= 2 then @@ -76,15 +84,18 @@ minetest.register_abm({ chance = 1, action = function(pos, node, active_object_count, active_object_count_wider) minetest.swap_node(pos, {name="moretrees:palm_fruit_trunk"}) - local poslist = minetest.find_nodes_in_area({x=pos.x-1, y=pos.y, z=pos.z-1}, {x=pos.x+1, y=pos.y, z=pos.z+1}, "air") + local poslist = minetest.find_nodes_in_area( + {x=pos.x-1, y=pos.y, z=pos.z-1}, + {x=pos.x+1, y=pos.y, z=pos.z+1}, + "air" + ) local genlist = {} for k,v in pairs(poslist) do genlist[k] = {x = math.random(100), pos = v} end table.sort(genlist, function(a, b) return a.x < b.x; end) - local gen local count = 0 - for _,gen in pairs(genlist) do + for _, gen in pairs(genlist) do minetest.swap_node(gen.pos, {name = "moretrees:coconut_3"}) count = count + 1 if count == 4 then @@ -109,7 +120,8 @@ local coconut_growfn = function(pos, elapsed) -- Drop coconuts (i.e. remove them), so that new coconuts can grow. -- Coconuts will drop as items with a small chance if math.random(coconut_drop_ichance) == 1 then - if moretrees.coconut_item_drop_ichance > 0 and math.random(moretrees.coconut_item_drop_ichance) == 1 then + if moretrees.coconut_item_drop_ichance > 0 + and math.random(moretrees.coconut_item_drop_ichance) == 1 then local items = minetest.get_node_drops(minetest.get_node(pos).name) for _, itemname in pairs(items) do minetest.add_item(pos, itemname) @@ -190,55 +202,95 @@ if moretrees.coconuts_convert_existing_palms then local leaves local coconuts -- One regular trunk must be adjacent to the coconut - trunks = minetest.find_nodes_in_area({x=pos.x-1, y=pos.y, z=pos.z-1}, {x=pos.x+1, y=pos.y, z=pos.z+1}, "moretrees:palm_trunk") + trunks = minetest.find_nodes_in_area( + {x=pos.x-1, y=pos.y, z=pos.z-1}, + {x=pos.x+1, y=pos.y, z=pos.z+1}, + "moretrees:palm_trunk" + ) if #trunks ~= 1 then return end local tpos = trunks[1] -- 1 or 2 other trunks must be one level below to the trunk being converted. - trunks = minetest.find_nodes_in_area({x=tpos.x-1, y=tpos.y-1, z=tpos.z-1}, {x=tpos.x+1, y=tpos.y-1, z=tpos.z+1}, "moretrees:palm_trunk") + trunks = minetest.find_nodes_in_area( + {x=tpos.x-1, y=tpos.y-1, z=tpos.z-1}, + {x=tpos.x+1, y=tpos.y-1, z=tpos.z+1}, + "moretrees:palm_trunk" + ) if #trunks < 1 or #trunks > 2 then return end -- 1 or 2 other trunks must be two levels below to the trunk being converted. - trunks = minetest.find_nodes_in_area({x=tpos.x-1, y=tpos.y-2, z=tpos.z-1}, {x=tpos.x+1, y=tpos.y-2, z=tpos.z+1}, "moretrees:palm_trunk") + trunks = minetest.find_nodes_in_area( + {x=tpos.x-1, y=tpos.y-2, z=tpos.z-1}, + {x=tpos.x+1, y=tpos.y-2, z=tpos.z+1}, + "moretrees:palm_trunk" + ) if #trunks < 1 or #trunks > 2 then return end -- 1 or 2 trunks must at the level of the trunk being converted. - cvtrunks = minetest.find_nodes_in_area({x=tpos.x-1, y=tpos.y, z=tpos.z-1}, {x=tpos.x+1, y=tpos.y, z=tpos.z+1}, "moretrees:palm_trunk") + cvtrunks = minetest.find_nodes_in_area( + {x=tpos.x-1, y=tpos.y, z=tpos.z-1}, + {x=tpos.x+1, y=tpos.y, z=tpos.z+1}, + "moretrees:palm_trunk" + ) if #cvtrunks < 1 or #cvtrunks > 2 then return end -- No trunks may be one level above the trunk being converted. - trunks = minetest.find_nodes_in_area({x=tpos.x-1, y=tpos.y+1, z=tpos.z-1}, {x=tpos.x+1, y=tpos.y+1, z=tpos.z+1}, "moretrees:palm_trunk") + trunks = minetest.find_nodes_in_area( + {x=tpos.x-1, y=tpos.y+1, z=tpos.z-1}, + {x=tpos.x+1, y=tpos.y+1, z=tpos.z+1}, + "moretrees:palm_trunk" + ) if #trunks ~= 0 then return end -- Leaves must be one level above the trunk being converted. - leaves = minetest.find_nodes_in_area({x=tpos.x-1, y=tpos.y+1, z=tpos.z-1}, {x=tpos.x+1, y=tpos.y+1, z=tpos.z+1}, "moretrees:palm_leaves") + leaves = minetest.find_nodes_in_area( + {x=tpos.x-1, y=tpos.y+1, z=tpos.z-1}, + {x=tpos.x+1, y=tpos.y+1, z=tpos.z+1}, + "moretrees:palm_leaves" + ) if #leaves == 0 then return end -- Leaves must be two levels above the trunk being converted. - leaves = minetest.find_nodes_in_area({x=tpos.x-1, y=tpos.y+2, z=tpos.z-1}, {x=tpos.x+1, y=tpos.y+2, z=tpos.z+1}, "moretrees:palm_leaves") + leaves = minetest.find_nodes_in_area( + {x=tpos.x-1, y=tpos.y+2, z=tpos.z-1}, + {x=tpos.x+1, y=tpos.y+2, z=tpos.z+1}, + "moretrees:palm_leaves" + ) if #leaves == 0 then return end -- No cocos fruit trunk may already be adjacent to the coconut - trunks = minetest.find_nodes_in_area({x=pos.x-1, y=pos.y, z=pos.z-1}, {x=pos.x+1, y=pos.y, z=pos.z+1}, "moretrees:palm_fruit_trunk") + trunks = minetest.find_nodes_in_area( + {x=pos.x-1, y=pos.y, z=pos.z-1}, + {x=pos.x+1, y=pos.y, z=pos.z+1}, + "moretrees:palm_fruit_trunk" + ) if #trunks ~= 0 then return end -- No cocos fruit trunk may be adjacent to or below the trunk being converted. - trunks = minetest.find_nodes_in_area({x=tpos.x-1, y=tpos.y-2, z=tpos.z-1}, {x=tpos.x+1, y=tpos.y, z=tpos.z+1}, "moretrees:palm_fruit_trunk") + trunks = minetest.find_nodes_in_area( + {x=tpos.x-1, y=tpos.y-2, z=tpos.z-1}, + {x=tpos.x+1, y=tpos.y, z=tpos.z+1}, + "moretrees:palm_fruit_trunk" + ) if #trunks ~= 0 then return end -- Convert trunk and all coconuts nearby. Maybe convert 2 trunks, just in case... - for _, tpos in pairs(cvtrunks) do - minetest.swap_node(tpos, {name = "moretrees:palm_fruit_trunk"}) - coconuts = minetest.find_nodes_in_area({x=tpos.x-1, y=tpos.y, z=tpos.z-1}, {x=tpos.x+1, y=tpos.y, z=tpos.z+1}, "moretrees:coconut") + for _, tpos_1 in pairs(cvtrunks) do + minetest.swap_node(tpos_1, {name = "moretrees:palm_fruit_trunk"}) + coconuts = minetest.find_nodes_in_area( + {x=tpos_1.x-1, y=tpos_1.y, z=tpos_1.z-1}, + {x=tpos_1.x+1, y=tpos_1.y, z=tpos_1.z+1}, + "moretrees:coconut" + ) for _, coconutpos in pairs(coconuts) do minetest.swap_node(coconutpos, {name = "moretrees:coconut_3"}) end diff --git a/date_palm.lua b/date_palm.lua index be694a9..4de81f0 100644 --- a/date_palm.lua +++ b/date_palm.lua @@ -44,7 +44,11 @@ for k,v in pairs(trunk.tiles) do end ftrunk.drop = "moretrees:date_palm_trunk" ftrunk.after_destruct = function(pos, oldnode) - local dates = minetest.find_nodes_in_area({x=pos.x-2, y=pos.y, z=pos.z-2}, {x=pos.x+2, y=pos.y, z=pos.z+2}, {"group:moretrees_dates"}) + local dates = minetest.find_nodes_in_area( + {x=pos.x-2, y=pos.y, z=pos.z-2}, + {x=pos.x+2, y=pos.y, z=pos.z+2}, + {"group:moretrees_dates"} + ) for _,datespos in pairs(dates) do -- minetest.dig_node(datespos) does not cause nearby dates to be dropped :-( ... local items = minetest.get_node_drops(minetest.get_node(datespos).name) @@ -120,8 +124,11 @@ minetest.register_abm({ type = "m" minetest.swap_node(pos, {name="moretrees:date_palm_mfruit_trunk"}) end - local dates1 = minetest.find_nodes_in_area({x=pos.x-1, y=pos.y, z=pos.z-1}, {x=pos.x+1, y=pos.y, z=pos.z+1}, "air") - local genpos + local dates1 = minetest.find_nodes_in_area( + {x=pos.x-1, y=pos.y, z=pos.z-1}, + {x=pos.x+1, y=pos.y, z=pos.z+1}, + "air" + ) for _,genpos in pairs(dates1) do if math.random(100) <= 20 then if type == "m" then @@ -131,7 +138,11 @@ minetest.register_abm({ end end end - local dates2 = minetest.find_nodes_in_area({x=pos.x-2, y=pos.y, z=pos.z-2}, {x=pos.x+2, y=pos.y, z=pos.z+2}, "air") + local dates2 = minetest.find_nodes_in_area( + {x=pos.x-2, y=pos.y, z=pos.z-2}, + {x=pos.x+2, y=pos.y, z=pos.z+2}, + "air" + ) for _,genpos in pairs(dates2) do if math.random(100) <= 5 then if type == "m" then @@ -195,7 +206,7 @@ local function find_fruit_trunks_near(ftpos, sect) local r = moretrees.dates_pollination_distance + 2 * math.sqrt(2) local sect_hr = math.floor(r / 3 + 0.9999) local sect_vr = math.floor(r / 2 + 0.9999) - local t0us = core.get_us_time() + local t0us = minetest.get_us_time() local t0s = os.time() -- Compute elapsed time since last search. @@ -266,7 +277,7 @@ local function find_fruit_trunks_near(ftpos, sect) end -- Update search statistics - local t1us = core.get_us_time() + local t1us = minetest.get_us_time() if t1us < t0us then -- Wraparound. Assume the search lasted less than 2^32 microseconds (~71 min) -- (so no need to apply another correction) @@ -306,7 +317,7 @@ minetest.register_chatcommand("dates_stats", { params = "|chat|log|reset", privs = { server = true }, func = function(name, param) - param = string.lower(string.trim(param)) + param = string.lower(param:gsub("%s+", "")) if param == "" or param == "chat" then return dates_print_search_stats(false) elseif param == "log" then @@ -526,7 +537,6 @@ end local dates_growfn = function(pos, elapsed) local node = minetest.get_node(pos) local delay = moretrees.dates_grow_interval - local r = moretrees.dates_pollination_distance local action if not node then return @@ -594,15 +604,16 @@ local dates_growfn = function(pos, elapsed) return action end +--[[ -- Alternate growth function for dates. -- It calls the primary growth function, but also measures CPU time consumed. -- Use this function to analyze date growing performance. local stat = {} stat.count = 0 local dates_growfn_profiling = function(pos, elapsed) - local t0 = core.get_us_time() + local t0 = minetest.get_us_time() local action = dates_growfn(pos, elapsed) - local t1 = core.get_us_time() + local t1 = minetest.get_us_time() if t1 < t0 then t1 = t1 + 2^32 end @@ -656,6 +667,7 @@ local dates_growfn_profiling = function(pos, elapsed) "TOTAL", count, sum/count)) end end +--]] -- Register dates diff --git a/depends.txt b/depends.txt deleted file mode 100644 index 1636685..0000000 --- a/depends.txt +++ /dev/null @@ -1,9 +0,0 @@ -default -biome_lib -vessels -doors? -stairs? -moreblocks? -intllib? -farming? - diff --git a/description.txt b/description.txt deleted file mode 100644 index 7c86723..0000000 --- a/description.txt +++ /dev/null @@ -1 +0,0 @@ -This mod adds a whole bunch of new types of trees to the game diff --git a/mod.conf b/mod.conf index fe9eac5..da7e493 100644 --- a/mod.conf +++ b/mod.conf @@ -1,4 +1,4 @@ name = moretrees depends = default, biome_lib, vessels -optional_depends = doors, stairs, moreblocks, intllib, farming +optional_depends = doors, stairs, moreblocks, farming min_minetest_version = 5.2.0 diff --git a/node_defs.lua b/node_defs.lua index 0fbec2c..4cf6f75 100644 --- a/node_defs.lua +++ b/node_defs.lua @@ -327,7 +327,7 @@ for i in ipairs(moretrees.treelist) do chance = 1, action = function(pos, node, active_object_count, active_object_count_wider) local fdir = node.param2 or 0 - nfdir = dirs2[fdir+1] + local nfdir = dirs2[fdir+1] minetest.add_node(pos, {name = "moretrees:"..treename.."_trunk", param2 = nfdir}) end, }) @@ -490,7 +490,6 @@ minetest.register_node("moretrees:rubber_tree_trunk_empty", { "moretrees_rubber_tree_trunk_top.png", "moretrees_rubber_tree_trunk_empty.png" }, - is_ground_content = true, groups = {tree=1,snappy=1,choppy=2,oddly_breakable_by_hand=1,flammable=2}, sounds = default.node_sound_wood_defaults(), paramtype2 = "facedir", @@ -504,7 +503,7 @@ minetest.register_abm({ chance = 1, action = function(pos, node, active_object_count, active_object_count_wider) local fdir = node.param2 or 0 - nfdir = dirs2[fdir+1] + local nfdir = dirs2[fdir+1] minetest.add_node(pos, {name = "moretrees:rubber_tree_trunk_empty", param2 = nfdir}) end, }) diff --git a/screenshot.lua b/screenshot.lua index cb2ad7a..28a8c25 100644 --- a/screenshot.lua +++ b/screenshot.lua @@ -31,7 +31,7 @@ index 8189ffd..afd4644 100644 @@ -225,9 +225,12 @@ moretrees.ct_rules_b1 = "[-FBf][+FBf]" moretrees.ct_rules_a2 = "FF[FF][&&-FBF][&&+FBF][&&---FBF][&&+++FBF]F/A" moretrees.ct_rules_b2 = "[-fB][+fB]" - + +local jleaves = 1 function moretrees.grow_jungletree(pos) local r1 = math.random(2) @@ -40,11 +40,11 @@ index 8189ffd..afd4644 100644 + jleaves = jleaves % 2 + 1 if r1 == 1 then moretrees.jungletree_model.leaves2 = "moretrees:jungletree_leaves_red" - else + else @@ -235,6 +238,7 @@ function moretrees.grow_jungletree(pos) end moretrees.jungletree_model.leaves2_chance = math.random(25, 75) - + + r2=3 if r2 == 1 then moretrees.jungletree_model.trunk_type = "single" @@ -62,7 +62,7 @@ minetest.register_chatcommand("make-scene", { minetest.place_node({x=780, y=30, z=-276}, {name="default:obsidian"}) for z = -360, -300 do - dy=2 + local dy=2 for x = 630 + (-z - 360)/3, 660 + (-z - 300)/3 do for y = 5, 22 do minetest.place_node({x=x, y=y, z=z}, {name="default:desert_stone"}) diff --git a/tree_models.lua b/tree_models.lua index 879a32a..eb6541e 100644 --- a/tree_models.lua +++ b/tree_models.lua @@ -49,7 +49,6 @@ moretrees.poplar_model={ rules_b="[[T]&&G++f++ff++ff++ff++f--]G", rules_c="[[T]&&G++f++ff++ff++ff++f--G++[d]G[d]G++G[d]G[d]G[d]G++G[d]G[d]G[d]G++G[d]G[d]G[d]G++G[d]G]G", rules_d="f", - trunk="air", trunk="moretrees:poplar_trunk", leaves="moretrees:poplar_leaves", angle=45,