LeviLamina
Loading...
Searching...
No Matches
SignBlock.h
1#pragma once
2
3#include "mc/_HeaderOutputPredefine.h"
4
5// auto generated inclusion list
6#include "mc/deps/core/utility/optional_ref.h"
7#include "mc/world/level/block/ActorBlockBase.h"
8#include "mc/world/level/block/BlockType.h"
9#include "mc/world/level/block/actor/SignTextSide.h"
10
11// auto generated forward declare list
12// clang-format off
13class AABB;
14class Actor;
15class Block;
16class BlockActor;
17class BlockPos;
18class BlockSource;
21class Item;
22class ItemInstance;
23class ItemStack;
24class Player;
25class SignBlockActor;
26namespace BlockEvents { class BlockPlayerInteractEvent; }
27namespace BlockEvents { class BlockQueuedTickEvent; }
28namespace mce { class Color; }
29// clang-format on
30
31class SignBlock : public ::ActorBlock {
32public:
33 // SignBlock inner types declare
34 // clang-format off
36 // clang-format on
37
38 // SignBlock inner types define
39 enum class SignType : int {
40 Oak = 0,
41 Spruce = 1,
42 Birch = 2,
43 Jungle = 3,
44 Acacia = 4,
45 DarkOak = 5,
46 RedBigNetherShroom = 6,
47 BlueBigNetherShroom = 7,
48 Mangrove = 8,
49 Bamboo = 9,
50 Cherry = 10,
51 PaleOak = 11,
52 Poplar = 12,
53 };
54
56 public:
57 // SignInteractionResult inner types define
58 enum class Result : int {
59 NoInteraction = 0,
60 FailWaxedSign = 1,
61 UseDye = 2,
62 UseGlowInkSac = 3,
63 UseInkSac = 4,
64 UseHoneyComb = 5,
65 OpenForEditing = 6,
66 };
67
68 public:
69 // member variables
70 // NOLINTBEGIN
71 ::ll::TypedStorage<4, 4, ::SignBlock::SignInteractionResult::Result> mResult;
72 // NOLINTEND
73
74 public:
75 // member functions
76 // NOLINTBEGIN
77#ifdef LL_PLAT_C
78 MCAPI ::std::optional<::std::string> getButtonTooltip() const;
79#endif
80 // NOLINTEND
81 };
82
83public:
84 // member variables
85 // NOLINTBEGIN
86 ::ll::TypedStorage<4, 4, ::SignBlock::SignType> mSignType;
87 ::ll::TypedStorage<1, 1, bool> mOnGround;
88 // NOLINTEND
89
90public:
91 // virtual functions
92 // NOLINTBEGIN
93 virtual ::AABB const& getVisualShape(::Block const& block, ::AABB& bufferAABB) const /*override*/;
94
95 virtual ::AABB getCollisionShape(
96 ::Block const&,
98 ::BlockPos const&,
100 ) const /*override*/;
101
102 virtual bool checkIsPathable(::Actor& entity, ::BlockPos const& lastPathPos, ::BlockPos const& pathPos) const
103 /*override*/;
104
105 virtual ::ItemInstance asItemInstance(::Block const&, ::BlockActor const*) const /*override*/;
106
107 virtual bool mayPlace(::BlockSource& region, ::BlockPos const& pos, uchar face) const /*override*/;
108
109 virtual void neighborChanged(::BlockSource& region, ::BlockPos const& pos, ::BlockPos const& neighborPos) const
110 /*override*/;
111
112 virtual bool canSurvive(::BlockSource& region, ::BlockPos const& pos) const /*override*/;
113
114 virtual bool isInteractiveBlock() const /*override*/;
115
116 virtual float getYRotationInDegrees(::Block const& block) const;
117
118 virtual bool _canSurvive(::BlockSource& region, ::BlockPos const& pos, uchar face) const;
119
120 virtual ::ItemInstance _getItemInstance() const;
121 // NOLINTEND
122
123public:
124 // member functions
125 // NOLINTBEGIN
126 MCFOLD void tick(::BlockEvents::BlockQueuedTickEvent& eventData) const;
127
128 MCAPI void use(::BlockEvents::BlockPlayerInteractEvent& eventData) const;
129 // NOLINTEND
130
131public:
132 // static functions
133 // NOLINTBEGIN
134 MCAPI static bool
135 _canUseDye(::SignBlockActor& blockActor, ::SignTextSide side, ::mce::Color const& dyeColor, ::Player& player);
136
137 MCAPI static bool _canUseHoneyComb(::SignBlockActor& blockActor, ::Player& player);
138
139 MCAPI static bool _canUseInkSac(::SignBlockActor& blockActor, ::SignTextSide side, ::Player& player);
140
141#ifdef LL_PLAT_C
142 MCAPI static ::SignBlock::SignInteractionResult _getInteractResult(
143 ::SignBlockActor& blockActor,
144 ::SignTextSide side,
145 ::ItemStack& item,
146 ::Player& player,
147 ::BlockPos const& pos,
148 uchar face
149 );
150
151 MCAPI static ::SignBlock::SignInteractionResult
152 getInteractResult(::Player& player, ::BlockPos const& pos, uchar face);
153#endif
154
155 MCAPI static ::mce::Color getSignTextColorFromDyeItem(::Item const& dyeItem);
156 // NOLINTEND
157
158public:
159 // virtual function thunks
160 // NOLINTBEGIN
161 MCAPI ::AABB const& $getVisualShape(::Block const& block, ::AABB& bufferAABB) const;
162
163 MCFOLD ::AABB $getCollisionShape(
164 ::Block const&,
165 ::IConstBlockSource const&,
166 ::BlockPos const&,
168 ) const;
169
170 MCFOLD bool $checkIsPathable(::Actor& entity, ::BlockPos const& lastPathPos, ::BlockPos const& pathPos) const;
171
172#ifdef LL_PLAT_S
173 MCAPI ::ItemInstance $asItemInstance(::Block const&, ::BlockActor const*) const;
174#else // LL_PLAT_C
175 MCFOLD ::ItemInstance $asItemInstance(::Block const&, ::BlockActor const*) const;
176#endif
177
178 MCAPI bool $mayPlace(::BlockSource& region, ::BlockPos const& pos, uchar face) const;
179
180 MCAPI void $neighborChanged(::BlockSource& region, ::BlockPos const& pos, ::BlockPos const& neighborPos) const;
181
182 MCAPI bool $canSurvive(::BlockSource& region, ::BlockPos const& pos) const;
183
184 MCFOLD bool $isInteractiveBlock() const;
185
186 MCAPI float $getYRotationInDegrees(::Block const& block) const;
187
188 MCAPI bool $_canSurvive(::BlockSource& region, ::BlockPos const& pos, uchar face) const;
189
190 MCAPI ::ItemInstance $_getItemInstance() const;
191
192
193 // NOLINTEND
194
195public:
196 // vftables
197 // NOLINTBEGIN
198 MCAPI static void** $vftable();
199 // NOLINTEND
200};
Definition AABB.h:18
Definition Actor.h:113
Definition BlockActor.h:29
Definition BlockPlayerInteractEvent.h:18
Definition BlockQueuedTickEvent.h:16
Definition BlockPos.h:17
Definition BlockSource.h:71
Definition Block.h:41
Definition GetCollisionShapeInterface.h:13
Definition IConstBlockSource.h:25
Definition ItemInstance.h:15
Definition ItemStack.h:26
Definition Item.h:71
Definition Player.h:129
Definition SignBlockActor.h:32
Definition SignBlock.h:31
Definition Color.h:13
Definition optional_ref.h:10
Definition SignBlock.h:55