forked from Mirrorlandia_minetest/minetest
Call on_secondary_use when object is right-clicked
This commit is contained in:
parent
3b0df9760b
commit
4d668f32a6
@ -6432,9 +6432,9 @@ Used by `minetest.register_node`, `minetest.register_craftitem`, and
|
|||||||
-- default: minetest.item_place
|
-- default: minetest.item_place
|
||||||
|
|
||||||
on_secondary_use = function(itemstack, user, pointed_thing),
|
on_secondary_use = function(itemstack, user, pointed_thing),
|
||||||
-- Same as on_place but called when pointing at nothing.
|
-- Same as on_place but called when not pointing at a node.
|
||||||
-- The user may be any ObjectRef or nil.
|
-- The user may be any ObjectRef or nil.
|
||||||
-- pointed_thing: always { type = "nothing" }
|
-- default: nil
|
||||||
|
|
||||||
on_drop = function(itemstack, dropper, pos),
|
on_drop = function(itemstack, dropper, pos),
|
||||||
-- Shall drop item and return the leftover itemstack.
|
-- Shall drop item and return the leftover itemstack.
|
||||||
|
@ -1316,6 +1316,13 @@ void Server::handleCommand_Interact(NetworkPacket *pkt)
|
|||||||
<< pointed_object->getDescription() << std::endl;
|
<< pointed_object->getDescription() << std::endl;
|
||||||
|
|
||||||
// Do stuff
|
// Do stuff
|
||||||
|
if (m_script->item_OnSecondaryUse(
|
||||||
|
selected_item, playersao, pointed)) {
|
||||||
|
if (playersao->setWieldedItem(selected_item)) {
|
||||||
|
SendInventory(playersao, true);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
pointed_object->rightClick(playersao);
|
pointed_object->rightClick(playersao);
|
||||||
} else if (m_script->item_OnPlace(
|
} else if (m_script->item_OnPlace(
|
||||||
selected_item, playersao, pointed)) {
|
selected_item, playersao, pointed)) {
|
||||||
@ -1376,8 +1383,10 @@ void Server::handleCommand_Interact(NetworkPacket *pkt)
|
|||||||
actionstream << player->getName() << " activates "
|
actionstream << player->getName() << " activates "
|
||||||
<< selected_item.name << std::endl;
|
<< selected_item.name << std::endl;
|
||||||
|
|
||||||
|
pointed.type = POINTEDTHING_NOTHING; // can only ever be NOTHING
|
||||||
|
|
||||||
if (m_script->item_OnSecondaryUse(
|
if (m_script->item_OnSecondaryUse(
|
||||||
selected_item, playersao)) {
|
selected_item, playersao, pointed)) {
|
||||||
if (playersao->setWieldedItem(selected_item)) {
|
if (playersao->setWieldedItem(selected_item)) {
|
||||||
SendInventory(playersao, true);
|
SendInventory(playersao, true);
|
||||||
}
|
}
|
||||||
|
@ -115,7 +115,8 @@ bool ScriptApiItem::item_OnUse(ItemStack &item,
|
|||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
bool ScriptApiItem::item_OnSecondaryUse(ItemStack &item, ServerActiveObject *user)
|
bool ScriptApiItem::item_OnSecondaryUse(ItemStack &item,
|
||||||
|
ServerActiveObject *user, const PointedThing &pointed)
|
||||||
{
|
{
|
||||||
SCRIPTAPI_PRECHECKHEADER
|
SCRIPTAPI_PRECHECKHEADER
|
||||||
|
|
||||||
@ -126,8 +127,6 @@ bool ScriptApiItem::item_OnSecondaryUse(ItemStack &item, ServerActiveObject *use
|
|||||||
|
|
||||||
LuaItemStack::create(L, item);
|
LuaItemStack::create(L, item);
|
||||||
objectrefGetOrCreate(L, user);
|
objectrefGetOrCreate(L, user);
|
||||||
PointedThing pointed;
|
|
||||||
pointed.type = POINTEDTHING_NOTHING;
|
|
||||||
pushPointedThing(pointed);
|
pushPointedThing(pointed);
|
||||||
PCALL_RES(lua_pcall(L, 3, 1, error_handler));
|
PCALL_RES(lua_pcall(L, 3, 1, error_handler));
|
||||||
if (!lua_isnil(L, -1)) {
|
if (!lua_isnil(L, -1)) {
|
||||||
|
@ -42,7 +42,7 @@ public:
|
|||||||
bool item_OnUse(ItemStack &item,
|
bool item_OnUse(ItemStack &item,
|
||||||
ServerActiveObject *user, const PointedThing &pointed);
|
ServerActiveObject *user, const PointedThing &pointed);
|
||||||
bool item_OnSecondaryUse(ItemStack &item,
|
bool item_OnSecondaryUse(ItemStack &item,
|
||||||
ServerActiveObject *user);
|
ServerActiveObject *user, const PointedThing &pointed);
|
||||||
bool item_OnCraft(ItemStack &item, ServerActiveObject *user,
|
bool item_OnCraft(ItemStack &item, ServerActiveObject *user,
|
||||||
const InventoryList *old_craft_grid, const InventoryLocation &craft_inv);
|
const InventoryList *old_craft_grid, const InventoryLocation &craft_inv);
|
||||||
bool item_CraftPredict(ItemStack &item, ServerActiveObject *user,
|
bool item_CraftPredict(ItemStack &item, ServerActiveObject *user,
|
||||||
|
Loading…
Reference in New Issue
Block a user