diff --git a/depends.txt b/depends.txt index 4ad96d5..ae03169 100644 --- a/depends.txt +++ b/depends.txt @@ -1 +1,3 @@ default +mypaint + diff --git a/garden.lua b/garden.lua index bdd7a77..8d9587b 100644 --- a/garden.lua +++ b/garden.lua @@ -80,7 +80,7 @@ minetest.register_node("myfences:garden_corner", node_garden_corner) for _, entry in ipairs(myfences.colors) do local color = entry[1] local desc = entry[2] - local stain = entry[3] + local stain = "^(myfences_color.png^[colorize:#"..entry[3].."^[mask:myfences_color.png)" local tiles = { "myfences_wood.png"..stain, diff --git a/init.lua b/init.lua index f485eb2..278024b 100644 --- a/init.lua +++ b/init.lua @@ -1,8 +1,8 @@ myfences = {} myfences.colors = { - {"red", "Red", "^myfences_red.png"}, - {"green", "Green", "^myfences_green.png"}, - {"white", "White", "^myfences_white.png"}, + {"red", "Red", "842800"}, + {"green", "Green", "0c4916"}, + {"white", "White", "ffffff"}, } dofile(minetest.get_modpath("myfences").."/picket.lua") diff --git a/paint.lua b/paint.lua index 6baaeba..f84a842 100644 --- a/paint.lua +++ b/paint.lua @@ -1,196 +1,13 @@ -local BRUSH_USES = 3 -local CAN_USES = 100 - -function check_paintcan(pos, node) - local name = string.sub(node.name, 10) - if string.sub(name, 1, 6) ~= "paint_" then - return - end - local color = string.sub(name, 7) - local meta = minetest.get_meta(pos) - local uses = meta:get_int("myfences:uses") - 1 - meta:set_int("myfences:uses", uses) - local info = meta:get_string("infotext") - info = string.gsub(info, "%(.*%)", "("..uses.." uses)") - meta:set_string("infotext", info) - if uses <= 0 then - minetest.dig_node(pos) - end - return ItemStack("myfences:brush_"..color) -end - local paintables = { - "picket", "picket_corner", "picketb", "picketb_corner", - "garden", "garden_corner", "privacy", "privacy_corner", "corner_post" + "myfences:picket", "myfences:picket_corner", "myfences:picketb", "myfences:picketb_corner", + "myfences:garden", "myfences:garden_corner", "myfences:privacy", "myfences:privacy_corner", + "myfences:corner_post" } -function paint_node(pos, node, col, itemstack) - local s, e - local nname = string.sub(node.name, 10) - s, e = string.find(nname, "_[^_]+$") - if s and e then - local ncolor = string.sub(nname, s + 1, e) - for _, entry in ipairs(myfences.colors) do - local color = entry[1] - if ncolor == color then - if color == col then - return - end - nname = string.sub(nname, 1, s - 1) - break - end - end - end - - for i, name in ipairs(paintables) do - if nname == name then - minetest.set_node(pos,{name = "myfences:"..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("myfences:brush") - end - end - return itemstack - end - end -end - -minetest.register_tool("myfences:brush", { - description = "Fence Brush", - inventory_image = "myfences_paint_brush.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) - if string.sub(node.name, 1, 9) ~= "myfences:" then - return - end - return check_paintcan(pos, node) - end -}) - +local colors = {} for _, entry in ipairs(myfences.colors) do - local col = entry[1] - local desc = entry[2] - - minetest.register_tool("myfences:brush_"..col, { - description = "Fence Brush ("..desc.." Paint)", - inventory_image = "myfences_paint_brush_"..col..".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) - if string.sub(node.name, 1, 9) ~= "myfences:" then - return - end - local ret = check_paintcan(pos, node) - if ret then - return ret - end - return paint_node(pos, node, col, itemstack) - end, - }) - -minetest.register_node("myfences:paint_"..col, { - description = desc.." Paint", - drawtype = "mesh", - paramtype = "light", - paramtype2 = "facedir", - mesh = "myfences_can.obj", - tiles = {"myfences_paint_"..col..".png"}, - stack_max = 1, - drop = "", - groups = {oddly_breakable_by_hand = 3, dig_immediate = 3, not_in_creative_inventory = 1}, - selection_box = { - type = "fixed", - fixed = { - {-0.25, -0.5, -0.25, 0.25, 0., 0.25}, - } - }, - after_dig_node = function(pos, oldnode, oldmetadata, digger) - if not digger then - return - end - local inv = digger:get_inventory() - if not inv then - return - end - local itemstack = ItemStack("myfences:paintcan_"..col) - local uses = tonumber(oldmetadata.fields["myfences:uses"]) - if uses <= 0 then - return - end - itemstack:set_wear((CAN_USES - uses) * (65535 / CAN_USES)) - if inv:room_for_item("main", itemstack) then - inv:add_item("main", itemstack) - else - minetest.add_item(pos, itemstack) - end - end -}) - - minetest.register_tool("myfences:paintcan_"..col, { - description = desc.." Paint", - inventory_image = "myfences_paint_can_"..col..".png", - on_place = function(itemstack, user, pointed_thing) - local pname = "myfences:paint_"..col - local paint = ItemStack(pname) - paint = minetest.item_place_node(paint, user, pointed_thing) - if not paint or (paint:get_count() > 0) then - return - end - local pos = pointed_thing.under - local node = minetest.get_node(pos) - local meta = minetest.get_meta(pos) - if node.name ~= pname or (meta:get_int("myfences:uses") > 0) then - pos = pointed_thing.above - node = minetest.get_node(pos) - meta = minetest.get_meta(pos) - if node.name ~= pname or (meta:get_int("myfences:uses") > 0) then - return - end - end - local uses = math.floor(CAN_USES - itemstack:get_wear() / (65535 / CAN_USES)) - meta:set_int("myfences:uses", uses) - meta:set_string("infotext", desc.." Paint ("..uses.." uses)") - itemstack:take_item() - return itemstack - end - }) - - minetest.register_craft({ - output = "myfences:paintcan_"..col, - recipe = { - {"bucket:bucket_water","dye:"..col} - }, - replacements = {{"bucket:bucket_water","bucket:bucket_empty"}}, - }) + table.insert(colors, entry[1]) end -minetest.register_craftitem("myfences:paint_brush_bristles",{ - description = "Paint Brush Bristles", - inventory_image = "myfences_paint_brush_bristles.png", - stack_max = 1, - -}) -minetest.register_craft({ - output = 'myfences:paint_brush_bristles', - recipe = { - {'wool:white'}, - } -}) -minetest.register_craft({ - output = 'myfences:brush', - recipe = { - {'myfences:paint_brush_bristles'}, - {'group:stick'}, - } -}) +mypaint.register(paintables, colors) diff --git a/picket.lua b/picket.lua index c93d8bd..4ec3993 100644 --- a/picket.lua +++ b/picket.lua @@ -198,7 +198,7 @@ minetest.register_node("myfences:picketb_corner", node_picketb_corner) for _, entry in ipairs(myfences.colors) do local color = entry[1] local desc = entry[2] - local stain = entry[3] + local stain = "^(myfences_color.png^[colorize:#"..entry[3].."^[mask:myfences_color.png)" local tiles = { "myfences_wood.png"..stain, diff --git a/post.lua b/post.lua index 23ee2c3..069f32b 100644 --- a/post.lua +++ b/post.lua @@ -32,7 +32,7 @@ minetest.register_node("myfences:corner_post", node_post) for _, entry in ipairs(myfences.colors) do local color = entry[1] local desc = entry[2] - local stain = entry[3] + local stain = "^(myfences_color.png^[colorize:#"..entry[3].."^[mask:myfences_color.png)" local node = table.copy(node_post) node.description = desc.." Fence Post" diff --git a/privacy.lua b/privacy.lua index 5c2b9b1..51179aa 100644 --- a/privacy.lua +++ b/privacy.lua @@ -83,7 +83,7 @@ minetest.register_node("myfences:privacy_corner", node_privacy_corner) for _, entry in ipairs(myfences.colors) do local color = entry[1] local desc = entry[2] - local stain = entry[3] + local stain = "^(myfences_color.png^[colorize:#"..entry[3].."^[mask:myfences_color.png)" local tiles = { "myfences_wood.png"..stain, diff --git a/textures/myfences_white.png b/textures/myfences_color.png similarity index 100% rename from textures/myfences_white.png rename to textures/myfences_color.png diff --git a/textures/myfences_green.png b/textures/myfences_green.png deleted file mode 100644 index 6c5e391..0000000 Binary files a/textures/myfences_green.png and /dev/null differ diff --git a/textures/myfences_paint_brush.png b/textures/myfences_paint_brush.png deleted file mode 100644 index 195e282..0000000 Binary files a/textures/myfences_paint_brush.png and /dev/null differ diff --git a/textures/myfences_paint_brush_bristles.png b/textures/myfences_paint_brush_bristles.png deleted file mode 100644 index f9e8d82..0000000 Binary files a/textures/myfences_paint_brush_bristles.png and /dev/null differ diff --git a/textures/myfences_paint_brush_empty.png b/textures/myfences_paint_brush_empty.png deleted file mode 100644 index 195e282..0000000 Binary files a/textures/myfences_paint_brush_empty.png and /dev/null differ diff --git a/textures/myfences_paint_brush_green.png b/textures/myfences_paint_brush_green.png deleted file mode 100644 index c0c2c68..0000000 Binary files a/textures/myfences_paint_brush_green.png and /dev/null differ diff --git a/textures/myfences_paint_brush_red.png b/textures/myfences_paint_brush_red.png deleted file mode 100644 index 8318a25..0000000 Binary files a/textures/myfences_paint_brush_red.png and /dev/null differ diff --git a/textures/myfences_paint_brush_white.png b/textures/myfences_paint_brush_white.png deleted file mode 100644 index e93eb59..0000000 Binary files a/textures/myfences_paint_brush_white.png and /dev/null differ diff --git a/textures/myfences_paint_can_green.png b/textures/myfences_paint_can_green.png deleted file mode 100644 index 75f5950..0000000 Binary files a/textures/myfences_paint_can_green.png and /dev/null differ diff --git a/textures/myfences_paint_can_red.png b/textures/myfences_paint_can_red.png deleted file mode 100644 index d2f8e32..0000000 Binary files a/textures/myfences_paint_can_red.png and /dev/null differ diff --git a/textures/myfences_paint_can_white.png b/textures/myfences_paint_can_white.png deleted file mode 100644 index afacd22..0000000 Binary files a/textures/myfences_paint_can_white.png and /dev/null differ diff --git a/textures/myfences_paint_green.png b/textures/myfences_paint_green.png deleted file mode 100644 index 8e0c284..0000000 Binary files a/textures/myfences_paint_green.png and /dev/null differ diff --git a/textures/myfences_paint_red.png b/textures/myfences_paint_red.png deleted file mode 100644 index 6647174..0000000 Binary files a/textures/myfences_paint_red.png and /dev/null differ diff --git a/textures/myfences_paint_white.png b/textures/myfences_paint_white.png deleted file mode 100644 index 097ffdc..0000000 Binary files a/textures/myfences_paint_white.png and /dev/null differ diff --git a/textures/myfences_red.png b/textures/myfences_red.png deleted file mode 100644 index a53667f..0000000 Binary files a/textures/myfences_red.png and /dev/null differ diff --git a/textures/paint.png b/textures/paint.png deleted file mode 100644 index a5e0e5c..0000000 Binary files a/textures/paint.png and /dev/null differ diff --git a/textures/paint.xcf b/textures/paint.xcf deleted file mode 100644 index de043d9..0000000 Binary files a/textures/paint.xcf and /dev/null differ