LeviLamina
Loading...
Searching...
No Matches
BaseRailBlock.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/BlockPos.h"
8#include "mc/world/level/block/BlockRenderLayer.h"
9#include "mc/world/level/block/BlockType.h"
10
11// auto generated forward declare list
12// clang-format off
13class AABB;
14class Actor;
15class Block;
16class BlockSource;
19namespace BlockEvents { class BlockPlaceEvent; }
20namespace BlockEvents { class BlockQueuedTickEvent; }
21namespace BlockEvents { class BlockRedstoneUpdateEvent; }
23// clang-format on
24
25class BaseRailBlock : public ::BlockType {
26public:
27 // BaseRailBlock inner types declare
28 // clang-format off
29 class Rail;
30 // clang-format on
31
32 // BaseRailBlock inner types define
33 class Rail {
34 public:
35 // member variables
36 // NOLINTBEGIN
37 ::ll::TypedStorage<8, 8, ::BlockSource&> mRegion;
38 ::ll::TypedStorage<4, 12, ::BlockPos> mPos;
39 ::ll::TypedStorage<1, 1, bool> mUsesDataBit;
40 ::ll::TypedStorage<8, 24, ::std::vector<::BlockPos>> mConnections;
41 // NOLINTEND
42
43 public:
44 // prevent constructor by default
45 Rail& operator=(Rail const&);
46 Rail(Rail const&);
47 Rail();
48
49 public:
50 // member functions
51 // NOLINTBEGIN
52 MCAPI Rail(::BlockSource& region, ::BlockPos const& pos);
53
54 MCAPI void connectTo(::BaseRailBlock::Rail& rail);
55
56 MCAPI ::std::shared_ptr<::BaseRailBlock::Rail> getRail(::BlockPos const& p);
57
58 MCAPI bool hasNeighborRail(::BlockPos const& pos);
59
60 MCAPI void place(int signalStrength, bool first);
61
62 MCAPI void removeSoftConnections();
63
64 MCAPI void updateConnections(int direction);
65
66 MCAPI ~Rail();
67 // NOLINTEND
68
69 public:
70 // constructor thunks
71 // NOLINTBEGIN
72 MCAPI void* $ctor(::BlockSource& region, ::BlockPos const& pos);
73 // NOLINTEND
74
75 public:
76 // destructor thunk
77 // NOLINTBEGIN
78 MCFOLD void $dtor();
79 // NOLINTEND
80 };
81
82public:
83 // member variables
84 // NOLINTBEGIN
85 ::ll::TypedStorage<1, 1, bool const> mUsesDataBit;
86 // NOLINTEND
87
88public:
89 // prevent constructor by default
90 BaseRailBlock();
91
92public:
93 // virtual functions
94 // NOLINTBEGIN
95 virtual ::AABB const& getVisualShape(::Block const& block, ::AABB& bufferAABB) const /*override*/;
96
97 virtual ::AABB getCollisionShape(
98 ::Block const&,
100 ::BlockPos const&,
102 ) const /*override*/;
103
104 virtual bool mayPlace(::BlockSource& region, ::BlockPos const& pos) const /*override*/;
105
106 virtual ::BlockRenderLayer getRenderLayer(::Block const& region, ::BlockSource& pos, ::BlockPos const&) const
107 /*override*/;
108
109 virtual void setupRedstoneComponent(::BlockSource& region, ::BlockPos const& pos) const /*override*/;
110
111 virtual void neighborChanged(::BlockSource& region, ::BlockPos const& pos, ::BlockPos const& neighborPos) const
112 /*override*/;
113
114 virtual bool isRailBlock() const /*override*/;
115
116 virtual bool canSpawnOn(::Actor*) const /*override*/;
117
118 virtual bool isLavaBlocking() const /*override*/;
119
120 virtual void onGraphicsModeChanged(::BlockGraphicsModeChangeContext const& context) /*override*/;
121
122 virtual void tick(::BlockEvents::BlockQueuedTickEvent& eventData) const;
123
124 virtual bool canSurvive(::BlockSource& region, ::BlockPos const& pos) const /*override*/;
125
126 virtual void _onRedstoneUpdate(::BlockEvents::BlockRedstoneUpdateEvent& blockEvent) const;
127 // NOLINTEND
128
129public:
130 // member functions
131 // NOLINTBEGIN
132 MCAPI BaseRailBlock(::std::string const& nameId, int id, bool usesDataBit);
133
134 MCFOLD void _onRedstoneUpdateBase(::BlockEvents::BlockRedstoneUpdateEvent& blockEvent) const;
135
136 MCAPI void onPlace(::BlockEvents::BlockPlaceEvent& eventData) const;
137
138 MCAPI void updateDir(::BlockSource& region, ::BlockPos const& pos, bool first) const;
139 // NOLINTEND
140
141public:
142 // static functions
143 // NOLINTBEGIN
144 MCAPI static void _createCircuitComponent(::BlockSource& region, ::BlockPos const& pos);
145
146 MCAPI static bool isCorner(::BlockSource const& region, ::BlockPos const& pos);
147
148 MCAPI static bool isFacingWestEast(::BlockSource const& region, ::BlockPos const& pos);
149
150 MCAPI static bool isRail(::Block const& block);
151
152 MCAPI static bool isRail(::IConstBlockSource const& region, ::BlockPos const& pos);
153
154 MCAPI static bool isSlope(::Block const& block);
155
156 MCAPI static bool isSlope(int railDirection);
157 // NOLINTEND
158
159public:
160 // constructor thunks
161 // NOLINTBEGIN
162 MCAPI void* $ctor(::std::string const& nameId, int id, bool usesDataBit);
163 // NOLINTEND
164
165public:
166 // virtual function thunks
167 // NOLINTBEGIN
168 MCAPI ::AABB const& $getVisualShape(::Block const& block, ::AABB& bufferAABB) const;
169
170 MCFOLD ::AABB $getCollisionShape(
171 ::Block const&,
172 ::IConstBlockSource const&,
173 ::BlockPos const&,
175 ) const;
176
177 MCAPI bool $mayPlace(::BlockSource& region, ::BlockPos const& pos) const;
178
179 MCAPI ::BlockRenderLayer $getRenderLayer(::Block const& region, ::BlockSource& pos, ::BlockPos const&) const;
180
181 MCAPI void $setupRedstoneComponent(::BlockSource& region, ::BlockPos const& pos) const;
182
183 MCFOLD void $neighborChanged(::BlockSource& region, ::BlockPos const& pos, ::BlockPos const& neighborPos) const;
184
185 MCFOLD bool $isRailBlock() const;
186
187 MCFOLD bool $canSpawnOn(::Actor*) const;
188
189 MCFOLD bool $isLavaBlocking() const;
190
191 MCAPI void $onGraphicsModeChanged(::BlockGraphicsModeChangeContext const& context);
192
193 MCAPI void $tick(::BlockEvents::BlockQueuedTickEvent& eventData) const;
194
195 MCAPI bool $canSurvive(::BlockSource& region, ::BlockPos const& pos) const;
196
197 MCAPI void $_onRedstoneUpdate(::BlockEvents::BlockRedstoneUpdateEvent& blockEvent) const;
198
199
200 // NOLINTEND
201
202public:
203 // vftables
204 // NOLINTBEGIN
205 MCNAPI static void** $vftable();
206 // NOLINTEND
207};
Definition AABB.h:18
Definition Actor.h:125
Definition BaseRailBlock.h:33
static MCAPI void ** $vftable()
Definition BlockPlaceEvent.h:18
Definition BlockQueuedTickEvent.h:18
Definition BlockRedstoneUpdateEvent.h:16
Definition BlockPos.h:21
Definition BlockSource.h:73
Definition Block.h:69
Definition GetCollisionShapeInterface.h:13
Definition IConstBlockSource.h:24
Definition optional_ref.h:10
STL namespace.
Definition BlockGraphicsModeChangeContext.h:5
Definition context.h:5