47class ContainerManagerController :
public ::std::enable_shared_from_this<::ContainerManagerController> {
51 ::ll::TypedStorage<8, 16, ::std::weak_ptr<::ContainerManagerModel>> mContainerManagerModel;
52 ::ll::TypedStorage<8, 64, ::std::unordered_map<::std::string, ::std::shared_ptr<::ContainerController>>>
54 ::ll::TypedStorage<8, 24, ::std::vector<::ContainerSplitControl>> mContainerSplitItemStackItems;
55 ::ll::TypedStorage<8, 24, ::std::vector<::ContainerSimulationSplitStack>> mContainerSimulationSplitItemStacks;
56 ::ll::TypedStorage<4, 4, int> mSplitItemRemainder;
57 ::ll::TypedStorage<1, 1, bool> mContainerDirty;
58 ::ll::TypedStorage<1, 1, bool> mContainersClosed;
59 ::ll::TypedStorage<8, 8, ::std::unique_ptr<::ContainerScreenSimulation>> mSimulation;
60 ::ll::TypedStorage<8, 16, ::Bedrock::PubSub::Subscription> mDynamicContainerNotifier;
67 ContainerManagerController();
74 virtual ~ContainerManagerController() =
default;
76 virtual ~ContainerManagerController();
79 virtual void postInit(::std::weak_ptr<::ContainerManagerController> self);
81 virtual void registerContainerCallbacks();
87 virtual ::Bedrock::Safety::RedactableString
const& getPreviewItemName()
const;
89 virtual ::Bedrock::Safety::RedactableString
const& getItemName()
const;
91 virtual void updatePreviewItem();
93 virtual ::ItemStackBase
const& getTakeableItemStackBase(
::SlotData const& slot)
const;
105 virtual void handlePlaceAmount(
::SlotData const& srcSlot,
int amount,
::SlotData const& dstSlot);
107 virtual int handleAutoPlace(
110 ::std::vector<::AutoPlaceItem>
const& autoPlaceOrder,
111 ::std::vector<::AutoPlaceResult>& destinations
114 virtual int handleAutoPlaceStack(
116 ::ItemTakeType takeType,
117 ::std::vector<::AutoPlaceItem>
const& autoPlaceOrder,
118 ::std::vector<::AutoPlaceResult>& destinations
123 virtual void handleSplitMultiple(
129 virtual bool handleCoalesce(
131 ::std::vector<::std::string>
const& coalesceOrder,
132 ::std::string
const& coalesceSrc
145 virtual void handleAddToStack(
::SlotData const& dstSlot,
::SlotData const& srcSlot, ::ItemTakeType type);
147 virtual void closeContainers();
149 virtual bool isOutputSlot(::std::string
const& collectionName)
const;
151 virtual void _updateItemStackRequest(
152 ::ContainerScreenRequestActionType,
157 virtual ::CreateContainerItemScope
175 MCAPI
explicit ContainerManagerController(::std::weak_ptr<::ContainerManagerModel> containerManagerModel);
177 MCAPI
void _addContainer(::std::shared_ptr<::ContainerController> uiContainer);
179 MCAPI
void _addOutputsAsDestinations(
181 ::std::vector<::AutoPlaceResult>& destinations
184 MCAPI
int _appendAutoPlaceOutputs(
188 ::std::vector<::AutoPlaceItem>
const& autoPlaceOrder,
192 MCAPI
void _autoPlaceOrDrop(
195 ::std::vector<::AutoPlaceItem>
const& autoPlaceOrder
198 MCAPI
int _buildAutoPlaceRequest(
201 ::std::vector<::AutoPlaceItem>
const& autoPlaceOrder,
205 MCAPI
int _bulkAutoPlaceOutput(
210 ::std::vector<::AutoPlaceItem>
const& autoPlaceOrder,
211 ::std::vector<::AutoPlaceResult>& destinations
214 MCAPI ::AutoPlaceRequest
const _canAutoPlace(
217 ::std::vector<::AutoPlaceItem>
const& autoPlaceOrder
222 MCAPI
void _clearCreativeHotbar();
226 MCAPI ::ContainerValidationSlotData _getContainerValidationSlotData(
::SlotData const& slotData)
const;
228 MCAPI ::ItemStack
const& _getItem(
::SlotData const& slot,
bool canBeEmpty)
const;
230 MCAPI ::ItemStack
const& _getItem0(::ContainerEnumName collectionEnumName)
const;
232 MCAPI ::std::tuple<::ItemStack const&, ::std::shared_ptr<::ContainerController>>
233 _getItemAndContainerController(
::SlotData const& slot,
bool canBeEmpty)
const;
235 MCAPI ::std::unordered_map<::FullContainerName, ::std::shared_ptr<::Container>> _getPredictiveContainers();
237 MCAPI ::ContainerScreenContext _getScreenContext()
const;
243 MCAPI
void _handleSplitMultiple(
249 MCAPI
bool _isContainerSimulationEnabled()
const;
251 MCAPI
void _onItemTransferring(
261 MCAPI
void _playCraftingSound(
262 ::std::weak_ptr<::ContainerManagerModel>
const& containerManagerModel,
263 ::SharedTypes::Legacy::LevelSoundEvent soundEvent
266 MCAPI
void _registerSetThisDirtyCallback(::std::shared_ptr<::ContainerModel> containerModel);
268 MCAPI ::ContainerCategory
273 MCAPI
void _shiftLeftStorageItemContents(
274 ::std::string
const& collectionName,
276 ::std::vector<::ItemStack>
const& items
279 MCAPI
bool _transfer(
280 ::ItemTransferType transferType,
285 bool allowVisualOnlySameItemSwap
288 MCAPI
bool _transferAll(::ItemTransferType transferType,
::SlotData const& dstSlot,
::SlotData const& srcSlot);
301 MCAPI ::std::string getBlockName(
::BlockPos const& blockPos)
const;
303 MCAPI ::std::shared_ptr<::ContainerController> getContainerController(::std::string
const& containerName)
const;
305 MCAPI ::std::weak_ptr<::ContainerModel> getContainerModel(::std::string
const& containerName)
const;
307 MCAPI
int getContainerSize(::std::string
const& collectionName)
const;
309 MCAPI
void getCurrentContainerStateList(::std::vector<::ItemStateData>& inventoryState);
311 MCAPI ::std::shared_ptr<::ContainerModel> getDynamicContainerModel(
::FullContainerName const& name);
313 MCAPI ::std::string getEntityName(
::ActorUniqueID const& entityUniqueID)
const;
315 MCAPI ::std::string getExpandoGroupName(::std::string
const& collectionName,
int collectionIndex)
const;
317 MCAPI ::ContainerExpandStatus getExpandoStatus(::std::string
const& containerName,
int collectionIndex)
const;
319 MCAPI ::ItemStack
const& getItemStack(::std::string
const& collectionName,
int collectionIndex)
const;
321 MCAPI
bool handleMoveItemFromSlotIntoStorageItem(
324 ::std::optional<uchar> requestedAmount
327 MCAPI
bool handleMoveSelectedItemFromStorageItem(
333 MCAPI
bool handleMoveSelectedItemFromStorageItemToStorageItem(
339 MCAPI
bool handleMoveTopItemFromStorageItem(
::ItemStack const& srcStorageItem,
::SlotData const& dstSlot);
341 MCAPI
bool hasContainerController(::std::string
const& containerName)
const;
343 MCAPI
bool isExpandoItem(::std::string
const& collectionName,
int collectionIndex);
345 MCAPI
bool isItemFiltered(::std::vector<::std::string> containerNames,
::ItemStackBase const& item)
const;
347 MCAPI
bool isValid(
float pickRange);
349 MCAPI
bool playerHasRoomForItem(
::ItemInstance const& item)
const;
351 MCAPI
void resetSplitStack();
353 MCAPI
void sortStorageContainer(::std::string
const& storageName);
360 MCAPI static ::std::string_view
const& TRANSFER_NO_DESTINATION();
362 MCAPI static ::std::string_view
const& TRANSFER_NO_ORIGIN();
369 MCAPI
void* $ctor(::std::weak_ptr<::ContainerManagerModel> containerManagerModel);
383 MCFOLD
void $postInit(::std::weak_ptr<::ContainerManagerController> self);
385 MCAPI
void $registerContainerCallbacks();
391 MCFOLD ::Bedrock::Safety::RedactableString
const& $getPreviewItemName()
const;
393 MCFOLD ::Bedrock::Safety::RedactableString
const& $getItemName()
const;
395 MCFOLD
void $updatePreviewItem();
397 MCAPI ::ItemStackBase
const& $getTakeableItemStackBase(
::SlotData const& slot)
const;
409 MCAPI
void $handlePlaceAmount(
::SlotData const& srcSlot,
int amount,
::SlotData const& dstSlot);
411 MCAPI
int $handleAutoPlace(
414 ::std::vector<::AutoPlaceItem>
const& autoPlaceOrder,
415 ::std::vector<::AutoPlaceResult>& destinations
418 MCAPI
int $handleAutoPlaceStack(
420 ::ItemTakeType takeType,
421 ::std::vector<::AutoPlaceItem>
const& autoPlaceOrder,
422 ::std::vector<::AutoPlaceResult>& destinations
427 MCAPI
void $handleSplitMultiple(
433 MCAPI
bool $handleCoalesce(
435 ::std::vector<::std::string>
const& coalesceOrder,
436 ::std::string
const& coalesceSrc
449 MCAPI
void $handleAddToStack(
::SlotData const& dstSlot,
::SlotData const& srcSlot, ::ItemTakeType type);
451 MCAPI
void $closeContainers();
453 MCFOLD
bool $isOutputSlot(::std::string
const& collectionName)
const;
455 MCFOLD
void $_updateItemStackRequest(
456 ::ContainerScreenRequestActionType,
461 MCAPI ::CreateContainerItemScope