From caf62e2b9c25ba8e6bc763abcb931f39c18d3977 Mon Sep 17 00:00:00 2001 From: Evert Prants Date: Tue, 19 Jun 2018 12:32:28 +0300 Subject: [PATCH] Add a planter machine --- elepower_farming/formspec.lua | 25 ++ elepower_farming/init.lua | 2 + elepower_farming/mod.conf | 2 +- elepower_farming/nodes/init.lua | 2 + elepower_farming/nodes/planter.lua | 261 ++++++++++++++++++ .../textures/elefarming_gui_bar.png | Bin 0 -> 10263 bytes .../textures/elefarming_machine_base.png | Bin 0 -> 321 bytes .../textures/elefarming_machine_planter.png | Bin 0 -> 5890 bytes .../textures/elefarming_machine_side.png | Bin 0 -> 338 bytes elepower_papi/machine.lua | 21 +- 10 files changed, 303 insertions(+), 10 deletions(-) create mode 100644 elepower_farming/formspec.lua create mode 100644 elepower_farming/nodes/init.lua create mode 100644 elepower_farming/nodes/planter.lua create mode 100644 elepower_farming/textures/elefarming_gui_bar.png create mode 100644 elepower_farming/textures/elefarming_machine_base.png create mode 100644 elepower_farming/textures/elefarming_machine_planter.png create mode 100644 elepower_farming/textures/elefarming_machine_side.png diff --git a/elepower_farming/formspec.lua b/elepower_farming/formspec.lua new file mode 100644 index 0000000..d9adb93 --- /dev/null +++ b/elepower_farming/formspec.lua @@ -0,0 +1,25 @@ + +elefarm.formspec = {} + +local function bar(x,y,metric) + return "image["..x..","..y..";0.25,2.8;elepower_gui_barbg.png".. + "^[lowpart:"..metric..":elefarming_gui_bar.png]" +end + +function elefarm.formspec.planter_formspec(timer, power) + return "size[8,10]".. + default.gui_bg.. + default.gui_bg_img.. + default.gui_slots.. + ele.formspec.power_meter(power).. + bar(1, 0, 100-timer).. + "list[context;layout;2.5,0;3,3;]".. + "list[context;src;0,3.5;8,2;]".. + "list[current_player;main;0,5.75;8,1;]".. + "list[current_player;main;0,7;8,3;8]".. + "listring[current_player;main]".. + "listring[context;src]".. + "listring[current_player;main]".. + default.get_hotbar_bg(0, 5.75) +end + diff --git a/elepower_farming/init.lua b/elepower_farming/init.lua index 517c1ff..18e3ecb 100644 --- a/elepower_farming/init.lua +++ b/elepower_farming/init.lua @@ -6,3 +6,5 @@ local modpath = minetest.get_modpath(minetest.get_current_modname()) elefarm = rawget(_G, "elefarm") or {} elefarm.modpath = modpath +dofile(modpath.."/formspec.lua") +dofile(modpath.."/nodes/init.lua") diff --git a/elepower_farming/mod.conf b/elepower_farming/mod.conf index 61c2ef5..bb9ab28 100644 --- a/elepower_farming/mod.conf +++ b/elepower_farming/mod.conf @@ -1,3 +1,3 @@ name = elepower_farming description = Electric Farming Automation! -depends = elepower_papi, elepower_tools +depends = elepower_papi, elepower_tools, farming diff --git a/elepower_farming/nodes/init.lua b/elepower_farming/nodes/init.lua new file mode 100644 index 0000000..bd9d4ee --- /dev/null +++ b/elepower_farming/nodes/init.lua @@ -0,0 +1,2 @@ + +dofile(elefarm.modpath.."/nodes/planter.lua") diff --git a/elepower_farming/nodes/planter.lua b/elepower_farming/nodes/planter.lua new file mode 100644 index 0000000..327cbd5 --- /dev/null +++ b/elepower_farming/nodes/planter.lua @@ -0,0 +1,261 @@ + +local PLANTER_TICK = 5 + +local ranges = { + -- Slot 1 (starts from upper left corner) + { + {x = -4, z = 2, y = 1}, + {x = -2, z = 4, y = 1}, + }, + -- Slot 2 + { + {x = -1, z = 2, y = 1}, + {x = 1, z = 4, y = 1}, + }, + -- Slot 3 + { + {x = 2, z = 2, y = 1}, + {x = 4, z = 4, y = 1}, + }, + -- Slot 4 + { + {x = -4, z = -1, y = 1}, + {x = -2, z = 1, y = 1}, + }, + -- Slot 5 (center) + { + {x = -1, z = -1, y = 1}, + {x = 1, z = 1, y = 1}, + }, + -- Slot 6 + { + {x = 2, z = -1, y = 1}, + {x = 4, z = 1, y = 1}, + }, + -- Slot 7 + { + {x = -4, z = -4, y = 1}, + {x = -2, z = -2, y = 1}, + }, + -- Slot 8 + { + {x = -1, z = -4, y = 1}, + {x = 1, z = -2, y = 1}, + }, + -- Slot 9 (last one, bottom right) + { + {x = 2, z = -4, y = 1}, + {x = 4, z = -2, y = 1}, + }, +} + +local function can_dig(pos, player) + local meta = minetest.get_meta(pos) + local inv = meta:get_inventory() + return inv:is_empty("src") +end + +local function allow_metadata_inventory_put(pos, listname, index, stack, player) + if minetest.is_protected(pos, player:get_player_name()) then + return 0 + end + + if listname == "layout" then + local inv = minetest.get_meta(pos):get_inventory() + stack:set_count(1) + inv:set_stack(listname, index, stack) + return 0 + end + + return stack:get_count() +end + +local function allow_metadata_inventory_move(pos, from_list, from_index, to_list, to_index, count, player) + local meta = minetest.get_meta(pos) + local inv = meta:get_inventory() + local stack = inv:get_stack(from_list, from_index) + + if from_list == "layout" then + inv:set_stack(from_list, from_index, ItemStack(nil)) + return 0 + end + + return allow_metadata_inventory_put(pos, to_list, to_index, stack, player) +end + +local function allow_metadata_inventory_take(pos, listname, index, stack, player) + if minetest.is_protected(pos, player:get_player_name()) then + return 0 + end + + if listname == "layout" then + local inv = minetest.get_meta(pos):get_inventory() + inv:set_stack(listname, index, ItemStack(nil)) + return 0 + end + + return stack:get_count() +end + +local function plant(pos, range, stack, inv) + local planted = 0 + local range_st = vector.add(ranges[range][1], pos) + local range_end = vector.add(ranges[range][2], pos) + + local y_top = 0 + if minetest.get_node({x=pos.x,y=pos.y+1,z=pos.z}).name ~= "air" then + y_top = y_top + 1 + end + + if not stack or stack:is_empty() then + return 0 + end + + local to_plant = stack:get_name() + local to_place = nil + local amount = 0 + local till = false + for _,stack in ipairs(inv:get_list("src")) do + if stack:get_name() == to_plant then + amount = amount + stack:get_count() + end + end + + -- Saplings + if ele.helpers.get_item_group(to_plant, "sapling") then + to_place = to_plant + to_plant = nil + elseif ele.helpers.get_item_group(to_plant, "seed") then + to_place = nil + till = true + end + + if (to_plant or to_place) and amount > 0 then + for x = range_st.x, range_end.x do + if amount == 0 then break end + for z = range_st.z, range_end.z do + if amount == 0 then break end + local place_pos = {x = x, y = range_st.y + y_top, z = z} + local base_pos = {x = place_pos.x, y = place_pos.y - 1, z = place_pos.z} + local base_node = minetest.get_node_or_nil(base_pos) + + -- Make sure we're planting on soil, till it if necessary + if base_node and ele.helpers.get_item_group(base_node.name, "soil") then + local node = minetest.get_node_or_nil(place_pos) + if node and node.name == "air" then + if till then + local regN = minetest.registered_nodes + if regN[base_node.name].soil == nil or + regN[base_node.name].soil.wet == nil or + regN[base_node.name].soil.dry == nil then + till = false + end + + if till then + minetest.sound_play("default_dig_crumbly", { + pos = base_pos, + gain = 0.5, + }) + + minetest.set_node(base_pos, {name = regN[base_node.name].soil.dry}) + end + end + + local take = to_place + if to_place then + minetest.set_node(place_pos, {name = to_place}) + else + local seeddef = minetest.registered_items[to_plant] + + farming.place_seed(to_plant, nil, {type = "node", under = base_pos, above = place_pos}, + seeddef.next_plant) + + take = to_plant + end + + planted = planted + 1 + amount = amount - 1 + + inv:remove_item("src", ItemStack(take, 1)) + end + end + end + end + end + + return planted +end + +local function on_timer(pos, elapsed) + local refresh = false + local meta = minetest.get_meta(pos) + local inv = meta:get_inventory() + + local capacity = ele.helpers.get_node_property(meta, pos, "capacity") + local usage = ele.helpers.get_node_property(meta, pos, "usage") + local storage = ele.helpers.get_node_property(meta, pos, "storage") + + local work = meta:get_int("src_time") + + if storage > usage then + if work == PLANTER_TICK then + local planted = 0 + for index, slot in ipairs(inv:get_list("layout")) do + if planted >= 9 then break end + if not slot:is_empty() then + planted = planted + plant(pos, index, slot, inv) + end + end + + work = 0 + if planted > 0 then + storage = storage - usage + end + else + work = work + 1 + end + + refresh = true + end + + local power_percent = math.floor((storage / capacity)*100) + local work_percent = math.floor((work / PLANTER_TICK)*100) + + meta:set_string("formspec", elefarm.formspec.planter_formspec(work_percent, power_percent)) + meta:set_int("storage", storage) + meta:set_int("src_time", work) + + return refresh +end + +ele.register_base_device("elepower_farming:planter", { + description = "Automatic Planter", + ele_capacity = 12000, + ele_inrush = 288, + ele_usage = 128, + tiles = { + "elefarming_machine_planter.png", "elefarming_machine_base.png", "elefarming_machine_side.png", + "elefarming_machine_side.png", "elefarming_machine_side.png", "elefarming_machine_side.png", + }, + groups = { + oddly_breakable_by_hand = 1, + ele_machine = 1, + ele_user = 1, + cracky = 1, + }, + on_construct = function (pos) + local meta = minetest.get_meta(pos) + local inv = meta:get_inventory() + inv:set_size("layout", 9) + inv:set_size("src", 16) + + meta:set_int("src_time", 0) + + meta:set_string("formspec", elefarm.formspec.planter_formspec(0,0)) + end, + allow_metadata_inventory_put = allow_metadata_inventory_put, + allow_metadata_inventory_take = allow_metadata_inventory_take, + allow_metadata_inventory_move = allow_metadata_inventory_move, + can_dig = can_dig, + on_timer = on_timer, +}) diff --git a/elepower_farming/textures/elefarming_gui_bar.png b/elepower_farming/textures/elefarming_gui_bar.png new file mode 100644 index 0000000000000000000000000000000000000000..7c66a66043f1c6caa4496f1b376fc34716a57c71 GIT binary patch literal 10263 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 JF6*2UngF9Jb^ZVV literal 0 HcmV?d00001 diff --git a/elepower_farming/textures/elefarming_machine_planter.png b/elepower_farming/textures/elefarming_machine_planter.png new file mode 100644 index 0000000000000000000000000000000000000000..72b20be2c8f4dee9c26b103c6c4fae00d14a44d3 GIT binary patch literal 5890 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 g;NWpuWcp^{=YXtv{_I_ff4Kp7rk6{>;{XE z)7O>#5t}f(tTNLFF`yiSWQl7;iF1B#Zfaf$gL6@8Vo7R>LV0FMhJw4NZ$Nk>pEyv_ z8BZ6-5RLOwgKi79IB+OOdKcy#R$6oB*PM-$TYsPEno}-cUSr{{AR%|-yKKYX9N~u4 zNTo%K7?hYAcCVf@;jzUG&r=s}-&J<%a3~M&DDs#j(yOAU9GRJBHuGlXyqDh5US8k% z*1pdAe`8DTY?CW;AwHj8t-n)iw7GKLW>@3jOVNwPjg~EO;F=okcs98vyV2$8E8Yd) z=c&$+t~m4ibsgKo;(IG!ZJh78qSbW5wW#d1_qxxe2voh_y1`;=Y3wQ8m1QyPTDC%q gWA85i_mdKI;Vst014}a?f?J) literal 0 HcmV?d00001 diff --git a/elepower_papi/machine.lua b/elepower_papi/machine.lua index 0247379..9565273 100644 --- a/elepower_papi/machine.lua +++ b/elepower_papi/machine.lua @@ -211,19 +211,22 @@ function ele.register_machine(nodename, nodedef) nodedef.groups["ele_machine"] = 0 end - -- Add ports to the device's faces - if nodedef.tiles and #nodedef.tiles == 6 then - for i = 1, 5 do - nodedef.tiles[i] = nodedef.tiles[i] .. "^elepower_power_port.png" + if not nodedef.ele_no_automatic_ports then + -- Add ports to the device's faces + if nodedef.tiles and #nodedef.tiles == 6 then + for i = 1, 5 do + nodedef.tiles[i] = nodedef.tiles[i] .. "^elepower_power_port.png" + end end - end - -- Add ports to the device's active faces - if nodedef.ele_active_nodedef and nodedef.ele_active_nodedef.tiles and #nodedef.ele_active_nodedef.tiles == 6 then - for i = 1, 5 do - nodedef.ele_active_nodedef.tiles[i] = nodedef.ele_active_nodedef.tiles[i] .. "^elepower_power_port.png" + -- Add ports to the device's active faces + if nodedef.ele_active_nodedef and nodedef.ele_active_nodedef.tiles and #nodedef.ele_active_nodedef.tiles == 6 then + for i = 1, 5 do + nodedef.ele_active_nodedef.tiles[i] = nodedef.ele_active_nodedef.tiles[i] .. "^elepower_power_port.png" + end end end + nodedef.ele_no_automatic_ports = nil -- Default metadata handlers for "src" and "dst" if not nodedef.allow_metadata_inventory_put then