46class ContainerManagerController :
public ::std::enable_shared_from_this<::ContainerManagerController> {
50 ::ll::TypedStorage<8, 16, ::std::weak_ptr<::ContainerManagerModel>> mContainerManagerModel;
51 ::ll::TypedStorage<8, 64, ::std::unordered_map<::std::string, ::std::shared_ptr<::ContainerController>>>
53 ::ll::TypedStorage<8, 24, ::std::vector<::ContainerSplitControl>> mContainerSplitItemStackItems;
54 ::ll::TypedStorage<8, 24, ::std::vector<::ContainerSimulationSplitStack>> mContainerSimulationSplitItemStacks;
55 ::ll::TypedStorage<4, 4, int> mSplitItemRemainder;
56 ::ll::TypedStorage<1, 1, bool> mContainerDirty;
57 ::ll::TypedStorage<1, 1, bool> mContainersClosed;
58 ::ll::TypedStorage<8, 8, ::std::unique_ptr<::ContainerScreenSimulation>> mSimulation;
59 ::ll::TypedStorage<8, 16, ::Bedrock::PubSub::Subscription> mDynamicContainerNotifier;
66 ContainerManagerController();
73 virtual ~ContainerManagerController() =
default;
75 virtual ~ContainerManagerController();
78 virtual void postInit(::std::weak_ptr<::ContainerManagerController> self);
80 virtual void registerContainerCallbacks();
86 virtual ::Bedrock::Safety::RedactableString
const& getPreviewItemName()
const;
88 virtual ::Bedrock::Safety::RedactableString
const& getItemName()
const;
90 virtual void updatePreviewItem();
92 virtual ::ItemStackBase
const& getTakeableItemStackBase(
::SlotData const& slot)
const;
104 virtual bool handlePlaceAmount(
::SlotData const& srcSlot,
int amount,
::SlotData const& dstSlot);
106 virtual int handleAutoPlace(
109 ::std::vector<::AutoPlaceItem>
const& autoPlaceOrder,
110 ::std::vector<::AutoPlaceResult>& destinations
113 virtual int handleAutoPlaceStack(
115 ::ItemTakeType takeType,
116 ::std::vector<::AutoPlaceItem>
const& autoPlaceOrder,
117 ::std::vector<::AutoPlaceResult>& destinations
125 virtual void handleSplitMultiple(
131 virtual bool handleCoalesce(
133 ::std::vector<::std::string>
const& coalesceOrder,
134 ::std::string
const& coalesceSrc
147 virtual bool handleAddToStack(
::SlotData const& dstSlot,
::SlotData const& srcSlot, ::ItemTakeType type);
149 virtual void closeContainers();
151 virtual bool isOutputSlot(::std::string
const& collectionName)
const;
153 virtual void _updateItemStackRequest(
154 ::ContainerScreenRequestActionType,
162 virtual ::CreateContainerItemScope
202 MCAPI
explicit ContainerManagerController(::std::weak_ptr<::ContainerManagerModel> containerManagerModel);
204 MCAPI
void _addContainer(::std::shared_ptr<::ContainerController> uiContainer);
206 MCAPI
void _addOutputsAsDestinations(
208 ::std::vector<::AutoPlaceResult>& destinations
211 MCAPI
int _appendAutoPlaceOutputs(
215 ::std::vector<::AutoPlaceItem>
const& autoPlaceOrder,
219 MCAPI
void _autoPlaceOrDrop(
222 ::std::vector<::AutoPlaceItem>
const& autoPlaceOrder
225 MCAPI
int _buildAutoPlaceRequest(
228 ::std::vector<::AutoPlaceItem>
const& autoPlaceOrder,
232 MCAPI
int _bulkAutoPlaceOutput(
237 ::std::vector<::AutoPlaceItem>
const& autoPlaceOrder,
238 ::std::vector<::AutoPlaceResult>& destinations
243 MCAPI
void _clearCreativeHotbar();
247 MCAPI ::ContainerValidationSlotData _getContainerValidationSlotData(
::SlotData const& slotData)
const;
249 MCAPI ::ItemStack
const& _getItem(
::SlotData const& slot,
bool canBeEmpty)
const;
251 MCAPI ::ItemStack
const& _getItem0(::ContainerEnumName collectionEnumName)
const;
253 MCAPI ::std::unordered_map<::FullContainerName, ::std::shared_ptr<::Container>> _getPredictiveContainers();
259 MCAPI
void _handleSplitMultiple(
265 MCAPI
bool _isContainerSimulationEnabled()
const;
267 MCAPI
void _onItemTransferring(
277 MCAPI
void _playCraftingSound(
278 ::std::weak_ptr<::ContainerManagerModel>
const& containerManagerModel,
279 ::SharedTypes::Legacy::LevelSoundEvent soundEvent
282 MCAPI
void _registerSetThisDirtyCallback(::std::shared_ptr<::ContainerModel> containerModel);
284 MCAPI ::ContainerCategory
289 MCAPI
void _shiftLeftStorageItemContents(
290 ::std::string
const& collectionName,
292 ::std::vector<::ItemStack>
const& items
295 MCAPI
bool _transfer(
296 ::ItemTransferType transferType,
301 bool allowVisualOnlySameItemSwap
304 MCAPI
bool _transferSpecial(
307 ::ItemSpecialLocation location
318 MCAPI
bool blockHasCustomName(
::BlockPos const& blockPos)
const;
320 MCAPI ::std::string getBlockName(
::BlockPos const& blockPos)
const;
322 MCAPI ::std::shared_ptr<::ContainerController> getContainerController(::ContainerEnumName containerEnumName)
const;
324 MCAPI ::std::shared_ptr<::ContainerController> getContainerController(::std::string
const& containerName)
const;
326 MCAPI
int getContainerSize(::std::string
const& collectionName)
const;
328 MCAPI ::SharedTypes::Legacy::ContainerType getContainerType()
const;
330 MCAPI
void getCurrentContainerStateList(::std::vector<::ItemStateData>& inventoryState);
332 MCAPI ::std::shared_ptr<::ContainerModel> getDynamicContainerModel(
::FullContainerName const& name);
334 MCAPI ::std::string getEntityName(
::ActorUniqueID const& entityUniqueID)
const;
336 MCAPI ::std::string getExpandoGroupName(::std::string
const& collectionName,
int collectionIndex)
const;
338 MCAPI ::ContainerExpandStatus getExpandoStatus(::std::string
const& containerName,
int collectionIndex)
const;
340 MCAPI ::ItemStack
const& getItemStack(::std::string
const& collectionName,
int collectionIndex)
const;
342 MCAPI
bool handleMoveItemFromSlotIntoStorageItem(
345 ::std::optional<uchar> requestedAmount
348 MCAPI
bool handleMoveSelectedItemFromStorageItem(
354 MCAPI
bool handleMoveSelectedItemFromStorageItemToStorageItem(
360 MCAPI
bool handleMoveTopItemFromStorageItem(
::ItemStack const& srcStorageItem,
::SlotData const& dstSlot);
362 MCAPI
bool hasContainerController(::std::string
const& containerName)
const;
364 MCAPI
bool isExpandoItem(::std::string
const& collectionName,
int collectionIndex);
366 MCAPI
bool isItemFiltered(::std::vector<::std::string> containerNames,
::ItemStackBase const& item)
const;
368 MCAPI
bool playerHasRoomForItem(
::ItemInstance const& item)
const;
376 MCAPI
void* $ctor(::std::weak_ptr<::ContainerManagerModel> containerManagerModel);
392 MCFOLD
void $postInit(::std::weak_ptr<::ContainerManagerController> self);
394 MCAPI
void $registerContainerCallbacks();
400 MCFOLD ::Bedrock::Safety::RedactableString
const& $getPreviewItemName()
const;
402 MCFOLD ::Bedrock::Safety::RedactableString
const& $getItemName()
const;
404 MCFOLD
void $updatePreviewItem();
406 MCAPI ::ItemStackBase
const& $getTakeableItemStackBase(
::SlotData const& slot)
const;
418 MCAPI
bool $handlePlaceAmount(
::SlotData const& srcSlot,
int amount,
::SlotData const& dstSlot);
420 MCAPI
int $handleAutoPlace(
423 ::std::vector<::AutoPlaceItem>
const& autoPlaceOrder,
424 ::std::vector<::AutoPlaceResult>& destinations
427 MCAPI
int $handleAutoPlaceStack(
429 ::ItemTakeType takeType,
430 ::std::vector<::AutoPlaceItem>
const& autoPlaceOrder,
431 ::std::vector<::AutoPlaceResult>& destinations
439 MCAPI
void $handleSplitMultiple(
445 MCAPI
bool $handleCoalesce(
447 ::std::vector<::std::string>
const& coalesceOrder,
448 ::std::string
const& coalesceSrc
461 MCAPI
bool $handleAddToStack(
::SlotData const& dstSlot,
::SlotData const& srcSlot, ::ItemTakeType type);
463 MCAPI
void $closeContainers();
465 MCFOLD
bool $isOutputSlot(::std::string
const& collectionName)
const;
467 MCFOLD
void $_updateItemStackRequest(
468 ::ContainerScreenRequestActionType,
473 MCAPI ::CreateContainerItemScope