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:
parent
4ba5046308
commit
050964bed6
4 changed files with 209 additions and 138 deletions
|
@ -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
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue