From a2c0dd11307120470a7c4ca4915f7741729e8e01 Mon Sep 17 00:00:00 2001 From: HybridDog Date: Sun, 7 Feb 2021 11:20:11 +0100 Subject: [PATCH] Various small fixes * Save the fakeplayer's wielded item in set_wielded_item * pipeworks.luaentity: Return the found objects in get_objects_inside_radius * Remove the invalid and unused on_blast return values in lua_tube.lua This should avoid a crash when a strong explosion happens next to a Lua Tube. * Do not access a global "nodename" in a BUG message. This avoids a potential crash, in case the message actually appears in practice. * Set the Flow Sensor and Fountain Head mesecons connection rules * pipeworks.luaentity: Use the same function for move_to and set_pos * (no functional change) Do not save the object returned by tube_inject_item into the "item1" local variable in filter-injector.lua --- common.lua | 7 ++++--- devices.lua | 8 ++++---- filter-injector.lua | 3 ++- lua_tube.lua | 4 ++-- luaentity.lua | 1 + pressure_logic/abms.lua | 4 +++- 6 files changed, 16 insertions(+), 11 deletions(-) diff --git a/common.lua b/common.lua index 120a32f..207b728 100644 --- a/common.lua +++ b/common.lua @@ -223,7 +223,7 @@ function pipeworks.create_fake_player(def, is_dynamic) return self._inventory:set_stack(def.wield_list, self._wield_index, item) end - _wielded_item = ItemStack(item) + self._wielded_item = ItemStack(item) end, get_wielded_item = function(self, item) if self._inventory and def.wield_list then @@ -242,17 +242,18 @@ function pipeworks.create_fake_player(def, is_dynamic) set_bone_position = delay(), hud_change = delay(), } - local _trash -- Getter & setter functions p.get_inventory_formspec, p.set_inventory_formspec = get_set_wrap("formspec", is_dynamic) p.get_breath, p.set_breath = get_set_wrap("breath", is_dynamic) p.get_hp, p.set_hp = get_set_wrap("hp", is_dynamic) p.get_pos, p.set_pos = get_set_wrap("pos", is_dynamic) - _trash, p.move_to = get_set_wrap("pos", is_dynamic) p.get_wield_index, p.set_wield_index = get_set_wrap("wield_index", true) p.get_properties, p.set_properties = get_set_wrap("properties", false) + -- For players, move_to and get_pos do the same + p.move_to = p.get_pos + -- Backwards compatibilty p.getpos = p.get_pos p.setpos = p.set_pos diff --git a/devices.lua b/devices.lua index a96767b..86b38ea 100644 --- a/devices.lua +++ b/devices.lua @@ -465,7 +465,7 @@ minetest.register_node(nodename_sensor_empty, { end, on_construct = function(pos) if mesecon then - mesecon.receptor_off(pos, rules) + mesecon.receptor_off(pos, pipeworks.mesecons_rules) end end, selection_box = { @@ -504,7 +504,7 @@ minetest.register_node(nodename_sensor_loaded, { end, on_construct = function(pos) if mesecon then - mesecon.receptor_on(pos, rules) + mesecon.receptor_on(pos, pipeworks.mesecons_rules) end end, selection_box = { @@ -626,7 +626,7 @@ minetest.register_node(nodename_fountain_empty, { end, on_construct = function(pos) if mesecon then - mesecon.receptor_on(pos, rules) + mesecon.receptor_on(pos, pipeworks.mesecons_rules) end end, selection_box = { @@ -661,7 +661,7 @@ minetest.register_node(nodename_fountain_loaded, { end, on_construct = function(pos) if mesecon then - mesecon.receptor_on(pos, rules) + mesecon.receptor_on(pos, pipeworks.mesecons_rules) end end, selection_box = { diff --git a/filter-injector.lua b/filter-injector.lua index e63ca92..a080a1f 100644 --- a/filter-injector.lua +++ b/filter-injector.lua @@ -322,7 +322,8 @@ local function punch_filter(data, filtpos, filtnode, msg) end local pos = vector.add(frompos, vector.multiply(dir, 1.4)) local start_pos = vector.add(frompos, dir) - local item1 = pipeworks.tube_inject_item(pos, start_pos, dir, item, fakePlayer:get_player_name()) + pipeworks.tube_inject_item(pos, start_pos, dir, item, + fakePlayer:get_player_name()) return true -- only fire one item, please end end diff --git a/lua_tube.lua b/lua_tube.lua index 59288cd..10cdf80 100644 --- a/lua_tube.lua +++ b/lua_tube.lua @@ -993,7 +993,7 @@ for white = 0, 1 do on_blast = function(pos, intensity) if not intensity or intensity > 1 + 3^0.5 then minetest.remove_node(pos) - return {string.format("%s_%s", name, dropname)} + return end minetest.swap_node(pos, {name = "pipeworks:broken_tube_1"}) pipeworks.scan_for_tube_objects(pos) @@ -1070,7 +1070,7 @@ minetest.register_node(BASENAME .. "_burnt", { on_blast = function(pos, intensity) if not intensity or intensity > 1 + 3^0.5 then minetest.remove_node(pos) - return {string.format("%s_%s", name, dropname)} + return end minetest.swap_node(pos, {name = "pipeworks:broken_tube_1"}) pipeworks.scan_for_tube_objects(pos) diff --git a/luaentity.lua b/luaentity.lua index fa4e0f2..83fb4d9 100644 --- a/luaentity.lua +++ b/luaentity.lua @@ -324,6 +324,7 @@ function luaentity.get_objects_inside_radius(pos, radius) index = index + 1 end end + return objects end local move_entities_globalstep_part2 = function(dtime) diff --git a/pressure_logic/abms.lua b/pressure_logic/abms.lua index b69fa60..50951b0 100644 --- a/pressure_logic/abms.lua +++ b/pressure_logic/abms.lua @@ -339,7 +339,9 @@ flowlogic.run_transition = function(node, currentpressure) end if not found then - pipeworks.logger("flowlogic.run_transition() BUG no transition definitions found! nodename="..nodename.." currentpressure="..tostring(currentpressure)) + pipeworks.logger("flowlogic.run_transition() BUG no transition " .. + "definitions found! node.name=" .. node.name .. + " currentpressure=" .. tostring(currentpressure)) end return result