From 6731db14e580ddccace186f5a8ac03dad0661e0c Mon Sep 17 00:00:00 2001 From: Gábriel <38207624+gabriel1379@users.noreply.github.com> Date: Sun, 07 Jul 2024 18:53:15 +0200 Subject: [PATCH] Add compressor recipes for nether racks (#644) --- technic/machines/register/generator.lua | 141 ++++++++++++++++++++++++++--------------------- 1 files changed, 78 insertions(+), 63 deletions(-) diff --git a/technic/machines/register/generator.lua b/technic/machines/register/generator.lua index 89ee5b2..9120e29 100644 --- a/technic/machines/register/generator.lua +++ b/technic/machines/register/generator.lua @@ -1,6 +1,7 @@ local S = technic.getter local fs_helpers = pipeworks.fs_helpers +local tube_entry = "^pipeworks_tube_connection_metallic.png" local tube = { insert_object = function(pos, node, stack, direction) @@ -19,7 +20,8 @@ connect_sides = {left=1, right=1, back=1, top=1, bottom=1}, } -function technic.register_generator(data) +function technic.register_generator(data) + local tier = data.tier local ltier = string.lower(tier) @@ -33,15 +35,15 @@ for k, v in pairs(groups) do active_groups[k] = v end local generator_formspec = - "invsize[8,9;]".. + "size[8,9;]".. "label[0,0;"..S("Fuel-Fired %s Generator"):format(tier).."]".. "list[current_name;src;3,1;1,1;]".. "image[4,1;1,1;default_furnace_fire_bg.png]".. "list[current_player;main;0,5;8,4;]".. "listring[]" - + local desc = S("Fuel-Fired %s Generator"):format(tier) - + local run = function(pos, node) local meta = minetest.get_meta(pos) local burn_time = meta:get_int("burn_time") @@ -55,7 +57,7 @@ -- Burn another piece of fuel if burn_time == 0 then local inv = meta:get_inventory() - if not inv:is_empty("src") then + if not inv:is_empty("src") then local fuellist = inv:get_list("src") local fuel local afterfuel @@ -82,19 +84,19 @@ local percent = math.floor((burn_time / burn_totaltime) * 100) meta:set_string("infotext", desc.." ("..percent.."%)") - local form = "" + local form_buttons = "" if ltier ~= "lv" then - form = fs_helpers.cycling_button( + form_buttons = fs_helpers.cycling_button( meta, - "image_button[0,4.3;1,0.6", + pipeworks.button_base, "splitstacks", { - {text="", texture="pipeworks_button_off.png", addopts="false;false;pipeworks_button_interm.png"}, - {text="", texture="pipeworks_button_on.png", addopts="false;false;pipeworks_button_interm.png"} + pipeworks.button_off, + pipeworks.button_on } - ).."label[0.9,4.31;Allow splitting incoming stacks from tubes]" + )..pipeworks.button_label end - meta:set_string("formspec", + meta:set_string("formspec", "size[8, 9]".. "label[0, 0;"..minetest.formspec_escape(desc).."]".. "list[current_name;src;3, 1;1, 1;]".. @@ -102,15 +104,23 @@ (percent)..":default_furnace_fire_fg.png]".. "list[current_player;main;0, 5;8, 4;]".. "listring[]".. - form + form_buttons ) end - + + local tentry = tube_entry + if ltier == "lv" then tentry = "" end + minetest.register_node("technic:"..ltier.."_generator", { description = desc, - tiles = {"technic_"..ltier.."_generator_top.png", "technic_machine_bottom.png", - "technic_"..ltier.."_generator_side.png", "technic_"..ltier.."_generator_side.png", - "technic_"..ltier.."_generator_side.png", "technic_"..ltier.."_generator_front.png"}, + tiles = { + "technic_"..ltier.."_generator_top.png"..tentry, + "technic_machine_bottom.png"..tentry, + "technic_"..ltier.."_generator_side.png"..tentry, + "technic_"..ltier.."_generator_side.png"..tentry, + "technic_"..ltier.."_generator_side.png"..tentry, + "technic_"..ltier.."_generator_front.png" + }, paramtype2 = "facedir", groups = groups, connect_sides = {"bottom", "back", "left", "right"}, @@ -119,24 +129,24 @@ tube = data.tube and tube or nil, on_construct = function(pos) local meta = minetest.get_meta(pos) + local node = minetest.get_node(pos) meta:set_string("infotext", desc) meta:set_int(data.tier.."_EU_supply", 0) meta:set_int("burn_time", 0) meta:set_int("tube_time", 0) - local form = generator_formspec - if ltier ~= "lv" then - form = generator_formspec .. - fs_helpers.cycling_button( + local form_buttons = "" + if not string.find(node.name, ":lv_") then + form_buttons = fs_helpers.cycling_button( meta, - "image_button[0,4.3;1,0.6", + pipeworks.button_base, "splitstacks", { - {text="", texture="pipeworks_button_off.png", addopts="false;false;pipeworks_button_interm.png"}, - {text="", texture="pipeworks_button_on.png", addopts="false;false;pipeworks_button_interm.png"} + pipeworks.button_off, + pipeworks.button_on } - ).."label[0.9,4.31;Allow splitting incoming stacks from tubes]" + )..pipeworks.button_label end - meta:set_string("formspec", form) + meta:set_string("formspec", generator_formspec..form_buttons) local inv = meta:get_inventory() inv:set_size("src", 1) end, @@ -151,29 +161,33 @@ if not pipeworks.may_configure(pos, sender) then return end fs_helpers.on_receive_fields(pos, fields) local meta = minetest.get_meta(pos) - local form = generator_formspec - if ltier ~= "lv" then - form = generator_formspec .. - fs_helpers.cycling_button( + local node = minetest.get_node(pos) + local form_buttons = "" + if not string.find(node.name, ":lv_") then + form_buttons = fs_helpers.cycling_button( meta, - "image_button[0,4.3;1,0.6", + pipeworks.button_base, "splitstacks", { - {text="", texture="pipeworks_button_off.png", addopts="false;false;pipeworks_button_interm.png"}, - {text="", texture="pipeworks_button_on.png", addopts="false;false;pipeworks_button_interm.png"} + pipeworks.button_off, + pipeworks.button_on } - ).."label[0.9,4.31;Allow splitting incoming stacks from tubes]" + )..pipeworks.button_label end - meta:set_string("formspec", form) + meta:set_string("formspec", generator_formspec..form_buttons) end, - }) minetest.register_node("technic:"..ltier.."_generator_active", { description = desc, - tiles = {"technic_"..ltier.."_generator_top.png", "technic_machine_bottom.png", - "technic_"..ltier.."_generator_side.png", "technic_"..ltier.."_generator_side.png", - "technic_"..ltier.."_generator_side.png", "technic_"..ltier.."_generator_front_active.png"}, + tiles = { + "technic_"..ltier.."_generator_top.png"..tube_entry, + "technic_machine_bottom.png"..tube_entry, + "technic_"..ltier.."_generator_side.png"..tube_entry, + "technic_"..ltier.."_generator_side.png"..tube_entry, + "technic_"..ltier.."_generator_side.png"..tube_entry, + "technic_"..ltier.."_generator_front_active.png" + }, paramtype2 = "facedir", groups = active_groups, connect_sides = {"bottom"}, @@ -182,20 +196,22 @@ tube = data.tube and tube or nil, drop = "technic:"..ltier.."_generator", can_dig = technic.machine_can_dig, + after_dig_node = technic.machine_after_dig_node, allow_metadata_inventory_put = technic.machine_inventory_put, allow_metadata_inventory_take = technic.machine_inventory_take, allow_metadata_inventory_move = technic.machine_inventory_move, technic_run = run, technic_on_disable = function(pos, node) local timer = minetest.get_node_timer(pos) - timer:start(1) - end, + timer:start(1) + end, on_timer = function(pos, node) local meta = minetest.get_meta(pos) - + local node = minetest.get_node(pos) + -- Connected back? if meta:get_int(tier.."_EU_timeout") > 0 then return false end - + local burn_time = meta:get_int("burn_time") or 0 if burn_time <= 0 then @@ -211,19 +227,19 @@ meta:set_int("burn_time", burn_time) local percent = math.floor(burn_time / burn_totaltime * 100) - local formbuttons = "" - if ltier ~= "lv" then - form = fs_helpers.cycling_button( + local form_buttons = "" + if not string.find(node.name, ":lv_") then + form_buttons = fs_helpers.cycling_button( meta, - "image_button[0,4.3;1,0.6", + pipeworks.button_base, "splitstacks", { - {text="", texture="pipeworks_button_off.png", addopts="false;false;pipeworks_button_interm.png"}, - {text="", texture="pipeworks_button_on.png", addopts="false;false;pipeworks_button_interm.png"} + pipeworks.button_off, + pipeworks.button_on } - ).."label[0.9,4.31;Allow splitting incoming stacks from tubes]" + )..pipeworks.button_label end - meta:set_string("formspec", + meta:set_string("formspec", "size[8, 9]".. "label[0, 0;"..minetest.formspec_escape(desc).."]".. "list[current_name;src;3, 1;1, 1;]".. @@ -231,7 +247,7 @@ (percent)..":default_furnace_fire_fg.png]".. "list[current_player;main;0, 5;8, 4;]".. "listring[]".. - form + form_buttons ) return true end, @@ -239,25 +255,25 @@ if not pipeworks.may_configure(pos, sender) then return end fs_helpers.on_receive_fields(pos, fields) local meta = minetest.get_meta(pos) - local form = generator_formspec - if ltier ~= "lv" then - form = generator_formspec .. - fs_helpers.cycling_button( + local node = minetest.get_node(pos) + local form_buttons = "" + if not string.find(node.name, ":lv_") then + form_buttons = fs_helpers.cycling_button( meta, - "image_button[0,4.3;1,0.6", + pipeworks.button_base, "splitstacks", { - {text="", texture="pipeworks_button_off.png", addopts="false;false;pipeworks_button_interm.png"}, - {text="", texture="pipeworks_button_on.png", addopts="false;false;pipeworks_button_interm.png"} + pipeworks.button_off, + pipeworks.button_on } - ).."label[0.9,4.31;Allow splitting incoming stacks from tubes]" + )..pipeworks.button_label end local burn_totaltime = meta:get_int("burn_totaltime") or 0 local burn_time = meta:get_int("burn_time") local percent = math.floor(burn_time / burn_totaltime * 100) - meta:set_string("formspec", + meta:set_string("formspec", "size[8, 9]".. "label[0, 0;"..minetest.formspec_escape(desc).."]".. "list[current_name;src;3, 1;1, 1;]".. @@ -265,10 +281,9 @@ (percent)..":default_furnace_fire_fg.png]".. "list[current_player;main;0, 5;8, 4;]".. "listring[]".. - form + form_buttons ) end, - }) technic.register_machine(tier, "technic:"..ltier.."_generator", technic.producer) -- Gitblit v1.8.0