v1.2 'force_to_use_tubes' added

This commit is contained in:
Joachim Stolberg 2019-04-18 21:04:46 +02:00
parent 3316bed8a2
commit b02e80c765
4 changed files with 14 additions and 10 deletions

@ -73,3 +73,4 @@ Textures: CC0
- 2019-02-09 v0.9 * storage.lua added, code partly restructured
- 2019-02-17 v1.0 * released
- 2019-03-02 v1.1 * API function 'switch_tube_line' added, secondary node placement bugfix
- 2019-04-18 v1.2 * 'force_to_use_tubes' added

@ -96,7 +96,7 @@ end
function Tube:update_secondary_node(pos1, dir1, pos2, dir2)
local _, node = self:get_node(pos1)
if self.secondary_node_names[node.name] then
if minetest.registered_nodes[node.name].tubelib2_on_update then
if (minetest.registered_nodes[node.name] or {}).tubelib2_on_update then
minetest.registered_nodes[node.name].tubelib2_on_update(node, pos1, dir1, pos2, Turn180Deg[dir2])
elseif self.clbk_update_secondary_node then
self.clbk_update_secondary_node(node, pos1, dir1, pos2, Turn180Deg[dir2])
@ -219,7 +219,6 @@ function Tube:replace_nodes(pos1, pos2, dir1, dir2)
self.clbk_after_place_tube(self:get_tube_data(pos2, dir1, dir2, 1))
end
function Tube:switch_nodes(pos, dir, state)
pos = get_pos(pos, dir)
local old_dir = dir
@ -228,7 +227,6 @@ function Tube:switch_nodes(pos, dir, state)
if param2 then
local dir1, dir2, num_conn = self:decode_param2(pos, param2)
self.clbk_after_place_tube(self:get_tube_data(pos, dir1, dir2, num_conn, state))
print(S(pos), param2, dir1, dir2, num_conn)
if dir1 == Turn180Deg[old_dir] then
pos = get_pos(pos, dir2)
old_dir = dir2

@ -23,15 +23,15 @@ local function update_mod_storage()
for k,v in pairs(MemStore) do
if v.used then
v.used = false
v.best_before = gametime + 10
v.best_before = gametime + (60 * 30) -- 30 min
storage:set_string(k, minetest.serialize(v))
elseif v.best_before < gametime then
storage:set_string(k, minetest.serialize(v))
MemStore[k] = nil -- remove from memory
end
end
-- run every minute
minetest.after(60, update_mod_storage)
-- run every 10 minutes
minetest.after(600, update_mod_storage)
end
minetest.register_on_shutdown(function()
@ -40,7 +40,7 @@ minetest.register_on_shutdown(function()
end
end)
minetest.after(60, update_mod_storage)
minetest.after(600, update_mod_storage)
--

@ -13,7 +13,7 @@
]]--
-- Version for compatibility checks, see readme.md/history
tubelib2.version = 1.1
tubelib2.version = 1.2
-- for lazy programmers
local S = function(pos) if pos then return minetest.pos_to_string(pos) end end
@ -146,6 +146,7 @@ function Tube:new(attr)
primary_node_names = Tbl(attr.primary_node_names or {}),
secondary_node_names = Tbl(attr.secondary_node_names or {}),
show_infotext = attr.show_infotext or false,
force_to_use_tubes = attr.force_to_use_tubes or false,
clbk_after_place_tube = attr.after_place_tube,
pairingList = {}, -- teleporting nodes
connCache = {}, -- connection cache {pos1 = {dir1 = {pos2 = pos2, dir2 = dir2},...}
@ -183,7 +184,9 @@ function Tube:after_place_node(pos, dirs)
update1(self, pos, dir)
end
end
update4(self, pos, dirs)
if not self.force_to_use_tubes then
update4(self, pos, dirs)
end
end
-- To be called after a tube/primary node is placed.
@ -204,7 +207,9 @@ function Tube:after_dig_node(pos, dirs)
for _,dir in ipairs(self:update_after_dig_node(pos, dirs)) do
update1(self, pos, dir)
end
update5(self, pos, dirs)
if not self.force_to_use_tubes then
update5(self, pos, dirs)
end
end
-- To be called after a tube/primary node is removed.