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