forked from mtcontrib/replacer
the replacers' description now shows which node is stored, and the description is more human readable
This commit is contained in:
parent
c030a3beb8
commit
62d7ad06bb
51
init.lua
51
init.lua
@ -21,6 +21,9 @@
|
|||||||
-- Version 3.0
|
-- Version 3.0
|
||||||
|
|
||||||
-- Changelog:
|
-- Changelog:
|
||||||
|
-- 29.09.2021 * AUX1 key works now same as SNEAK key for storing new pattern (=easier when flying)
|
||||||
|
-- * The description of the tool now shows which pattern is stored
|
||||||
|
-- * The description of the stored pattern is more human readable
|
||||||
-- 09.12.2017 * Got rid of outdated minetest.env
|
-- 09.12.2017 * Got rid of outdated minetest.env
|
||||||
-- * Fixed error in protection function.
|
-- * Fixed error in protection function.
|
||||||
-- * Fixed minor bugs.
|
-- * Fixed minor bugs.
|
||||||
@ -114,7 +117,13 @@ minetest.register_tool( "replacer:replacer",
|
|||||||
end
|
end
|
||||||
itemstack:set_metadata( metadata );
|
itemstack:set_metadata( metadata );
|
||||||
|
|
||||||
minetest.chat_send_player( name, "Node replacement tool set to: '"..metadata.."'.");
|
local set_to = replacer.human_readable_metadata(metadata).." ["..tostring(metadata).."]"
|
||||||
|
-- change the description of the tool so that it's easier to see which replacer (if you
|
||||||
|
-- have more than one in your inv) is set to which node
|
||||||
|
local meta = itemstack:get_meta()
|
||||||
|
meta:set_string("description", "Replacer set to: "..set_to)
|
||||||
|
|
||||||
|
minetest.chat_send_player( name, "Node replacement tool set to: "..set_to..".");
|
||||||
|
|
||||||
return itemstack; -- nothing consumed but data changed
|
return itemstack; -- nothing consumed but data changed
|
||||||
end,
|
end,
|
||||||
@ -256,6 +265,46 @@ replacer.replace = function( itemstack, user, pointed_thing, mode )
|
|||||||
end
|
end
|
||||||
|
|
||||||
|
|
||||||
|
-- turn stored metadata string (<node_name> <param1> <param2>) into something readable by human beeings
|
||||||
|
replacer.human_readable_metadata = function(metadata)
|
||||||
|
if(not(metadata)) then
|
||||||
|
return "(nothing)"
|
||||||
|
end
|
||||||
|
-- data is stored in the form "<nodename> <param1> <param2>"
|
||||||
|
local parts = string.split(metadata, " ")
|
||||||
|
if(not(parts) or #parts < 3) then
|
||||||
|
return "(corrupted data)"
|
||||||
|
end
|
||||||
|
local node_name = parts[1]
|
||||||
|
local param2 = parts[3]
|
||||||
|
|
||||||
|
local def = minetest.registered_nodes[ node_name ]
|
||||||
|
if(not(def)) then
|
||||||
|
return "(unknown node)"
|
||||||
|
end
|
||||||
|
local text = "'"..tostring(def.description or "- no description -").."'"
|
||||||
|
if(not(def.description) or def.description == "") then
|
||||||
|
text = "- no description -"
|
||||||
|
end
|
||||||
|
-- facedir is probably the most commonly used rotation variant
|
||||||
|
if( def.paramtype2 == "facedir"
|
||||||
|
or def.paramtype2 == "colorfacedir") then
|
||||||
|
local axis_names = {"y+ (Ground)", "z+ (North)", "z- (South)",
|
||||||
|
"x+ (East)", "x- (West)", "y- (Sky)"}
|
||||||
|
text = text.." Rotated: "..tostring(param2 % 4)..
|
||||||
|
" around axis: "..tostring( axis_names[ math.floor( (param2%24) / 4 ) + 1 ])
|
||||||
|
-- wallmounted is diffrent
|
||||||
|
elseif( def.paramtype2 == "wallmounted"
|
||||||
|
or def.paramtype2 == "colorwallmounted") then
|
||||||
|
local axis_names = {"y+ (Ground)", "y- (Sky)",
|
||||||
|
"z+ (North)", "z- (South)",
|
||||||
|
"x+ (East)", "x- (West)"}
|
||||||
|
text = text.." Mounted at wall: "..tostring( axis_names[ (param2 % 6)+ 1 ])
|
||||||
|
end
|
||||||
|
return text
|
||||||
|
end
|
||||||
|
|
||||||
|
|
||||||
minetest.register_craft({
|
minetest.register_craft({
|
||||||
output = 'replacer:replacer',
|
output = 'replacer:replacer',
|
||||||
recipe = {
|
recipe = {
|
||||||
|
Loading…
Reference in New Issue
Block a user