mirror of
https://git.minetest.land/VoxeLibre/VoxeLibre.git
synced 2024-11-29 14:01:07 +01:00
4acee8e64e
- fix actual crash when placing hand in world (undefined function) - remove node fields redundant with default values - remove support for `use_texture_alpha_string_modes` - type annotation - more explicit functions
57 lines
1.8 KiB
Lua
57 lines
1.8 KiB
Lua
local mcl_skins_enabled = minetest.global_exists("mcl_skins")
|
|
|
|
---This is a fake node that should never be placed in the world
|
|
---@type node_definition
|
|
local node_def = {
|
|
use_texture_alpha = "opaque",
|
|
paramtype = "light",
|
|
drawtype = "mesh",
|
|
node_placement_prediction = "",
|
|
on_construct = function(pos)
|
|
local name = minetest.get_node(pos).name
|
|
local message = "[mcl_meshhand] Trying to construct " .. name .. " at " .. minetest.pos_to_string(pos)
|
|
minetest.log("error", message)
|
|
minetest.remove_node(pos)
|
|
end,
|
|
drop = "",
|
|
on_drop = function(_, _, _) return ItemStack() end,
|
|
groups = { dig_immediate = 3, not_in_creative_inventory = 1 },
|
|
range = minetest.registered_items[""].range
|
|
}
|
|
|
|
if mcl_skins_enabled then
|
|
-- Generate a node for every skin
|
|
local list = mcl_skins.get_skin_list()
|
|
for _, skin in pairs(list) do
|
|
if skin.slim_arms then
|
|
local female = table.copy(node_def)
|
|
female._mcl_hand_id = skin.id
|
|
female.mesh = "mcl_meshhand_female.b3d"
|
|
female.tiles = { skin.texture }
|
|
minetest.register_node("mcl_meshhand:" .. skin.id, female)
|
|
else
|
|
local male = table.copy(node_def)
|
|
male._mcl_hand_id = skin.id
|
|
male.mesh = "mcl_meshhand.b3d"
|
|
male.tiles = { skin.texture }
|
|
minetest.register_node("mcl_meshhand:" .. skin.id, male)
|
|
end
|
|
end
|
|
else
|
|
node_def._mcl_hand_id = "hand"
|
|
node_def.mesh = "mcl_meshhand.b3d"
|
|
node_def.tiles = { "character.png" }
|
|
minetest.register_node("mcl_meshhand:hand", node_def)
|
|
end
|
|
|
|
if mcl_skins_enabled then
|
|
-- Change the player's hand to their skin
|
|
mcl_player.register_on_visual_change(function(player)
|
|
local node_id = mcl_skins.get_node_id_by_player(player)
|
|
player:get_inventory():set_stack("hand", 1, "mcl_meshhand:" .. node_id)
|
|
end)
|
|
else
|
|
minetest.register_on_joinplayer(function(player)
|
|
player:get_inventory():set_stack("hand", 1, ItemStack("mcl_meshhand:hand"))
|
|
end)
|
|
end
|