aboutsummaryrefslogtreecommitdiff
path: root/src/inventorymanager.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/inventorymanager.cpp')
-rw-r--r--src/inventorymanager.cpp13
1 files changed, 11 insertions, 2 deletions
diff --git a/src/inventorymanager.cpp b/src/inventorymanager.cpp
index fccfdea16..57b561477 100644
--- a/src/inventorymanager.cpp
+++ b/src/inventorymanager.cpp
@@ -348,6 +348,13 @@ void IMoveAction::apply(InventoryManager *mgr, ServerActiveObject *player, IGame
/* If no items will be moved, don't go further */
if (count == 0) {
+ // Undo client prediction. See 'clientApply'
+ if (from_inv.type == InventoryLocation::PLAYER)
+ list_from->setModified();
+
+ if (to_inv.type == InventoryLocation::PLAYER)
+ list_to->setModified();
+
infostream<<"IMoveAction::apply(): move was completely disallowed:"
<<" count="<<old_count
<<" from inv=\""<<from_inv.dump()<<"\""
@@ -658,8 +665,10 @@ void IDropAction::apply(InventoryManager *mgr, ServerActiveObject *player, IGame
if (actually_dropped_count == 0) {
infostream<<"Actually dropped no items"<<std::endl;
- // Revert client prediction
- mgr->setInventoryModified(from_inv);
+
+ // Revert client prediction. See 'clientApply'
+ if (from_inv.type == InventoryLocation::PLAYER)
+ list_from->setModified();
return;
}