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 MCNAPI
explicit ContainerManagerController(::std::weak_ptr<::ContainerManagerModel> containerManagerModel);
204 MCNAPI
void _addContainer(::std::shared_ptr<::ContainerController> uiContainer);
206 MCNAPI
void _addOutputsAsDestinations(
208 ::std::vector<::AutoPlaceResult>& destinations
211 MCAPI
int _appendAutoPlaceOutputs(
215 ::std::vector<::AutoPlaceItem>
const& autoPlaceOrder,
219 MCNAPI
void _autoPlaceOrDrop(
222 ::std::vector<::AutoPlaceItem>
const& autoPlaceOrder
225 MCNAPI
int _buildAutoPlaceRequest(
228 ::std::vector<::AutoPlaceItem>
const& autoPlaceOrder,
232 MCNAPI
int _bulkAutoPlaceOutput(
237 ::std::vector<::AutoPlaceItem>
const& autoPlaceOrder,
238 ::std::vector<::AutoPlaceResult>& destinations
243 MCNAPI
void _clearCreativeHotbar();
247 MCNAPI ::ContainerValidationSlotData _getContainerValidationSlotData(
::SlotData const& slotData)
const;
249 MCNAPI ::ItemStack
const& _getItem(
::SlotData const& slot,
bool canBeEmpty)
const;
251 MCNAPI ::ItemStack
const& _getItem0(::ContainerEnumName collectionEnumName)
const;
253 MCNAPI ::std::unordered_map<::FullContainerName, ::std::shared_ptr<::Container>> _getPredictiveContainers();
259 MCNAPI
bool _isContainerSimulationEnabled()
const;
261 MCNAPI
void _onItemTransferring(
271 MCNAPI
void _playCraftingSound(
272 ::std::weak_ptr<::ContainerManagerModel>
const& containerManagerModel,
273 ::SharedTypes::Legacy::LevelSoundEvent soundEvent
276 MCNAPI
void _registerSetThisDirtyCallback(::std::shared_ptr<::ContainerModel> containerModel);
278 MCNAPI ::ContainerCategory
283 MCNAPI
void _shiftLeftStorageItemContents(
284 ::std::string
const& collectionName,
286 ::std::vector<::ItemStack>
const& items
289 MCNAPI
bool _transfer(
290 ::ItemTransferType transferType,
295 bool allowVisualOnlySameItemSwap
298 MCNAPI
bool _transferSpecial(
301 ::ItemSpecialLocation location
312 MCNAPI
bool blockHasCustomName(
::BlockPos const& blockPos)
const;
314 MCNAPI ::std::string getBlockName(
::BlockPos const& blockPos)
const;
316 MCNAPI ::std::shared_ptr<::ContainerController> getContainerController(::ContainerEnumName containerEnumName)
const;
318 MCNAPI ::std::shared_ptr<::ContainerController> getContainerController(::std::string
const& containerName)
const;
320 MCAPI
int getContainerSize(::std::string
const& collectionName)
const;
322 MCAPI ::SharedTypes::Legacy::ContainerType getContainerType()
const;
324 MCNAPI
void getCurrentContainerStateList(::std::vector<::ItemStateData>& inventoryState);
326 MCAPI ::std::shared_ptr<::ContainerModel> getDynamicContainerModel(
::FullContainerName const& name);
328 MCNAPI ::std::string getEntityName(
::ActorUniqueID const& entityUniqueID)
const;
330 MCNAPI ::std::string getExpandoGroupName(::std::string
const& collectionName,
int collectionIndex)
const;
332 MCNAPI ::ContainerExpandStatus getExpandoStatus(::std::string
const& containerName,
int collectionIndex)
const;
334 MCAPI ::ItemStack
const& getItemStack(::std::string
const& collectionName,
int collectionIndex)
const;
336 MCAPI
bool handleMoveItemFromSlotIntoStorageItem(
339 ::std::optional<uchar> requestedAmount
342 MCNAPI
bool handleMoveSelectedItemFromStorageItem(
348 MCAPI
bool handleMoveSelectedItemFromStorageItemToStorageItem(
354 MCNAPI
bool handleMoveTopItemFromStorageItem(
::ItemStack const& srcStorageItem,
::SlotData const& dstSlot);
356 MCAPI
bool hasContainerController(::std::string
const& containerName)
const;
358 MCNAPI
bool isExpandoItem(::std::string
const& collectionName,
int collectionIndex);
360 MCNAPI
bool isItemFiltered(::std::vector<::std::string> containerNames,
::ItemStackBase const& item)
const;
362 MCNAPI
bool playerHasRoomForItem(
::ItemInstance const& item)
const;
364 MCNAPI
void resetSplitStack();
372 MCNAPI
void* $ctor(::std::weak_ptr<::ContainerManagerModel> containerManagerModel);
388 MCNAPI
void $postInit(::std::weak_ptr<::ContainerManagerController> self);
390 MCNAPI
void $registerContainerCallbacks();
396 MCNAPI ::Bedrock::Safety::RedactableString
const& $getPreviewItemName()
const;
398 MCNAPI ::Bedrock::Safety::RedactableString
const& $getItemName()
const;
400 MCNAPI
void $updatePreviewItem();
402 MCNAPI ::ItemStackBase
const& $getTakeableItemStackBase(
::SlotData const& slot)
const;
404 MCNAPI
bool $handleTakeAmount(
::SlotData const& dstSlot,
int amount,
::SlotData const& srcSlot);
414 MCNAPI
bool $handlePlaceAmount(
::SlotData const& srcSlot,
int amount,
::SlotData const& dstSlot);
416 MCAPI
int $handleAutoPlace(
419 ::std::vector<::AutoPlaceItem>
const& autoPlaceOrder,
420 ::std::vector<::AutoPlaceResult>& destinations
423 MCAPI
int $handleAutoPlaceStack(
425 ::ItemTakeType takeType,
426 ::std::vector<::AutoPlaceItem>
const& autoPlaceOrder,
427 ::std::vector<::AutoPlaceResult>& destinations
435 MCNAPI
void $handleSplitMultiple(
441 MCNAPI
bool $handleCoalesce(
443 ::std::vector<::std::string>
const& coalesceOrder,
444 ::std::string
const& coalesceSrc
457 MCNAPI
bool $handleAddToStack(
::SlotData const& dstSlot,
::SlotData const& srcSlot, ::ItemTakeType type);
459 MCNAPI
void $closeContainers();
461 MCNAPI
bool $isOutputSlot(::std::string
const& collectionName)
const;
463 MCNAPI
void $_updateItemStackRequest(
464 ::ContainerScreenRequestActionType,
469 MCNAPI ::CreateContainerItemScope