From 5191d74f5f0e40cf6955b9621c7c519e24f3ec8a Mon Sep 17 00:00:00 2001 From: Joachim Stolberg Date: Thu, 2 Apr 2020 20:38:14 +0200 Subject: [PATCH] bugfixes for pump, fuelcell, oil drillbox, Lua server, ICTA controller, Lua controller, Door controller. lamp holder added --- hydrogen/fuelcell.lua | 6 +- icta_controller/controller.lua | 4 +- init.lua | 1 + lamps/lampholder.lua | 115 +++++++++++++++++++++++++++++++++ liquids/pump.lua | 4 ++ logic/doorcontroller.lua | 5 +- lua_controller/controller.lua | 2 +- lua_controller/server.lua | 1 + oil/drillbox.lua | 8 +-- 9 files changed, 134 insertions(+), 12 deletions(-) create mode 100644 lamps/lampholder.lua diff --git a/hydrogen/fuelcell.lua b/hydrogen/fuelcell.lua index 0c71ea4..61764e5 100644 --- a/hydrogen/fuelcell.lua +++ b/hydrogen/fuelcell.lua @@ -48,19 +48,19 @@ local function formspec(self, pos, nvm) "image[2,1.5;1,1;techage_form_arrow_fg.png^[transformR270]".. "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.provided) + techage.power.formspec_label_bar(3.5, 0.8, S("Electricity"), PWR_CAPA, nvm.given) end local function start_node(pos, nvm, state) nvm.running = true - nvm.provided = 0 + nvm.given = 0 local outdir = M(pos):get_int("outdir") power.generator_start(pos, Cable, CYCLE_TIME, outdir) end local function stop_node(pos, nvm, state) nvm.running = false - nvm.provided = 0 + nvm.given = 0 local outdir = M(pos):get_int("outdir") power.generator_stop(pos, Cable, outdir) end diff --git a/icta_controller/controller.lua b/icta_controller/controller.lua index 72f0441..1a2ca3c 100644 --- a/icta_controller/controller.lua +++ b/icta_controller/controller.lua @@ -502,8 +502,8 @@ techage.register_node({"techage:ta4_icta_controller"}, { elseif state == techage.RUNNING and topic == "off" then set_input(pos, number, src, topic) elseif topic == "state" then - local state = meta:get_int("state") - return techage.StateStrings(state) + local state = meta:get_int("state") or 0 + return techage.StateStrings[state] or "stopped" else return "unsupported" end diff --git a/init.lua b/init.lua index 98f60bf..afc1f3d 100644 --- a/init.lua +++ b/init.lua @@ -150,6 +150,7 @@ else dofile(MP.."/lamps/industriallamp3.lua") dofile(MP.."/lamps/industriallamp4.lua") dofile(MP.."/lamps/growlight.lua") + dofile(MP.."/lamps/lampholder.lua") -- Oil dofile(MP.."/oil/explore.lua") diff --git a/lamps/lampholder.lua b/lamps/lampholder.lua new file mode 100644 index 0000000..c0e701b --- /dev/null +++ b/lamps/lampholder.lua @@ -0,0 +1,115 @@ +--[[ + + TechAge + ======= + + Copyright (C) 2020 Joachim Stolberg + + GPL v3 + See LICENSE.txt for more information + + TA3/4 Lamp Holder + +]]-- + +local S = techage.S + +local function register_holder(name, description, png) + minetest.register_node(name, { + description = description, + tiles = {png}, + paramtype2 = "facedir", -- important! + drawtype = "nodebox", + node_box = { + type = "connected", + fixed = {{ -4/32, -4/32, -4/32, 4/32, 4/32, 4/32}}, + + connect_top = {{ -3/32, -3/32, -3/32, 3/32, 16/32, 3/32}}, + connect_bottom = {{ -3/32, -16/32, -3/32, 3/32, 3/32, 3/32}}, + connect_left = {{-16/32, -3/32, -3/32, 3/32, 3/32, 3/32}}, + connect_right = {{ -3/32, -3/32, -3/32, 16/32, 3/32, 3/32}}, + connect_back = {{ -3/32, -3/32, -3/32, 3/32, 3/32, 16/32}}, + connect_front = {{ -3/32, -3/32, -16/32, 3/32, 3/32, 3/32}}, + }, + connects_to = { + "techage:ceilinglamp_off", "techage:ceilinglamp_on", + "techage:growlight_off", "techage:growlight_on", + "techage:industriallamp1_off", "techage:industriallamp1_on", + "techage:industriallamp2_off", "techage:industriallamp2_on", + "techage:industriallamp3_off", "techage:industriallamp3_on", + "techage:industriallamp4_off", "techage:industriallamp4_on", + "techage:simplelamp_off", "techage:simplelamp_on", + "techage:streetlamp_off", "techage:streetlamp_on", + "techage:streetlamp2_off", "techage:streetlamp2_on", + "techage:streetlamp_arm", "techage:streetlamp_pole", + "techage:streetlamp2_off", "techage:streetlamp2_on", + "techage:power_line", "techage:power_lineS", "techage:power_lineA" + }, + paramtype = "light", + sunlight_propagates = true, + is_ground_content = false, + groups = {cracky=2, crumbly=2, choppy=2}, + sounds = default.node_sound_defaults(), + }) +end + + +register_holder("techage:lampholder1", S("TA Lamp Holder White"), "techage_streetlamp2_housing.png") +register_holder("techage:lampholder2", S("TA Lamp Holder Aspen"), "default_aspen_wood.png") +register_holder("techage:lampholder3", S("TA Lamp Holder Acacia"), "default_acacia_wood.png") +register_holder("techage:lampholder4", S("TA Lamp Holder Apple"), "default_wood.png") +register_holder("techage:lampholder5", S("TA Lamp Holder Copper"), "default_copper_block.png") +register_holder("techage:lampholder6", S("TA Lamp Holder Gold"), "default_gold_block.png") + + +minetest.register_craft({ + output = "techage:lampholder1 2", + recipe = { + {"basic_materials:steel_bar", "", "basic_materials:steel_bar"}, + {"", "dye:white", ""}, + {"basic_materials:steel_bar", "", "basic_materials:steel_bar"}, + }, +}) + +minetest.register_craft({ + output = "techage:lampholder2 2", + recipe = { + {"basic_materials:steel_bar", "", "basic_materials:steel_bar"}, + {"", "default:fence_aspen_wood", ""}, + {"basic_materials:steel_bar", "", "basic_materials:steel_bar"}, + }, +}) + +minetest.register_craft({ + output = "techage:lampholder3 2", + recipe = { + {"basic_materials:steel_bar", "", "basic_materials:steel_bar"}, + {"", "default:fence_acacia_wood", ""}, + {"basic_materials:steel_bar", "", "basic_materials:steel_bar"}, + }, +}) + +minetest.register_craft({ + output = "techage:lampholder4 2", + recipe = { + {"basic_materials:steel_bar", "", "basic_materials:steel_bar"}, + {"", "default:fence_wood", ""}, + {"basic_materials:steel_bar", "", "basic_materials:steel_bar"}, + }, +}) +minetest.register_craft({ + output = "techage:lampholder5 2", + recipe = { + {"basic_materials:steel_bar", "", "basic_materials:steel_bar"}, + {"", "default:copper_ingot", ""}, + {"basic_materials:steel_bar", "", "basic_materials:steel_bar"}, + }, +}) +minetest.register_craft({ + output = "techage:lampholder6 2", + recipe = { + {"basic_materials:steel_bar", "", "basic_materials:steel_bar"}, + {"", "default:gold_ingot", ""}, + {"basic_materials:steel_bar", "", "basic_materials:steel_bar"}, + }, +}) diff --git a/liquids/pump.lua b/liquids/pump.lua index 87651b5..9f60133 100644 --- a/liquids/pump.lua +++ b/liquids/pump.lua @@ -109,6 +109,10 @@ local function node_timer4(pos, elapsed) end local function on_rightclick(pos, node, clicker) + if minetest.is_protected(pos, clicker:get_player_name()) then + return + end + local nvm = techage.get_nvm(pos) if node.name == "techage:t3_pump" then set_starter_name(pos, clicker) diff --git a/logic/doorcontroller.lua b/logic/doorcontroller.lua index 87afb5a..84b14da 100644 --- a/logic/doorcontroller.lua +++ b/logic/doorcontroller.lua @@ -42,14 +42,14 @@ local function swap_door_nodes(pos, open) local nvm = techage.get_nvm(pos) for _,item in ipairs(nvm.door_blocks or {}) do if item.pos and item.name and item.param2 then + local node = techage.get_node_lvm(item.pos) if open then - local node = techage.get_node_lvm(item.pos) if node.name == item.name then minetest.remove_node(item.pos) else item.name = nil end - else + elseif node.name == "air" then minetest.add_node(item.pos, {name = item.name, param2 = item.param2}) end end @@ -98,6 +98,7 @@ minetest.register_node("techage:ta3_doorcontroller", { end, after_dig_node = function(pos) + swap_door_nodes(pos, false) techage.remove_node(pos) techage.del_mem(pos) end, diff --git a/lua_controller/controller.lua b/lua_controller/controller.lua index 49a44c6..a72261c 100644 --- a/lua_controller/controller.lua +++ b/lua_controller/controller.lua @@ -621,7 +621,7 @@ techage.register_node({"techage:ta4_lua_controller"}, { set_input(pos, number, "msg", payload) elseif topic == "state" then local running = meta:get_int("running") or STATE_STOPPED - return techage.StateStrings(running) + return techage.StateStrings[running] or "stopped" else return "unsupported" end diff --git a/lua_controller/server.lua b/lua_controller/server.lua index 18223d0..069a98a 100644 --- a/lua_controller/server.lua +++ b/lua_controller/server.lua @@ -86,6 +86,7 @@ minetest.register_node("techage:ta4_server", { return end techage.del_mem(pos) + minetest.node_dig(pos, node, puncher, pointed_thing) techage.remove_node(pos) end, diff --git a/oil/drillbox.lua b/oil/drillbox.lua index d74042a..464e0c0 100644 --- a/oil/drillbox.lua +++ b/oil/drillbox.lua @@ -56,7 +56,7 @@ local function formspec(self, pos, nvm) if not nvm.assemble_build then return formspec0 end - local depth = M(pos):get_int("depth") - 7 -- oil bubble + local depth = M(pos):get_int("depth") local curr_depth = pos.y - (nvm.drill_pos or pos).y return "size[8,8]".. default.gui_bg.. @@ -134,8 +134,8 @@ local function drilling(pos, crd, nvm, inv) if not inv:contains_item("src", ItemStack("techage:oil_drillbit")) then crd.State:idle(pos, nvm, S("Drill bits missing")) elseif curr_depth >= depth then - M(pos):set_string("oil_found", "false") - crd.State:blocked(pos, nvm, S("No oil found")) + M(pos):set_string("oil_found", "true") + crd.State:stop(pos, nvm) elseif node.name == "techage:oilstorage" then -- old oil bubble node? nvm.drill_pos.y = nvm.drill_pos.y-1 crd.State:keep_running(pos, nvm, COUNTDOWN_TICKS) @@ -278,7 +278,7 @@ local _, node_name_ta3, _ = inv:set_size("src", 1) inv:set_size("dst", 1) local info = techage.explore.get_oil_info(pos) - M(pos):set_int("depth", info.depth) + M(pos):set_int("depth", info.depth - 5) -- oil bubble M(pos):set_int("amount", info.amount) M(pos):set_string("oil_found", "false") M(pos):set_string("owner", placer:get_player_name())