forked from mtcontrib/signs_lib
Compare commits
4 Commits
8aafe6608c
...
ed3a679bca
Author | SHA1 | Date | |
---|---|---|---|
ed3a679bca | |||
5ae111e1fa | |||
aff005e745 | |||
3d0e8d47e6 |
2
API.md
2
API.md
@ -250,7 +250,7 @@ signs_lib.register_sign("basic_signs:sign_wall_glass", {
|
||||
|
||||
* `signs_lib.rightclick_sign(pos, node, player, itemstack, pointed_thing)`
|
||||
|
||||
Open the default sign formspec, if the player has the `signslib_edit` privilege.
|
||||
Open the default sign formspec, if the player has the `signslib_edit` privilege. (privilege can be set by `signs_lib.edit_priv` setting)
|
||||
|
||||
* `signs_lib.destruct_sign(pos)`
|
||||
|
||||
|
@ -67,3 +67,4 @@ The list of loaded, sign-bearing blocks is created/populated by an LBM (and trim
|
||||
* `signslib_edit`
|
||||
|
||||
Allows to rotate signs and to open (and consequently edit) any default sign formspec.
|
||||
(privilege can be set by `signs_lib.edit_priv` setting)
|
||||
|
59
api.lua
59
api.lua
@ -1,6 +1,11 @@
|
||||
-- signs_lib api, backported from street_signs
|
||||
|
||||
local S = signs_lib.S
|
||||
local has_default_mod = minetest.get_modpath("default")
|
||||
|
||||
local function log(level, messagefmt, ...)
|
||||
minetest.log(level, "[signs_lib] " .. messagefmt:format(...))
|
||||
end
|
||||
|
||||
local function get_sign_formspec() end
|
||||
|
||||
@ -21,14 +26,14 @@ signs_lib.standard_xoffs = 4
|
||||
signs_lib.standard_yoffs = 0
|
||||
signs_lib.standard_cpl = 35
|
||||
|
||||
signs_lib.standard_wood_groups = table.copy(default and minetest.registered_items["default:sign_wall_wood"].groups or {})
|
||||
signs_lib.standard_wood_groups = table.copy(has_default_mod and minetest.registered_items["default:sign_wall_wood"].groups or {})
|
||||
signs_lib.standard_wood_groups.attached_node = nil
|
||||
|
||||
signs_lib.standard_steel_groups = table.copy(default and minetest.registered_items["default:sign_wall_steel"].groups or {})
|
||||
signs_lib.standard_steel_groups = table.copy(has_default_mod and minetest.registered_items["default:sign_wall_steel"].groups or {})
|
||||
signs_lib.standard_steel_groups.attached_node = nil
|
||||
|
||||
signs_lib.standard_wood_sign_sounds = table.copy(default and minetest.registered_items["default:sign_wall_wood"].sounds or {})
|
||||
signs_lib.standard_steel_sign_sounds = table.copy(default and minetest.registered_items["default:sign_wall_steel"].sounds or {})
|
||||
signs_lib.standard_wood_sign_sounds = table.copy(has_default_mod and minetest.registered_items["default:sign_wall_wood"].sounds or {})
|
||||
signs_lib.standard_steel_sign_sounds = table.copy(has_default_mod and minetest.registered_items["default:sign_wall_steel"].sounds or {})
|
||||
|
||||
signs_lib.default_text_scale = {x=10, y=10}
|
||||
|
||||
@ -172,6 +177,9 @@ minetest.register_entity("signs_lib:text", {
|
||||
self.object:remove()
|
||||
end
|
||||
end,
|
||||
on_blast = function(self, damage)
|
||||
return false, false, {}
|
||||
end,
|
||||
})
|
||||
|
||||
function signs_lib.delete_objects(pos)
|
||||
@ -742,6 +750,15 @@ function signs_lib.destruct_sign(pos)
|
||||
signs_lib.delete_objects(pos)
|
||||
end
|
||||
|
||||
function signs_lib.blast_sign(pos, intensity)
|
||||
if signs_lib.can_modify(pos, "") then
|
||||
local node = minetest.get_node(pos)
|
||||
local drops = minetest.get_node_drops(node, "tnt:blast")
|
||||
minetest.remove_node(pos)
|
||||
return drops
|
||||
end
|
||||
end
|
||||
|
||||
local function make_infotext(text)
|
||||
text = trim_input(text)
|
||||
local lines = signs_lib.split_lines_and_words(text) or {}
|
||||
@ -803,7 +820,16 @@ end
|
||||
function signs_lib.can_modify(pos, player)
|
||||
local meta = minetest.get_meta(pos)
|
||||
local owner = meta:get_string("owner")
|
||||
local playername = player:get_player_name()
|
||||
local playername
|
||||
if type(player) == "userdata" then
|
||||
playername = player:get_player_name()
|
||||
|
||||
elseif type(player) == "string" then
|
||||
playername = player
|
||||
|
||||
else
|
||||
playername = ""
|
||||
end
|
||||
|
||||
if minetest.is_protected(pos, playername) then
|
||||
minetest.record_protection_violation(pos, playername)
|
||||
@ -812,7 +838,7 @@ function signs_lib.can_modify(pos, player)
|
||||
|
||||
if owner == ""
|
||||
or playername == owner
|
||||
or (minetest.check_player_privs(playername, {signslib_edit=true}))
|
||||
or minetest.get_player_privs(playername)[signs_lib.edit_priv]
|
||||
or (playername == minetest.settings:get("name")) then
|
||||
return true
|
||||
end
|
||||
@ -951,7 +977,7 @@ function signs_lib.after_place_node(pos, placer, itemstack, pointed_thing, locke
|
||||
end
|
||||
|
||||
function signs_lib.register_fence_with_sign()
|
||||
minetest.log("warning", "[signs_lib] ".."Attempt to call no longer used function signs_lib.register_fence_with_sign()")
|
||||
log("warning", "Attempt to call no longer used function signs_lib.register_fence_with_sign()")
|
||||
end
|
||||
|
||||
local use_glow = function(pos, node, puncher, pointed_thing)
|
||||
@ -984,6 +1010,7 @@ function signs_lib.register_sign(name, raw_def)
|
||||
end
|
||||
|
||||
def.after_place_node = raw_def.after_place_node or signs_lib.after_place_node
|
||||
def.on_blast = raw_def.on_blast or signs_lib.blast_sign
|
||||
|
||||
if raw_def.entity_info then
|
||||
|
||||
@ -1292,7 +1319,11 @@ minetest.register_chatcommand("regen_signs", {
|
||||
end
|
||||
})
|
||||
|
||||
minetest.register_on_mods_loaded(function()
|
||||
if not minetest.registered_privileges[signs_lib.edit_priv] then
|
||||
minetest.register_privilege("signslib_edit", {})
|
||||
end
|
||||
end)
|
||||
|
||||
|
||||
|
||||
@ -1337,11 +1368,11 @@ minetest.register_on_player_receive_fields(function(player, formname, fields)
|
||||
local playername = player:get_player_name()
|
||||
|
||||
if fields.text and fields.ok then
|
||||
minetest.log("action", S("@1 wrote \"@2\" to sign at @3",
|
||||
log("action", "%s wrote %q to sign at %s",
|
||||
(playername or ""),
|
||||
fields.text:gsub('\\', '\\\\'):gsub("\n", "\\n"),
|
||||
fields.text:gsub("\n", "\\n"),
|
||||
pos_string
|
||||
))
|
||||
)
|
||||
signs_lib.update_sign(pos, fields)
|
||||
elseif fields.wide_on or fields.wide_off or fields.uni_on or fields.uni_off then
|
||||
local node = minetest.get_node(pos)
|
||||
@ -1365,20 +1396,20 @@ minetest.register_on_player_receive_fields(function(player, formname, fields)
|
||||
end
|
||||
|
||||
if change_wide then
|
||||
minetest.log("action", S("@1 flipped the wide-font switch to \"@2\" at @3",
|
||||
log("action", "%s flipped the wide-font switch to %q at %s",
|
||||
(playername or ""),
|
||||
(fields.wide_on and "off" or "on"),
|
||||
minetest.pos_to_string(pos)
|
||||
))
|
||||
)
|
||||
signs_lib.update_sign(pos, fields)
|
||||
minetest.show_formspec(playername, "signs_lib:sign", get_sign_formspec(pos, node.name))
|
||||
end
|
||||
if change_uni then
|
||||
minetest.log("action", S("@1 flipped the unicode-font switch to \"@2\" at @3",
|
||||
log("action", "%s flipped the unicode-font switch to %q at %s",
|
||||
(playername or ""),
|
||||
(fields.uni_on and "off" or "on"),
|
||||
minetest.pos_to_string(pos)
|
||||
))
|
||||
)
|
||||
signs_lib.update_sign(pos, fields)
|
||||
minetest.show_formspec(playername, "signs_lib:sign", get_sign_formspec(pos, node.name))
|
||||
end
|
||||
|
2
init.lua
2
init.lua
@ -9,6 +9,8 @@ signs_lib.path = minetest.get_modpath(minetest.get_current_modname())
|
||||
|
||||
signs_lib.S = minetest.get_translator(minetest.get_current_modname())
|
||||
|
||||
signs_lib.edit_priv = minetest.settings:get("signs_lib.edit_priv") or "signslib_edit"
|
||||
|
||||
dofile(signs_lib.path.."/encoding.lua")
|
||||
dofile(signs_lib.path.."/api.lua")
|
||||
dofile(signs_lib.path.."/standard_signs.lua")
|
||||
|
1
settingstypes.txt
Normal file
1
settingstypes.txt
Normal file
@ -0,0 +1 @@
|
||||
signs_lib.edit_priv (Allows to rotate signs and to open (and consequently edit) any default sign formspec) string signslib_edit
|
Reference in New Issue
Block a user