LeviLamina
Loading...
Searching...
No Matches
ContainerRegistry.h
1#pragma once
2
3#include "mc/_HeaderOutputPredefine.h"
4
5// auto generated inclusion list
6#include "mc/world/containers/IContainerRegistryAccess.h"
7#include "mc/world/containers/IContainerRegistryTracker.h"
8#include "mc/world/containers/IDynamicContainerSerialization.h"
9
10// auto generated forward declare list
11// clang-format off
14class ItemStack;
15class ListTag;
16class Packet;
17class SaveContext;
23namespace Bedrock::Threading { class SharedRecursiveMutex; }
24// clang-format on
25
26class ContainerRegistry : public ::IDynamicContainerSerialization,
29public:
30 // member variables
31 // NOLINTBEGIN
32 ::ll::TypedStorage<4, 4, uint> mNextDynamicId;
33 ::ll::TypedStorage<8, 64, ::std::unordered_map<::FullContainerName, ::DynamicTrackedContainer>> mContainers;
34 ::ll::TypedStorage<1, 1, bool const> mIsClientSide;
35 ::ll::TypedStorage<4, 4, int> mTicksSinceLastCleanup;
36 ::ll::TypedStorage<8, 16, ::std::shared_ptr<::Bedrock::Threading::SharedRecursiveMutex>> mContainerContextMutex;
37 // NOLINTEND
38
39public:
40 // prevent constructor by default
41 ContainerRegistry();
42
43public:
44 // virtual functions
45 // NOLINTBEGIN
46 virtual ~ContainerRegistry() /*override*/ = default;
47
48 virtual ::std::unique_ptr<::ListTag>
49 serializeContainerContent(::FullContainerName const& name, ::SaveContext const& saveContext) /*override*/;
50
51 virtual ::std::optional<int> getDynamicContainerWeight(::FullContainerName const& name) /*override*/;
52
53 virtual bool hasContainer(::FullContainerName const& name) const /*override*/;
54
55 virtual ::std::shared_ptr<::StorageItemContainerModel> getModel(::FullContainerName const& name) /*override*/;
56
57 virtual ::std::shared_ptr<::FillingContainer> getBackingContainer(::FullContainerName const& name) /*override*/;
58
59 virtual void tryCreateEntry(
60 ::StorageItemComponent* storageItemComponent,
61 ::StorageWeightLimitItemComponent* storageWeightLimitItemComponent,
62 ::FullContainerName const& name
63 ) /*override*/;
64
65 virtual ::std::unique_ptr<::DynamicContainerManager> createContainerManager(
66 ::FullContainerName const& id,
67 ::ItemStack const& storageItem,
68 ::StorageItemComponent* storageItemComponent,
69 ::StorageWeightLimitItemComponent* storageWeightLimitItemComponent
70 ) /*override*/;
71
72 virtual uint generateNewID() /*override*/;
73
74 virtual void tryLoadSavedStorageItem(::ListTag const& contentData, ::FullContainerName const& name) /*override*/;
75
76 virtual void setExpired(::std::vector<::FullContainerName> const& removedContainers) /*override*/;
77
78 virtual uint64 getSize() /*override*/;
79 // NOLINTEND
80
81public:
82 // member functions
83 // NOLINTBEGIN
84 MCAPI explicit ContainerRegistry(bool isClientSide);
85
86 MCAPI ::DynamicTrackedContainer& _getOrCreate(
87 ::FullContainerName const& id,
88 ::StorageItemComponent* storageItemComponent,
89 ::StorageWeightLimitItemComponent* storageWeightLimitItemComponent
90 );
91
92 MCAPI void _serverCleanUp(::std::function<void(::Packet&)> broadcastPacketFunction);
93
94 MCAPI void tick(::std::function<void(::Packet&)> broadcastPacketFunction);
95 // NOLINTEND
96
97public:
98 // static functions
99 // NOLINTBEGIN
100 MCAPI static void sendCleanupPackets(
101 ::std::function<void(::Packet&)> const& broadcastPacketFunction,
102 ::std::vector<::FullContainerName> const& removedContainers
103 );
104 // NOLINTEND
105
106public:
107 // constructor thunks
108 // NOLINTBEGIN
109 MCAPI void* $ctor(bool isClientSide);
110 // NOLINTEND
111
112public:
113 // virtual function thunks
114 // NOLINTBEGIN
115 MCAPI ::std::unique_ptr<::ListTag>
116 $serializeContainerContent(::FullContainerName const& name, ::SaveContext const& saveContext);
117
118 MCAPI ::std::optional<int> $getDynamicContainerWeight(::FullContainerName const& name);
119
120 MCAPI bool $hasContainer(::FullContainerName const& name) const;
121
122 MCAPI ::std::shared_ptr<::StorageItemContainerModel> $getModel(::FullContainerName const& name);
123
124 MCAPI ::std::shared_ptr<::FillingContainer> $getBackingContainer(::FullContainerName const& name);
125
126 MCAPI void $tryCreateEntry(
127 ::StorageItemComponent* storageItemComponent,
128 ::StorageWeightLimitItemComponent* storageWeightLimitItemComponent,
129 ::FullContainerName const& name
130 );
131
132 MCAPI ::std::unique_ptr<::DynamicContainerManager> $createContainerManager(
133 ::FullContainerName const& id,
134 ::ItemStack const& storageItem,
135 ::StorageItemComponent* storageItemComponent,
136 ::StorageWeightLimitItemComponent* storageWeightLimitItemComponent
137 );
138
139 MCAPI uint $generateNewID();
140
141 MCAPI void $tryLoadSavedStorageItem(::ListTag const& contentData, ::FullContainerName const& name);
142
143 MCAPI void $setExpired(::std::vector<::FullContainerName> const& removedContainers);
144
145 MCFOLD uint64 $getSize();
146
147
148 // NOLINTEND
149
150public:
151 // vftables
152 // NOLINTBEGIN
153 MCAPI static void** $vftableForIDynamicContainerSerialization();
154
155 MCAPI static void** $vftableForIContainerRegistryTracker();
156
157 MCAPI static void** $vftableForIContainerRegistryAccess();
158 // NOLINTEND
159};
Definition SharedRecursiveMutex.h:10
Definition DynamicContainerManager.h:17
Definition FillingContainer.h:17
Definition IContainerRegistryAccess.h:14
Definition IContainerRegistryTracker.h:15
Definition IDynamicContainerSerialization.h:12
Definition ItemStack.h:26
Definition ListTag.h:20
Definition Packet.h:28
Definition SaveContext.h:5
Definition StorageItemComponent.h:29
Definition StorageItemContainerModel.h:18
Definition StorageWeightLimitItemComponent.h:16
Definition DynamicTrackedContainer.h:11
Definition FullContainerName.h:8