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
123 MCAPI int getValidIngredientItemCount(::ItemDescriptor const& descriptor) const;
124#endif
125
126 MCAPI void networkUpdateItem(int modelSlot, ::ItemStack const& oldItem, ::ItemStack const& newItem);
127
128 MCAPI void
129 registerOnContainerChangedCallback(::std::function<void(int, ::ItemStack const&, ::ItemStack const&)> callback);
130
131 MCAPI void
132 registerPlayerNotificationCallback(::std::function<void(int, ::ItemStack const&, ::ItemStack const&)> callback);
133
134#ifdef LL_PLAT_C
135 MCAPI void registerTrackedOnContainerChangedCallback(
136 ::std::function<void(int, ::ItemStack const&, ::ItemStack const&)> callback,
137 ::SharedTypes::Legacy::ContainerType containerType
138 );
139#endif
140
141 MCAPI void setClientUIContainer(::SparseContainerClient* clientUIContainer);
142 // NOLINTEND
143
144public:
145 // constructor thunks
146 // NOLINTBEGIN
147 MCAPI void* $ctor(
148 ::FullContainerName const& fullContainerName,
149 int containerSize,
150 ::ContainerCategory containerCategory,
151 bool isClientSide
152 );
153 // NOLINTEND
154
155public:
156 // destructor thunk
157 // NOLINTBEGIN
158 MCAPI void $dtor();
159 // NOLINTEND
160
161public:
162 // virtual function thunks
163 // NOLINTBEGIN
164 MCFOLD void $postInit();
165
166 MCAPI void $releaseResources();
167
168 MCAPI void $containerContentChanged(int slot);
169
170 MCAPI int $getContainerSize() const;
171
172 MCAPI int $getFilteredContainerSize() const;
173
174 MCFOLD void $tick(int selectedSlot);
175
176 MCAPI ::ContainerWeakRef $getContainerWeakRef() const;
177
178 MCAPI ::ItemStack const& $getItemStack(int modelSlot) const;
179
180 MCFOLD ::std::vector<::ItemStack> const& $getItems() const;
181
182#ifdef LL_PLAT_S
183 MCAPI ::ItemInstance const& $getItemInstance(int modelSlot) const;
184#else // LL_PLAT_C
185 MCFOLD ::ItemInstance const& $getItemInstance(int modelSlot) const;
186#endif
187
188 MCAPI ::ItemStackBase const& $getItemStackBase(int modelSlot) const;
189
190 MCFOLD bool $isItemInstanceBased() const;
191
192 MCAPI void $setItem(int modelSlot, ::ItemStack const& item);
193
194 MCFOLD bool $isValid();
195
196 MCFOLD bool $isItemFiltered(::ItemStackBase const& item) const;
197
198 MCFOLD bool $isExpanableItemFiltered(int index) const;
199
200 MCFOLD ::ContainerExpandStatus $getItemExpandStatus(int itemId) const;
201
202 MCFOLD ::std::string const& $getItemGroupName(int itemId) const;
203
204 MCFOLD void $switchItemExpando(int itemId);
205
206 MCFOLD bool $isSlotDisabled(int slot) const;
207
208 MCFOLD void $refreshContainer(bool fullRefresh);
209
210 MCFOLD ::Container* $_getContainer() const;
211
212 MCFOLD int $_getContainerOffset() const;
213
214 MCAPI void $_init();
215
216 MCAPI void $_onItemChanged(int modelSlot, ::ItemStack const& oldItem, ::ItemStack const& newItem);
217
218
219 // NOLINTEND
220};
Definition ContainerContentChangeListener.h:5
Definition ContainerWeakRef.h:19
Definition Container.h:33
Definition ItemDescriptor.h:26
Definition ItemInstance.h:15
Definition ItemStackBase.h:44
Definition ItemStack.h:24
Definition SparseContainerClient.h:16
Definition FullContainerName.h:8
Definition SlotData.h:5