1
0
Fork 0
mirror of https://github.com/luanti-org/luanti.git synced 2025-07-22 17:18:39 +00:00

Fix inventory swapping not calling all callbacks (#9923)

"Predicts" whether something will be swapped for allow callbacks, then calls callbacks a second time with swapped properties.

Co-authored-by: SmallJoker <SmallJoker@users.noreply.github.com>
This commit is contained in:
Lars Müller 2020-09-04 20:49:07 +02:00 committed by GitHub
parent 4ba5046308
commit 050964bed6
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
4 changed files with 209 additions and 138 deletions

View file

@ -183,6 +183,18 @@ struct IMoveAction : public InventoryAction, public MoveAction
void apply(InventoryManager *mgr, ServerActiveObject *player, IGameDef *gamedef);
void clientApply(InventoryManager *mgr, IGameDef *gamedef);
void swapDirections();
void onPutAndOnTake(const ItemStack &src_item, ServerActiveObject *player) const;
void onMove(int count, ServerActiveObject *player) const;
int allowPut(const ItemStack &dst_item, ServerActiveObject *player) const;
int allowTake(const ItemStack &src_item, ServerActiveObject *player) const;
int allowMove(int try_take_count, ServerActiveObject *player) const;
};
struct IDropAction : public InventoryAction, public MoveAction