diff --git a/builtin/game/chatcommands.lua b/builtin/game/chatcommands.lua index e349eec7ed9d..3b701c1fd939 100644 --- a/builtin/game/chatcommands.lua +++ b/builtin/game/chatcommands.lua @@ -557,8 +557,11 @@ local function handle_give_command(cmd, giver, receiver, stackstring) local itemstack = ItemStack(stackstring) if itemstack:is_empty() then return false, "Cannot give an empty item" - elseif not itemstack:is_known() then + elseif (not itemstack:is_known()) or (itemstack:get_name() == "unknown") then return false, "Cannot give an unknown item" + -- Forbid giving 'ignore' due to unwanted side effects + elseif itemstack:get_name() == "ignore" then + return false, "Giving 'ignore' is not allowed" end local receiverref = core.get_player_by_name(receiver) if receiverref == nil then @@ -577,13 +580,13 @@ local function handle_give_command(cmd, giver, receiver, stackstring) -- entered (e.g. big numbers are always interpreted as 2^16-1). stackstring = itemstack:to_string() if giver == receiver then - return true, ("%q %sadded to inventory.") - :format(stackstring, partiality) + local msg = "%q %sadded to inventory." + return true, msg:format(stackstring, partiality) else core.chat_send_player(receiver, ("%q %sadded to inventory.") :format(stackstring, partiality)) - return true, ("%q %sadded to %s's inventory.") - :format(stackstring, partiality, receiver) + local msg = "%q %sadded to %s's inventory." + return true, msg:format(stackstring, partiality, receiver) end end diff --git a/builtin/game/register.lua b/builtin/game/register.lua index 1e478bc35290..43bb9e0678f6 100644 --- a/builtin/game/register.lua +++ b/builtin/game/register.lua @@ -338,7 +338,7 @@ core.register_item(":unknown", { }) core.register_node(":air", { - description = "Air (you hacker you!)", + description = "Air", inventory_image = "air.png", wield_image = "air.png", drawtype = "airlike", @@ -355,7 +355,7 @@ core.register_node(":air", { }) core.register_node(":ignore", { - description = "Ignore (you hacker you!)", + description = "Ignore", inventory_image = "ignore.png", wield_image = "ignore.png", drawtype = "airlike", @@ -368,6 +368,13 @@ core.register_node(":ignore", { air_equivalent = true, drop = "", groups = {not_in_creative_inventory=1}, + on_place = function(itemstack, placer, pointed_thing) + minetest.chat_send_player( + placer:get_player_name(), + minetest.colorize("#FF0000", + "You can't place 'ignore' nodes!")) + return "" + end, }) -- The hand (bare definition)