8#if PROTOCOL_VERSION > 451
17#if PROTOCOL_VERSION < 755
18 enum class TransactionState
28 std::shared_ptr<ProtocolCraft::ServerboundContainerClickPacket>
packet;
31#if PROTOCOL_VERSION < 755 || PROTOCOL_VERSION > 769
44 std::shared_ptr<Window>
GetWindow(
const short window_id)
const;
52#if PROTOCOL_VERSION < 755
53 TransactionState GetTransactionState(
const short window_id,
const int transaction_id)
const;
64#if PROTOCOL_VERSION > 451
75#if PROTOCOL_VERSION > 754
78#if PROTOCOL_VERSION > 755
79 void SetStateId(
const short window_id,
const int state_id);
86#if PROTOCOL_VERSION < 768
87 virtual void Handle(ProtocolCraft::ClientboundSetCarriedItemPacket& packet)
override;
91#if PROTOCOL_VERSION < 755
92 virtual void Handle(ProtocolCraft::ClientboundContainerAckPacket& packet)
override;
94#if PROTOCOL_VERSION > 451
98#if PROTOCOL_VERSION > 767
112#if PROTOCOL_VERSION < 755
115 std::map<short, std::map<short, InventoryTransaction > > pending_transactions;
117 std::map<short, std::map<short, TransactionState> > transaction_states;
119#if PROTOCOL_VERSION > 451
ProtocolCraft::Slot GetOffHand() const
void SetStateId(const short window_id, const int state_id)
void SetHotbarSelected(const short index)
void AddInventory(const short window_id, const InventoryType window_type)
std::map< short, std::shared_ptr< Window > > inventories
void SynchronizeContainerPlayerInventory(const short window_id)
void SetSlot(const short window_id, const short index, const ProtocolCraft::Slot &slot)
std::vector< ProtocolCraft::MerchantOffer > available_trades
virtual void Handle(ProtocolCraft::ClientboundContainerSetSlotPacket &packet) override
std::vector< ProtocolCraft::MerchantOffer > GetAvailableMerchantOffers() const
std::shared_mutex inventory_manager_mutex
InventoryTransaction PrepareTransaction(const std::shared_ptr< ProtocolCraft::ServerboundContainerClickPacket > &transaction)
"think" about the changes made by this transaction, filling in the necessary values in the packet
void ApplyTransaction(const InventoryTransaction &transaction)
Apply a given transaction to a container.
short GetIndexHotbarSelected() const
std::shared_ptr< Window > GetWindow(const short window_id) const
ProtocolCraft::Slot GetHotbarSelected() const
void SetCursor(const ProtocolCraft::Slot &c)
void ApplyTransactionImpl(const InventoryTransaction &transaction)
void EraseInventory(const short window_id)
short GetFirstOpenedWindowId() const
ProtocolCraft::Slot GetCursor() const
ProtocolCraft::Slot cursor
std::shared_ptr< Window > GetPlayerInventory() const
short index_hotbar_selected
void IncrementMerchantOfferUse(const int index)
std::shared_ptr< ProtocolCraft::ServerboundContainerClickPacket > packet
std::map< short, ProtocolCraft::Slot > changed_slots
ProtocolCraft::Slot carried_item