From c80623fa605301a4606c3c2171a7bca480f05bb4 Mon Sep 17 00:00:00 2001 From: minefaco <63024226+minefaco@users.noreply.github.com> Date: Tue, 28 May 2024 09:15:25 -0500 Subject: [PATCH] Update chiseling_machine.lua Mejor manejo de inventario --- chiseling_machine.lua | 104 ++++++++++++++++++++---------------------- 1 file changed, 49 insertions(+), 55 deletions(-) diff --git a/chiseling_machine.lua b/chiseling_machine.lua index 4fbcc08..c18e707 100644 --- a/chiseling_machine.lua +++ b/chiseling_machine.lua @@ -1,79 +1,73 @@ local max_stack = tonumber(minetest.settings:get("default_stack_max")) or 99 ---************************************************************************* + minetest.register_node("stripped_tree:chiseling_machine", { description = "Chiseladora para troncos", tiles = {"chiseling_machine.png", "chiseling_machine.png", "chiseling_machine_side.png", "chiseling_machine_side.png","chiseling_machine_side.png", "chiseling_machine_side.png"}, groups = {cracky = 1}, + after_place_node = function(pos, placer) local meta = minetest.get_meta(pos) meta:set_string("formspec", - "size[8,9]".. - "label[0,0;Chiseling Machine]".. - "image[2,2;1,1;chisel.png]".. - "list[current_name;src;2,1;1,1;]".. - "list[current_name;dst;5,1;2,2;]".. - "list[current_player;main;0,5;8,4;]".. - "listring[current_name;dst]".. - "listring[current_player;main]".. - "listring[current_name;src]".. - "listring[current_player;main]" + "size[8,9]".. + "label[0,0;Chiseling Machine]".. + "image[2,2;1,1;chisel.png]".. + "list[current_name;src;2,1;1,1;]".. + "list[current_name;dst;5,1;2,2;]".. + "list[current_player;main;0,5;8,4;]".. + "listring[current_name;dst]".. + "listring[current_player;main]".. + "listring[current_name;src]".. + "listring[current_player;main]" ) end, + on_construct = function(pos) - local meta = minetest.get_meta(pos) - meta:set_string("formspec", formspec) - meta:set_string("infotext", machine_name) - local inv = meta:get_inventory() - inv:set_size("src", 1) - inv:set_size("dst", 2) - meta:set_int("elapsed", 0) - meta:set_int("cook_time", 0) - minetest.get_node_timer(pos):start(1.0) - end, - on_metadata_inventory_move = function(pos) - minetest.get_node_timer(pos):start(1.0) - end, - on_metadata_inventory_put = function(pos) local meta = minetest.get_meta(pos) - local inv = meta:get_inventory() - local stack = inv:get_stack("src", 1) - local nodename = stack:get_name() - if nodename ~= "" then + local inv = meta:get_inventory() + inv:set_size("src", 1) + inv:set_size("dst", 2) + meta:set_int("elapsed", 0) + meta:set_int("cook_time", 0) + minetest.get_node_timer(pos):start(1.0) + end, - local count = stack:get_count() - local mod_name, node_name = unpack(nodename:split(":")) - local has_stripped = minetest.registered_nodes[mod_name..":".."stripped_"..node_name] - local dstcount = inv:get_stack("dst",1):get_count() - if has_stripped and dstcount < max_stack then - local stripped =mod_name..":".."stripped_"..node_name - inv:add_item("dst", stripped.." "..count) - inv:add_item("dst", "default:tree_bark "..count.."") - inv:remove_item("src", stack) - end + on_metadata_inventory_put = function(pos, listname, index, stack, player) + local inv = minetest.get_meta(pos):get_inventory() + local src_stack = inv:get_stack("src", 1) + local dst_stack = inv:get_stack("dst", 1) + if listname == "src" and not src_stack:is_empty() then + local src_name = src_stack:get_name() + local src_count = src_stack:get_count() + local mod_name, node_name = unpack(src_name:split(":")) + local stripped_name = mod_name .. ":stripped_" .. node_name + local has_stripped = minetest.registered_nodes[stripped_name] + local dst_count = dst_stack:get_count() + if has_stripped and dst_count < max_stack then + inv:add_item("dst", stripped_name .. " " .. src_count) + inv:add_item("dst", "default:tree_bark " .. src_count) + inv:remove_item("src", src_stack) end + end + end, - end, - - on_receive_fields = function(pos, formname, fields, player) + on_receive_fields = function(pos, formname, fields, sender) if fields.quit then return end - + -- Aquí puedes manejar los campos del formulario según sea necesario print(fields.x) end, - allow_metadata_inventory_move = function(pos, from_list, from_index, to_list, to_index, count, player) - if pos then - return count - end - return 0 - end + allow_metadata_inventory_move = function(pos, from_list, from_index, to_list, to_index, count, player) + return count + end }) + minetest.register_craft({ - output = "stripped_tree:chiseling_machine", - recipe = { - {"group:wood","default:diamond","group:wood"}, - {"group:wood","stripped_tree:chisel","group:wood"}, - {"group:wood", "group:wood","group:wood"}, - }, + output = "stripped_tree:chiseling_machine", + recipe = { + {"group:wood","default:diamond","group:wood"}, + {"group:wood","stripped_tree:chisel","group:wood"}, + {"group:wood", "group:wood","group:wood"}, + }, })