From 6b211cf5f63d5e593c2d0adc9dc369b5f70e35d1 Mon Sep 17 00:00:00 2001 From: Jordan Irwin Date: Wed, 28 Jul 2021 01:39:38 -0700 Subject: [PATCH] Add pencil tool for erasing, adding, & swapping nodes --- README.md | 6 +- TODO.txt | 6 +- changelog.txt | 2 + chat.lua | 54 ++++++++++++++++ init.lua | 111 +++++++++++++++++++++++++++++++- misc_functions.lua | 57 ++++++++++++++++ sounds/cleaner_pencil_erase.ogg | Bin 0 -> 17295 bytes sounds/cleaner_pencil_write.ogg | Bin 0 -> 21553 bytes textures/cleaner_pencil.png | Bin 0 -> 255 bytes 9 files changed, 231 insertions(+), 5 deletions(-) create mode 100644 sounds/cleaner_pencil_erase.ogg create mode 100644 sounds/cleaner_pencil_write.ogg create mode 100644 textures/cleaner_pencil.png diff --git a/README.md b/README.md index b3d2c52..970dd5b 100644 --- a/README.md +++ b/README.md @@ -6,7 +6,11 @@ A [Minetest][] mod that can be used to remove/replace unknown entities, nodes, & ### Licensing: -[MIT](LICENSE.txt) +- Code: [MIT](LICENSE.txt) +- Textures: CC0 +- Sounds: + - cleaner_pencil_write: [CC0](https://freesound.org/people/NachtmahrTV/sounds/571800/) + - cleaner_pencil_erase: [CC0](https://freesound.org/people/damsur/sounds/443241/) ### Requirements: diff --git a/TODO.txt b/TODO.txt index 1f0615d..17ac434 100644 --- a/TODO.txt +++ b/TODO.txt @@ -4,5 +4,9 @@ TODO: - update inventories when items are replaced: - creative - storage (chests, etc.) -- add admin tool for replacing/removing nodes - add LBM when removing an item if it is a node +- make pencil image flip when mode set to "erase" +- update localization files +- add "radius" option for pencil or "xlen", "ylen", & "zlen" options +- add "xrotate" & "zrorate" modes for pencil +- fix pencil "write" mode when pointing to side of node (node gets placed below) diff --git a/changelog.txt b/changelog.txt index efae998..e57265b 100644 --- a/changelog.txt +++ b/changelog.txt @@ -14,6 +14,8 @@ v1.2 - all types are loaded from /cleaner.json file - added localization support - added Spanish localization +- added pencil tool for erasing, adding, & swapping nodes +- added "cleaner" chat command for managing pencil tool settings v1.1 ---- diff --git a/chat.lua b/chat.lua index f900ab7..beb79b9 100644 --- a/chat.lua +++ b/chat.lua @@ -7,6 +7,8 @@ local S = core.get_translator(cleaner.modname) +local aux = dofile(cleaner.modpath .. "/misc_functions.lua") + local function pos_list(ppos, radius) local plist = {} @@ -457,3 +459,55 @@ if cleaner.unsafe then end }) end + + +--- Manages settings for wielded cleaner tool. +-- +-- @chatcmd cleaner +-- @param action Action to execute. Can be "status", "setmode", or "setnode". +-- @param value Mode or node to be set for tool. +core.register_chatcommand("cleaner", { + privs = {server=true}, + description = S("Manage settings for wielded cleaner tool.") .. "\n\n" + .. S("Params:") .. "\n action: Action to execute. Can be one of \"status\", \"setmode\", or \"setnode\"." + .. "\n value: Mode or node to be set for tool.", + params = " ", + func = function(name, param) + local action, value = param + local idx = param:find(" ") + if idx then + param = string.split(param, " ") + action = param[1] + value = param[2] + end + + local player = core.get_player_by_name(name) + local stack = player:get_wielded_item() + local iname = stack:get_name() + local imeta = stack:get_meta() + + if iname ~= "cleaner:pencil" then + return false, S("Unrecognized wielded item: @1", iname) + end + + if action == "status" then + core.chat_send_player(name, iname .. ": " + .. S("mode=@1, node=@2", imeta:get_string("mode"), imeta:get_string("node"))) + return true + end + + if not action or not value then + return false, S("Missing parameter.") + end + + if action == "setmode" then + stack = aux.tool:set_mode(stack, value, name) + elseif action == "setnode" then + stack = aux.tool:set_node(stack, value, name) + else + return false, S("Unrecognized action: @1", action) + end + + return player:set_wielded_item(stack) + end, +}) diff --git a/init.lua b/init.lua index 31df5ff..b3fb769 100644 --- a/init.lua +++ b/init.lua @@ -1,6 +1,7 @@ ---[[ Cleaner mod - License: MIT -]] + +--- Cleaner +-- +-- @topic tools cleaner = {} @@ -49,3 +50,107 @@ local scripts = { for _, script in ipairs(scripts) do dofile(cleaner.modpath .. "/" .. script .. ".lua") end + + +local S = core.get_translator(cleaner.modname) + + +local sound_handle + +--- Master Pencil +-- +-- @tool cleaner:pencil +-- @img cleaner_pencil.png +-- @privs server +core.register_tool(cleaner.modname .. ":pencil", { + description = S("Master Pencil"), + inventory_image = "cleaner_pencil.png", + liquids_pointable = true, + on_use = function(itemstack, user, pointed_thing) + if not user:is_player() then return end + + local pname = user:get_player_name() + if not core.get_player_privs(pname).server then + core.chat_send_player(pname, S("You do not have permission to use this item. Missing privs: server")) + return itemstack + end + + if sound_handle then + core.sound_stop(sound_handle) + sound_handle = nil + end + + if pointed_thing.type == "node" then + local npos = core.get_pointed_thing_position(pointed_thing) + local imeta = itemstack:get_meta() + local mode = imeta:get_string("mode") + local new_node_name = imeta:get_string("node") + + if mode == "erase" then + core.remove_node(npos) + sound_handle = core.sound_play("cleaner_pencil_erase", {object=user}) + return itemstack + elseif core.registered_nodes[new_node_name] then + if mode == "swap" then + core.swap_node(npos, {name=new_node_name}) + sound_handle = core.sound_play("cleaner_pencil_write", {object=user}) + return itemstack + elseif mode == "write" then + local node_above = core.get_node_or_nil(pointed_thing.above) + if not node_above or node_above.name == "air" then + core.place_node(pointed_thing.above, {name=new_node_name}) + sound_handle = core.sound_play("cleaner_pencil_write", {object=user}) + else + core.chat_send_player(pname, S("Can't place node there.")) + end + + return itemstack + else + core.chat_send_player(pname, S("Unknown mode: @1", mode)) + end + end + + core.chat_send_player(pname, S("Cannot place unknown node: @1", new_node_name)) + return itemstack + end + end, + on_secondary_use = function(itemstack, user, pointed_thing) + if not user:is_player() then return end + + local pname = user:get_player_name() + if not core.get_player_privs(pname).server then + core.chat_send_player(pname, S("You do not have permission to use this item. Missing privs: @1", "server")) + return itemstack + end + + local imeta = itemstack:get_meta() + local mode = imeta:get_string("mode") + if mode == "erase" or mode == "" then + mode = "write" + elseif mode == "write" then + mode = "swap" + else + mode = "erase" + end + + return aux.tool:set_mode(itemstack, mode, pname) + end, + on_place = function(itemstack, placer, pointed_thing) + if not placer:is_player() then return end + + local pname = placer:get_player_name() + if not core.get_player_privs(pname).server then + core.chat_send_player(pname, S("You do not have permission to use this item. Missing privs: @1", "server")) + return itemstack + end + + if pointed_thing.type == "node" then + local node = core.get_node_or_nil(core.get_pointed_thing_position(pointed_thing)) + if node then + itemstack = aux.tool:set_node(itemstack, node.name, pname) + end + end + + return itemstack + end, +}) diff --git a/misc_functions.lua b/misc_functions.lua index 4812d49..3b8217e 100644 --- a/misc_functions.lua +++ b/misc_functions.lua @@ -1,4 +1,7 @@ +local S = core.get_translator(cleaner.modname) + + --- Cleans duplicate entries from indexed table. -- -- @local @@ -66,9 +69,63 @@ local function update_world_data(t, data) return false end +local tool = { + modes = { + erase = true, + write = true, + swap = true, + }, +} + +tool.set_mode = function(self, stack, mode, pname) + local iname = stack:get_name() + + if not self.modes[mode] then + if pname then + core.chat_send_player(pname, iname .. ": " .. S("unknown mode: @1", mode)) + end + cleaner.log("warning", iname .. ": unknown mode: " .. mode) + return stack + end + + --[[ FIXME: want to flip item image when mode is set to "erase" + local new_item = table.copy(core.registered_nodes[iname]) + if mode == "erase" then + new_item.inventory_image = "cleaner_pencil.png^[transformFXFY" + else + new_item.inventory_image = "cleaner_pencil.png" + end + + local new_stack = ItemStack(new_item) + ]] + + local imeta = stack:get_meta() + imeta:set_string("mode", mode) + + if pname then + core.chat_send_player(pname, iname .. ": " + .. S("mode set to: @1", imeta:get_string("mode"))) + end + + return stack +end + +tool.set_node = function(self, stack, node, pname) + local imeta = stack:get_meta() + imeta:set_string("node", node) + + if pname then + core.chat_send_player(pname, stack:get_name() .. ": " + .. S("node set to: @1", imeta:get_string("node"))) + end + + return stack +end + return { clean_duplicates = clean_duplicates, get_world_data = get_world_data, update_world_data = update_world_data, + tool = tool, } diff --git a/sounds/cleaner_pencil_erase.ogg b/sounds/cleaner_pencil_erase.ogg new file mode 100644 index 0000000000000000000000000000000000000000..1fe52457b5a858c64433fac4a140aa56d76f6a60 GIT binary patch literal 17295 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 z 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 XC&~pGH4_sny+;SDp~$8`mtOo|$YVf* literal 0 HcmV?d00001 diff --git a/sounds/cleaner_pencil_write.ogg b/sounds/cleaner_pencil_write.ogg new file mode 100644 index 0000000000000000000000000000000000000000..3afa8aabf4f90889f482d3db9e415c9158af83b1 GIT binary patch literal 21553 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 literal 0 HcmV?d00001