mirror of
https://git.minetest.land/VoxeLibre/VoxeLibre.git
synced 2024-11-22 18:41:09 +01:00
Can equip/swap armor with rightclick
This commit is contained in:
parent
329452d5ce
commit
d88fa0c438
1 changed files with 97 additions and 0 deletions
|
@ -8,6 +8,62 @@ dofile(minetest.get_modpath(minetest.get_current_modname()).."/alias.lua")
|
|||
local longdesc = S("This is a piece of equippable armor which reduces the amount of damage you receive.")
|
||||
local usage = S("To equip it, put it on the corresponding armor slot in your inventory menu.")
|
||||
|
||||
local function on_armor_use(itemstack, user, pointed_thing)
|
||||
if not user or user:is_player() == false then
|
||||
return itemstack
|
||||
end
|
||||
|
||||
-- Call on_rightclick if the pointed node defines it
|
||||
if pointed_thing.type == "node" then
|
||||
local node = minetest.get_node(pointed_thing.under)
|
||||
if user and not user:get_player_control().sneak then
|
||||
if minetest.registered_nodes[node.name] and minetest.registered_nodes[node.name].on_rightclick then
|
||||
return minetest.registered_nodes[node.name].on_rightclick(pointed_thing.under, node, user, itemstack) or itemstack
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
local name, player_inv, armor_inv = armor:get_valid_player(user, "[on_armor_use]")
|
||||
if not name then
|
||||
return itemstack
|
||||
end
|
||||
|
||||
local def = itemstack:get_definition()
|
||||
local slot
|
||||
if def.groups and def.groups.armor_head then
|
||||
slot = 2
|
||||
elseif def.groups and def.groups.armor_torso then
|
||||
slot = 3
|
||||
elseif def.groups and def.groups.armor_legs then
|
||||
slot = 4
|
||||
elseif def.groups and def.groups.armor_feet then
|
||||
slot = 5
|
||||
end
|
||||
|
||||
if slot then
|
||||
local itemstack_single = ItemStack(itemstack)
|
||||
itemstack_single:set_count(1)
|
||||
local itemstack_slot = armor_inv:get_stack("armor", slot)
|
||||
if itemstack_slot:is_empty() then
|
||||
armor_inv:set_stack("armor", slot, itemstack_single)
|
||||
player_inv:set_stack("armor", slot, itemstack_single)
|
||||
armor:set_player_armor(user)
|
||||
armor:update_inventory(user)
|
||||
armor:play_equip_sound(user, itemstack_single)
|
||||
itemstack:take_item()
|
||||
elseif itemstack:get_count() <= 1 then
|
||||
armor_inv:set_stack("armor", slot, itemstack_single)
|
||||
player_inv:set_stack("armor", slot, itemstack_single)
|
||||
armor:set_player_armor(user)
|
||||
armor:update_inventory(user)
|
||||
armor:play_equip_sound(user, itemstack_single)
|
||||
itemstack = ItemStack(itemstack_slot)
|
||||
end
|
||||
end
|
||||
|
||||
return itemstack
|
||||
end
|
||||
|
||||
minetest.register_tool("mcl_armor:helmet_leather", {
|
||||
description = S("Leather Cap"),
|
||||
_doc_items_longdesc = longdesc,
|
||||
|
@ -19,6 +75,8 @@ minetest.register_tool("mcl_armor:helmet_leather", {
|
|||
_mcl_armor_equip = "mcl_armor_equip_leather",
|
||||
_mcl_armor_unequip = "mcl_armor_unequip_leather",
|
||||
},
|
||||
on_place = on_armor_use,
|
||||
on_secondary_use = on_armor_use,
|
||||
})
|
||||
|
||||
minetest.register_tool("mcl_armor:helmet_iron", {
|
||||
|
@ -32,6 +90,9 @@ minetest.register_tool("mcl_armor:helmet_iron", {
|
|||
_mcl_armor_equip = "mcl_armor_equip_iron",
|
||||
_mcl_armor_unequip = "mcl_armor_unequip_iron",
|
||||
},
|
||||
|
||||
on_place = on_armor_use,
|
||||
on_secondary_use = on_armor_use,
|
||||
})
|
||||
|
||||
minetest.register_tool("mcl_armor:helmet_gold", {
|
||||
|
@ -45,6 +106,8 @@ minetest.register_tool("mcl_armor:helmet_gold", {
|
|||
_mcl_armor_equip = "mcl_armor_equip_iron",
|
||||
_mcl_armor_unequip = "mcl_armor_unequip_iron",
|
||||
},
|
||||
on_place = on_armor_use,
|
||||
on_secondary_use = on_armor_use,
|
||||
})
|
||||
|
||||
minetest.register_tool("mcl_armor:helmet_diamond",{
|
||||
|
@ -58,6 +121,8 @@ minetest.register_tool("mcl_armor:helmet_diamond",{
|
|||
_mcl_armor_equip = "mcl_armor_equip_diamond",
|
||||
_mcl_armor_unequip = "mcl_armor_unequip_diamond",
|
||||
},
|
||||
on_place = on_armor_use,
|
||||
on_secondary_use = on_armor_use,
|
||||
})
|
||||
|
||||
minetest.register_tool("mcl_armor:helmet_chain", {
|
||||
|
@ -71,6 +136,8 @@ minetest.register_tool("mcl_armor:helmet_chain", {
|
|||
_mcl_armor_equip = "mcl_armor_equip_chainmail",
|
||||
_mcl_armor_unequip = "mcl_armor_unequip_chainmail",
|
||||
},
|
||||
on_place = on_armor_use,
|
||||
on_secondary_use = on_armor_use,
|
||||
})
|
||||
|
||||
-- Regisiter Torso Armor
|
||||
|
@ -86,6 +153,8 @@ minetest.register_tool("mcl_armor:chestplate_leather", {
|
|||
_mcl_armor_equip = "mcl_armor_equip_leather",
|
||||
_mcl_armor_unequip = "mcl_armor_unequip_leather",
|
||||
},
|
||||
on_place = on_armor_use,
|
||||
on_secondary_use = on_armor_use,
|
||||
})
|
||||
|
||||
minetest.register_tool("mcl_armor:chestplate_iron", {
|
||||
|
@ -99,6 +168,8 @@ minetest.register_tool("mcl_armor:chestplate_iron", {
|
|||
_mcl_armor_equip = "mcl_armor_equip_iron",
|
||||
_mcl_armor_unequip = "mcl_armor_unequip_iron",
|
||||
},
|
||||
on_place = on_armor_use,
|
||||
on_secondary_use = on_armor_use,
|
||||
})
|
||||
|
||||
minetest.register_tool("mcl_armor:chestplate_gold", {
|
||||
|
@ -112,6 +183,8 @@ minetest.register_tool("mcl_armor:chestplate_gold", {
|
|||
_mcl_armor_equip = "mcl_armor_equip_iron",
|
||||
_mcl_armor_unequip = "mcl_armor_unequip_iron",
|
||||
},
|
||||
on_place = on_armor_use,
|
||||
on_secondary_use = on_armor_use,
|
||||
})
|
||||
|
||||
minetest.register_tool("mcl_armor:chestplate_diamond",{
|
||||
|
@ -125,6 +198,8 @@ minetest.register_tool("mcl_armor:chestplate_diamond",{
|
|||
_mcl_armor_equip = "mcl_armor_equip_diamond",
|
||||
_mcl_armor_unequip = "mcl_armor_unequip_diamond",
|
||||
},
|
||||
on_place = on_armor_use,
|
||||
on_secondary_use = on_armor_use,
|
||||
})
|
||||
|
||||
minetest.register_tool("mcl_armor:chestplate_chain", {
|
||||
|
@ -138,6 +213,8 @@ minetest.register_tool("mcl_armor:chestplate_chain", {
|
|||
_mcl_armor_equip = "mcl_armor_equip_chainmail",
|
||||
_mcl_armor_unequip = "mcl_armor_unequip_chainmail",
|
||||
},
|
||||
on_place = on_armor_use,
|
||||
on_secondary_use = on_armor_use,
|
||||
})
|
||||
|
||||
-- Regisiter Leg Armor
|
||||
|
@ -153,6 +230,8 @@ minetest.register_tool("mcl_armor:leggings_leather", {
|
|||
_mcl_armor_equip = "mcl_armor_equip_leather",
|
||||
_mcl_armor_unequip = "mcl_armor_unequip_leather",
|
||||
},
|
||||
on_place = on_armor_use,
|
||||
on_secondary_use = on_armor_use,
|
||||
})
|
||||
|
||||
minetest.register_tool("mcl_armor:leggings_iron", {
|
||||
|
@ -166,6 +245,8 @@ minetest.register_tool("mcl_armor:leggings_iron", {
|
|||
_mcl_armor_equip = "mcl_armor_equip_iron",
|
||||
_mcl_armor_unequip = "mcl_armor_unequip_iron",
|
||||
},
|
||||
on_place = on_armor_use,
|
||||
on_secondary_use = on_armor_use,
|
||||
})
|
||||
|
||||
minetest.register_tool("mcl_armor:leggings_gold", {
|
||||
|
@ -179,6 +260,8 @@ minetest.register_tool("mcl_armor:leggings_gold", {
|
|||
_mcl_armor_equip = "mcl_armor_equip_iron",
|
||||
_mcl_armor_unequip = "mcl_armor_unequip_iron",
|
||||
},
|
||||
on_place = on_armor_use,
|
||||
on_secondary_use = on_armor_use,
|
||||
})
|
||||
|
||||
minetest.register_tool("mcl_armor:leggings_diamond",{
|
||||
|
@ -192,6 +275,8 @@ minetest.register_tool("mcl_armor:leggings_diamond",{
|
|||
_mcl_armor_equip = "mcl_armor_equip_diamond",
|
||||
_mcl_armor_unequip = "mcl_armor_unequip_diamond",
|
||||
},
|
||||
on_place = on_armor_use,
|
||||
on_secondary_use = on_armor_use,
|
||||
})
|
||||
|
||||
minetest.register_tool("mcl_armor:leggings_chain", {
|
||||
|
@ -205,6 +290,8 @@ minetest.register_tool("mcl_armor:leggings_chain", {
|
|||
_mcl_armor_equip = "mcl_armor_equip_chainmail",
|
||||
_mcl_armor_unequip = "mcl_armor_unequip_chainmail",
|
||||
},
|
||||
on_place = on_armor_use,
|
||||
on_secondary_use = on_armor_use,
|
||||
})
|
||||
-- Regisiter Boots
|
||||
|
||||
|
@ -219,6 +306,8 @@ minetest.register_tool("mcl_armor:boots_leather", {
|
|||
_mcl_armor_equip = "mcl_armor_equip_leather",
|
||||
_mcl_armor_unequip = "mcl_armor_unequip_leather",
|
||||
},
|
||||
on_place = on_armor_use,
|
||||
on_secondary_use = on_armor_use,
|
||||
})
|
||||
|
||||
minetest.register_tool("mcl_armor:boots_iron", {
|
||||
|
@ -232,6 +321,8 @@ minetest.register_tool("mcl_armor:boots_iron", {
|
|||
_mcl_armor_equip = "mcl_armor_equip_iron",
|
||||
_mcl_armor_unequip = "mcl_armor_unequip_iron",
|
||||
},
|
||||
on_place = on_armor_use,
|
||||
on_secondary_use = on_armor_use,
|
||||
})
|
||||
|
||||
minetest.register_tool("mcl_armor:boots_gold", {
|
||||
|
@ -245,6 +336,8 @@ minetest.register_tool("mcl_armor:boots_gold", {
|
|||
_mcl_armor_equip = "mcl_armor_equip_iron",
|
||||
_mcl_armor_unequip = "mcl_armor_unequip_iron",
|
||||
},
|
||||
on_place = on_armor_use,
|
||||
on_secondary_use = on_armor_use,
|
||||
})
|
||||
|
||||
minetest.register_tool("mcl_armor:boots_diamond",{
|
||||
|
@ -258,6 +351,8 @@ minetest.register_tool("mcl_armor:boots_diamond",{
|
|||
_mcl_armor_equip = "mcl_armor_equip_diamond",
|
||||
_mcl_armor_unequip = "mcl_armor_unequip_diamond",
|
||||
},
|
||||
on_place = on_armor_use,
|
||||
on_secondary_use = on_armor_use,
|
||||
})
|
||||
|
||||
minetest.register_tool("mcl_armor:boots_chain", {
|
||||
|
@ -271,6 +366,8 @@ minetest.register_tool("mcl_armor:boots_chain", {
|
|||
_mcl_armor_equip = "mcl_armor_equip_chainmail",
|
||||
_mcl_armor_unequip = "mcl_armor_unequip_chainmail",
|
||||
},
|
||||
on_place = on_armor_use,
|
||||
on_secondary_use = on_armor_use,
|
||||
})
|
||||
|
||||
-- Register Craft Recipies
|
||||
|
|
Loading…
Reference in a new issue