From 6ede18a4cc304014791b240add448731b129caf5 Mon Sep 17 00:00:00 2001 From: cale Date: Fri, 8 Apr 2016 16:41:19 +0200 Subject: [PATCH] added listrings to meta data invs + drop items after dig --- mods/default/craft.lua | 1 + mods/default/functions.lua | 15 +++++++++++++++ mods/default/init.lua | 1 + mods/default/nodes.lua | 6 ++++-- mods/furnace/init.lua | 11 ++++++++--- mods/village/init.lua | 1 + 6 files changed, 30 insertions(+), 5 deletions(-) create mode 100644 mods/default/functions.lua diff --git a/mods/default/craft.lua b/mods/default/craft.lua index 5442d63..124ad06 100644 --- a/mods/default/craft.lua +++ b/mods/default/craft.lua @@ -36,6 +36,7 @@ minetest.register_node("default:workbench_v2", { local inv = meta:get_inventory() inv:set_size("main", 3*2) end, + after_dig_node = default.drop_items, }) -- crafts diff --git a/mods/default/functions.lua b/mods/default/functions.lua new file mode 100644 index 0000000..0455455 --- /dev/null +++ b/mods/default/functions.lua @@ -0,0 +1,15 @@ +function default.drop_items(pos, oldnode, oldmetadata, digger) + local meta = minetest.get_meta(pos) + meta:from_table(oldmetadata) + local inv = meta:get_inventory() + for i = 1, inv:get_size("main") do + local stack = inv:get_stack("main", i) + if not stack:is_empty() then + local p = { x = pos.x + math.random(0, 5)/5 - 0.5, + y = pos.y, + z = pos.z + math.random(0, 5)/5 - 0.5 + } + minetest.add_item(p, stack) + end + end +end diff --git a/mods/default/init.lua b/mods/default/init.lua index 18d5fab..d4bcf7d 100644 --- a/mods/default/init.lua +++ b/mods/default/init.lua @@ -2,6 +2,7 @@ default = {} local modpath = minetest.get_modpath("default") +dofile(modpath.."/functions.lua") dofile(modpath.."/player.lua") dofile(modpath.."/craftitems.lua") dofile(modpath.."/nodes.lua") diff --git a/mods/default/nodes.lua b/mods/default/nodes.lua index c404a4b..f8bd506 100644 --- a/mods/default/nodes.lua +++ b/mods/default/nodes.lua @@ -143,7 +143,9 @@ local box_form = box_form..default.itemslot_bg(0,0.3,8,4) local box_form = box_form.."list[current_player;main;0,4.85;8,1;]" local box_form = box_form..default.itemslot_bg(0,4.85,8,1) local box_form = box_form.."list[current_player;main;0,6.08;8,3;8]" -local box_form = box_form..default.itemslot_bg(0,6,8,3) +local box_form = box_form..default.itemslot_bg(0,6.08,8,3) +local box_form = box_form.."listring[current_name;main]" +local box_form = box_form.."listring[current_player;main]" minetest.register_node("default:box", { description = "Box", @@ -165,7 +167,7 @@ minetest.register_node("default:box", { local inv = meta:get_inventory() inv:set_size("main", 8*4) end, - + after_dig_node = default.drop_items, }) default.treasure_chest_items = {"default:dirt", "default:sand", "default:stone_item", "default:coin", "default:coal_lump", "default:wood"} diff --git a/mods/furnace/init.lua b/mods/furnace/init.lua index 8d48b10..3234836 100644 --- a/mods/furnace/init.lua +++ b/mods/furnace/init.lua @@ -7,6 +7,8 @@ local furnace_form = furnace_form.."list[current_player;main;0,4.85;8,1;]" local furnace_form = furnace_form..default.itemslot_bg(0,4.85,8,1) local furnace_form = furnace_form.."list[current_player;main;0,6.08;8,3;8]" local furnace_form = furnace_form..default.itemslot_bg(0,6.08,8,3) +local furnace_form = furnace_form.."listring[current_name;main]" +local furnace_form = furnace_form.."listring[current_player;main]" minetest.register_node("furnace:furnace", { description = "Furnace", @@ -20,6 +22,7 @@ minetest.register_node("furnace:furnace", { local inv = meta:get_inventory() inv:set_size("main", 4*4) end, + after_dig_node = default.drop_items, }) minetest.register_abm({ @@ -79,6 +82,8 @@ local pattern_form = pattern_form.."list[current_player;main;0,4.85;8,1;]" local pattern_form = pattern_form..default.itemslot_bg(0,4.85,8,1) local pattern_form = pattern_form.."list[current_player;main;0,6.08;8,3;8]" local pattern_form = pattern_form..default.itemslot_bg(0,6.08,8,3) +local pattern_form = pattern_form.."listring[current_name;main]" +local pattern_form = pattern_form.."listring[current_player;main]" minetest.register_node("furnace:pattern_rod", { description = "Pattern for a Rod", @@ -91,7 +96,7 @@ minetest.register_node("furnace:pattern_rod", { local inv = meta:get_inventory() inv:set_size("main", 8*4) end, - + after_dig_node = default.drop_items, }) minetest.register_node("furnace:pattern_blade", { @@ -105,7 +110,7 @@ minetest.register_node("furnace:pattern_blade", { local inv = meta:get_inventory() inv:set_size("main", 8*4) end, - + after_dig_node = default.drop_items, }) minetest.register_node("furnace:pattern_plate", { @@ -119,7 +124,7 @@ minetest.register_node("furnace:pattern_plate", { local inv = meta:get_inventory() inv:set_size("main", 8*4) end, - + after_dig_node = default.drop_items, }) minetest.register_craftitem("furnace:iron_rod", { diff --git a/mods/village/init.lua b/mods/village/init.lua index 888371f..e933103 100644 --- a/mods/village/init.lua +++ b/mods/village/init.lua @@ -108,3 +108,4 @@ minetest.register_decoration({ y_max = 20, decoration = "village:spawn", }) +