2021-08-26 15:14:14 -07:00

98 lines
2.3 KiB
Lua

--- Server Shops Nodes
--
-- @topic nodes
local ss = server_shop
local smodel = simple_models
local S = core.get_translator(ss.modname)
local node_sound
if core.global_exists("sounds") then
node_sound = sounds.node_stone()
end
local def = {
base = {
description = S("Shop"),
groups = {oddly_breakable_by_hand=1},
paramtype2 = "facedir",
sounds = node_sound,
after_place_node = function(pos, placer)
-- set node owner
core.get_meta(pos):set_string("owner", placer:get_player_name())
end,
on_rightclick = function(pos, node, player, itemstack, pointed_thing)
local pmeta = player:get_meta()
-- store node pos in player meta for retrieval in callbacks
pmeta:set_string(ss.modname .. ":pos", core.serialize(pos))
-- store selected index in player meta for retrieval in callbacks
pmeta:set_int(ss.modname .. ":selected", 1)
ss.show_formspec(pos, player)
end,
can_dig = function(pos, player)
return ss.is_shop_owner(pos, player) or ss.is_shop_admin(player)
end,
},
--- Small Shop Node
--
-- @node server_shop:shop_small
small = {
drawtype = "normal",
tiles = {
"server_shop_side.png",
"server_shop_side.png",
"server_shop_side.png",
"server_shop_side.png",
"server_shop_side.png",
"server_shop_front.png",
"server_shop_side.png",
},
},
--- Large Shop Node
--
-- @node server_shop:shop_large
-- @img server_shop_front.png
large = {
drawtype = "mesh",
mesh = smodel.cube_1x2x1.mesh,
tiles = {"server_shop_mesh.png",},
selection_box = {
type = "fixed",
fixed = smodel.cube_1x2x1.box,
},
collision_box = {
type = "fixed",
fixed = smodel.cube_1x2x1.box,
},
},
}
--[[ FIXME: nodes are rotated when colored
if core.get_modpath("unifieddyes") then
def.base.groups.ud_param2_colorable = 1
def.base.paramtype2 = "colorfacedir"
def.base.palette = "unifieddyes_palette_extended.png"
def.base.on_dig = unifieddyes.on_dig
end
]]
for _, size in ipairs({"small", "large"}) do
local full_def = table.copy(def.base)
for k, v in pairs(def[size]) do
full_def[k] = v
end
core.register_node(ss.modname..":shop_"..size, full_def)
end
core.register_alias(ss.modname..":shop", ss.modname..":shop_small")
core.register_alias(ss.modname..":sell", ss.modname..":shop_small")
core.register_alias(ss.modname..":buy", ss.modname..":shop_small")