mirror of
https://github.com/luanti-org/luanti.git
synced 2025-10-23 12:45:43 +02:00
Entirely new version of pull request #3962
Changes to be committed: modified: builtin/game/register.lua modified: src/content_nodemeta.cpp modified: src/content_nodemeta.h modified: src/game.cpp modified: src/inventory.cpp modified: src/inventory.h modified: src/inventorymanager.cpp modified: src/inventorymanager.h modified: src/mapblock.cpp modified: src/network/clientpackethandler.cpp modified: src/nodemetadata.cpp modified: src/nodemetadata.h modified: src/player.cpp modified: src/player.h modified: src/rollback_interface.cpp modified: src/script/common/c_content.cpp modified: src/script/cpp_api/s_inventory.cpp modified: src/script/cpp_api/s_inventory.h modified: src/script/cpp_api/s_nodemeta.cpp modified: src/script/cpp_api/s_nodemeta.h modified: src/script/cpp_api/s_player.cpp modified: src/script/cpp_api/s_player.h modified: src/script/lua_api/l_inventory.cpp modified: src/script/lua_api/l_nodemeta.cpp modified: src/server.cpp modified: src/serverobject.cpp modified: src/unittest/test_inventory.cpp
This commit is contained in:
@@ -23,6 +23,7 @@ with this program; if not, write to the Free Software Foundation, Inc.,
|
||||
#include "util/string.h"
|
||||
#include "util/numeric.h"
|
||||
#include "map.h"
|
||||
#include "mapblock.h" //For getNodeBlockPos
|
||||
#include "gamedef.h"
|
||||
#include "nodedef.h"
|
||||
#include "nodemetadata.h"
|
||||
@@ -155,7 +156,9 @@ bool RollbackAction::applyRevert(Map *map, InventoryManager *imgr, IGameDef *gam
|
||||
} else {
|
||||
NodeMetadata *meta = map->getNodeMetadata(p);
|
||||
if (!meta) {
|
||||
meta = new NodeMetadata(gamedef->idef());
|
||||
v3s16 blockpos = getNodeBlockPos(p);
|
||||
v3s16 p_rel = p - blockpos*MAP_BLOCKSIZE;
|
||||
meta = new NodeMetadata(gamedef->idef(),p_rel);
|
||||
if (!map->setNodeMetadata(p, meta)) {
|
||||
delete meta;
|
||||
infostream << "RollbackAction::applyRevert(): "
|
||||
@@ -217,9 +220,9 @@ bool RollbackAction::applyRevert(Map *map, InventoryManager *imgr, IGameDef *gam
|
||||
// Silently ignore different current item
|
||||
if (list->getItem(inventory_index).name != real_name)
|
||||
return false;
|
||||
list->takeItem(inventory_index, inventory_stack.count);
|
||||
list->takeItem(NULL, inventory_index, inventory_stack.count); // No idea how to get GameScripting from this point. Therefore it is void here.
|
||||
} else {
|
||||
list->addItem(inventory_index, inventory_stack);
|
||||
list->addItem(NULL, inventory_index, inventory_stack);
|
||||
}
|
||||
// Inventory was modified; send to clients
|
||||
imgr->setInventoryModified(loc);
|
||||
|
Reference in New Issue
Block a user