VoxeLibre/mods/PLAYER/mcl_meshhand/init.lua

58 lines
1.8 KiB
Lua
Raw Normal View History

2022-08-29 20:09:00 +02:00
local mcl_skins_enabled = minetest.global_exists("mcl_skins")
2019-03-05 11:43:09 +01:00
---This is a fake node that should never be placed in the world
---@type node_definition
2022-08-29 20:09:00 +02:00
local node_def = {
use_texture_alpha = "opaque",
2022-08-29 20:09:00 +02:00
paramtype = "light",
drawtype = "mesh",
node_placement_prediction = "",
on_construct = function(pos)
local name = minetest.get_node(pos).name
2022-08-29 20:09:00 +02:00
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,
2022-08-29 20:09:00 +02:00
groups = { dig_immediate = 3, not_in_creative_inventory = 1 },
range = minetest.registered_items[""].range
}
2022-08-29 20:09:00 +02:00
if mcl_skins_enabled then
-- Generate a node for every skin
2022-09-06 19:51:43 +02:00
local list = mcl_skins.get_skin_list()
for _, skin in pairs(list) do
if skin.slim_arms then
2022-08-29 20:09:00 +02:00
local female = table.copy(node_def)
2022-09-06 19:51:43 +02:00
female._mcl_hand_id = skin.id
2022-08-29 20:09:00 +02:00
female.mesh = "mcl_meshhand_female.b3d"
female.tiles = { skin.texture }
2022-09-06 19:51:43 +02:00
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 }
2022-09-06 19:51:43 +02:00
minetest.register_node("mcl_meshhand:" .. skin.id, male)
2022-08-29 20:09:00 +02:00
end
end
else
node_def._mcl_hand_id = "hand"
node_def.mesh = "mcl_meshhand.b3d"
node_def.tiles = { "character.png" }
2022-08-29 20:09:00 +02:00
minetest.register_node("mcl_meshhand:hand", node_def)
2019-09-19 12:20:31 +02:00
end
2019-03-05 11:43:09 +01:00
2022-08-29 20:09:00 +02:00
if mcl_skins_enabled then
-- Change the player's hand to their skin
mcl_player.register_on_visual_change(function(player)
2022-09-06 19:51:43 +02:00
local node_id = mcl_skins.get_node_id_by_player(player)
2022-08-29 20:09:00 +02:00
player:get_inventory():set_stack("hand", 1, "mcl_meshhand:" .. node_id)
2019-09-19 12:20:31 +02:00
end)
else
2019-03-05 11:43:09 +01:00
minetest.register_on_joinplayer(function(player)
player:get_inventory():set_stack("hand", 1, ItemStack("mcl_meshhand:hand"))
2019-03-05 11:43:09 +01:00
end)
end