48class ContainerManagerController :
public ::std::enable_shared_from_this<::ContainerManagerController> {
52 ::ll::TypedStorage<8, 16, ::std::weak_ptr<::ContainerManagerModel>> mContainerManagerModel;
53 ::ll::TypedStorage<8, 64, ::std::unordered_map<::std::string, ::std::shared_ptr<::ContainerController>>>
55 ::ll::TypedStorage<8, 24, ::std::vector<::ContainerSplitControl>> mContainerSplitItemStackItems;
56 ::ll::TypedStorage<8, 24, ::std::vector<::ContainerSimulationSplitStack>> mContainerSimulationSplitItemStacks;
57 ::ll::TypedStorage<4, 4, int> mSplitItemRemainder;
58 ::ll::TypedStorage<1, 1, bool> mContainerDirty;
59 ::ll::TypedStorage<1, 1, bool> mContainersClosed;
60 ::ll::TypedStorage<8, 8, ::std::unique_ptr<::ContainerScreenSimulation>> mSimulation;
61 ::ll::TypedStorage<8, 16, ::Bedrock::PubSub::Subscription> mDynamicContainerNotifier;
68 ContainerManagerController();
75 virtual ~ContainerManagerController() =
default;
77 virtual ~ContainerManagerController();
81 virtual void postInit(::std::weak_ptr<::ContainerManagerController>);
83 virtual void postInit(::std::weak_ptr<::ContainerManagerController> self);
86 virtual void registerContainerCallbacks();
100 virtual ::Bedrock::Safety::RedactableString
const& getPreviewItemName()
const;
102 virtual ::Bedrock::Safety::RedactableString
const& getItemName()
const;
104 virtual void updatePreviewItem();
107 virtual ::ItemStackBase
const& getTakeableItemStackBase(
::SlotData const&)
const;
109 virtual ::ItemStackBase
const& getTakeableItemStackBase(
::SlotData const& slot)
const;
115 virtual void handleTakeAmount(
::SlotData const& dstSlot,
int amount,
::SlotData const& srcSlot);
145 virtual void handlePlaceAmount(
::SlotData const& srcSlot,
int amount,
::SlotData const& dstSlot);
150 handleAutoPlace(
::SlotData const&,
int, ::std::vector<::AutoPlaceItem>
const&, ::std::vector<::AutoPlaceResult>&);
152 virtual int handleAutoPlace(
155 ::std::vector<::AutoPlaceItem>
const& autoPlaceOrder,
156 ::std::vector<::AutoPlaceResult>& destinations
161 virtual int handleAutoPlaceStack(
164 ::std::vector<::AutoPlaceItem>
const&,
165 ::std::vector<::AutoPlaceResult>&
168 virtual int handleAutoPlaceStack(
170 ::ItemTakeType takeType,
171 ::std::vector<::AutoPlaceItem>
const& autoPlaceOrder,
172 ::std::vector<::AutoPlaceResult>& destinations
185 virtual void handleSplitMultiple(
193 virtual bool handleCoalesce(
::SlotData const&, ::std::vector<::std::string>
const&, ::std::string
const&);
195 virtual bool handleCoalesce(
197 ::std::vector<::std::string>
const& coalesceOrder,
198 ::std::string
const& coalesceSrc
235 virtual void handleAddToStack(
::SlotData const& dstSlot,
::SlotData const& srcSlot, ::ItemTakeType type);
238 virtual void closeContainers();
241 virtual bool isOutputSlot(::std::string
const&)
const;
243 virtual bool isOutputSlot(::std::string
const& collectionName)
const;
246 virtual void _updateItemStackRequest(
247 ::ContainerScreenRequestActionType,
255 virtual ::CreateContainerItemScope
295 MCAPI
explicit ContainerManagerController(::std::weak_ptr<::ContainerManagerModel> containerManagerModel);
297 MCAPI
void _addContainer(::std::shared_ptr<::ContainerController> uiContainer);
299 MCAPI
void _addOutputsAsDestinations(
301 ::std::vector<::AutoPlaceResult>& destinations
304 MCAPI
int _appendAutoPlaceOutputs(
308 ::std::vector<::AutoPlaceItem>
const& autoPlaceOrder,
312 MCAPI
void _autoPlaceOrDrop(
315 ::std::vector<::AutoPlaceItem>
const& autoPlaceOrder
318 MCAPI
int _buildAutoPlaceRequest(
321 ::std::vector<::AutoPlaceItem>
const& autoPlaceOrder,
325 MCAPI
void _buildContainerControllers();
327 MCAPI
int _bulkAutoPlaceOutput(
332 ::std::vector<::AutoPlaceItem>
const& autoPlaceOrder,
333 ::std::vector<::AutoPlaceResult>& destinations
336 MCAPI ::AutoPlaceRequest
const _canAutoPlace(
339 ::std::vector<::AutoPlaceItem>
const& autoPlaceOrder
344 MCAPI
void _clearCreativeHotbar();
348 MCAPI ::std::shared_ptr<::ContainerController> _getContainerController(
::SlotData const& slot)
const;
350 MCAPI ::ContainerValidationSlotData _getContainerValidationSlotData(
::SlotData const& slotData)
const;
352 MCAPI ::ItemStack
const& _getItem(
::SlotData const& slot,
bool)
const;
354 MCAPI ::ItemStack
const& _getItem0(::ContainerEnumName collectionEnumName)
const;
356 MCAPI ::std::tuple<::ItemStack const&, ::std::shared_ptr<::ContainerController>>
357 _getItemAndContainerController(
::SlotData const& slot,
bool)
const;
359 MCAPI ::std::unordered_map<::FullContainerName, ::std::shared_ptr<::Container>> _getPredictiveContainers();
361 MCAPI ::ContainerScreenContext _getScreenContext()
const;
367 MCAPI
void _handleSplitMultiple(
373 MCAPI
bool _isContainerSimulationEnabled()
const;
375 MCAPI
void _onItemTransferring(
385 MCAPI
void _playCraftingSound(
386 ::std::weak_ptr<::ContainerManagerModel>
const& containerManagerModel,
387 ::SharedTypes::Legacy::LevelSoundEvent soundEvent
390 MCAPI
void _registerSetThisDirtyCallback(::std::shared_ptr<::ContainerModel> containerModel);
392 MCAPI ::ContainerCategory
397 MCAPI
void _shiftLeftStorageItemContents(
398 ::std::string
const& collectionName,
400 ::std::vector<::ItemStack>
const& items
403 MCAPI
bool _transfer(
404 ::ItemTransferType transferType,
409 bool allowVisualOnlySameItemSwap
412 MCAPI
bool _transferAll(::ItemTransferType transferType,
::SlotData const& dstSlot,
::SlotData const& srcSlot);
425 MCAPI
bool blockHasCustomName(
::BlockPos const& blockPos)
const;
427 MCAPI
bool getAndResetContainerDirty();
429 MCAPI ::std::string getBlockName(
::BlockPos const& blockPos)
const;
431 MCAPI ::std::shared_ptr<::ContainerController> getContainerController(::ContainerEnumName containerEnumName)
const;
433 MCAPI ::std::shared_ptr<::ContainerController> getContainerController(::std::string
const& containerName)
const;
435 MCFOLD ::std::weak_ptr<::ContainerManagerModel> getContainerManagerModel();
437 MCAPI ::std::weak_ptr<::ContainerModel> getContainerModel(::std::string
const& containerName)
const;
439 MCAPI
int getContainerSize(::std::string
const& collectionName)
const;
441 MCAPI ::SharedTypes::Legacy::ContainerType getContainerType()
const;
443 MCAPI
void getCurrentContainerStateList(::std::vector<::ItemStateData>& inventoryState);
445 MCAPI ::std::shared_ptr<::ContainerModel> getDynamicContainerModel(
::FullContainerName const& name);
447 MCAPI ::std::string getEntityName(
::ActorUniqueID const& entityUniqueID)
const;
449 MCAPI ::std::string getExpandoGroupName(::std::string
const& collectionName,
int collectionIndex)
const;
451 MCAPI ::ContainerExpandStatus getExpandoStatus(::std::string
const& containerName,
int collectionIndex)
const;
453 MCFOLD ::ItemStack
const& getItemStack(
::SlotData const& slot)
const;
455 MCAPI ::ItemStack
const& getItemStack(::std::string
const& collectionName,
int collectionIndex)
const;
457 MCAPI
bool handleMoveItemFromSlotIntoStorageItem(
460 ::std::optional<uchar> requestedAmount
463 MCAPI
bool handleMoveSelectedItemFromStorageItem(
469 MCAPI
bool handleMoveSelectedItemFromStorageItemToStorageItem(
475 MCAPI
bool handleMoveTopItemFromStorageItem(
::ItemStack const& srcStorageItem,
::SlotData const& dstSlot);
477 MCAPI
bool hasContainerController(::std::string
const& containerName)
const;
479 MCAPI
bool isExpandoItem(::std::string
const& collectionName,
int collectionIndex);
481 MCAPI
bool isItemFiltered(::std::vector<::std::string> containerNames,
::ItemStackBase const& item)
const;
483 MCAPI
bool isValid(
float pickRange);
485 MCAPI
bool playerHasRoomForItem(
::ItemInstance const& item)
const;
487 MCAPI
void resetSplitStack();
489 MCAPI
void sortStorageContainer(::std::string
const& storageName);
496 MCAPI static ::std::string_view
const& TRANSFER_NO_DESTINATION();
498 MCAPI static ::std::string_view
const& TRANSFER_NO_ORIGIN();
505 MCAPI
void* $ctor(::std::weak_ptr<::ContainerManagerModel> containerManagerModel);
519 MCFOLD
void $postInit(::std::weak_ptr<::ContainerManagerController> self);
521 MCAPI
void $registerContainerCallbacks();
527 MCFOLD ::Bedrock::Safety::RedactableString
const& $getPreviewItemName()
const;
529 MCFOLD ::Bedrock::Safety::RedactableString
const& $getItemName()
const;
531 MCFOLD
void $updatePreviewItem();
533 MCFOLD ::ItemStackBase
const& $getTakeableItemStackBase(
::SlotData const& slot)
const;
545 MCAPI
void $handlePlaceAmount(
::SlotData const& srcSlot,
int amount,
::SlotData const& dstSlot);
547 MCAPI
int $handleAutoPlace(
550 ::std::vector<::AutoPlaceItem>
const& autoPlaceOrder,
551 ::std::vector<::AutoPlaceResult>& destinations
554 MCAPI
int $handleAutoPlaceStack(
556 ::ItemTakeType takeType,
557 ::std::vector<::AutoPlaceItem>
const& autoPlaceOrder,
558 ::std::vector<::AutoPlaceResult>& destinations
563 MCAPI
void $handleSplitMultiple(
569 MCAPI
bool $handleCoalesce(
571 ::std::vector<::std::string>
const& coalesceOrder,
572 ::std::string
const& coalesceSrc
585 MCAPI
void $handleAddToStack(
::SlotData const& dstSlot,
::SlotData const& srcSlot, ::ItemTakeType type);
587 MCAPI
void $closeContainers();
589 MCFOLD
bool $isOutputSlot(::std::string
const& collectionName)
const;
591 MCFOLD
void $_updateItemStackRequest(
592 ::ContainerScreenRequestActionType,
597 MCAPI ::CreateContainerItemScope