Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Browse files
Browse the repository at this point in the history
Split init.lua into several files
- Loading branch information
Showing
8 changed files
with
2,767 additions
and
2,759 deletions.
There are no files selected for viewing
Large diffs are not rendered by default.
Oops, something went wrong.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,91 @@ | ||
-- mods/default/craftitems.lua | ||
|
||
minetest.register_craftitem("default:stick", { | ||
description = "Stick", | ||
inventory_image = "default_stick.png", | ||
}) | ||
|
||
minetest.register_craftitem("default:paper", { | ||
description = "Paper", | ||
inventory_image = "default_paper.png", | ||
}) | ||
|
||
minetest.register_craftitem("default:book", { | ||
description = "Book", | ||
inventory_image = "default_book.png", | ||
}) | ||
|
||
minetest.register_craftitem("default:coal_lump", { | ||
description = "Coal Lump", | ||
inventory_image = "default_coal_lump.png", | ||
}) | ||
|
||
minetest.register_craftitem("default:iron_lump", { | ||
description = "Iron Lump", | ||
inventory_image = "default_iron_lump.png", | ||
}) | ||
|
||
minetest.register_craftitem("default:copper_lump", { | ||
description = "Copper Lump", | ||
inventory_image = "default_copper_lump.png", | ||
}) | ||
|
||
minetest.register_craftitem("default:mese_crystal", { | ||
description = "Mese Crystal", | ||
inventory_image = "default_mese_crystal.png", | ||
}) | ||
|
||
minetest.register_craftitem("default:gold_lump", { | ||
description = "Gold Lump", | ||
inventory_image = "default_gold_lump.png", | ||
}) | ||
|
||
minetest.register_craftitem("default:diamond", { | ||
description = "Diamond", | ||
inventory_image = "default_diamond.png", | ||
}) | ||
|
||
minetest.register_craftitem("default:clay_lump", { | ||
description = "Clay Lump", | ||
inventory_image = "default_clay_lump.png", | ||
}) | ||
|
||
minetest.register_craftitem("default:steel_ingot", { | ||
description = "Steel Ingot", | ||
inventory_image = "default_steel_ingot.png", | ||
}) | ||
|
||
minetest.register_craftitem("default:copper_ingot", { | ||
description = "Copper Ingot", | ||
inventory_image = "default_copper_ingot.png", | ||
}) | ||
|
||
minetest.register_craftitem("default:bronze_ingot", { | ||
description = "Bronze Ingot", | ||
inventory_image = "default_bronze_ingot.png", | ||
}) | ||
|
||
minetest.register_craftitem("default:gold_ingot", { | ||
description = "Gold Ingot", | ||
inventory_image = "default_gold_ingot.png" | ||
}) | ||
|
||
minetest.register_craftitem("default:mese_crystal_fragment", { | ||
description = "Mese Crystal Fragment", | ||
inventory_image = "default_mese_crystal_fragment.png", | ||
}) | ||
|
||
minetest.register_craftitem("default:clay_brick", { | ||
description = "Clay Brick", | ||
inventory_image = "default_clay_brick.png", | ||
}) | ||
|
||
minetest.register_craftitem("default:scorched_stuff", { | ||
description = "Scorched Stuff", | ||
inventory_image = "default_scorched_stuff.png", | ||
}) | ||
|
||
minetest.register_craftitem("default:obsidian_shard", { | ||
description = "Obsidian Shard", | ||
inventory_image = "default_obsidian_shard.png", | ||
}) |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,301 @@ | ||
-- mods/default/functions.lua | ||
|
||
-- | ||
-- Sounds | ||
-- | ||
|
||
function default.node_sound_defaults(table) | ||
table = table or {} | ||
table.footstep = table.footstep or | ||
{name="", gain=1.0} | ||
table.dug = table.dug or | ||
{name="default_dug_node", gain=1.0} | ||
table.place = table.place or | ||
{name="default_place_node", gain=0.5} | ||
return table | ||
end | ||
|
||
function default.node_sound_stone_defaults(table) | ||
table = table or {} | ||
table.footstep = table.footstep or | ||
{name="default_hard_footstep", gain=0.2} | ||
default.node_sound_defaults(table) | ||
return table | ||
end | ||
|
||
function default.node_sound_dirt_defaults(table) | ||
table = table or {} | ||
table.footstep = table.footstep or | ||
{name="", gain=0.5} | ||
--table.dug = table.dug or | ||
-- {name="default_dirt_break", gain=0.5} | ||
default.node_sound_defaults(table) | ||
return table | ||
end | ||
|
||
function default.node_sound_sand_defaults(table) | ||
table = table or {} | ||
table.footstep = table.footstep or | ||
{name="default_grass_footstep", gain=0.25} | ||
--table.dug = table.dug or | ||
-- {name="default_dirt_break", gain=0.25} | ||
table.dug = table.dug or | ||
{name="", gain=0.25} | ||
default.node_sound_defaults(table) | ||
return table | ||
end | ||
|
||
function default.node_sound_wood_defaults(table) | ||
table = table or {} | ||
table.footstep = table.footstep or | ||
{name="default_hard_footstep", gain=0.3} | ||
default.node_sound_defaults(table) | ||
return table | ||
end | ||
|
||
function default.node_sound_leaves_defaults(table) | ||
table = table or {} | ||
table.footstep = table.footstep or | ||
{name="default_grass_footstep", gain=0.25} | ||
table.dig = table.dig or | ||
{name="default_dig_crumbly", gain=0.4} | ||
table.dug = table.dug or | ||
{name="", gain=1.0} | ||
default.node_sound_defaults(table) | ||
return table | ||
end | ||
|
||
function default.node_sound_glass_defaults(table) | ||
table = table or {} | ||
table.footstep = table.footstep or | ||
{name="default_hard_footstep", gain=0.25} | ||
table.dug = table.dug or | ||
{name="default_break_glass", gain=1.0} | ||
default.node_sound_defaults(table) | ||
return table | ||
end | ||
|
||
-- | ||
-- Legacy | ||
-- | ||
|
||
function default.spawn_falling_node(p, nodename) | ||
spawn_falling_node(p, nodename) | ||
end | ||
|
||
-- Horrible crap to support old code | ||
-- Don't use this and never do what this does, it's completely wrong! | ||
-- (More specifically, the client and the C++ code doesn't get the group) | ||
function default.register_falling_node(nodename, texture) | ||
minetest.log("error", debug.traceback()) | ||
minetest.log('error', "WARNING: default.register_falling_node is deprecated") | ||
if minetest.registered_nodes[nodename] then | ||
minetest.registered_nodes[nodename].groups.falling_node = 1 | ||
end | ||
end | ||
|
||
-- | ||
-- Global callbacks | ||
-- | ||
|
||
-- Global environment step function | ||
function on_step(dtime) | ||
-- print("on_step") | ||
end | ||
minetest.register_globalstep(on_step) | ||
|
||
function on_placenode(p, node) | ||
--print("on_placenode") | ||
end | ||
minetest.register_on_placenode(on_placenode) | ||
|
||
function on_dignode(p, node) | ||
--print("on_dignode") | ||
end | ||
minetest.register_on_dignode(on_dignode) | ||
|
||
function on_punchnode(p, node) | ||
end | ||
minetest.register_on_punchnode(on_punchnode) | ||
|
||
-- | ||
-- Lavacooling | ||
-- | ||
|
||
default.cool_lava_source = function(pos) | ||
minetest.env:set_node(pos, {name="default:obsidian"}) | ||
end | ||
|
||
default.cool_lava_flowing = function(pos) | ||
minetest.env:set_node(pos, {name="default:stone"}) | ||
end | ||
|
||
minetest.register_abm({ | ||
nodenames = {"default:lava_flowing"}, | ||
neighbors = {"group:water"}, | ||
interval = 1, | ||
chance = 1, | ||
action = function(pos, node, active_object_count, active_object_count_wider) | ||
default.cool_lava_flowing(pos, node, active_object_count, active_object_count_wider) | ||
end, | ||
}) | ||
|
||
minetest.register_abm({ | ||
nodenames = {"default:lava_source"}, | ||
neighbors = {"group:water"}, | ||
interval = 1, | ||
chance = 1, | ||
action = function(pos, node, active_object_count, active_object_count_wider) | ||
default.cool_lava_source(pos, node, active_object_count, active_object_count_wider) | ||
end, | ||
}) | ||
|
||
-- | ||
-- Papyrus and cactus growing | ||
-- | ||
|
||
minetest.register_abm({ | ||
nodenames = {"default:cactus"}, | ||
neighbors = {"group:sand"}, | ||
interval = 50, | ||
chance = 20, | ||
action = function(pos, node) | ||
pos.y = pos.y-1 | ||
local name = minetest.env:get_node(pos).name | ||
if minetest.get_item_group(name, "sand") ~= 0 then | ||
pos.y = pos.y+1 | ||
local height = 0 | ||
while minetest.env:get_node(pos).name == "default:cactus" and height < 4 do | ||
height = height+1 | ||
pos.y = pos.y+1 | ||
end | ||
if height < 4 then | ||
if minetest.env:get_node(pos).name == "air" then | ||
minetest.env:set_node(pos, {name="default:cactus"}) | ||
end | ||
end | ||
end | ||
end, | ||
}) | ||
|
||
minetest.register_abm({ | ||
nodenames = {"default:papyrus"}, | ||
neighbors = {"default:dirt", "default:dirt_with_grass"}, | ||
interval = 50, | ||
chance = 20, | ||
action = function(pos, node) | ||
pos.y = pos.y-1 | ||
local name = minetest.env:get_node(pos).name | ||
if name == "default:dirt" or name == "default:dirt_with_grass" then | ||
if minetest.env:find_node_near(pos, 3, {"group:water"}) == nil then | ||
return | ||
end | ||
pos.y = pos.y+1 | ||
local height = 0 | ||
while minetest.env:get_node(pos).name == "default:papyrus" and height < 4 do | ||
height = height+1 | ||
pos.y = pos.y+1 | ||
end | ||
if height < 4 then | ||
if minetest.env:get_node(pos).name == "air" then | ||
minetest.env:set_node(pos, {name="default:papyrus"}) | ||
end | ||
end | ||
end | ||
end, | ||
}) | ||
|
||
-- | ||
-- Leafdecay | ||
-- | ||
|
||
-- To enable leaf decay for a node, add it to the "leafdecay" group. | ||
-- | ||
-- The rating of the group determines how far from a node in the group "tree" | ||
-- the node can be without decaying. | ||
-- | ||
-- If param2 of the node is ~= 0, the node will always be preserved. Thus, if | ||
-- the player places a node of that kind, you will want to set param2=1 or so. | ||
|
||
default.leafdecay_trunk_cache = {} | ||
default.leafdecay_enable_cache = true | ||
-- Spread the load of finding trunks | ||
default.leafdecay_trunk_find_allow_accumulator = 0 | ||
|
||
minetest.register_globalstep(function(dtime) | ||
local finds_per_second = 5000 | ||
default.leafdecay_trunk_find_allow_accumulator = | ||
math.floor(dtime * finds_per_second) | ||
end) | ||
|
||
minetest.register_abm({ | ||
nodenames = {"group:leafdecay"}, | ||
neighbors = {"air", "group:liquid"}, | ||
-- A low interval and a high inverse chance spreads the load | ||
interval = 2, | ||
chance = 5, | ||
|
||
action = function(p0, node, _, _) | ||
--print("leafdecay ABM at "..p0.x..", "..p0.y..", "..p0.z..")") | ||
local do_preserve = false | ||
local d = minetest.registered_nodes[node.name].groups.leafdecay | ||
if not d or d == 0 then | ||
--print("not groups.leafdecay") | ||
return | ||
end | ||
local n0 = minetest.env:get_node(p0) | ||
if n0.param2 ~= 0 then | ||
--print("param2 ~= 0") | ||
return | ||
end | ||
local p0_hash = nil | ||
if default.leafdecay_enable_cache then | ||
p0_hash = minetest.hash_node_position(p0) | ||
local trunkp = default.leafdecay_trunk_cache[p0_hash] | ||
if trunkp then | ||
local n = minetest.env:get_node(trunkp) | ||
local reg = minetest.registered_nodes[n.name] | ||
-- Assume ignore is a trunk, to make the thing work at the border of the active area | ||
if n.name == "ignore" or (reg and reg.groups.tree and reg.groups.tree ~= 0) then | ||
--print("cached trunk still exists") | ||
return | ||
end | ||
--print("cached trunk is invalid") | ||
-- Cache is invalid | ||
table.remove(default.leafdecay_trunk_cache, p0_hash) | ||
end | ||
end | ||
if default.leafdecay_trunk_find_allow_accumulator <= 0 then | ||
return | ||
end | ||
default.leafdecay_trunk_find_allow_accumulator = | ||
default.leafdecay_trunk_find_allow_accumulator - 1 | ||
-- Assume ignore is a trunk, to make the thing work at the border of the active area | ||
local p1 = minetest.env:find_node_near(p0, d, {"ignore", "group:tree"}) | ||
if p1 then | ||
do_preserve = true | ||
if default.leafdecay_enable_cache then | ||
--print("caching trunk") | ||
-- Cache the trunk | ||
default.leafdecay_trunk_cache[p0_hash] = p1 | ||
end | ||
end | ||
if not do_preserve then | ||
-- Drop stuff other than the node itself | ||
itemstacks = minetest.get_node_drops(n0.name) | ||
for _, itemname in ipairs(itemstacks) do | ||
if itemname ~= n0.name then | ||
local p_drop = { | ||
x = p0.x - 0.5 + math.random(), | ||
y = p0.y - 0.5 + math.random(), | ||
z = p0.z - 0.5 + math.random(), | ||
} | ||
minetest.env:add_item(p_drop, itemname) | ||
end | ||
end | ||
-- Remove node | ||
minetest.env:remove_node(p0) | ||
nodeupdate(p0) | ||
end | ||
end | ||
}) |
Oops, something went wrong.