diff --git a/changelog.txt b/changelog.txt index 531b61d..40a3563 100644 --- a/changelog.txt +++ b/changelog.txt @@ -4,6 +4,7 @@ v1.1 - added sound when hit - fixed entity vertical positioning - fixed tnt:boom node left after explosion +- added setting to customize spawn nodes v1.0 ---- diff --git a/settings.lua b/settings.lua index 8a77e7b..37cc107 100644 --- a/settings.lua +++ b/settings.lua @@ -106,3 +106,11 @@ sneeker.spawn_maxheight = tonumber(core.settings:get("sneeker.spawn_maxheight") -- @settype int -- @default 1 sneeker.spawn_mapblock_limit = tonumber(core.settings:get("sneeker.spawn_mapblock_limit") or 1) + +--- Comma-separated list of nodes on which sneeker can spawn. +-- +-- @setting sneeker.spawn_nodes +-- @settype string +-- @default default:dirt_with_dry_grass,default:dry_dirt,default:dry_dirt_with_dry_grass,default:desert_sand,nether:rack +sneeker.spawn_nodes = core.settings:get("sneeker.spawn_nodes") or "default:dirt_with_dry_grass,default:dry_dirt,default:dry_dirt_with_dry_grass,default:desert_sand,nether:rack" +sneeker.spawn_nodes = sneeker.spawn_nodes:trim() diff --git a/settingtypes.txt b/settingtypes.txt index c3d53ba..3b52223 100644 --- a/settingtypes.txt +++ b/settingtypes.txt @@ -50,3 +50,6 @@ sneeker.spawn_maxheight (Sneeker max spawn height) int 31000 # Limits the number of entities that can spawn per mapblock (16x16x16). sneeker.spawn_mapblock_limit (Sneeker spawn limit) int 1 + +# Comma-separated list of nodes on which sneeker can spawn. +sneeker.spawn_nodes (Sneeker spawn nodes) string default:dirt_with_dry_grass,default:dry_dirt,default:dry_dirt_with_dry_grass,default:desert_sand,nether:rack diff --git a/spawn.lua b/spawn.lua index 65803cb..f282480 100644 --- a/spawn.lua +++ b/spawn.lua @@ -1,19 +1,20 @@ -local spawn_nodes = { - "default:dirt_with_dry_grass", - "default:dry_dirt", - "default:dry_dirt_with_dry_grass", - "default:desert_sand", -} - -if core.global_exists("nether") then - table.insert(spawn_nodes, "nether:rack") +local spawn_nodes = {} +if sneeker.spawn_nodes ~= "" then + if not sneeker.spawn_nodes:find(",") then + table.insert(spawn_nodes, sneeker.spawn_nodes) + else + for _, node in ipairs(sneeker.spawn_nodes:split(",")) do + local node = node:trim() + if node ~= "" then + table.insert(spawn_nodes, node) + end + end + end end -for _, node_name in ipairs(spawn_nodes) do - if not core.registered_nodes[node_name] then - sneeker.log("warning", "Invalid node for spawn: " .. node_name) - end +if #spawn_nodes == 0 then + sneeker.log("warning", "no spawning nodes set, cannot spawn") end