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/ContainerEnumName.h"
9#include "mc/world/containers/FullContainerName.h"
10#include "mc/world/containers/models/ContainerCategory.h"
11#include "mc/world/containers/models/ContainerExpandStatus.h"
12#include "mc/world/inventory/network/TypedClientNetId.h"
13
14// auto generated forward declare list
15// clang-format off
16class Container;
19class ItemDescriptor;
20class ItemInstance;
21class ItemStack;
22class ItemStackBase;
25struct SlotData;
26// clang-format on
27
28class ContainerModel : public ::ContainerContentChangeListener {
29public:
30 // member variables
31 // NOLINTBEGIN
32 ::ll::TypedStorage<1, 1, bool const> mIsClientSide;
33 ::ll::TypedStorage<8, 32, ::std::string> mContainerStringName;
34 ::ll::TypedStorage<4, 12, ::FullContainerName const> mFullContainerName;
35 ::ll::TypedStorage<
36 8,
37 64,
38 ::std::unordered_map<
39 ::SharedTypes::Legacy::ContainerType,
40 ::std::function<void(int, ::ItemStack const&, ::ItemStack const&)>>>
41 mTrackedOnContainerChangedCallbacks;
42 ::ll::TypedStorage<8, 24, ::std::vector<::std::function<void(int, ::ItemStack const&, ::ItemStack const&)>>>
43 mOnContainerChangedCallbacks;
44 ::ll::TypedStorage<8, 64, ::std::function<void(int, ::ItemStack const&, ::ItemStack const&)>>
45 mPlayerNotificationCallbacks;
46 ::ll::TypedStorage<4, 4, ::ContainerCategory> mContainerCategory;
47 ::ll::TypedStorage<8, 24, ::std::vector<::SlotData>> mItemSource;
48 ::ll::TypedStorage<8, 8, ::SparseContainerClient*> mClientUIContainer;
49 ::ll::TypedStorage<8, 24, ::std::vector<::ItemStack>> mItems;
50 // NOLINTEND
51
52public:
53 // prevent constructor by default
54 ContainerModel();
55
56public:
57 // virtual functions
58 // NOLINTBEGIN
59 virtual ~ContainerModel() /*override*/;
60
61 virtual void postInit();
62
63 virtual void releaseResources();
64
65 virtual void containerContentChanged(int slot) /*override*/;
66
67 virtual int getContainerSize() const;
68
69 virtual int getFilteredContainerSize() const;
70
71 virtual void tick(int);
72
73 virtual ::ContainerWeakRef getContainerWeakRef() const;
74
75 virtual ::ItemStack const& getItemStack(int modelSlot) const;
76
77 virtual ::std::vector<::ItemStack> const& getItems() const;
78
79 virtual ::ItemInstance const& getItemInstance(int modelSlot) const;
80
81 virtual ::ItemStackBase const& getItemStackBase(int modelSlot) const;
82
83 virtual bool isItemInstanceBased() const;
84
85 virtual void setItem(int modelSlot, ::ItemStack const& item);
86
87 virtual bool isValid();
88
89 virtual bool isItemFiltered(::ItemStackBase const&) const;
90
91 virtual bool isExpanableItemFiltered(int index) const;
92
93 virtual ::ContainerExpandStatus getItemExpandStatus(int itemId) const;
94
95 virtual ::std::string const& getItemGroupName(int itemId) const;
96
97 virtual void switchItemExpando(int itemId);
98
99 virtual bool isSlotDisabled(int slot) const;
100
101 virtual void refreshContainer(bool fullRefresh);
102
103 virtual ::Container* _getContainer() const;
104
105 virtual int _getContainerOffset() const;
106
107 virtual void _init();
108
109 virtual void _onItemChanged(int modelSlot, ::ItemStack const& oldItem, ::ItemStack const& newItem);
110 // NOLINTEND
111
112public:
113 // member functions
114 // NOLINTBEGIN
115 MCAPI ContainerModel(
116 ::FullContainerName const& fullContainerName,
117 int containerSize,
118 ::ContainerCategory containerCategory,
119 bool isClientSide
120 );
121
122#ifdef LL_PLAT_C
123 MCAPI void _clearCreatedItem(int modelSlot);
124#endif
125
126 MCAPI void _onClientUIItemNetworkChanged(int containerSlot, ::ItemStack const& oldItem, ::ItemStack const& newItem);
127
128#ifdef LL_PLAT_C
129 MCAPI void _setCreatedItem(::ItemStackRequestId const& currentRequestId, int modelSlot, ::ItemStack const& newItem);
130
131 MCAPI bool _useLegacyTransactions() const;
132
133 MCFOLD ::SparseContainerClient const* getClientUIContainer() const;
134
135 MCFOLD ::ContainerCategory getContainerCategory() const;
136
137 MCFOLD ::ContainerEnumName getContainerEnumName() const;
138
139 MCAPI int getContainerSlot(int modelSlot) const;
140#endif
141
142 MCFOLD ::std::string const& getContainerStringName() const;
143
144 MCFOLD ::FullContainerName getFullContainerName() const;
145
146#ifdef LL_PLAT_C
147 MCAPI int getItemCount(::ItemDescriptor const& descriptor) const;
148
149 MCAPI ::SlotData const& getItemSource(int slot) const;
150#endif
151
152 MCAPI int getModelSlot(int containerSlot) const;
153
154#ifdef LL_PLAT_C
155 MCAPI int getValidIngredientItemCount(::ItemDescriptor const& descriptor) const;
156#endif
157
158 MCAPI void initContainerRuntimeId();
159
160#ifdef LL_PLAT_C
161 MCAPI bool isIntermediaryCategory() const;
162#endif
163
164 MCAPI void networkUpdateItem(int modelSlot, ::ItemStack const& oldItem, ::ItemStack const& newItem);
165
166 MCAPI void receiveContainerLifetimes(::DynamicContainerTracker const& tracker);
167
168 MCAPI void
169 registerOnContainerChangedCallback(::std::function<void(int, ::ItemStack const&, ::ItemStack const&)> callback);
170
171 MCAPI void
172 registerPlayerNotificationCallback(::std::function<void(int, ::ItemStack const&, ::ItemStack const&)> callback);
173
174#ifdef LL_PLAT_C
175 MCAPI void registerTrackedOnContainerChangedCallback(
176 ::std::function<void(int, ::ItemStack const&, ::ItemStack const&)> callback,
177 ::SharedTypes::Legacy::ContainerType containerType
178 );
179#endif
180
181 MCAPI void serverInitItemStackIds();
182
183 MCAPI void setClientUIContainer(::SparseContainerClient* clientUIContainer);
184
185#ifdef LL_PLAT_C
186 MCAPI void setItemSource(int slot, ::SlotData const& srcSlot);
187
188 MCAPI void unregisterTrackedOnContainerChangedCallback(::SharedTypes::Legacy::ContainerType containerType);
189#endif
190 // NOLINTEND
191
192public:
193 // constructor thunks
194 // NOLINTBEGIN
195 MCAPI void* $ctor(
196 ::FullContainerName const& fullContainerName,
197 int containerSize,
198 ::ContainerCategory containerCategory,
199 bool isClientSide
200 );
201 // NOLINTEND
202
203public:
204 // destructor thunk
205 // NOLINTBEGIN
206 MCFOLD void $dtor();
207 // NOLINTEND
208
209public:
210 // virtual function thunks
211 // NOLINTBEGIN
212 MCFOLD void $postInit();
213
214 MCAPI void $releaseResources();
215
216 MCAPI void $containerContentChanged(int slot);
217
218 MCAPI int $getContainerSize() const;
219
220 MCAPI int $getFilteredContainerSize() const;
221
222 MCFOLD void $tick(int);
223
224 MCAPI ::ContainerWeakRef $getContainerWeakRef() const;
225
226 MCAPI ::ItemStack const& $getItemStack(int modelSlot) const;
227
228 MCFOLD ::std::vector<::ItemStack> const& $getItems() const;
229
230 MCAPI ::ItemInstance const& $getItemInstance(int modelSlot) const;
231
232 MCAPI ::ItemStackBase const& $getItemStackBase(int modelSlot) const;
233
234 MCFOLD bool $isItemInstanceBased() const;
235
236 MCAPI void $setItem(int modelSlot, ::ItemStack const& item);
237
238 MCFOLD bool $isValid();
239
240 MCFOLD bool $isItemFiltered(::ItemStackBase const&) const;
241
242 MCFOLD bool $isExpanableItemFiltered(int index) const;
243
244 MCFOLD ::ContainerExpandStatus $getItemExpandStatus(int itemId) const;
245
246 MCFOLD ::std::string const& $getItemGroupName(int itemId) const;
247
248 MCFOLD void $switchItemExpando(int itemId);
249
250 MCFOLD bool $isSlotDisabled(int slot) const;
251
252 MCFOLD void $refreshContainer(bool fullRefresh);
253
254 MCFOLD ::Container* $_getContainer() const;
255
256 MCFOLD int $_getContainerOffset() const;
257
258 MCAPI void $_init();
259
260 MCAPI void $_onItemChanged(int modelSlot, ::ItemStack const& oldItem, ::ItemStack const& newItem);
261
262
263 // NOLINTEND
264
265public:
266 // vftables
267 // NOLINTBEGIN
268 MCAPI static void** $vftable();
269 // NOLINTEND
270};
Definition ContainerContentChangeListener.h:5
Definition ContainerWeakRef.h:20
Definition Container.h:34
Definition DynamicContainerTracker.h:21
Definition ItemDescriptor.h:25
Definition ItemInstance.h:15
Definition ItemStackBase.h:52
Definition ItemStack.h:35
Definition SparseContainerClient.h:24
Definition FullContainerName.h:8
Definition ItemStackRequestIdTag.h:5
Definition SlotData.h:10