forked from mtcontrib/moretrees
Add luacheck and fix warnings
This commit is contained in:
parent
dd36f8b63e
commit
ea92403fa3
33
.luacheckrc
33
.luacheckrc
@ -1,17 +1,30 @@
|
||||
std = "lua51+minetest"
|
||||
unused_args = false
|
||||
allow_defined_top = true
|
||||
max_line_length = 999
|
||||
max_comment_line_length = 999
|
||||
|
||||
stds.minetest = {
|
||||
read_globals = {
|
||||
"DIR_DELIM",
|
||||
"minetest", "core",
|
||||
"dump",
|
||||
"vector", "nodeupdate",
|
||||
"VoxelManip", "VoxelArea",
|
||||
"PseudoRandom", "ItemStack",
|
||||
"intllib",
|
||||
"minetest",
|
||||
"vector",
|
||||
"VoxelManip",
|
||||
"VoxelArea",
|
||||
"PseudoRandom",
|
||||
"ItemStack",
|
||||
"default",
|
||||
table = { fields = { "copy", "getn" } },
|
||||
"biome_lib",
|
||||
"stairs", "stairsplus",
|
||||
table = {
|
||||
fields = {
|
||||
"copy",
|
||||
},
|
||||
},
|
||||
"dump",
|
||||
}
|
||||
}
|
||||
|
||||
read_globals = {
|
||||
"biome_lib",
|
||||
"stairsplus",
|
||||
"stairs",
|
||||
"doors",
|
||||
}
|
||||
|
@ -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,13 +84,16 @@ 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
|
||||
minetest.swap_node(gen.pos, {name = "moretrees:coconut_3"})
|
||||
@ -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
|
||||
|
@ -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
|
||||
|
||||
|
@ -1,9 +0,0 @@
|
||||
default
|
||||
biome_lib
|
||||
vessels
|
||||
doors?
|
||||
stairs?
|
||||
moreblocks?
|
||||
intllib?
|
||||
farming?
|
||||
|
@ -1 +0,0 @@
|
||||
This mod adds a whole bunch of new types of trees to the game
|
2
mod.conf
2
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
|
||||
|
@ -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,
|
||||
})
|
||||
|
@ -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"})
|
||||
|
@ -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,
|
||||
|
Loading…
Reference in New Issue
Block a user