diff --git a/init.lua b/init.lua index f34701d..ad544a2 100644 --- a/init.lua +++ b/init.lua @@ -7,15 +7,14 @@ mypaint.colors = { blue = {"Blue", "0000ff"}, brown = {"Brown", "190B07"}, cyan = {"Cyan", "00ffff"}, - darkgreen = {"Dark Green", "005000"}, - darkgrey = {"Dark Grey", "1C1C1C"}, + darkgreen = {"Dark Green", "005000"}, + darkgrey = {"Dark Grey", "1C1C1C"}, grey = {"Grey", "848484"}, magenta = {"Magenta", "ff00ff"}, orange = {"Orange", "ff7700"}, pink = {"Pink", "FE2E9A"}, violet = {"Violet", "7f007f"}, yellow = {"Yellow", "ffff00"}, - clear = {"Clear", "000000:0"}, } mypaint.paintables = {} diff --git a/paint.lua b/paint.lua index 7b9c407..d565e92 100644 --- a/paint.lua +++ b/paint.lua @@ -28,8 +28,9 @@ function paint_node(pos, node, col, itemstack) local s, e local nname = node.name s, e = string.find(nname, "_[^_]+$") + local color if s and e then - local color = string.sub(nname, s + 1, e) + color = string.sub(nname, s + 1, e) if mypaint.colors[color] then nname = string.sub(nname, 1, s - 1) if color == col then @@ -40,18 +41,25 @@ function paint_node(pos, node, col, itemstack) for name, colors in pairs(mypaint.paintables) do if (nname == name) then - if colors[col] then - minetest.set_node(pos,{name = name.."_"..col, param2 = node.param2}) - if not minetest.setting_getbool("creative_mode") then - local wear = itemstack:get_wear() + 65535 / BRUSH_USES - if wear < 65535 then - itemstack:set_wear(wear) - else - itemstack = ItemStack("mypaint:brush") - end + if not col then + if color then + minetest.set_node(pos, {name = name, param2 = node.param2}) end + return + end + if not colors[col] then + return + end + minetest.set_node(pos, {name = name.."_"..col, param2 = node.param2}) + if not minetest.setting_getbool("creative_mode") then + local wear = itemstack:get_wear() + 65535 / BRUSH_USES + if wear < 65535 then + itemstack:set_wear(wear) + else + itemstack = ItemStack("mypaint:brush") + end + return itemstack end - return itemstack end end end @@ -72,6 +80,19 @@ minetest.register_tool("mypaint:brush", { end }) +minetest.register_tool("mypaint:scraper", { + description = "Paint Scraper", + inventory_image = "mypaint_scraper.png", + on_use = function(itemstack, user, pointed_thing) + if pointed_thing.type ~= "node" then + return + end + local pos = pointed_thing.under + local node = minetest.get_node(pos) + return paint_node(pos, node, nil, itemstack) + end +}) + for color, entry in pairs(mypaint.colors) do local desc = entry[1] local cstring = entry[2] @@ -182,3 +203,11 @@ minetest.register_craft({ } }) +minetest.register_craft({ + output = 'mypaint:scraper', + recipe = { + {'default:steel_ingot', ''}, + {'', 'group:stick'}, + } +}) +