Skip to content
LeviMC
English
AutoLightDark
LeviLamina
Loading...
Searching...
No Matches
ContainerScreenValidation.h
1#pragma once
2
3#include "mc/_HeaderOutputPredefine.h"
4
5// auto generated inclusion list
6#include "mc/world/containers/FullContainerName.h"
7#include "mc/world/inventory/network/ContainerScreenContext.h"
8#include "mc/world/inventory/simulation/ContainerScreenRequestActionType.h"
9#include "mc/world/inventory/simulation/ContainerValidationCaller.h"
10#include "mc/world/inventory/simulation/ContainerValidationDebug.h"
11
12// auto generated forward declare list
13// clang-format off
14class Container;
17class ItemStack;
26// clang-format on
27
28class ContainerScreenValidation {
29public:
30 // member variables
31 // NOLINTBEGIN
32 ::ll::TypedStorage<8, 40, ::ContainerScreenContext> mScreenContext;
33 ::ll::TypedStorage<4, 4, ::ContainerValidationCaller> mCaller;
34 ::ll::TypedStorage<8, 64, ::std::unordered_map<::FullContainerName, uint64>> mContainerIndexMap;
35 ::ll::TypedStorage<
36 8,
37 64,
38 ::std::unordered_map<::FullContainerName, ::std::shared_ptr<::ContainerValidationBase const>>>
39 mContainerValidatorMap;
40 ::ll::TypedStorage<8, 64, ::std::unordered_map<::FullContainerName, ::std::shared_ptr<::Container>>>
41 mPredictiveContainers;
42 ::ll::TypedStorage<8, 8, ::std::unique_ptr<::ContainerScreenValidatorBase>> mContainerScreenValidator;
43 ::ll::TypedStorage<8, 24, ::std::vector<::ContainerValidationLayer>> mValidationStack;
44 ::ll::TypedStorage<4, 12, ::ContainerValidationDebug const> mDebug;
45 // NOLINTEND
46
47public:
48 // prevent constructor by default
49 ContainerScreenValidation();
50
51public:
52 // virtual functions
53 // NOLINTBEGIN
54 virtual ~ContainerScreenValidation() = default;
55
56 virtual ::ContainerValidationResult
57 tryCraft(::std::unique_ptr<::ContainerValidationCraftInputs> craftInputs, uchar const numCrafts);
58
59 virtual ::ContainerValidationCraftResult
60 getCraftResults(::std::unique_ptr<::ContainerValidationCraftInputs> craftInputs, uchar const numCrafts);
61
62 virtual ::ContainerValidationResult tryActivate();
63 // NOLINTEND
64
65public:
66 // member functions
67 // NOLINTBEGIN
69 ::ContainerScreenContext const& screenContext,
70 ::ContainerValidationCaller caller,
71 ::std::unordered_map<::FullContainerName, ::std::shared_ptr<::Container>> predictiveContainers
72 );
73
74 MCNAPI void _commit();
75
76#ifdef LL_PLAT_C
77 MCNAPI ::ContainerValidationSlotInfo
78 _createContainerValidatorSlotInfo(::ContainerValidationSlotData const& slotData);
79#endif
80
81#ifdef LL_PLAT_S
82 MCNAPI ::ContainerValidationSlotInfo
83 _createContainerValidatorSlotInfo(::ContainerValidationSlotData const& slotData);
84#endif
85
86 MCNAPI bool _dropItems();
87
88 MCNAPI bool _propagateContainers();
89
90 MCNAPI bool
92
93 MCNAPI ::ItemStack _tryRemoveItem(::ContainerValidationSlotInfo& slotInfo, int amount);
94
95 MCNAPI int _trySetItem(
97 ::ItemStack const& stack,
98 bool isWholeStackTransfer,
99 bool allowPartialSuccess,
100 bool isInternalTransfer
101 );
102
103 MCNAPI ::ContainerValidationResult _tryTransferSpecial(
104 ::ContainerValidationSlotData const& srcSlotData,
105 int transferAmount,
106 ::ContainerScreenRequestActionType actionType
107 );
108
109#ifdef LL_PLAT_C
110 MCNAPI ::std::optional<::ContainerIterationRange>
111 getContainerIterator(::ContainerValidationSlotData const& slotData);
112#endif
113
114 MCAPI ::std::shared_ptr<::SimpleSparseContainer>
115 getOrCreateSparseContainer(::FullContainerName const& containerEnumName);
116
117#ifdef LL_PLAT_C
118 MCNAPI void postRequest();
119#endif
120
121 MCAPI bool tryCommitActionResults();
122
123 MCNAPI ::ContainerValidationResult tryConsume(::ContainerValidationSlotData const& srcSlotData, int transferAmount);
124
125 MCNAPI ::ContainerValidationResult
126 tryDrop(::ContainerValidationSlotData const& srcSlotData, int transferAmount, bool dropRandomly);
127
128 MCNAPI ::ContainerValidationResult
130
131 MCNAPI ::ContainerValidationResult tryTransfer(
132 ::ContainerValidationSlotData const& srcSlotData,
133 ::ContainerValidationSlotData const& dstSlotData,
134 int transferAmount,
135 bool isAllowingPartialTransfer
136 );
137 // NOLINTEND
138
139public:
140 // static functions
141 // NOLINTBEGIN
142 MCNAPI static ::std::unique_ptr<::ContainerScreenValidation> makeContainerScreenValidation(
143 ::ContainerScreenContext const& screenContext,
144 ::ContainerValidationCaller caller,
145 ::std::unordered_map<::FullContainerName, ::std::shared_ptr<::Container>> predictiveContainers
146 );
147 // NOLINTEND
148
149public:
150 // constructor thunks
151 // NOLINTBEGIN
152 MCNAPI void* $ctor(
153 ::ContainerScreenContext const& screenContext,
154 ::ContainerValidationCaller caller,
155 ::std::unordered_map<::FullContainerName, ::std::shared_ptr<::Container>> predictiveContainers
156 );
157 // NOLINTEND
158
159public:
160 // virtual function thunks
161 // NOLINTBEGIN
162 MCNAPI ::ContainerValidationResult
163 $tryCraft(::std::unique_ptr<::ContainerValidationCraftInputs> craftInputs, uchar const numCrafts);
164
165 MCNAPI ::ContainerValidationCraftResult
166 $getCraftResults(::std::unique_ptr<::ContainerValidationCraftInputs> craftInputs, uchar const numCrafts);
167
168 MCNAPI ::ContainerValidationResult $tryActivate();
169
170
171 // NOLINTEND
172};
Definition ContainerScreenContext.h:16
MCAPI::ContainerValidationCraftResult $getCraftResults(::std::unique_ptr<::ContainerValidationCraftInputs > craftInputs, uchar const numCrafts)
MCAPI ContainerScreenValidation(::ContainerScreenContext const &screenContext, ::ContainerValidationCaller caller, ::std::unordered_map<::FullContainerName, ::std::shared_ptr<::Container > > predictiveContainers)
MCAPI bool _tryMoveItem(::ContainerValidationSlotInfo &srcValidatorPair, ::ContainerValidationSlotInfo &dstValidatorPair)
MCAPI void * $ctor(::ContainerScreenContext const &screenContext, ::ContainerValidationCaller caller, ::std::unordered_map<::FullContainerName, ::std::shared_ptr<::Container > > predictiveContainers)
MCAPI int _trySetItem(::ContainerValidationSlotInfo &slotInfo, ::ItemStack const &stack, bool isWholeStackTransfer, bool allowPartialSuccess, bool isInternalTransfer)
MCAPI::ContainerValidationResult $tryCraft(::std::unique_ptr<::ContainerValidationCraftInputs > craftInputs, uchar const numCrafts)
MCAPI::ItemStack _tryRemoveItem(::ContainerValidationSlotInfo &slotInfo, int amount)
MCAPI::ContainerValidationResult tryTransfer(::ContainerValidationSlotData const &srcSlotData, ::ContainerValidationSlotData const &dstSlotData, int transferAmount, bool isAllowingPartialTransfer)
static MCAPI ::std::unique_ptr<::ContainerScreenValidation > makeContainerScreenValidation(::ContainerScreenContext const &screenContext, ::ContainerValidationCaller caller, ::std::unordered_map<::FullContainerName, ::std::shared_ptr<::Container > > predictiveContainers)
MCAPI bool _propagateContainers()
MCAPI::ContainerValidationResult _tryTransferSpecial(::ContainerValidationSlotData const &srcSlotData, int transferAmount, ::ContainerScreenRequestActionType actionType)
MCAPI::ContainerValidationResult tryDrop(::ContainerValidationSlotData const &srcSlotData, int transferAmount, bool dropRandomly)
MCAPI::ContainerValidationResult trySwap(::ContainerValidationSlotData const &srcSlotData, ::ContainerValidationSlotData const &dstSlotData)
MCAPI::ContainerValidationResult tryConsume(::ContainerValidationSlotData const &srcSlotData, int transferAmount)
MCAPI::ContainerValidationResult $tryActivate()
Definition ContainerScreenValidatorBase.h:18
Definition ContainerValidationBase.h:12
Definition Container.h:36
Definition ItemStack.h:26
Definition SimpleSparseContainer.h:18
Definition ContainerIterationRange.h:5
Definition ContainerValidationCraftInputs.h:5
Definition ContainerValidationCraftResult.h:14
Definition ContainerValidationLayer.h:15
Definition ContainerValidationResult.h:14
Definition ContainerValidationSlotData.h:8
Definition ContainerValidationSlotInfo.h:14
Definition FullContainerName.h:8