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