mirror of
https://git.minetest.land/MineClone2/MineClone2.git
synced 2024-11-09 17:23:49 +01:00
Call on_equip and on_unequip everytime needed
This commit is contained in:
parent
ec6d68322a
commit
727d7be6ab
@ -18,6 +18,24 @@ function mcl_armor.play_equip_sound(stack, obj, pos, unequip)
|
|||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
function mcl_armor.on_equip(itemstack, obj)
|
||||||
|
local def = itemstack:get_definition()
|
||||||
|
mcl_armor.play_equip_sound(itemstack, obj)
|
||||||
|
if def._on_equip then
|
||||||
|
def._on_equip(obj, itemstack)
|
||||||
|
end
|
||||||
|
mcl_armor.update(obj)
|
||||||
|
end
|
||||||
|
|
||||||
|
function mcl_armor.on_unequip(itemstack, obj)
|
||||||
|
local def = itemstack:get_definition()
|
||||||
|
mcl_armor.play_equip_sound(itemstack, obj, nil, true)
|
||||||
|
if def._on_unequip then
|
||||||
|
def._on_unequip(obj, itemstack)
|
||||||
|
end
|
||||||
|
mcl_armor.update(obj)
|
||||||
|
end
|
||||||
|
|
||||||
function mcl_armor.equip(itemstack, obj)
|
function mcl_armor.equip(itemstack, obj)
|
||||||
local def = itemstack:get_definition()
|
local def = itemstack:get_definition()
|
||||||
local element = mcl_armor.elements[def._mcl_armor_element or ""]
|
local element = mcl_armor.elements[def._mcl_armor_element or ""]
|
||||||
@ -27,10 +45,7 @@ function mcl_armor.equip(itemstack, obj)
|
|||||||
if inv:get_stack("armor", element.index):is_empty() then
|
if inv:get_stack("armor", element.index):is_empty() then
|
||||||
local equipping_item = itemstack:take_item()
|
local equipping_item = itemstack:take_item()
|
||||||
inv:set_stack("armor", element.index, equipping_item)
|
inv:set_stack("armor", element.index, equipping_item)
|
||||||
if def._on_equip then
|
mcl_armor.on_equip(equipping_item, obj)
|
||||||
def._on_equip(equipping_item)
|
|
||||||
end
|
|
||||||
mcl_armor.update(obj)
|
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
@ -122,10 +122,19 @@ minetest.register_allow_player_inventory_action(function(player, action, invento
|
|||||||
end
|
end
|
||||||
end)
|
end)
|
||||||
|
|
||||||
-- ToDo: Call unequip callbacks & play uneqip sound
|
|
||||||
minetest.register_on_player_inventory_action(function(player, action, inventory, inventory_info)
|
minetest.register_on_player_inventory_action(function(player, action, inventory, inventory_info)
|
||||||
if is_armor_action(inventory_info) then
|
if is_armor_action(inventory_info) then
|
||||||
mcl_armor.update(player)
|
if action == "put" then
|
||||||
|
mcl_armor.on_equip(inventory_info.stack, player)
|
||||||
|
elseif action == "take" then
|
||||||
|
mcl_armor.on_unequip(inventory_info.stack, player)
|
||||||
|
else
|
||||||
|
if inventory_info.to_list == "armor" then
|
||||||
|
mcl_armor.on_equip(inventory:get_stack(inventory_info.to_list, inventory_info.to_index), player)
|
||||||
|
elseif inventory_info.from_list == "armor" then
|
||||||
|
mcl_armor.on_unequip(inventory:get_stack(inventory_info.to_list, inventory_info.to_index), player)
|
||||||
|
end
|
||||||
|
end
|
||||||
end
|
end
|
||||||
end)
|
end)
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user