diff --git a/fluid_lib/buffer.lua b/fluid_lib/buffer.lua index 18303dd..568e019 100644 --- a/fluid_lib/buffer.lua +++ b/fluid_lib/buffer.lua @@ -137,3 +137,16 @@ function fluid_lib.take_from_buffer(pos, buffer, count) return bfdata.fluid, take_count end + +function fluid_lib.buffer_to_string(buffer) + if not buffer then return "" end + local amount = fluid_lib.comma_value(buffer.amount) + local capacity = fluid_lib.comma_value(buffer.capacity) + local description = "Empty" + + if buffer.fluid ~= "" then + description = fluid_lib.cleanse_node_description(buffer.fluid) + end + + return ("%s (%s / %s %s)"):format(description, amount, capacity, fluid_lib.unit) +end diff --git a/fluid_lib/init.lua b/fluid_lib/init.lua index 8df014b..6530c2c 100644 --- a/fluid_lib/init.lua +++ b/fluid_lib/init.lua @@ -38,4 +38,9 @@ function fluid_lib.cleanse_node_description(node) return no_source end +function fluid_lib.comma_value(n) -- credit http://richard.warburton.it + local left,num,right = string.match(n,'^([^%d]*%d)(%d*)(.-)$') + return left..(num:reverse():gsub('(%d%d%d)','%1,'):reverse())..right +end + dofile(modpath.."/buffer.lua") diff --git a/fluid_tanks/init.lua b/fluid_tanks/init.lua index 37b0ed2..e38e4a4 100644 --- a/fluid_tanks/init.lua +++ b/fluid_tanks/init.lua @@ -12,17 +12,12 @@ local function preserve_metadata(pos, oldnode, oldmeta, drops) local node = minetest.get_node(pos) local ndef = minetest.registered_nodes[node.name] - local fluid_desc = "Empty" - if buffer.fluid ~= "" then - fluid_desc = fluid_lib.cleanse_node_description(buffer.fluid) - end - for i,stack in pairs(drops) do local stack_meta = stack:get_meta() stack_meta:set_int("fluid_storage", buffer.amount) stack_meta:set_string("fluid", buffer.fluid) - stack_meta:set_string("description", ("%s\nContains: %s (%d/%d %s)"):format(ndef.description, - fluid_desc, buffer.amount, buffer.capacity, fluid_lib.unit)) + stack_meta:set_string("description", ("%s\nContents: %s (%d/%d %s)"):format(ndef.description, + fluid_lib.buffer_to_string(buffer))) drops[i] = stack end @@ -78,14 +73,9 @@ local function tank_on_timer(pos, elapsed) meta:set_string("buffer_fluid", "") end - local fluid_desc = "Empty" - if buffer.fluid ~= "" then - fluid_desc = fluid_lib.cleanse_node_description(buffer.fluid) - end - -- Update infotext - meta:set_string("infotext", ("%s\nContains: %s (%d/%d %s)"):format(ndef.description, fluid_desc, - buffer.amount, buffer.capacity, fluid_lib.unit)) + meta:set_string("infotext", ("%s\nContents: %s"):format(ndef.description, + fluid_lib.buffer_to_string(buffer))) local param2 = math.min(percentile * 63, 63)