1
0
mirror of https://github.com/Sokomine/replacer.git synced 2025-07-03 16:40:46 +02:00

Add hud support for replacer and inspector instead of spamming chat and switch replace to shift+RMB to allow repeated replacement by holding keys

This commit is contained in:
Jack Manning
2020-11-25 21:57:51 -05:00
parent 7bfcb73607
commit 54c85a8ee0
3 changed files with 71 additions and 31 deletions

View File

@ -57,8 +57,11 @@ replacer.blacklist[ "protector:protect2"] = true;
-- adds a tool for inspecting nodes and entities
dofile(minetest.get_modpath("replacer").."/inspect.lua");
-- add support for HUD messenges
dofile(minetest.get_modpath("replacer").."/hud.lua");
minetest.register_tool( "replacer:replacer",
minetest.register_tool( "replacer:replacer",
{
description = "Node replacement tool",
groups = {},
@ -96,35 +99,35 @@ minetest.register_tool( "replacer:replacer",
-- just place the stored node if now new one is to be selected
if( not( keys["sneak"] )) then
return replacer.replace( itemstack, placer, pointed_thing, 0 ); end
if( pointed_thing.type ~= "node" ) then
minetest.chat_send_player( name, " Error: No node selected.");
return nil;
return replacer.replace( itemstack, placer, pointed_thing, 0 );
else
return replacer.replace( itemstack, placer, pointed_thing, above );
end
local pos = minetest.get_pointed_thing_position( pointed_thing, under );
local node = minetest.get_node_or_nil( pos );
--minetest.chat_send_player( name, " Target node: "..minetest.serialize( node ).." at pos "..minetest.serialize( pos )..".");
local metadata = "default:dirt 0 0";
if( node ~= nil and node.name ) then
metadata = node.name..' '..node.param1..' '..node.param2;
end
itemstack:set_metadata( metadata );
minetest.chat_send_player( name, "Node replacement tool set to: '"..metadata.."'.");
return itemstack; -- nothing consumed but data changed
end,
-- on_drop = func(itemstack, dropper, pos),
on_use = function(itemstack, user, pointed_thing)
name = user:get_player_name();
if( pointed_thing.type ~= "node" ) then
replacer.set_hud( name, " Error: No node selected.");
return nil;
end
return replacer.replace( itemstack, user, pointed_thing, above );
local pos = minetest.get_pointed_thing_position( pointed_thing, under );
local node = minetest.get_node_or_nil( pos );
--minetest.chat_send_player( name, " Target node: "..minetest.serialize( node ).." at pos "..minetest.serialize( pos )..".");
local metadata = "default:dirt 0 0";
if( node ~= nil and node.name ) then
metadata = node.name..' '..node.param1..' '..node.param2;
end
itemstack:set_metadata( metadata );
replacer.set_hud( name, "Node replacement tool set to: '"..metadata.."'.");
return itemstack; -- nothing consumed but data changed
end,
})
@ -138,7 +141,7 @@ replacer.replace = function( itemstack, user, pointed_thing, mode )
--minetest.chat_send_player( name, "You USED this on "..minetest.serialize( pointed_thing )..".");
if( pointed_thing.type ~= "node" ) then
minetest.chat_send_player( name, " Error: No node.");
replacer.set_hud( name, " Error: No node.");
return nil;
end
@ -149,7 +152,7 @@ replacer.replace = function( itemstack, user, pointed_thing, mode )
if( node == nil ) then
minetest.chat_send_player( name, "Error: Target node not yet loaded. Please wait a moment for the server to catch up.");
replacer.set_hud( name, "Error: Target node not yet loaded. Please wait a moment for the server to catch up.");
return nil;
end
@ -176,13 +179,13 @@ replacer.replace = function( itemstack, user, pointed_thing, mode )
end
if( node.name and node.name ~= "" and replacer.blacklist[ node.name ]) then
minetest.chat_send_player( name, "Replacing blocks of the type '"..( node.name or "?" )..
replacer.set_hud( name, "Replacing blocks of the type '"..( node.name or "?" )..
"' is not allowed on this server. Replacement failed.");
return nil;
end
if( replacer.blacklist[ daten[1] ]) then
minetest.chat_send_player( name, "Placing blocks of the type '"..( daten[1] or "?" )..
replacer.set_hud( name, "Placing blocks of the type '"..( daten[1] or "?" )..
"' with the replacer is not allowed on this server. Replacement failed.");
return nil;
end
@ -214,7 +217,7 @@ replacer.replace = function( itemstack, user, pointed_thing, mode )
if( not( user:get_inventory():contains_item("main", daten[1]))) then
minetest.chat_send_player( name, "You have no further '"..( daten[1] or "?" ).."'. Replacement failed.");
replacer.set_hud( name, "You have no further '"..( daten[1] or "?" ).."'. Replacement failed.");
return nil;
end
@ -236,7 +239,7 @@ replacer.replace = function( itemstack, user, pointed_thing, mode )
if( not( digged_node )
or digged_node.name == node.name ) then
minetest.chat_send_player( name, "Replacing '"..( node.name or "air" ).."' with '"..( item[ "metadata"] or "?" ).."' failed. Unable to remove old node.");
replacer.set_hud( name, "Replacing '"..( node.name or "air" ).."' with '"..( item[ "metadata"] or "?" ).."' failed. Unable to remove old node.");
return nil;
end