From f3d8002832c60b5284b74b8a3650aa5d1a956ccb Mon Sep 17 00:00:00 2001 From: Joachim Stolberg Date: Sun, 12 Apr 2020 14:45:58 +0200 Subject: [PATCH] ta4_chest bugfix --- basic_machines/ta4_chest.lua | 48 +++++++++++++++---------------- hydrogen/electrolyzer.lua | 6 ++-- hydrogen/fuelcell.lua | 6 ++-- init.lua | 1 + textures/techage_pipe_wrench.png | Bin 0 -> 272 bytes tools/pipe_wrench.lua | 41 ++++++++++++++++++++++++++ 6 files changed, 72 insertions(+), 30 deletions(-) create mode 100644 textures/techage_pipe_wrench.png create mode 100644 tools/pipe_wrench.lua diff --git a/basic_machines/ta4_chest.lua b/basic_machines/ta4_chest.lua index 924f3e0..8bceacb 100644 --- a/basic_machines/ta4_chest.lua +++ b/basic_machines/ta4_chest.lua @@ -74,28 +74,6 @@ local function inv_state(nvm) return "loaded" end --- Sort the items into the nvm inventory --- If the nvm inventry is full, the items are stored in the main inventory --- If the main inventory is also full, false is returned -local function sort_in(inv, nvm, stack) - if inv:is_empty("main") then -- the main inv is used for the case the nvm-inventory is full - for _,item in ipairs(nvm.inventory or {}) do - if item.name and (item.name == "" or item.name == stack:get_name()) then - local count = math.min(stack:get_count(), STACK_SIZE - item.count) - item.count = item.count + count - item.name = stack:get_name() - stack:set_count(stack:get_count() - count) - if stack:get_count() == 0 then - return true - end - end - end - inv:add_item("main", stack) - return true - end - return false -end - local function max_stacksize(item_name) local ndef = minetest.registered_nodes[item_name] or minetest.registered_items[item_name] or minetest.registered_craftitems[item_name] if ndef then @@ -112,6 +90,28 @@ local function get_stacksize(pos) return size end +-- Sort the items into the nvm inventory +-- If the nvm inventry is full, the items are stored in the main inventory +-- If the main inventory is also full, false is returned +local function sort_in(pos, inv, nvm, stack) + if inv:is_empty("main") then -- the main inv is used for the case the nvm-inventory is full + for _,item in ipairs(nvm.inventory or {}) do + if item.name and (item.name == "" or item.name == stack:get_name()) then + local count = math.min(stack:get_count(), get_stacksize(pos) - item.count) + item.count = item.count + count + item.name = stack:get_name() + stack:set_count(stack:get_count() - count) + if stack:get_count() == 0 then + return true + end + end + end + inv:add_item("main", stack) + return true + end + return false +end + local function get_item(inv, nvm, item_name, count) local stack = {count = 0} if not inv:is_empty("main") then @@ -425,7 +425,7 @@ techage.register_node({"techage:ta4_chest"}, { on_push_item = function(pos, in_dir, stack) local nvm = techage.get_nvm(pos) local inv = M(pos):get_inventory() - local res = sort_in(inv, nvm, stack) + local res = sort_in(pos, inv, nvm, stack) if techage.is_activeformspec(pos) then M(pos):set_string("formspec", formspec(pos)) end @@ -434,7 +434,7 @@ techage.register_node({"techage:ta4_chest"}, { on_unpull_item = function(pos, in_dir, stack) local nvm = techage.get_nvm(pos) local inv = M(pos):get_inventory() - local res = sort_in(inv, nvm, stack) + local res = sort_in(pos, inv, nvm, stack) if techage.is_activeformspec(pos) then M(pos):set_string("formspec", formspec(pos)) end diff --git a/hydrogen/electrolyzer.lua b/hydrogen/electrolyzer.lua index 1b409dd..bf69dc8 100644 --- a/hydrogen/electrolyzer.lua +++ b/hydrogen/electrolyzer.lua @@ -31,9 +31,9 @@ local CAPACITY = 200 local function formspec(self, pos, nvm) local amount = (nvm.liquid and nvm.liquid.amount) or 0 local lqd_name = (nvm.liquid and nvm.liquid.name) or "techage:liquid" - local arrow = "image[3,1;1,1;techage_form_arrow_bg.png^[transformR270]" + local arrow = "image[3,1.5;1,1;techage_form_arrow_bg.png^[transformR270]" if nvm.running then - arrow = "image[3,1;1,1;techage_form_arrow_fg.png^[transformR270]" + arrow = "image[3,1.5;1,1;techage_form_arrow_fg.png^[transformR270]" end if amount > 0 then lqd_name = lqd_name.." "..amount @@ -45,7 +45,7 @@ local function formspec(self, pos, nvm) "box[0,-0.1;5.8,0.5;#c6e8ff]".. "label[2.5,-0.1;"..minetest.colorize( "#000000", S("Electrolyzer")).."]".. techage.power.formspec_label_bar(0.1, 0.8, S("Electricity"), PWR_NEEDED, nvm.taken).. - "image[3,1.5;1,1;techage_form_arrow_fg.png^[transformR270]".. + arrow.. "image_button[3,2.5;1,1;".. self:get_state_button_image(nvm) ..";state_button;]".. "tooltip[3,2.5;1,1;"..self:get_state_tooltip(nvm).."]".. techage.item_image(4.5,2, lqd_name) diff --git a/hydrogen/fuelcell.lua b/hydrogen/fuelcell.lua index 75dad1b..f25a8ed 100644 --- a/hydrogen/fuelcell.lua +++ b/hydrogen/fuelcell.lua @@ -31,9 +31,9 @@ local CAPACITY = 100 local function formspec(self, pos, nvm) local amount = (nvm.liquid and nvm.liquid.amount) or 0 local lqd_name = (nvm.liquid and nvm.liquid.name) or "techage:liquid" - local arrow = "image[3,1;1,1;techage_form_arrow_bg.png^[transformR270]" + local arrow = "image[2,1.5;1,1;techage_form_arrow_bg.png^[transformR270]" if nvm.running then - arrow = "image[3,1;1,1;techage_form_arrow_fg.png^[transformR270]" + arrow = "image[2,1.5;1,1;techage_form_arrow_fg.png^[transformR270]" end if amount > 0 then lqd_name = lqd_name.." "..amount @@ -45,7 +45,7 @@ local function formspec(self, pos, nvm) "box[0,-0.1;5.8,0.5;#c6e8ff]".. "label[2.5,-0.1;"..minetest.colorize( "#000000", S("Fuel Cell")).."]".. techage.item_image(0.5,2, lqd_name).. - "image[2,1.5;1,1;techage_form_arrow_fg.png^[transformR270]".. + arrow.. "image_button[2,2.5;1,1;".. self:get_state_button_image(nvm) ..";state_button;]".. "tooltip[2,2.5;1,1;"..self:get_state_tooltip(nvm).."]".. techage.power.formspec_label_bar(3.5, 0.8, S("Electricity"), PWR_CAPA, nvm.given) diff --git a/init.lua b/init.lua index fed133d..4665237 100644 --- a/init.lua +++ b/init.lua @@ -136,6 +136,7 @@ else -- Tools dofile(MP.."/tools/trowel.lua") dofile(MP.."/tools/repairkit.lua") + dofile(MP.."/tools/pipe_wrench.lua") dofile(MP.."/basic_machines/blackhole.lua") dofile(MP.."/basic_machines/forceload.lua") diff --git a/textures/techage_pipe_wrench.png b/textures/techage_pipe_wrench.png new file mode 100644 index 0000000000000000000000000000000000000000..903b892d2ebefdabc3cc863ff52fc12395aef499 GIT binary patch literal 272 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE3?yBabR7dyS^+*Gu0T39HMO*~w5_de)~s2p zR;}8#YuD-1r|;jt|Ni~^|1vWFO-%j=2L8{@Re9?48K|1CB*-tA;Xg76_qr_tlxg>L zaSX9I{dST!UxNaVi}v4z2mY?tHdV{ed2y(fJDoW(&gwEt!}2b}Ra)Uc|LysyoD#OR zxp!gWv<{0F)i>d3{TtXWrCBJi(m$JSUiH5JQsm-WE-DtRDm-&}PdqxyzjXVeUUweV z<@@rB8Ye~D@@ssZn8@;E%K=^n`wzSd^BbT3lD{PA@nKe2@?Q4JGoM%O1UiYq)78&q Iol`;+0Q%~7qyPW_ literal 0 HcmV?d00001 diff --git a/tools/pipe_wrench.lua b/tools/pipe_wrench.lua new file mode 100644 index 0000000..bd82e0e --- /dev/null +++ b/tools/pipe_wrench.lua @@ -0,0 +1,41 @@ +local S = techage.S + +local function remove_pipe(itemstack, user, pointed_thing) + local pos = pointed_thing.under + if pos and user then + if minetest.is_protected(pos, user:get_player_name()) then + return itemstack + end + end + + if(pos ~= nil) then + local node = minetest.get_node(pos) + if(node.name == "techage:oil_drillbit2") then + minetest.set_node(pos, {name = "air"}) + itemstack:add_wear(65636/200) + return itemstack + + end -- if(node.name + + end -- if(pos ~= nil) + +end -- remove_pipe + + +minetest.register_tool("techage:ta3_pipe_wrench", { + description = S("TA3 Pipe Wrench"), + inventory_image = "techage_pipe_wrench.png", + wield_image = "techage_pipe_wrench.png", + groups = {cracky=1}, + on_use = remove_pipe, + stack_max = 1, +}) + +minetest.register_craft({ + output = "techage:ta3_pipe_wrench", + recipe = { + {"hyperloop:hypersteel_ingot", "hyperloop:hypersteel_ingot", ""}, + {"dye:red", "default:steel_ingot", "dye:red"}, + {"default:steel_ingot", "", "default:steel_ingot"}, + }, +})