summaryrefslogtreecommitdiff
path: root/src/game.cpp
diff options
context:
space:
mode:
authorTeTpaAka <TeTpaAka@users.noreply.github.com>2015-06-25 13:06:49 +0200
committerparamat <mat.gregory@virginmedia.com>2016-11-26 03:49:30 +0000
commit785a9a6c1af424b0a46f334de7176c9e67341cfb (patch)
treef0b33e1c47e65800beacae8d6c905c8a02307674 /src/game.cpp
parente4ee6548afd01040046ee3780d0fbb121d141251 (diff)
downloadminetest-785a9a6c1af424b0a46f334de7176c9e67341cfb.tar.gz
minetest-785a9a6c1af424b0a46f334de7176c9e67341cfb.tar.bz2
minetest-785a9a6c1af424b0a46f334de7176c9e67341cfb.zip
Wieldhand: Allow overriding the hand
Diffstat (limited to 'src/game.cpp')
-rw-r--r--src/game.cpp17
1 files changed, 17 insertions, 0 deletions
diff --git a/src/game.cpp b/src/game.cpp
index 671682348..e6d38d0a0 100644
--- a/src/game.cpp
+++ b/src/game.cpp
@@ -3684,6 +3684,12 @@ void Game::updateCamera(VolatileRunFlags *flags, u32 busy_time,
if (mlist && client->getPlayerItem() < mlist->getSize())
playeritem = mlist->getItem(client->getPlayerItem());
}
+ if (playeritem.getDefinition(itemdef_manager).name.empty()) { // override the hand
+ InventoryList *hlist = local_inventory->getList("hand");
+ if (hlist)
+ playeritem = hlist->getItem(0);
+ }
+
ToolCapabilities playeritem_toolcap =
playeritem.getToolCapabilities(itemdef_manager);
@@ -3768,6 +3774,11 @@ void Game::processPlayerInteraction(GameRunData *runData,
playeritem = mlist->getItem(client->getPlayerItem());
}
+ if (playeritem.getDefinition(itemdef_manager).name.empty()) { // override the hand
+ InventoryList *hlist = local_inventory->getList("hand");
+ if (hlist)
+ playeritem = hlist->getItem(0);
+ }
const ItemDefinition &playeritem_def =
playeritem.getDefinition(itemdef_manager);
@@ -4321,8 +4332,14 @@ void Game::updateFrame(ProfilerGraph *graph, RunStats *stats,
if (mlist && (client->getPlayerItem() < mlist->getSize())) {
ItemStack item = mlist->getItem(client->getPlayerItem());
+ if (item.getDefinition(itemdef_manager).name.empty()) { // override the hand
+ InventoryList *hlist = local_inventory->getList("hand");
+ if (hlist)
+ item = hlist->getItem(0);
+ }
camera->wield(item);
}
+
runData->update_wielded_item_trigger = false;
}