From 2c97d3ede408aaff8f45ea72f150b8b06bd05181 Mon Sep 17 00:00:00 2001 From: tacigar Date: Fri, 16 Dec 2016 15:54:01 +0900 Subject: [PATCH 01/22] Add _aux/api.lua for generalizing egg writer and core writer --- maidroid_tool/_aux/api.lua | 211 +++++++++++++++++++++++++++++++++++++ 1 file changed, 211 insertions(+) create mode 100644 maidroid_tool/_aux/api.lua diff --git a/maidroid_tool/_aux/api.lua b/maidroid_tool/_aux/api.lua new file mode 100644 index 0000000..0cd0481 --- /dev/null +++ b/maidroid_tool/_aux/api.lua @@ -0,0 +1,211 @@ +------------------------------------------------------------ +-- Copyright (c) 2016 tacigar. All rights reserved. +-- https://github.com/tacigar/maidroid +------------------------------------------------------------ + +maidroid_tool.shared = {} + +-- maidroid_tool.shared.generate_writer is a shared +-- function called for registering egg writer and core writer. +function maidroid_tool.shared.generate_writer(options) + local nodename = options.node_name + local formspecs = options.formspecs + local duration = options.duration + local on_activate = options.on_activate + local on_deactivate = options.on_deactivate + local empty_itemname = options.empty_itemname + local dye_item_map = options.dye_item_map + local is_mainitem = options.is_mainitem + local on_metadata_inventory_put_to_main = options.on_metadata_inventory_put_to_main + local on_metadata_inventory_take_from_main = options.on_metadata_inventory_take_from_main + + -- can_dig is a common callback. + local function can_dig(pos, player) + local meta = minetest.get_meta(pos) + local inventory = meta:get_inventory() + return ( + inventory:is_empty("main") and + inventory:is_empty("fuel") and + inventory:is_empty("dye") + ) + end + + -- swap_node is a helper function that swap two nodes. + local function swap_node(pos, name) + local node = minetest.get_node(pos) + node.name = name + minetest.swap_node(pos, node) + end + + -- on_timer is a common callback. + local function on_timer(pos, elapsed) + local meta = minetest.get_meta(pos) + local inventory = meta:get_inventory() + local main_list = inventory:get_list("main") + local fuel_list = inventory:get_list("fuel") + local dye_list = inventory:get_list("dye") + + local time = meta:get_float("time") + local output = meta:get_string("output") + + -- if time is positive, this node is active. + if time >= 0 then + if time <= max_time then + meta:set_float("time", time + 1) + meta:set_string("formspec", formspec.active(time)) + else + meta:set_float("time", -1) + meta:set_string("output", "") + meta:set_string("formspec", formspec.inactive) + inventory:set_stack("main", 1, ItemStack(output)) + + swap_node(pos, nodename) + + if on_deactivate ~= nil then -- call on_deactivate callback. + on_deactivate(pos) + end + end + else + local main_name = main_list[1]:get_name() + + if main_name == empty_itemname and (not fuel_list[1]:is_empty()) and (not dye_list[1]:is_empty()) then + meta:set_string("time", 0) + meta:set_string("output", dye_item_map[dye_list[1]:get_name()]) + + local fuel_stack = fuel_list[1] + fuel_stack:take_item() + inventory:set_stack("fuel", 1, fuel_stack) + + local dye_stack = dye_list[1] + dye_stack:take_item() + inventory:set_stack("dye", 1, dye_stack) + + swap_node(pos, nodename .. "_active") + + if on_activate ~= nil then -- call on_activate callback. + on_activate(pos) + end + end + end + return true -- on_timer should return boolean value. + end + + -- allow_metadata_inventory_put is a common callback. + local function allow_metadata_inventory_put(pos, listname, index, stack, player) + local meta = minetest.get_meta(pos) + local inventory = meta:get_inventory() + local itemname = stack:get_name() + + if (listname == "fuel" and itemname == "default:coal_lump") then + return stack:get_count() + elseif listname == "dye" and dye_core_map[itemname] ~= nil then + return stack:get_count() + elseif listname == "main" and is_mainitem(itemname) then + return stack:get_count() + end + return 0 + end + + -- allow_metadata_inventory_move is a common callback for the core writer. + local function allow_metadata_inventory_move(pos, from_list, from_index, to_list, to_index, count, player) + local meta = minetest.get_meta(pos) + local inventory = meta:get_inventory() + local stack = inventory:get_stack(from_list, from_index) + return allow_metadata_inventory_put(pos, listname, to_index, stack, player) + end + + do -- register a definition of an inactive core writer. + local function on_construct(pos) + local meta = minetest.get_meta(pos) + meta:set_string("formspec", formspec_inactive) + meta:set_string("output", "") + meta:set_string("time", -1) + + local inventory = meta:get_inventory() + inventory:set_size("main", 1) + inventory:set_size("fuel", 1) + inventory:set_size("dye", 1) + end + + local function on_metadata_inventory_put(pos, listname, index, stack, player) + local timer = minetest.get_node_timer(pos) + timer:start(0.25) + + local meta = minetest.get_meta(pos) + if listname == "main" then + if on_metadata_inventory_put_to_main ~= nil then + on_metadata_inventory_put_to_main(pos) -- call on_metadata_inventory_put_to_main callback. + end + end + end + + local function on_metadata_inventory_move(pos, from_list, from_index, to_list, to_index, count, player) + local meta = minetest.get_meta(pos) + local inventory = meta:get_inventory() + local stack = inventory:get_stack(from_list, from_index) + + on_metadata_inventory_put(pos, listname, to_index, stack, player) + end + + local function on_metadata_inventory_take(pos, listname, index, stack, player) + if listname == "main" then + if on_metadata_inventory_take_from_main ~= nil then + on_metadata_inventory_take_from_main(pos) -- call on_metadata_inventory_take_from_main callback. + end + end + end + + local function allow_metadata_inventory_take(pos, listname, index, stack, player) + return stack:get_count() -- maybe add more. + end + + minetest.register_node("maidroid_tool:core_writer", { + description = "maidroid tool : core writer", + drawtype = "nodebox", + paramtype = "light", + paramtype2 = "facedir", + groups = {cracky = 2}, + is_ground_content = false, + sounds = default.node_sound_stone_defaults(), + node_box = options.node_box, + selection_box = options.selection_box, + tiles = inactive_tiles, + can_dig = can_dig, + on_timer = on_timer, + on_construct = on_construct, + on_metadata_inventory_put = on_metadata_inventory_put, + on_metadata_inventory_move = on_metadata_inventory_move, + on_metadata_inventory_take = on_metadata_inventory_take, + allow_metadata_inventory_put = allow_metadata_inventory_put, + allow_metadata_inventory_move = allow_metadata_inventory_move, + allow_metadata_inventory_take = allow_metadata_inventory_take, + }) + + end -- end register inactive node. + + do -- register a definition of an active core writer. + local function allow_metadata_inventory_take(pos, listname, index, stack, player) + if listname == "core" then + return 0 + end + return stack:get_count() + end + + minetest.register_node("maidroid_tool:core_writer_active", { + drawtype = "nodebox", + paramtype = "light", + paramtype2 = "facedir", + groups = {cracky = 2}, + is_ground_content = false, + sounds = default.node_sound_stone_defaults(), + node_box = options.node_box, + selection_box = options.selection_box, + tiles = tiles, + can_dig = can_dig, + on_timer = on_timer, + allow_metadata_inventory_put = allow_metadata_inventory_put, + allow_metadata_inventory_move = allow_metadata_inventory_move, + allow_metadata_inventory_take = allow_metadata_inventory_take, + }) + end -- end register active node. +end From 768ba151cdd89e02bdfc123cdc658429beba36ef Mon Sep 17 00:00:00 2001 From: tacigar Date: Fri, 16 Dec 2016 16:03:21 +0900 Subject: [PATCH 02/22] Fix maidroid_tool/api.lua --- maidroid_tool/{_aux => }/api.lua | 25 +++++++++++++------------ 1 file changed, 13 insertions(+), 12 deletions(-) rename maidroid_tool/{_aux => }/api.lua (88%) diff --git a/maidroid_tool/_aux/api.lua b/maidroid_tool/api.lua similarity index 88% rename from maidroid_tool/_aux/api.lua rename to maidroid_tool/api.lua index 0cd0481..616c319 100644 --- a/maidroid_tool/_aux/api.lua +++ b/maidroid_tool/api.lua @@ -8,16 +8,17 @@ maidroid_tool.shared = {} -- maidroid_tool.shared.generate_writer is a shared -- function called for registering egg writer and core writer. function maidroid_tool.shared.generate_writer(options) - local nodename = options.node_name - local formspecs = options.formspecs - local duration = options.duration - local on_activate = options.on_activate - local on_deactivate = options.on_deactivate - local empty_itemname = options.empty_itemname - local dye_item_map = options.dye_item_map - local is_mainitem = options.is_mainitem - local on_metadata_inventory_put_to_main = options.on_metadata_inventory_put_to_main - local on_metadata_inventory_take_from_main = options.on_metadata_inventory_take_from_main + local nodename = options.node_name + local formspecs = options.formspecs + local tiles = options.tiles + local duration = options.duration + local on_activate = options.on_activate + local on_deactivate = options.on_deactivate + local empty_itemname = options.empty_itemname + local dye_item_map = options.dye_item_map + local is_mainitem = options.is_mainitem + local on_metadata_inventory_put_to_main = options.on_metadata_inventory_put_to_main + local on_metadata_inventory_take_from_main = options.on_metadata_inventory_take_from_main -- can_dig is a common callback. local function can_dig(pos, player) @@ -169,7 +170,7 @@ function maidroid_tool.shared.generate_writer(options) sounds = default.node_sound_stone_defaults(), node_box = options.node_box, selection_box = options.selection_box, - tiles = inactive_tiles, + tiles = tiles.inactive, can_dig = can_dig, on_timer = on_timer, on_construct = on_construct, @@ -200,7 +201,7 @@ function maidroid_tool.shared.generate_writer(options) sounds = default.node_sound_stone_defaults(), node_box = options.node_box, selection_box = options.selection_box, - tiles = tiles, + tiles = tiles.active, can_dig = can_dig, on_timer = on_timer, allow_metadata_inventory_put = allow_metadata_inventory_put, From e4118f08248bd037e255454586dd19f300e78e70 Mon Sep 17 00:00:00 2001 From: tacigar Date: Fri, 16 Dec 2016 16:04:52 +0900 Subject: [PATCH 03/22] Update maidroid_tool/init.lua --- maidroid_tool/init.lua | 1 + 1 file changed, 1 insertion(+) diff --git a/maidroid_tool/init.lua b/maidroid_tool/init.lua index 3fa5aac..27bd0b6 100644 --- a/maidroid_tool/init.lua +++ b/maidroid_tool/init.lua @@ -8,5 +8,6 @@ maidroid_tool = {} maidroid_tool.modname = "maidroid_tool" maidroid_tool.modpath = minetest.get_modpath(maidroid_tool.modname) +dofile(maidroid_tool.modpath .. "/api.lua") dofile(maidroid_tool.modpath .. "/core_writer.lua") dofile(maidroid_tool.modpath .. "/crafting.lua") From 7909b44675890cdf1109d2cb3ae2bdd84fbcaab3 Mon Sep 17 00:00:00 2001 From: tacigar Date: Fri, 16 Dec 2016 16:06:15 +0900 Subject: [PATCH 04/22] Fix namespace --- maidroid_tool/api.lua | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/maidroid_tool/api.lua b/maidroid_tool/api.lua index 616c319..051a0a4 100644 --- a/maidroid_tool/api.lua +++ b/maidroid_tool/api.lua @@ -7,7 +7,7 @@ maidroid_tool.shared = {} -- maidroid_tool.shared.generate_writer is a shared -- function called for registering egg writer and core writer. -function maidroid_tool.shared.generate_writer(options) +function maidroid_tool.generate_writer(options) local nodename = options.node_name local formspecs = options.formspecs local tiles = options.tiles From b06794c49912aadef349b9a67bc65c4339edd984 Mon Sep 17 00:00:00 2001 From: tacigar Date: Fri, 16 Dec 2016 16:27:20 +0900 Subject: [PATCH 05/22] Change api name --- maidroid_tool/api.lua | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/maidroid_tool/api.lua b/maidroid_tool/api.lua index 051a0a4..5ee6369 100644 --- a/maidroid_tool/api.lua +++ b/maidroid_tool/api.lua @@ -7,7 +7,7 @@ maidroid_tool.shared = {} -- maidroid_tool.shared.generate_writer is a shared -- function called for registering egg writer and core writer. -function maidroid_tool.generate_writer(options) +function maidroid_tool.register_writer(options) local nodename = options.node_name local formspecs = options.formspecs local tiles = options.tiles From a8024d127b8cf3b2faabd85326f971d76a6637c4 Mon Sep 17 00:00:00 2001 From: tacigar Date: Fri, 16 Dec 2016 16:30:00 +0900 Subject: [PATCH 06/22] Fix maidroid_tool/api.lua --- maidroid_tool/api.lua | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/maidroid_tool/api.lua b/maidroid_tool/api.lua index 5ee6369..f719c53 100644 --- a/maidroid_tool/api.lua +++ b/maidroid_tool/api.lua @@ -11,6 +11,8 @@ function maidroid_tool.register_writer(options) local nodename = options.node_name local formspecs = options.formspecs local tiles = options.tiles + local nodebox = options.nodebox + local selection_box = options.selection_box local duration = options.duration local on_activate = options.on_activate local on_deactivate = options.on_deactivate @@ -168,8 +170,8 @@ function maidroid_tool.register_writer(options) groups = {cracky = 2}, is_ground_content = false, sounds = default.node_sound_stone_defaults(), - node_box = options.node_box, - selection_box = options.selection_box, + node_box = node_box, + selection_box = selection_box, tiles = tiles.inactive, can_dig = can_dig, on_timer = on_timer, @@ -199,8 +201,8 @@ function maidroid_tool.register_writer(options) groups = {cracky = 2}, is_ground_content = false, sounds = default.node_sound_stone_defaults(), - node_box = options.node_box, - selection_box = options.selection_box, + node_box = node_box, + selection_box = selection_box, tiles = tiles.active, can_dig = can_dig, on_timer = on_timer, From 1e5c0ff62f96391d5759db53e245c188bc30a698 Mon Sep 17 00:00:00 2001 From: tacigar Date: Fri, 16 Dec 2016 18:27:33 +0900 Subject: [PATCH 07/22] Update api --- maidroid_tool/api.lua | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/maidroid_tool/api.lua b/maidroid_tool/api.lua index f719c53..1a6ce45 100644 --- a/maidroid_tool/api.lua +++ b/maidroid_tool/api.lua @@ -7,8 +7,7 @@ maidroid_tool.shared = {} -- maidroid_tool.shared.generate_writer is a shared -- function called for registering egg writer and core writer. -function maidroid_tool.register_writer(options) - local nodename = options.node_name +function maidroid_tool.register_writer(nodename, options) local formspecs = options.formspecs local tiles = options.tiles local nodebox = options.nodebox From 8d5799a1d050f8f436b0313fac8950b9e942956a Mon Sep 17 00:00:00 2001 From: tacigar Date: Fri, 16 Dec 2016 18:27:50 +0900 Subject: [PATCH 08/22] Rewriter core_writer with api --- maidroid_tool/core_writer.lua | 176 +++++++++++++++++++++++----------- 1 file changed, 121 insertions(+), 55 deletions(-) diff --git a/maidroid_tool/core_writer.lua b/maidroid_tool/core_writer.lua index 1476920..cda14c6 100644 --- a/maidroid_tool/core_writer.lua +++ b/maidroid_tool/core_writer.lua @@ -3,13 +3,13 @@ -- https://github.com/tacigar/maidroid ------------------------------------------------------------ -local dye_core_map = { - ["dye:red"] = "maidroid_core:basic", -} +do -- register core writer --- register a definition of a core writer. -;(function() - local node_box = { + local dye_core_map = { + ["dye:red"] = "maidroid_core:basic", + } + + local nodebox = { type = "fixed", fixed = { {-0.4375, -0.25, -0.4375, 0.4375, 0.1875, 0.4375}, @@ -28,32 +28,8 @@ local dye_core_map = { }, } - local formspec_inactive = "size[8,9]" - .. default.gui_bg - .. default.gui_bg_img - .. default.gui_slots - .. "label[3.75,0;Core]" - .. "list[current_name;core;3.5,0.5;1,1;]" - .. "label[2.75,2;Coal]" - .. "list[current_name;fuel;2.5,2.5;1,1;]" - .. "label[4.75,2;Dye]" - .. "list[current_name;dye;4.5,2.5;1,1;]" - .. "image[3.5,1.5;1,2;maidroid_tool_gui_arrow.png]" - .. "image[3.1,3.5;2,1;maidroid_tool_gui_meter.png^[transformR270]" - .. "list[current_player;main;0,5;8,1;]" - .. "list[current_player;main;0,6.2;8,3;8]" - - local function generate_formspec_active(writing_time) - local arrow_percent = (100 / 40) * writing_time - - local merter_percent = 0 - if writing_time % 16 >= 8 then - meter_percent = (8 - (writing_time % 8)) * (100 / 8) - else - meter_percent = (writing_time % 8) * (100 / 8) - end - - return "size[8,9]" + local formspec = { + ["inactive"] = "size[8,9]" .. default.gui_bg .. default.gui_bg_img .. default.gui_slots @@ -63,15 +39,79 @@ local dye_core_map = { .. "list[current_name;fuel;2.5,2.5;1,1;]" .. "label[4.75,2;Dye]" .. "list[current_name;dye;4.5,2.5;1,1;]" - .. "image[3.5,1.5;1,2;maidroid_tool_gui_arrow.png^[lowpart:" - .. arrow_percent - .. ":maidroid_tool_gui_arrow_filled.png]" - .. "image[3.1,3.5;2,1;maidroid_tool_gui_meter.png^[lowpart:" - .. meter_percent - .. ":maidroid_tool_gui_meter_filled.png^[transformR270]" + .. "image[3.5,1.5;1,2;maidroid_tool_gui_arrow.png]" + .. "image[3.1,3.5;2,1;maidroid_tool_gui_meter.png^[transformR270]" .. "list[current_player;main;0,5;8,1;]" - .. "list[current_player;main;0,6.2;8,3;8]" - end + .. "list[current_player;main;0,6.2;8,3;8]", + + ["active"] = function(t) + local arrow_percent = (100 / 40) * writing_time + local merter_percent = 0 + if writing_time % 16 >= 8 then + meter_percent = (8 - (writing_time % 8)) * (100 / 8) + else + meter_percent = (writing_time % 8) * (100 / 8) + end + return "size[8,9]" + .. default.gui_bg + .. default.gui_bg_img + .. default.gui_slots + .. "label[3.75,0;Core]" + .. "list[current_name;core;3.5,0.5;1,1;]" + .. "label[2.75,2;Coal]" + .. "list[current_name;fuel;2.5,2.5;1,1;]" + .. "label[4.75,2;Dye]" + .. "list[current_name;dye;4.5,2.5;1,1;]" + .. "image[3.5,1.5;1,2;maidroid_tool_gui_arrow.png^[lowpart:" + .. arrow_percent + .. ":maidroid_tool_gui_arrow_filled.png]" + .. "image[3.1,3.5;2,1;maidroid_tool_gui_meter.png^[lowpart:" + .. meter_percent + .. ":maidroid_tool_gui_meter_filled.png^[transformR270]" + .. "list[current_player;main;0,5;8,1;]" + .. "list[current_player;main;0,6.2;8,3;8]" + end, + } + + local tiles = { + ["inactive"] = { + "maidroid_tool_core_writer_top.png", + "maidroid_tool_core_writer_bottom.png", + "maidroid_tool_core_writer_right.png", + "maidroid_tool_core_writer_right.png^[transformFX", + "maidroid_tool_core_writer_front.png^[transformFX", + "maidroid_tool_core_writer_front.png", + }, + + ["active"] = { + "maidroid_tool_core_writer_top.png", + "maidroid_tool_core_writer_bottom.png", + "maidroid_tool_core_writer_right.png", + "maidroid_tool_core_writer_right.png^[transformFX", + { + backface_culling = false, + image = "maidroid_tool_core_writer_front_active.png^[transformFX", + + animation = { + type = "vertical_frames", + aspect_w = 16, + aspect_h = 16, + length = 1.5, + }, + }, + { + backface_culling = false, + image = "maidroid_tool_core_writer_front_active.png", + + animation = { + type = "vertical_frames", + aspect_w = 16, + aspect_h = 16, + length = 1.5, + }, + }, + } + } -- get_nearest_core_entity returns the nearest core entity. local function get_nearest_core_entity(pos) @@ -84,25 +124,51 @@ local dye_core_map = { return nil end - -- can_dig is a common callback for the core writer. - local function can_dig(pos, player) - local meta = minetest.get_meta(pos) - local inventory = meta:get_inventory() - return ( - inventory:is_empty("core") and - inventory:is_empty("fuel") and - inventory:is_empty("dye") - ) + local function on_deactivate(pos) + local core_entity = get_nearest_core_entity(pos) + core_entity:stop_rotate() end - -- swap_node is a helper function that swap two nodes. - local function swap_node(pos, name) - local node = minetest.get_node(pos) - node.name = name - - minetest.swap_node(pos, node) + local function on_activate(pos) + local core_entity = get_nearest_core_entity(pos) + core_entity:start_rotate() end + local function on_metadata_inventory_put_to_main(pos) + local entity_position = { + x = pos.x, y = pos.y + 0.65, z = pos.z + } + minetest.add_entity(entity_position, "maidroid_tool:core_entity") + end + + local function on_metadata_inventory_take_from_main(pos) + local core_entity = get_nearest_core_entity(pos) + core_entity.object:remove() + end + + maidroid_tool.register_writer("maidroid_tool:core_writer", { + formspec = formspec, + tiles = tiles, + nodebox = nodebox, + selection_box = selection_box, + duration = 40, + on_activate = on_activate, + on_deactivate = on_deactivate, + empty_itemname = "maidroid_core:empty", + dye_item_map = dye_item_map, + is_mainitem = maidroid.is_core, + on_metadata_inventory_put_to_main = on_metadata_inventory_put_to_main, + on_metadata_inventory_take_from_main = on_metadata_inventory_take_from_main, + } + +end + + + + + + + -- on_timer is a common callback for the core writer. local function on_timer(pos, elapsed) local meta = minetest.get_meta(pos) From e469bccfdb9a0fba51fa8bdfd0f4ece24052cbaf Mon Sep 17 00:00:00 2001 From: tacigar Date: Fri, 16 Dec 2016 18:29:07 +0900 Subject: [PATCH 09/22] Delete lines --- maidroid_tool/core_writer.lua | 226 +--------------------------------- 1 file changed, 2 insertions(+), 224 deletions(-) diff --git a/maidroid_tool/core_writer.lua b/maidroid_tool/core_writer.lua index cda14c6..b70fb13 100644 --- a/maidroid_tool/core_writer.lua +++ b/maidroid_tool/core_writer.lua @@ -163,230 +163,8 @@ do -- register core writer end - - - - - - - -- on_timer is a common callback for the core writer. - local function on_timer(pos, elapsed) - local meta = minetest.get_meta(pos) - local inventory = meta:get_inventory() - - local core_list = inventory:get_list("core") - local fuel_list = inventory:get_list("fuel") - local dye_list = inventory:get_list("dye") - - local writing_time = meta:get_float("writing_time") - local writing_total_time = 40 - local output_core = meta:get_string("output_core") - - -- if writing time is positive, the core writer is active. - if writing_time >= 0 then - if writing_time <= writing_total_time then - meta:set_float("writing_time", writing_time + 1) - meta:set_string("formspec", generate_formspec_active(writing_time)) - - else -- else place output core to core list. - meta:set_float("writing_time", -1) - meta:set_string("output_core", "") - meta:set_string("formspec", formspec_inactive) - inventory:set_stack("core", 1, ItemStack(output_core)) - swap_node(pos, "maidroid_tool:core_writer") - - local core_entity = get_nearest_core_entity(pos) - core_entity:stop_rotate() - end - - else -- else the core writer is inactive. - local core_name = core_list[1]:get_name() - - if core_name == "maidroid_core:empty" and (not fuel_list[1]:is_empty()) and (not dye_list[1]:is_empty()) then - meta:set_float("writing_time", 0) - meta:set_string("output_core", dye_core_map[dye_list[1]:get_name()]) - - local fuel_stack = fuel_list[1] - fuel_stack:take_item() - inventory:set_stack("fuel", 1, fuel_stack) - - local dye_stack = dye_list[1] - dye_stack:take_item() - inventory:set_stack("dye", 1, dye_stack) - - swap_node(pos, "maidroid_tool:core_writer_active") - - local core_entity = get_nearest_core_entity(pos) - core_entity:start_rotate() - end - end - return true - end - - -- allow_metadata_inventory_put is a common callback for the core writer. - local function allow_metadata_inventory_put(pos, listname, index, stack, player) - local meta = minetest.get_meta(pos) - local inventory = meta:get_inventory() - local itemname = stack:get_name() - - if (listname == "fuel" and itemname == "default:coal_lump") then - return stack:get_count() - elseif listname == "dye" and dye_core_map[itemname] ~= nil then - return stack:get_count() - elseif listname == "core" and maidroid.is_core(itemname) then - return stack:get_count() - end - return 0 - end - - -- allow_metadata_inventory_move is a common callback for the core writer. - local function allow_metadata_inventory_move(pos, from_list, from_index, to_list, to_index, count, player) - local meta = minetest.get_meta(pos) - local inventory = meta:get_inventory() - local stack = inventory:get_stack(from_list, from_index) - - return allow_metadata_inventory_put(pos, listname, to_index, stack, player) - end - - -------------------------------------------------------------------- - - ;(function() -- register a definition of an inactive core writer. - local tiles = { - "maidroid_tool_core_writer_top.png", - "maidroid_tool_core_writer_bottom.png", - "maidroid_tool_core_writer_right.png", - "maidroid_tool_core_writer_right.png^[transformFX", - "maidroid_tool_core_writer_front.png^[transformFX", - "maidroid_tool_core_writer_front.png", - } - - local function on_construct(pos) - local meta = minetest.get_meta(pos) - meta:set_string("formspec", formspec_inactive) - meta:set_string("output_core", "") - meta:set_float("writing_time", -1) - - local inventory = meta:get_inventory() - inventory:set_size("core", 1) - inventory:set_size("fuel", 1) - inventory:set_size("dye", 1) - end - - local function on_metadata_inventory_put(pos, listname, index, stack, player) - local timer = minetest.get_node_timer(pos) - timer:start(0.25) - - local meta = minetest.get_meta(pos) - if listname == "core" then - local entity_position = { - x = pos.x, y = pos.y + 0.65, z = pos.z - } - minetest.add_entity(entity_position, "maidroid_tool:core_entity") - end - end - - local function on_metadata_inventory_move(pos, from_list, from_index, to_list, to_index, count, player) - local meta = minetest.get_meta(pos) - local inventory = meta:get_inventory() - local stack = inventory:get_stack(from_list, from_index) - - on_metadata_inventory_put(pos, listname, to_index, stack, player) - end - - local function on_metadata_inventory_take(pos, listname, index, stack, player) - if listname == "core" then - local core_entity = get_nearest_core_entity(pos) - core_entity.object:remove() - end - end - - local function allow_metadata_inventory_take(pos, listname, index, stack, player) - return stack:get_count() -- maybe add more. - end - - minetest.register_node("maidroid_tool:core_writer", { - description = "maidroid tool : core writer", - drawtype = "nodebox", - paramtype = "light", - paramtype2 = "facedir", - groups = {cracky = 2}, - is_ground_content = false, - sounds = default.node_sound_stone_defaults(), - node_box = node_box, - selection_box = selection_box, - tiles = tiles, - can_dig = can_dig, - on_timer = on_timer, - on_construct = on_construct, - on_metadata_inventory_put = on_metadata_inventory_put, - on_metadata_inventory_move = on_metadata_inventory_move, - on_metadata_inventory_take = on_metadata_inventory_take, - allow_metadata_inventory_put = allow_metadata_inventory_put, - allow_metadata_inventory_move = allow_metadata_inventory_move, - allow_metadata_inventory_take = allow_metadata_inventory_take, - }) - end) () - - -------------------------------------------------------------------- - - ;(function () -- register a definition of an active core writer. - local tiles = { - "maidroid_tool_core_writer_top.png", - "maidroid_tool_core_writer_bottom.png", - "maidroid_tool_core_writer_right.png", - "maidroid_tool_core_writer_right.png^[transformFX", - { - backface_culling = false, - image = "maidroid_tool_core_writer_front_active.png^[transformFX", - - animation = { - type = "vertical_frames", - aspect_w = 16, - aspect_h = 16, - length = 1.5, - }, - }, - { - backface_culling = false, - image = "maidroid_tool_core_writer_front_active.png", - - animation = { - type = "vertical_frames", - aspect_w = 16, - aspect_h = 16, - length = 1.5, - }, - }, - } - - local function allow_metadata_inventory_take(pos, listname, index, stack, player) - if listname == "core" then - return 0 - end - return stack:get_count() - end - - minetest.register_node("maidroid_tool:core_writer_active", { - drawtype = "nodebox", - paramtype = "light", - paramtype2 = "facedir", - groups = {cracky = 2}, - is_ground_content = false, - sounds = default.node_sound_stone_defaults(), - node_box = node_box, - selection_box = selection_box, - tiles = tiles, - can_dig = can_dig, - on_timer = on_timer, - allow_metadata_inventory_put = allow_metadata_inventory_put, - allow_metadata_inventory_move = allow_metadata_inventory_move, - allow_metadata_inventory_take = allow_metadata_inventory_take, - }) - end) () -end) () - -- register a definition of a core entity. -;(function() +do local node_box = { type = "fixed", fixed = { @@ -436,4 +214,4 @@ end) () start_rotate = start_rotate, stop_rotate = stop_rotate, }) -end) () +end From eea07b64af572998285098772ba9294e874d26b6 Mon Sep 17 00:00:00 2001 From: tacigar Date: Fri, 16 Dec 2016 22:44:48 +0900 Subject: [PATCH 10/22] Fix core writer --- maidroid_tool/core_writer.lua | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/maidroid_tool/core_writer.lua b/maidroid_tool/core_writer.lua index b70fb13..907f830 100644 --- a/maidroid_tool/core_writer.lua +++ b/maidroid_tool/core_writer.lua @@ -44,13 +44,13 @@ do -- register core writer .. "list[current_player;main;0,5;8,1;]" .. "list[current_player;main;0,6.2;8,3;8]", - ["active"] = function(t) - local arrow_percent = (100 / 40) * writing_time + ["active"] = function(time) + local arrow_percent = (100 / 40) * time local merter_percent = 0 - if writing_time % 16 >= 8 then - meter_percent = (8 - (writing_time % 8)) * (100 / 8) + if time % 16 >= 8 then + meter_percent = (8 - (time % 8)) * (100 / 8) else - meter_percent = (writing_time % 8) * (100 / 8) + meter_percent = (time % 8) * (100 / 8) end return "size[8,9]" .. default.gui_bg From 4fa3d788198c79f70d97fbc1771ccf35da49feb9 Mon Sep 17 00:00:00 2001 From: tacigar Date: Fri, 16 Dec 2016 23:00:48 +0900 Subject: [PATCH 11/22] Change spawner -> egg --- maidroid/api.lua | 10 +++++----- maidroid/register.lua | 30 +++++++++++++++--------------- 2 files changed, 20 insertions(+), 20 deletions(-) diff --git a/maidroid/api.lua b/maidroid/api.lua index 4ae488d..ec28e4d 100644 --- a/maidroid/api.lua +++ b/maidroid/api.lua @@ -523,13 +523,13 @@ function maidroid.register_maidroid(product_name, def) move_main_to_wield = maidroid.maidroid.move_main_to_wield, }) - -- register a spawner for debugging maidroid mods. - minetest.register_craftitem(product_name .. "_spawner", { - description = product_name .. " spawner", - inventory_image = def.inventory_image, + -- register maidroid egg. + minetest.register_craftitem(product_name .. "_egg", { + description = production_name .. " egg", + inventory_image = def.egg_image, stack_max = 1, - on_use = function(item_stack, user, pointed_thing) + on_use = function(item_stack, user, pointed_thing) if pointed_thing.above ~= nil then minetest.add_entity(pointed_thing.above, product_name) return itemstack diff --git a/maidroid/register.lua b/maidroid/register.lua index 600f373..bf9b52b 100644 --- a/maidroid/register.lua +++ b/maidroid/register.lua @@ -4,25 +4,25 @@ ------------------------------------------------------------ maidroid.register_maidroid("maidroid:maidroid_mk1", { - hp_max = 10, - weight = 20, - mesh = "maidroid.b3d", - textures = {"maidroid_mk1.png"}, - inventory_image = "maidroid_mk1_spawner.png", + hp_max = 10, + weight = 20, + mesh = "maidroid.b3d", + textures = {"maidroid_mk1.png"}, + egg_image = "maidroid_mk1_egg.png", }) maidroid.register_maidroid("maidroid:maidroid_mk2", { - hp_max = 10, - weight = 20, - mesh = "maidroid.b3d", - textures = {"maidroid_mk2.png"}, - inventory_image = "maidroid_mk2_spawner.png", + hp_max = 10, + weight = 20, + mesh = "maidroid.b3d", + textures = {"maidroid_mk2.png"}, + egg_image = "maidroid_mk2_egg.png", }) maidroid.register_maidroid("maidroid:maidroid_mk3", { - hp_max = 10, - weight = 20, - mesh = "maidroid.b3d", - textures = {"maidroid_mk3.png"}, - inventory_image = "maidroid_mk3_spawner.png", + hp_max = 10, + weight = 20, + mesh = "maidroid.b3d", + textures = {"maidroid_mk3.png"}, + egg_image = "maidroid_mk3_egg.png", }) From 150ac768d8ddd23e5e54b19d5116f26805e3a63d Mon Sep 17 00:00:00 2001 From: tacigar Date: Fri, 16 Dec 2016 23:03:36 +0900 Subject: [PATCH 12/22] Add recipe of egg_writer --- maidroid_tool/crafting.lua | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/maidroid_tool/crafting.lua b/maidroid_tool/crafting.lua index d4dc042..bbe1534 100644 --- a/maidroid_tool/crafting.lua +++ b/maidroid_tool/crafting.lua @@ -11,3 +11,12 @@ minetest.register_craft{ { "default:cobble", "default:cobble", "default:cobble"}, }, } + +minetest.register_craft{ + output = "maidroid_tool:egg_writer", + recipe = { + { "default:diamond", "default:diamond", "default:diamond"}, + { "default:cobble", "default:steel_ingot", "default:cobble"}, + {"default:steel_ingot", "default:cobble", "default:steel_ingot"}, + }, +} From 7e29b9372d3f1a0f19db3b3c487580a2c75e3ee6 Mon Sep 17 00:00:00 2001 From: tacigar Date: Fri, 16 Dec 2016 23:04:02 +0900 Subject: [PATCH 13/22] Update maidroid_tool/init.lua --- maidroid_tool/init.lua | 1 + 1 file changed, 1 insertion(+) diff --git a/maidroid_tool/init.lua b/maidroid_tool/init.lua index 27bd0b6..a7ae94e 100644 --- a/maidroid_tool/init.lua +++ b/maidroid_tool/init.lua @@ -10,4 +10,5 @@ maidroid_tool.modpath = minetest.get_modpath(maidroid_tool.modname) dofile(maidroid_tool.modpath .. "/api.lua") dofile(maidroid_tool.modpath .. "/core_writer.lua") +dofile(maidroid_tool.modpath .. "/egg_writer.lua") dofile(maidroid_tool.modpath .. "/crafting.lua") From 91e2242e06d09ca0d5c0224f126e4a11135df055 Mon Sep 17 00:00:00 2001 From: tacigar Date: Sat, 17 Dec 2016 10:18:44 +0900 Subject: [PATCH 14/22] Add maidroid.register_egg API --- maidroid/api.lua | 41 ++++++++++++++++++++++++++++------------- 1 file changed, 28 insertions(+), 13 deletions(-) diff --git a/maidroid/api.lua b/maidroid/api.lua index ec28e4d..c2b62e2 100644 --- a/maidroid/api.lua +++ b/maidroid/api.lua @@ -22,6 +22,10 @@ maidroid.registered_maidroids = {} -- definitions of core registered by maidroid.register_core. maidroid.registered_cores = {} +-- maidroid.registered_eggs represents a table that contains +-- definition of egg registered by maidroid.register_egg. +maidroid.registered_eggs = {} + -- maidroid.is_core reports whether a item is a core item by the name. function maidroid.is_core(item_name) if maidroid.registered_cores[item_name] then @@ -139,7 +143,7 @@ end function maidroid.maidroid.move_main_to_wield(self, itemname) local inv = self:get_inventory() local main_size = inv:get_size("main") - + for i = 1, main_size do local stack = inv:get_stack("main", i) if stack:get_name() == itemname then @@ -209,7 +213,7 @@ end) minetest.register_craftitem("maidroid:dummy_empty_craftitem", { wield_image = "maidroid_dummy_empty_craftitem.png", }) - + local function on_activate(self, staticdata) -- attach to the nearest maidroid. local all_objects = minetest.get_objects_inside_radius(self.object:getpos(), 0.1) @@ -271,10 +275,29 @@ function maidroid.register_core(core_name, def) }) end +-- maidroid.register_egg registers a definition of a new egg. +function maidroid.register_egg(egg_name, def) + maidroid.register_eggs[egg_name] = def + + minetest.register_craftitem(egg_name, { + description = def.description, + inventory_image = def.inventory_image, + stack_max = 1, + + on_use = function(item_stack, user, pointed_thing) + if pointed_thing.above ~= nil then + minetest.add_entity(pointed_thing.above, def.product_name) + return itemstack + end + return nil + end, + }) +end + -- maidroid.register_maidroid registers a definition of a new maidroid. function maidroid.register_maidroid(product_name, def) maidroid.registered_maidroids[product_name] = def - + -- initialize manufacturing number of a new maidroid. if maidroid.manufacturing_data[product_name] == nil then maidroid.manufacturing_data[product_name] = 0 @@ -524,17 +547,9 @@ function maidroid.register_maidroid(product_name, def) }) -- register maidroid egg. - minetest.register_craftitem(product_name .. "_egg", { + maidroid.register_egg(production_name .. "_egg", { description = production_name .. " egg", inventory_image = def.egg_image, - stack_max = 1, - - on_use = function(item_stack, user, pointed_thing) - if pointed_thing.above ~= nil then - minetest.add_entity(pointed_thing.above, product_name) - return itemstack - end - return nil - end, + product_name = product_name, }) end From 2231babc5687098c6883b03853f136bf48dd17ac Mon Sep 17 00:00:00 2001 From: tacigar Date: Sat, 17 Dec 2016 10:19:45 +0900 Subject: [PATCH 15/22] Fix maidroid.register_egg API --- maidroid/api.lua | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/maidroid/api.lua b/maidroid/api.lua index c2b62e2..4735331 100644 --- a/maidroid/api.lua +++ b/maidroid/api.lua @@ -285,7 +285,7 @@ function maidroid.register_egg(egg_name, def) stack_max = 1, on_use = function(item_stack, user, pointed_thing) - if pointed_thing.above ~= nil then + if pointed_thing.above ~= nil and def.product_name ~= nil then minetest.add_entity(pointed_thing.above, def.product_name) return itemstack end From 5933e1e3e8d9dba0a3395fddcb13a0a094724596 Mon Sep 17 00:00:00 2001 From: tacigar Date: Sat, 17 Dec 2016 10:21:52 +0900 Subject: [PATCH 16/22] Add empty egg --- maidroid/register.lua | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/maidroid/register.lua b/maidroid/register.lua index bf9b52b..01f3430 100644 --- a/maidroid/register.lua +++ b/maidroid/register.lua @@ -3,6 +3,11 @@ -- https://github.com/tacigar/maidroid ------------------------------------------------------------ +maidroid.register_egg("maidroid:empty_egg", { + description = "Empty Egg", + inventory_image = "maidroid_empty_egg.png", +}) + maidroid.register_maidroid("maidroid:maidroid_mk1", { hp_max = 10, weight = 20, From fa92b56652c82d36795bbf6185fcd1115b0c7337 Mon Sep 17 00:00:00 2001 From: tacigar Date: Sat, 17 Dec 2016 10:28:39 +0900 Subject: [PATCH 17/22] Commit before debugging --- maidroid_tool/egg_writer.lua | 93 ++++++++++++++++++++++++++++++++++++ 1 file changed, 93 insertions(+) create mode 100644 maidroid_tool/egg_writer.lua diff --git a/maidroid_tool/egg_writer.lua b/maidroid_tool/egg_writer.lua new file mode 100644 index 0000000..3b59898 --- /dev/null +++ b/maidroid_tool/egg_writer.lua @@ -0,0 +1,93 @@ +------------------------------------------------------------ +-- Copyright (c) 2016 tacigar. All rights reserved. +-- https://github.com/tacigar/maidroid +------------------------------------------------------------ + +local dye_item_map = { + ["dye:red"] = "maidroid:maidroid_mk1_egg", +} + +local formspec = { -- want to change. + ["inactive"] = "size[8,9]" + .. default.gui_bg + .. default.gui_bg_img + .. default.gui_slots + .. "label[3.75,0;Core]" + .. "list[current_name;core;3.5,0.5;1,1;]" + .. "label[2.75,2;Coal]" + .. "list[current_name;fuel;2.5,2.5;1,1;]" + .. "label[4.75,2;Dye]" + .. "list[current_name;dye;4.5,2.5;1,1;]" + .. "image[3.5,1.5;1,2;maidroid_tool_gui_arrow.png]" + .. "image[3.1,3.5;2,1;maidroid_tool_gui_meter.png^[transformR270]" + .. "list[current_player;main;0,5;8,1;]" + .. "list[current_player;main;0,6.2;8,3;8]", + + ["active"] = function(time) + local arrow_percent = (100 / 40) * time + local merter_percent = 0 + if time % 16 >= 8 then + meter_percent = (8 - (time % 8)) * (100 / 8) + else + meter_percent = (time % 8) * (100 / 8) + end + return "size[8,9]" + .. default.gui_bg + .. default.gui_bg_img + .. default.gui_slots + .. "label[3.75,0;Core]" + .. "list[current_name;core;3.5,0.5;1,1;]" + .. "label[2.75,2;Coal]" + .. "list[current_name;fuel;2.5,2.5;1,1;]" + .. "label[4.75,2;Dye]" + .. "list[current_name;dye;4.5,2.5;1,1;]" + .. "image[3.5,1.5;1,2;maidroid_tool_gui_arrow.png^[lowpart:" + .. arrow_percent + .. ":maidroid_tool_gui_arrow_filled.png]" + .. "image[3.1,3.5;2,1;maidroid_tool_gui_meter.png^[lowpart:" + .. meter_percent + .. ":maidroid_tool_gui_meter_filled.png^[transformR270]" + .. "list[current_player;main;0,5;8,1;]" + .. "list[current_player;main;0,6.2;8,3;8]" + end, +} + +local tiles = { + ["active"] = { + "default:stone", + }, + + ["inactive"] = { + "default:stone", + }, +} + +local nodebox = { + type = "fixed", + fixed = { + { -0.5, -0.375, -0.4375, 0.5, 0.3125, 0.4375}, + {-0.4375, -0.4375, -0.5, 0.4375, 0.25, 0.5}, + {-0.3125, -0.5, -0.3125, 0.3125, -0.4375, 0.3125}, + { -0.375, 0.3125, -0.375, -0.3125, 0.375, 0.375}, + { 0.3125, 0.3125, -0.375, 0.375, 0.375, 0.375}, + { -0.125, -0.5, -0.0625, 0.125, 0.375, 0.0625}, + }, +} + +local selection_box = { + type = "fixed", + fixed = { + {-0.4375, -0.4375, -0.4375, 0.4375, -0.4375, 0.4375}, + }, +} + +maidroid_tool.register_writer("maidroid_tool:egg_writer", { + formspec = formspec, + tiles = tiles, + nodebox = nodebox, + selection_box = selection_box, + duration = 30, + empty_itemname = "maidroid:empty_egg", + dye_item_map = dye_item_map, + is_mainitem = maidroid.is_egg, +} From f7c363f953a285a57557f8a889fde754dfaaf44f Mon Sep 17 00:00:00 2001 From: tacigar Date: Sat, 17 Dec 2016 12:12:20 +0900 Subject: [PATCH 18/22] Fix core writer, etc... --- maidroid/api.lua | 6 ++-- maidroid_tool/api.lua | 27 +++++++++--------- maidroid_tool/core_writer.lua | 54 ++++++++++++++++++++++++----------- maidroid_tool/egg_writer.lua | 12 ++++---- 4 files changed, 61 insertions(+), 38 deletions(-) diff --git a/maidroid/api.lua b/maidroid/api.lua index 4735331..c377aee 100644 --- a/maidroid/api.lua +++ b/maidroid/api.lua @@ -277,7 +277,7 @@ end -- maidroid.register_egg registers a definition of a new egg. function maidroid.register_egg(egg_name, def) - maidroid.register_eggs[egg_name] = def + maidroid.registered_eggs[egg_name] = def minetest.register_craftitem(egg_name, { description = def.description, @@ -547,8 +547,8 @@ function maidroid.register_maidroid(product_name, def) }) -- register maidroid egg. - maidroid.register_egg(production_name .. "_egg", { - description = production_name .. " egg", + maidroid.register_egg(product_name .. "_egg", { + description = product_name .. " egg", inventory_image = def.egg_image, product_name = product_name, }) diff --git a/maidroid_tool/api.lua b/maidroid_tool/api.lua index 1a6ce45..12e1eb0 100644 --- a/maidroid_tool/api.lua +++ b/maidroid_tool/api.lua @@ -8,9 +8,10 @@ maidroid_tool.shared = {} -- maidroid_tool.shared.generate_writer is a shared -- function called for registering egg writer and core writer. function maidroid_tool.register_writer(nodename, options) - local formspecs = options.formspecs + local description = options.description + local formspec = options.formspec local tiles = options.tiles - local nodebox = options.nodebox + local node_box = options.node_box local selection_box = options.selection_box local duration = options.duration local on_activate = options.on_activate @@ -52,7 +53,7 @@ function maidroid_tool.register_writer(nodename, options) -- if time is positive, this node is active. if time >= 0 then - if time <= max_time then + if time <= duration then meta:set_float("time", time + 1) meta:set_string("formspec", formspec.active(time)) else @@ -100,15 +101,15 @@ function maidroid_tool.register_writer(nodename, options) if (listname == "fuel" and itemname == "default:coal_lump") then return stack:get_count() - elseif listname == "dye" and dye_core_map[itemname] ~= nil then + elseif listname == "dye" and dye_item_map[itemname] ~= nil then return stack:get_count() - elseif listname == "main" and is_mainitem(itemname) then + elseif listname == "main" and itemname == empty_itemname then return stack:get_count() end return 0 end - -- allow_metadata_inventory_move is a common callback for the core writer. + -- allow_metadata_inventory_move is a common callback for the node. local function allow_metadata_inventory_move(pos, from_list, from_index, to_list, to_index, count, player) local meta = minetest.get_meta(pos) local inventory = meta:get_inventory() @@ -116,10 +117,10 @@ function maidroid_tool.register_writer(nodename, options) return allow_metadata_inventory_put(pos, listname, to_index, stack, player) end - do -- register a definition of an inactive core writer. + do -- register a definition of an inactive node. local function on_construct(pos) local meta = minetest.get_meta(pos) - meta:set_string("formspec", formspec_inactive) + meta:set_string("formspec", formspec.inactive) meta:set_string("output", "") meta:set_string("time", -1) @@ -161,8 +162,8 @@ function maidroid_tool.register_writer(nodename, options) return stack:get_count() -- maybe add more. end - minetest.register_node("maidroid_tool:core_writer", { - description = "maidroid tool : core writer", + minetest.register_node(nodename, { + description = description, drawtype = "nodebox", paramtype = "light", paramtype2 = "facedir", @@ -185,15 +186,15 @@ function maidroid_tool.register_writer(nodename, options) end -- end register inactive node. - do -- register a definition of an active core writer. + do -- register a definition of an active node. local function allow_metadata_inventory_take(pos, listname, index, stack, player) - if listname == "core" then + if listname == "main" then return 0 end return stack:get_count() end - minetest.register_node("maidroid_tool:core_writer_active", { + minetest.register_node(nodename .. "_active", { drawtype = "nodebox", paramtype = "light", paramtype2 = "facedir", diff --git a/maidroid_tool/core_writer.lua b/maidroid_tool/core_writer.lua index 907f830..3047939 100644 --- a/maidroid_tool/core_writer.lua +++ b/maidroid_tool/core_writer.lua @@ -5,11 +5,11 @@ do -- register core writer - local dye_core_map = { + local dye_item_map = { ["dye:red"] = "maidroid_core:basic", } - local nodebox = { + local node_box = { type = "fixed", fixed = { {-0.4375, -0.25, -0.4375, 0.4375, 0.1875, 0.4375}, @@ -34,7 +34,7 @@ do -- register core writer .. default.gui_bg_img .. default.gui_slots .. "label[3.75,0;Core]" - .. "list[current_name;core;3.5,0.5;1,1;]" + .. "list[current_name;main;3.5,0.5;1,1;]" .. "label[2.75,2;Coal]" .. "list[current_name;fuel;2.5,2.5;1,1;]" .. "label[4.75,2;Dye]" @@ -57,7 +57,7 @@ do -- register core writer .. default.gui_bg_img .. default.gui_slots .. "label[3.75,0;Core]" - .. "list[current_name;core;3.5,0.5;1,1;]" + .. "list[current_name;main;3.5,0.5;1,1;]" .. "label[2.75,2;Coal]" .. "list[current_name;fuel;2.5,2.5;1,1;]" .. "label[4.75,2;Dye]" @@ -110,7 +110,7 @@ do -- register core writer length = 1.5, }, }, - } + }, } -- get_nearest_core_entity returns the nearest core entity. @@ -136,7 +136,7 @@ do -- register core writer local function on_metadata_inventory_put_to_main(pos) local entity_position = { - x = pos.x, y = pos.y + 0.65, z = pos.z + x = pos.x, y = pos.y + 0.65, z = pos.z, } minetest.add_entity(entity_position, "maidroid_tool:core_entity") end @@ -147,19 +147,19 @@ do -- register core writer end maidroid_tool.register_writer("maidroid_tool:core_writer", { + description = "maidroid tool : core writer", formspec = formspec, tiles = tiles, - nodebox = nodebox, + node_box = node_box, selection_box = selection_box, duration = 40, on_activate = on_activate, on_deactivate = on_deactivate, empty_itemname = "maidroid_core:empty", dye_item_map = dye_item_map, - is_mainitem = maidroid.is_core, on_metadata_inventory_put_to_main = on_metadata_inventory_put_to_main, on_metadata_inventory_take_from_main = on_metadata_inventory_take_from_main, - } + }) end @@ -195,23 +195,45 @@ do local function on_activate(self, staticdata) self.object:set_properties{textures = {"maidroid_tool:core_node"}} + + print(staticdata) + + if staticdata ~= "" then + local data = minetest.deserialize(staticdata) + self.is_rotating = data["is_rotating"] + + if self.is_rotating then + self:start_rotate() + end + end end local function start_rotate(self) self.object:set_properties{automatic_rotate = 1} + self.is_rotating = true end local function stop_rotate(self) self.object:set_properties{automatic_rotate = 0} + self.is_rotating = false + end + + local function get_staticdata(self) + local data = { + ["is_rotating"] = self.is_rotating, + } + return minetest.serialize(data) end minetest.register_entity("maidroid_tool:core_entity", { - physical = false, - visual = "wielditem", - visual_size = {x = 0.5, y = 0.5}, - collisionbox = {0, 0, 0, 0, 0, 0}, - on_activate = on_activate, - start_rotate = start_rotate, - stop_rotate = stop_rotate, + physical = false, + visual = "wielditem", + visual_size = {x = 0.5, y = 0.5}, + collisionbox = {0, 0, 0, 0, 0, 0}, + on_activate = on_activate, + start_rotate = start_rotate, + stop_rotate = stop_rotate, + get_staticdata = get_staticdata, + is_rotating = false, }) end diff --git a/maidroid_tool/egg_writer.lua b/maidroid_tool/egg_writer.lua index 3b59898..ef33c42 100644 --- a/maidroid_tool/egg_writer.lua +++ b/maidroid_tool/egg_writer.lua @@ -54,15 +54,15 @@ local formspec = { -- want to change. local tiles = { ["active"] = { - "default:stone", + "default_stone.png", }, ["inactive"] = { - "default:stone", + "default_stone.png", }, } -local nodebox = { +local node_box = { type = "fixed", fixed = { { -0.5, -0.375, -0.4375, 0.5, 0.3125, 0.4375}, @@ -82,12 +82,12 @@ local selection_box = { } maidroid_tool.register_writer("maidroid_tool:egg_writer", { + description = "maidroid tool : egg writer", formspec = formspec, tiles = tiles, - nodebox = nodebox, + node_box = node_box, selection_box = selection_box, duration = 30, empty_itemname = "maidroid:empty_egg", dye_item_map = dye_item_map, - is_mainitem = maidroid.is_egg, -} +}) From b39fe84467b6d984f41a78b5af617490a4b4c629 Mon Sep 17 00:00:00 2001 From: tacigar Date: Sat, 17 Dec 2016 13:01:15 +0900 Subject: [PATCH 19/22] Fix formspec of egg writer --- maidroid_tool/egg_writer.lua | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/maidroid_tool/egg_writer.lua b/maidroid_tool/egg_writer.lua index ef33c42..a91e665 100644 --- a/maidroid_tool/egg_writer.lua +++ b/maidroid_tool/egg_writer.lua @@ -12,8 +12,8 @@ local formspec = { -- want to change. .. default.gui_bg .. default.gui_bg_img .. default.gui_slots - .. "label[3.75,0;Core]" - .. "list[current_name;core;3.5,0.5;1,1;]" + .. "label[3.75,0;Egg]" + .. "list[current_name;main;3.5,0.5;1,1;]" .. "label[2.75,2;Coal]" .. "list[current_name;fuel;2.5,2.5;1,1;]" .. "label[4.75,2;Dye]" @@ -36,7 +36,7 @@ local formspec = { -- want to change. .. default.gui_bg_img .. default.gui_slots .. "label[3.75,0;Core]" - .. "list[current_name;core;3.5,0.5;1,1;]" + .. "list[current_name;main;3.5,0.5;1,1;]" .. "label[2.75,2;Coal]" .. "list[current_name;fuel;2.5,2.5;1,1;]" .. "label[4.75,2;Dye]" From e9df9da713f10b3918342ba0f41e5e4d46317158 Mon Sep 17 00:00:00 2001 From: tacigar Date: Sat, 17 Dec 2016 15:23:52 +0900 Subject: [PATCH 20/22] Add Empty and Mk1 egg textures --- maidroid/textures/maidroid_empty_egg.png | Bin 0 -> 337 bytes maidroid/textures/maidroid_empty_egg.xcf | Bin 0 -> 1148 bytes maidroid/textures/maidroid_maidroid_mk1_egg.png | Bin 0 -> 439 bytes maidroid/textures/maidroid_maidroid_mk1_egg.xcf | Bin 0 -> 1260 bytes 4 files changed, 0 insertions(+), 0 deletions(-) create mode 100644 maidroid/textures/maidroid_empty_egg.png create mode 100644 maidroid/textures/maidroid_empty_egg.xcf create mode 100644 maidroid/textures/maidroid_maidroid_mk1_egg.png create mode 100644 maidroid/textures/maidroid_maidroid_mk1_egg.xcf diff --git a/maidroid/textures/maidroid_empty_egg.png b/maidroid/textures/maidroid_empty_egg.png new file mode 100644 index 0000000000000000000000000000000000000000..13070195e692f12a33a067a6bd9bde179cea96c1 GIT binary patch literal 337 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`Y)RhkE)4%caKYZ?lYt_f1s;*b z3=G`DAk4@xYmNj^kiEpy*OmPNk06@}=Mt;>SwJD#%#er@=ltB<)VvZPmw~~#C^fMp zHASI3vm`^o-P1Q9MK6^dD8ALx#WBR77|LvJo8#w1bd6c*LfA{XQA8sA!ILm6_ zn|SdjPx$)#i94$Dw3&gxIp?LOTN9hkJG0;NVsrbI%D(=R<*3cmZd3GWF)=nUFv!SW z<&dGA&sL&uC@39a;9S6_q<7np$ElcAn7Or~Q{?u>olRDH9lEwhcVxYE*~66>*eN&H zWhX#hBKcb&Z{JThU6TN7s&RT zN5&`-FOfFVLS9r%eSP%bVC@Asb~s+n=l)`YJ)`3Dw<~|N@h9G=aC7I~ynFwFD(9v( zoR0#37_7nxY3Sx`u-b~njr{;JPYZV)XXJ zXkGXI4>bC)z8{UlMc`f6cR}2q5-V-^aS?93a528~*EGMJPS^hCXppA=l}hFBQF;$m z@b5KYt-lYwQTNy9uRp*2psJt;qJ^X{qmk{3skKuv7WS&aXASN)_(_9%4SouybL(&c zbRR|iSJYl03G+_@YTM`)TWUsBn)pJS3(ey$a#v(=tX+MG3sLaw5Nn6nF4-n_ihUMq zi?CJ7qQRWlEkw49wJr&V7}bFaHr;k%5nK9qoMlCknTi7gR>tFww&K2qB?U`rm#0dR zC6$Yurw2urRBo3HODcEreX7Wk%3Gz3OOA}oRqo~@-6^e0!XZX=pn^@eom<4Pq|!9c zQ&WK@Wu;ufk}{SgEXiFGNlBJuA`%`QBw3P)T{0}m#7Xv%Bug@Bl`<|lGA@^in}}#9 zwJr&V7}bFaHr;k&5yO&p36x zscTJ$`>vL);mwz3+0^w==FD>jodxcX+&$OJ-*UU$`0TT9{EGwU@9Vx0Q;jJ%&Rw2u z9T2hUu+{a1$sRmG)7Y|J>EE`Bk1y%?qp@&D^IL;X&o@%75C4~%3qO9t^ViL~@RGfR d>W|ky7zL+InDe-|^*bp1JYD@<);T3K0RVZRt%Cpn literal 0 HcmV?d00001 diff --git a/maidroid/textures/maidroid_maidroid_mk1_egg.xcf b/maidroid/textures/maidroid_maidroid_mk1_egg.xcf new file mode 100644 index 0000000000000000000000000000000000000000..82237fa37b55213a084e6d05f3853e809df4f37a GIT binary patch literal 1260 zcmZ{iy>8P`6vywqPMW5nqI{$igU5CVYKJ>zgP~$T;uX@=aV_PeN`h!NOH5pKU}d#D z!|K7W;KwlH1&~bK`0ziDje-bQI=<)p&(}}3U2k$@-wsFi$QwHX=cqFFpTMNV;~8xK z)n_5taGt{&Fbj5E`CQjU{RQqr7h`+F*<|8Omxu)?pT3?ugQat2fAE&q_QjjG?>KW* zmU@$c>-5~Ycf}g2r8rqE@5YY3n2o)w(}RRmRowxt*aO>^jW-#=ou6G0ZFaQ|#HS~$x;fZYABv{C+U z<@Zn>`L*_N*WZWVXzRzv`|n@AaaQpIXAj0-hG6@Z&!z3k$0c5D`3GBmXUl)I`>AZ3DWL7S|gO8_?jH+dQx!{8=Wsf-K5;HIC-bk!Ge zYyiG8LZm7F?KMJ>n-sB3r6|im&aDNvlmf_EP(r3E&JEEfjs8^{3t<@C^viNgSVQ0u zNUPN1{oponoN_Jpf!oL!y9~HZ$*sYy^U&9txpk;Q=@**0bw89LxP4zUw-zD{nHwRv zb%$OjU6Mxjodig+*QQ8;u*ICjbBd literal 0 HcmV?d00001 From 09afb092d45a00cc44a41082e80e3e85ca702e29 Mon Sep 17 00:00:00 2001 From: tacigar Date: Sat, 17 Dec 2016 15:31:49 +0900 Subject: [PATCH 21/22] Update maidroid/register.lua --- maidroid/register.lua | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/maidroid/register.lua b/maidroid/register.lua index 01f3430..11f84c0 100644 --- a/maidroid/register.lua +++ b/maidroid/register.lua @@ -13,9 +13,10 @@ maidroid.register_maidroid("maidroid:maidroid_mk1", { weight = 20, mesh = "maidroid.b3d", textures = {"maidroid_mk1.png"}, - egg_image = "maidroid_mk1_egg.png", + egg_image = "maidroid_maidroid_mk1_egg.png", }) +--[[ maidroid.register_maidroid("maidroid:maidroid_mk2", { hp_max = 10, weight = 20, @@ -31,3 +32,4 @@ maidroid.register_maidroid("maidroid:maidroid_mk3", { textures = {"maidroid_mk3.png"}, egg_image = "maidroid_mk3_egg.png", }) +]]-- From 682561322d2fc425b06f14e0228dd573e82f9742 Mon Sep 17 00:00:00 2001 From: tacigar Date: Sat, 17 Dec 2016 15:39:55 +0900 Subject: [PATCH 22/22] Fix formspec, and change duration --- maidroid_tool/egg_writer.lua | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/maidroid_tool/egg_writer.lua b/maidroid_tool/egg_writer.lua index a91e665..ae24a8d 100644 --- a/maidroid_tool/egg_writer.lua +++ b/maidroid_tool/egg_writer.lua @@ -35,7 +35,7 @@ local formspec = { -- want to change. .. default.gui_bg .. default.gui_bg_img .. default.gui_slots - .. "label[3.75,0;Core]" + .. "label[3.75,0;Egg]" .. "list[current_name;main;3.5,0.5;1,1;]" .. "label[2.75,2;Coal]" .. "list[current_name;fuel;2.5,2.5;1,1;]" @@ -87,7 +87,7 @@ maidroid_tool.register_writer("maidroid_tool:egg_writer", { tiles = tiles, node_box = node_box, selection_box = selection_box, - duration = 30, + duration = 40, empty_itemname = "maidroid:empty_egg", dye_item_map = dye_item_map, })