diff --git a/.luacheckrc b/.luacheckrc index f86a57a..3b47b2d 100644 --- a/.luacheckrc +++ b/.luacheckrc @@ -10,4 +10,5 @@ globals = { read_globals = { string = {fields = {"split", "trim"}}, table = {fields = {"copy", "getn"}}, + "hand_monoid", } diff --git a/mod.conf b/mod.conf index b79cd34..38a62c3 100644 --- a/mod.conf +++ b/mod.conf @@ -1,5 +1,5 @@ name = skinsdb description = Player skin mod, supporting unified_inventory, sfinv and smart_inventory depends = player_api -optional_depends = unified_inventory,3d_armor,clothing,sfinv +optional_depends = unified_inventory,3d_armor,clothing,sfinv,hand_monoid min_minetest_version = 5.4.0 diff --git a/skin_meta_api.lua b/skin_meta_api.lua index 6c6138d..1ce04ed 100644 --- a/skin_meta_api.lua +++ b/skin_meta_api.lua @@ -1,5 +1,7 @@ skins.meta = {} +local has_hand_monoid = minetest.get_modpath("hand_monoid") + local skin_class = {} skin_class.__index = skin_class skins.skin_class = skin_class @@ -208,11 +210,19 @@ function skin_class:apply_skin_to_player(player) }) local hand = self:get_hand() - if hand then - player:get_inventory():set_size("hand", 1) - player:get_inventory():set_stack("hand", 1, hand) + if has_hand_monoid then + if hand then + hand_monoid.monoid:add_change(player, {name = hand}, "skinsdb:hand") + else + hand_monoid.monoid:del_change(player, "skinsdb:hand") + end else - player:get_inventory():set_stack("hand", 1, "") + if hand then + player:get_inventory():set_size("hand", 1) + player:get_inventory():set_stack("hand", 1, hand) + else + player:get_inventory():set_stack("hand", 1, "") + end end end