LeviLamina
Loading...
Searching...
No Matches
BrushableBlockActor.h
1#pragma once
2
3#include "mc/_HeaderOutputPredefine.h"
4
5// auto generated inclusion list
6#include "mc/deps/core/string/HashedString.h"
7#include "mc/deps/ecs/WeakEntityRef.h"
8#include "mc/world/actor/ai/util/ExpiringTick.h"
9#include "mc/world/level/block/actor/RandomizableBlockActorContainer.h"
10
11// auto generated forward declare list
12// clang-format off
13class Actor;
15class BlockPos;
16class BlockSource;
17class CompoundTag;
18class DataLoadHelper;
19class ILevel;
20class ItemStack;
21class SaveContext;
22// clang-format on
23
24class BrushableBlockActor : public ::RandomizableBlockActorContainer {
25public:
26 // BrushableBlockActor inner types define
27 enum class BrushingState : int {
28 Ongoing = 0,
29 Completed = 1,
30 };
31
32 enum class Placement : int {
33 DesertWell = 0,
34 DesertPyramid = 1,
35 ColdOceanRuin = 2,
36 WarmOceanRuin = 3,
37 TrailRuinsCommon = 4,
38 TrailRuinsRare = 5,
39 Empty = 6,
40 };
41
42public:
43 // member variables
44 // NOLINTBEGIN
45 ::ll::TypedStorage<8, 24, ::std::optional<::ExpiringTick>> mBrushReset;
46 ::ll::TypedStorage<8, 24, ::std::optional<::ExpiringTick>> mBrushCooldown;
47 ::ll::TypedStorage<8, 24, ::WeakEntityRef> mDisplayEntity;
48 ::ll::TypedStorage<8, 24, ::std::vector<::ItemStack>> mItems;
49 ::ll::TypedStorage<8, 48, ::HashedString> mBlockId;
50 ::ll::TypedStorage<4, 4, uint> mBrushCount;
51 ::ll::TypedStorage<1, 1, uchar> mBrushDirection;
52 ::ll::TypedStorage<1, 1, bool> mLootTableUnpacked;
53 // NOLINTEND
54
55public:
56 // prevent constructor by default
57 BrushableBlockActor();
58
59public:
60 // virtual functions
61 // NOLINTBEGIN
62 virtual ~BrushableBlockActor() /*override*/;
63
64 virtual void serverInitItemStackIds(
65 int containerSlot,
66 int count,
67 ::std::function<void(int, ::ItemStack const&)> onNetIdChanged
68 ) /*override*/;
69
70 virtual int getContainerSize() const /*override*/;
71
72 virtual int getMaxStackSize() const /*override*/;
73
74 virtual ::ItemStack const& getItem(int slot) const /*override*/;
75
76 virtual void setItem(int slot, ::ItemStack const& item) /*override*/;
77
78 virtual void stopOpen(::Actor& actor) /*override*/;
79
80 virtual void onChanged(::BlockSource& region) /*override*/;
81
82 virtual void onRemoved(::BlockSource& region) /*override*/;
83
84 virtual void load(::ILevel& level, ::CompoundTag const& tag, ::DataLoadHelper& dataLoadHelper) /*override*/;
85
86 virtual bool save(::CompoundTag& tag, ::SaveContext const& saveContext) const /*override*/;
87
88 virtual ::std::unique_ptr<::BlockActorDataPacket> _getUpdatePacket(::BlockSource&) /*override*/;
89
90 virtual void _onUpdatePacket(::CompoundTag const& data, ::BlockSource& region) /*override*/;
91 // NOLINTEND
92
93public:
94 // member functions
95 // NOLINTBEGIN
96 MCAPI
97 BrushableBlockActor(::HashedString const& name, ::BlockPos const& pos, ::BrushableBlockActor::Placement placement);
98
99 MCAPI void _brushingCompleted(::BlockSource& region);
100
101 MCAPI void _removeDisplayEntity(::BlockSource& region);
102
103 MCAPI ::BrushableBlockActor::BrushingState brush(::BlockSource& region, ::BlockPos const& pos, uchar face);
104
105#ifdef LL_PLAT_C
106 MCFOLD int getBrushCount() const;
107
108 MCAPI uchar getBrushDirection() const;
109
110 MCAPI ::Actor* tryGetOrCreateDisplayEntity(::BlockSource& region);
111#endif
112
113 MCAPI void update(::BlockSource& region, ::BlockPos const& pos);
114 // NOLINTEND
115
116public:
117 // static functions
118 // NOLINTBEGIN
119 MCAPI static ::std::string getLootTableFromVariant(::BrushableBlockActor::Placement state);
120
121 MCAPI static ::BrushableBlockActor* tryGet(::BlockSource& region, ::BlockPos const& pos);
122 // NOLINTEND
123
124public:
125 // constructor thunks
126 // NOLINTBEGIN
127 MCAPI void* $ctor(::HashedString const& name, ::BlockPos const& pos, ::BrushableBlockActor::Placement placement);
128 // NOLINTEND
129
130public:
131 // destructor thunk
132 // NOLINTBEGIN
133 MCAPI void $dtor();
134 // NOLINTEND
135
136public:
137 // virtual function thunks
138 // NOLINTBEGIN
139 MCAPI void $serverInitItemStackIds(
140 int containerSlot,
141 int count,
142 ::std::function<void(int, ::ItemStack const&)> onNetIdChanged
143 );
144
145 MCFOLD int $getContainerSize() const;
146
147 MCFOLD int $getMaxStackSize() const;
148
149 MCAPI ::ItemStack const& $getItem(int slot) const;
150
151 MCAPI void $setItem(int slot, ::ItemStack const& item);
152
153 MCFOLD void $stopOpen(::Actor& actor);
154
155 MCAPI void $onChanged(::BlockSource& region);
156
157 MCAPI void $onRemoved(::BlockSource& region);
158
159 MCAPI void $load(::ILevel& level, ::CompoundTag const& tag, ::DataLoadHelper& dataLoadHelper);
160
161 MCAPI bool $save(::CompoundTag& tag, ::SaveContext const& saveContext) const;
162
163 MCFOLD ::std::unique_ptr<::BlockActorDataPacket> $_getUpdatePacket(::BlockSource&);
164
165 MCFOLD void $_onUpdatePacket(::CompoundTag const& data, ::BlockSource& region);
166
167
168 // NOLINTEND
169
170public:
171 // vftables
172 // NOLINTBEGIN
173 MCAPI static void** $vftableForContainer();
174
175 MCAPI static void** $vftableForRandomizableBlockActorContainerBase();
176 // NOLINTEND
177};
Definition Actor.h:123
Definition BlockActorDataPacket.h:19
Definition BlockPos.h:21
Definition BlockSource.h:72
Definition CompoundTag.h:23
Definition DataLoadHelper.h:20
Definition HashedString.h:5
Definition ILevel.h:218
Definition ItemStack.h:35
Definition SaveContext.h:5