VoxeLibre/mods/ITEMS/mcl_signs/init.lua

143 lines
4.9 KiB
Lua
Raw Normal View History

---
--- Generated by EmmyLua(https://github.com/EmmyLua)
--- Created by Michieal (FaerRaven).
--- DateTime: 10/14/22 4:05 PM
---
local modname = minetest.get_current_modname()
local modpath = minetest.get_modpath(modname)
local table = table
local m = -1 / 16 + 1 / 64
-- Signs API
dofile(modpath .. "/signs_api.lua")
2017-01-24 02:31:49 +01:00
-- LOCALIZATION
local S = minetest.get_translator(modname)
2015-06-29 19:55:56 +02:00
-- PLACE YAW VALUES INTO THE TABLE.
for rot = 0, 15 do
local yaw = math.pi * 2 - (((math.pi * 2) / 16) * rot)
local delta = vector.multiply(minetest.yaw_to_dir(yaw), m)
-- Offset because sign is a bit above node boundaries
delta.y = delta.y + 2 / 28
table.insert(mcl_signs.signtext_info_standing, { delta = delta, yaw = yaw })
end
-- HANDLE THE FORMSPEC CALLBACK
minetest.register_on_player_receive_fields(function(player, formname, fields)
if formname:find("mcl_signs:set_text_") == 1 then
local x, y, z = formname:match("mcl_signs:set_text_(.-)_(.-)_(.*)")
local pos = { x = tonumber(x), y = tonumber(y), z = tonumber(z) }
if not pos or not pos.x or not pos.y or not pos.z then
return
end
mcl_signs:update_sign(pos, fields, player)
end
end)
mcl_signs:generate_signs() -- initialize the nodes for the signs.
2017-07-26 03:45:22 +02:00
2019-02-18 21:29:11 +01:00
-- FIXME: Prevent entity destruction by /clearobjects
2017-07-25 02:20:37 +02:00
minetest.register_entity("mcl_signs:text", {
pointable = false,
visual = "upright_sprite",
textures = {},
physical = false,
collide_with_objects = false,
_signnodename = nil, -- node name of sign node to which the text belongs
on_activate = function(self, staticdata)
if staticdata and staticdata ~= "" then
local des = minetest.deserialize(staticdata)
if des then
self._signnodename = des._signnodename
end
end
local meta = minetest.get_meta(self.object:get_pos())
local text = meta:get_string("text")
self.object:set_properties({
textures = { mcl_signs:create_lettering(text, self._signnodename) },
})
self.object:set_armor_groups({ immortal = 1 })
end,
get_staticdata = function(self)
local out = { _signnodename = self._signnodename }
return minetest.serialize(out)
end,
})
2017-07-26 15:11:52 +02:00
-- Make the wall signs burnable.
minetest.register_craft({
type = "fuel",
recipe = "mcl_signs:wall_sign",
burntime = 10,
2015-06-29 19:55:56 +02:00
})
2017-01-10 06:46:56 +01:00
minetest.register_craft({
type = "fuel",
recipe = "mcl_signs:wall_sign_dark",
burntime = 10,
2017-01-10 06:46:56 +01:00
})
2017-02-16 21:47:47 +01:00
-- register crafts (actual recipes)
2017-07-26 16:13:19 +02:00
if minetest.get_modpath("mcl_core") then
-- debug step
minetest.log("verbose", "Register Sign Crafts: \n" .. dump(mcl_signs.woods))
for w = 1, #mcl_signs.woods do
local itemstring = ""
if mcl_signs.woods[w] == "mcl_core:sprucewood" or mcl_signs.woods[w] == "mcl_core:darkwood" then
itemstring = "mcl_signs:wall_sign_dark"
else
itemstring = "mcl_signs:wall_sign 3"
end
local c = mcl_signs.woods[w]
minetest.register_craft({
output = itemstring.." 3",
recipe = {
{ c, c, c },
{ c, c, c },
{ "", "mcl_core:stick", "" },
},
})
end
2017-07-26 16:13:19 +02:00
end
2017-02-16 21:47:47 +01:00
if minetest.get_modpath("doc") then
doc.add_entry_alias("nodes", "mcl_signs:wall_sign", "nodes", "mcl_signs:standing_sign")
doc.add_entry_alias("nodes", "mcl_signs:wall_sign", "nodes", "mcl_signs:standing_sign22_5")
doc.add_entry_alias("nodes", "mcl_signs:wall_sign", "nodes", "mcl_signs:standing_sign45")
doc.add_entry_alias("nodes", "mcl_signs:wall_sign", "nodes", "mcl_signs:standing_sign67_5")
doc.add_entry_alias("nodes", "mcl_signs:wall_sign", "nodes", "mcl_signs:wall_sign_dark")
doc.add_entry_alias("nodes", "mcl_signs:wall_sign", "nodes", "mcl_signs:standing_sign_dark")
doc.add_entry_alias("nodes", "mcl_signs:wall_sign", "nodes", "mcl_signs:standing_sign22_5_dark")
doc.add_entry_alias("nodes", "mcl_signs:wall_sign", "nodes", "mcl_signs:standing_sign45_dark")
doc.add_entry_alias("nodes", "mcl_signs:wall_sign", "nodes", "mcl_signs:standing_sign67_5_dark")
end
2017-07-25 02:20:37 +02:00
minetest.register_alias("signs:sign_wall", "mcl_signs:wall_sign")
minetest.register_alias("signs:sign_yard", "mcl_signs:standing_sign")
minetest.register_alias("mcl_signs:wall_sign 3", "mcl_signs:wall_sign")
2017-07-26 04:48:31 +02:00
2019-02-18 21:29:11 +01:00
minetest.register_lbm({
name = "mcl_signs:respawn_entities",
label = "Respawn sign text entities",
run_at_every_load = true,
nodenames = {
"mcl_signs:wall_sign", "mcl_signs:wall_sign_dark",
"mcl_signs:standing_sign", "mcl_signs:standing_sign_dark",
"mcl_signs:standing_sign22_5", "mcl_signs:standing_sign22_5_dark",
"mcl_signs:standing_sign45", "mcl_signs:standing_sign45_dark",
"mcl_signs:standing_sign67_5", "mcl_signs:standing_sign67_5_dark"
},
action = function(pos, node)
mcl_signs:update_sign(pos)
end,
})