LeviLamina
Loading...
Searching...
No Matches
ContainerModel.h
1#pragma once
2
3#include "mc/_HeaderOutputPredefine.h"
4
5// auto generated inclusion list
6#include "mc/deps/shared_types/legacy/ContainerType.h"
7#include "mc/world/ContainerContentChangeListener.h"
8#include "mc/world/containers/FullContainerName.h"
9#include "mc/world/containers/models/ContainerCategory.h"
10#include "mc/world/containers/models/ContainerExpandStatus.h"
11
12// auto generated forward declare list
13// clang-format off
14class Container;
16class ItemDescriptor;
17class ItemInstance;
18class ItemStack;
19class ItemStackBase;
21struct SlotData;
22// clang-format on
23
24class ContainerModel : public ::ContainerContentChangeListener {
25public:
26 // member variables
27 // NOLINTBEGIN
28 ::ll::TypedStorage<1, 1, bool const> mIsClientSide;
29 ::ll::TypedStorage<8, 32, ::std::string> mContainerStringName;
30 ::ll::TypedStorage<4, 12, ::FullContainerName const> mFullContainerName;
31 ::ll::TypedStorage<
32 8,
33 64,
34 ::std::unordered_map<
35 ::SharedTypes::Legacy::ContainerType,
36 ::std::function<void(int, ::ItemStack const&, ::ItemStack const&)>>>
37 mTrackedOnContainerChangedCallbacks;
38 ::ll::TypedStorage<8, 24, ::std::vector<::std::function<void(int, ::ItemStack const&, ::ItemStack const&)>>>
39 mOnContainerChangedCallbacks;
40 ::ll::TypedStorage<8, 64, ::std::function<void(int, ::ItemStack const&, ::ItemStack const&)>>
41 mPlayerNotificationCallbacks;
42 ::ll::TypedStorage<4, 4, ::ContainerCategory> mContainerCategory;
43 ::ll::TypedStorage<8, 24, ::std::vector<::SlotData>> mItemSource;
44 ::ll::TypedStorage<8, 8, ::SparseContainerClient*> mClientUIContainer;
45 ::ll::TypedStorage<8, 24, ::std::vector<::ItemStack>> mItems;
46 // NOLINTEND
47
48public:
49 // prevent constructor by default
50 ContainerModel();
51
52public:
53 // virtual functions
54 // NOLINTBEGIN
55 virtual ~ContainerModel() /*override*/;
56
57 virtual void postInit();
58
59 virtual void releaseResources();
60
61 virtual void containerContentChanged(int slot) /*override*/;
62
63 virtual int getContainerSize() const;
64
65 virtual int getFilteredContainerSize() const;
66
67 virtual void tick(int selectedSlot);
68
69 virtual ::ContainerWeakRef getContainerWeakRef() const;
70
71 virtual ::ItemStack const& getItemStack(int modelSlot) const;
72
73 virtual ::std::vector<::ItemStack> const& getItems() const;
74
75 virtual ::ItemInstance const& getItemInstance(int modelSlot) const;
76
77 virtual ::ItemStackBase const& getItemStackBase(int modelSlot) const;
78
79 virtual bool isItemInstanceBased() const;
80
81 virtual void setItem(int modelSlot, ::ItemStack const& item);
82
83 virtual bool isValid();
84
85 virtual bool isItemFiltered(::ItemStackBase const& item) const;
86
87 virtual bool isExpanableItemFiltered(int index) const;
88
89 virtual ::ContainerExpandStatus getItemExpandStatus(int itemId) const;
90
91 virtual ::std::string const& getItemGroupName(int itemId) const;
92
93 virtual void switchItemExpando(int itemId);
94
95 virtual bool isSlotDisabled(int slot) const;
96
97 virtual void refreshContainer(bool fullRefresh);
98
99 virtual ::Container* _getContainer() const;
100
101 virtual int _getContainerOffset() const;
102
103 virtual void _init();
104
105 virtual void _onItemChanged(int modelSlot, ::ItemStack const& oldItem, ::ItemStack const& newItem);
106 // NOLINTEND
107
108public:
109 // member functions
110 // NOLINTBEGIN
111 MCAPI ContainerModel(
112 ::FullContainerName const& fullContainerName,
113 int containerSize,
114 ::ContainerCategory containerCategory,
115 bool isClientSide
116 );
117
118 MCAPI void _onClientUIItemNetworkChanged(int containerSlot, ::ItemStack const& oldItem, ::ItemStack const& newItem);
119
120#ifdef LL_PLAT_C
121 MCAPI int getItemCount(::ItemDescriptor const& descriptor) const;
122#endif
123
124 MCAPI void networkUpdateItem(int modelSlot, ::ItemStack const& oldItem, ::ItemStack const& newItem);
125
126 MCAPI void
127 registerOnContainerChangedCallback(::std::function<void(int, ::ItemStack const&, ::ItemStack const&)> callback);
128
129 MCAPI void
130 registerPlayerNotificationCallback(::std::function<void(int, ::ItemStack const&, ::ItemStack const&)> callback);
131
132 MCAPI void setClientUIContainer(::SparseContainerClient* clientUIContainer);
133 // NOLINTEND
134
135public:
136 // constructor thunks
137 // NOLINTBEGIN
138 MCAPI void* $ctor(
139 ::FullContainerName const& fullContainerName,
140 int containerSize,
141 ::ContainerCategory containerCategory,
142 bool isClientSide
143 );
144 // NOLINTEND
145
146public:
147 // destructor thunk
148 // NOLINTBEGIN
149 MCAPI void $dtor();
150 // NOLINTEND
151
152public:
153 // virtual function thunks
154 // NOLINTBEGIN
155 MCFOLD void $postInit();
156
157 MCAPI void $releaseResources();
158
159 MCAPI void $containerContentChanged(int slot);
160
161 MCAPI int $getContainerSize() const;
162
163 MCAPI int $getFilteredContainerSize() const;
164
165 MCFOLD void $tick(int selectedSlot);
166
167 MCAPI ::ContainerWeakRef $getContainerWeakRef() const;
168
169 MCAPI ::ItemStack const& $getItemStack(int modelSlot) const;
170
171 MCFOLD ::std::vector<::ItemStack> const& $getItems() const;
172
173#ifdef LL_PLAT_S
174 MCAPI ::ItemInstance const& $getItemInstance(int modelSlot) const;
175#else // LL_PLAT_C
176 MCFOLD ::ItemInstance const& $getItemInstance(int modelSlot) const;
177#endif
178
179 MCAPI ::ItemStackBase const& $getItemStackBase(int modelSlot) const;
180
181 MCFOLD bool $isItemInstanceBased() const;
182
183 MCAPI void $setItem(int modelSlot, ::ItemStack const& item);
184
185 MCFOLD bool $isValid();
186
187 MCFOLD bool $isItemFiltered(::ItemStackBase const& item) const;
188
189 MCFOLD bool $isExpanableItemFiltered(int index) const;
190
191 MCFOLD ::ContainerExpandStatus $getItemExpandStatus(int itemId) const;
192
193 MCFOLD ::std::string const& $getItemGroupName(int itemId) const;
194
195 MCFOLD void $switchItemExpando(int itemId);
196
197 MCFOLD bool $isSlotDisabled(int slot) const;
198
199 MCFOLD void $refreshContainer(bool fullRefresh);
200
201 MCFOLD ::Container* $_getContainer() const;
202
203 MCFOLD int $_getContainerOffset() const;
204
205 MCAPI void $_init();
206
207 MCAPI void $_onItemChanged(int modelSlot, ::ItemStack const& oldItem, ::ItemStack const& newItem);
208
209
210 // NOLINTEND
211};
Definition ContainerContentChangeListener.h:5
Definition ContainerWeakRef.h:17
Definition Container.h:35
Definition ItemDescriptor.h:25
Definition ItemInstance.h:15
Definition ItemStackBase.h:44
Definition ItemStack.h:26
Definition SparseContainerClient.h:20
Definition FullContainerName.h:8
Definition SlotData.h:5