@@ -1150,9 +1150,10 @@ void Server::handleCommand_Interact(NetworkPacket *pkt)
1150
1150
if (pointed_object->isGone ())
1151
1151
return ;
1152
1152
1153
- ItemStack punchitem = playersao->getWieldedItem ();
1153
+ ItemStack selected_item, hand_item;
1154
+ ItemStack tool_item = playersao->getWieldedItem (&selected_item, &hand_item);
1154
1155
ToolCapabilities toolcap =
1155
- punchitem .getToolCapabilities (m_itemdef);
1156
+ tool_item .getToolCapabilities (m_itemdef);
1156
1157
v3f dir = (pointed_object->getBasePosition () -
1157
1158
(playersao->getBasePosition () + playersao->getEyeOffset ())
1158
1159
).normalize ();
@@ -1291,11 +1292,12 @@ void Server::handleCommand_Interact(NetworkPacket *pkt)
1291
1292
3: place block or right-click object
1292
1293
*/
1293
1294
else if (action == INTERACT_PLACE) {
1294
- ItemStack item = playersao->getWieldedItem ();
1295
+ ItemStack selected_item;
1296
+ playersao->getWieldedItem (&selected_item, nullptr );
1295
1297
1296
1298
// Reset build time counter
1297
1299
if (pointed.type == POINTEDTHING_NODE &&
1298
- item .getDefinition (m_itemdef).type == ITEM_NODE)
1300
+ selected_item .getDefinition (m_itemdef).type == ITEM_NODE)
1299
1301
getClient (pkt->getPeerId ())->m_time_from_building = 0.0 ;
1300
1302
1301
1303
if (pointed.type == POINTEDTHING_OBJECT) {
@@ -1311,13 +1313,12 @@ void Server::handleCommand_Interact(NetworkPacket *pkt)
1311
1313
1312
1314
// Do stuff
1313
1315
pointed_object->rightClick (playersao);
1314
- }
1315
- else if (m_script->item_OnPlace (
1316
- item, playersao, pointed)) {
1316
+ } else if (m_script->item_OnPlace (
1317
+ selected_item, playersao, pointed)) {
1317
1318
// Placement was handled in lua
1318
1319
1319
1320
// Apply returned ItemStack
1320
- if (playersao->setWieldedItem (item )) {
1321
+ if (playersao->setWieldedItem (selected_item )) {
1321
1322
SendInventory (playersao, true );
1322
1323
}
1323
1324
}
@@ -1327,7 +1328,7 @@ void Server::handleCommand_Interact(NetworkPacket *pkt)
1327
1328
RemoteClient *client = getClient (pkt->getPeerId ());
1328
1329
v3s16 blockpos = getNodeBlockPos (floatToInt (pointed_pos_above, BS));
1329
1330
v3s16 blockpos2 = getNodeBlockPos (floatToInt (pointed_pos_under, BS));
1330
- if (!item .getDefinition (m_itemdef).node_placement_prediction .empty ()) {
1331
+ if (!selected_item .getDefinition (m_itemdef).node_placement_prediction .empty ()) {
1331
1332
client->SetBlockNotSent (blockpos);
1332
1333
if (blockpos2 != blockpos) {
1333
1334
client->SetBlockNotSent (blockpos2);
@@ -1345,15 +1346,16 @@ void Server::handleCommand_Interact(NetworkPacket *pkt)
1345
1346
4: use
1346
1347
*/
1347
1348
else if (action == INTERACT_USE) {
1348
- ItemStack item = playersao->getWieldedItem ();
1349
+ ItemStack selected_item;
1350
+ playersao->getWieldedItem (&selected_item, nullptr );
1349
1351
1350
- actionstream << player->getName () << " uses " << item .name
1352
+ actionstream << player->getName () << " uses " << selected_item .name
1351
1353
<< " , pointing at " << pointed.dump () << std::endl;
1352
1354
1353
1355
if (m_script->item_OnUse (
1354
- item , playersao, pointed)) {
1356
+ selected_item , playersao, pointed)) {
1355
1357
// Apply returned ItemStack
1356
- if (playersao->setWieldedItem (item )) {
1358
+ if (playersao->setWieldedItem (selected_item )) {
1357
1359
SendInventory (playersao, true );
1358
1360
}
1359
1361
}
@@ -1364,14 +1366,15 @@ void Server::handleCommand_Interact(NetworkPacket *pkt)
1364
1366
5: rightclick air
1365
1367
*/
1366
1368
else if (action == INTERACT_ACTIVATE) {
1367
- ItemStack item = playersao->getWieldedItem ();
1369
+ ItemStack selected_item;
1370
+ playersao->getWieldedItem (&selected_item, nullptr );
1368
1371
1369
1372
actionstream << player->getName () << " activates "
1370
- << item .name << std::endl;
1373
+ << selected_item .name << std::endl;
1371
1374
1372
1375
if (m_script->item_OnSecondaryUse (
1373
- item , playersao)) {
1374
- if ( playersao->setWieldedItem (item )) {
1376
+ selected_item , playersao)) {
1377
+ if ( playersao->setWieldedItem (selected_item )) {
1375
1378
SendInventory (playersao, true );
1376
1379
}
1377
1380
}
0 commit comments