forked from Mirrorlandia_minetest/minetest
Fix Inventory::moveItemSomewhere()
This commit is contained in:
parent
f3acdd3914
commit
4582691104
@ -717,27 +717,13 @@ void InventoryList::moveItemSomewhere(u32 i, InventoryList *dest, u32 count)
|
|||||||
if (item1.empty())
|
if (item1.empty())
|
||||||
return;
|
return;
|
||||||
|
|
||||||
// Try to add the item to destination list
|
ItemStack leftover;
|
||||||
u32 dest_size = dest->getSize();
|
leftover = dest->addItem(item1);
|
||||||
// First try all the non-empty slots
|
|
||||||
for (u32 dest_i = 0; dest_i < dest_size; dest_i++) {
|
|
||||||
if (!m_items[dest_i].empty()) {
|
|
||||||
item1 = dest->addItem(dest_i, item1);
|
|
||||||
if (item1.empty()) return;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// Then try all the empty ones
|
if (!leftover.empty()) {
|
||||||
for (u32 dest_i = 0; dest_i < dest_size; dest_i++) {
|
// Add the remaining part back to the source item
|
||||||
if (m_items[dest_i].empty()) {
|
addItem(i, leftover);
|
||||||
item1 = dest->addItem(dest_i, item1);
|
|
||||||
if (item1.empty()) return;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// If we reach this, the item was not fully added
|
|
||||||
// Add the remaining part back to the source item
|
|
||||||
addItem(i, item1);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
u32 InventoryList::moveItem(u32 i, InventoryList *dest, u32 dest_i,
|
u32 InventoryList::moveItem(u32 i, InventoryList *dest, u32 dest_i,
|
||||||
|
Loading…
Reference in New Issue
Block a user