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;
17class Experiments;
21namespace BlockEvents { class BlockPlaceEvent; }
22namespace BlockEvents { class BlockQueuedTickEvent; }
23namespace BlockEvents { class BlockRedstoneUpdateEvent; }
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 MCAPI Rail(::BlockSource& region, ::BlockPos const& pos);
54
55 MCAPI void connectTo(::BaseRailBlock::Rail& rail);
56
57 MCAPI ::std::shared_ptr<::BaseRailBlock::Rail> getRail(::BlockPos const& p);
58
59 MCAPI void place(int signalStrength, bool first);
60
61 MCAPI void removeSoftConnections();
62
63 MCAPI void updateConnections(int direction);
64
65 MCAPI ~Rail();
66 // NOLINTEND
67
68 public:
69 // constructor thunks
70 // NOLINTBEGIN
71 MCAPI void* $ctor(::BlockSource& region, ::BlockPos const& pos);
72 // NOLINTEND
73
74 public:
75 // destructor thunk
76 // NOLINTBEGIN
77 MCAPI void $dtor();
78 // NOLINTEND
79 };
80
81public:
82 // member variables
83 // NOLINTBEGIN
84 ::ll::TypedStorage<1, 1, bool const> mUsesDataBit;
85 // NOLINTEND
86
87public:
88 // virtual functions
89 // NOLINTBEGIN
90 virtual ::AABB const& getVisualShape(::Block const& block, ::AABB& bufferAABB) const /*override*/;
91
92 virtual ::AABB getCollisionShape(
93 ::Block const&,
95 ::BlockPos const&,
97 ) const /*override*/;
98
99 virtual bool mayPlace(::BlockSource& region, ::BlockPos const& pos) const /*override*/;
100
101 virtual ::BlockRenderLayer getRenderLayer(::Block const&, ::BlockSource& region, ::BlockPos const& pos) const
102 /*override*/;
103
104 virtual void setupRedstoneComponent(::BlockSource& region, ::BlockPos const& pos) const /*override*/;
105
106 virtual void neighborChanged(::BlockSource& region, ::BlockPos const& pos, ::BlockPos const& neighborPos) const
107 /*override*/;
108
109 virtual bool isRailBlock() const /*override*/;
110
111 virtual bool canSpawnOn(::Actor*) const /*override*/;
112
113 virtual bool isLavaBlocking() const /*override*/;
114
115 virtual void onGraphicsModeChanged(::BlockGraphicsModeChangeContext const& context) /*override*/;
116
117 virtual void tick(::BlockEvents::BlockQueuedTickEvent& eventData) const;
118
119 virtual bool canSurvive(::BlockSource& region, ::BlockPos const& pos) const /*override*/;
120
121 virtual void _addHardCodedBlockComponents(::Experiments const&) /*override*/;
122
123 virtual void _onRedstoneUpdate(::BlockEvents::BlockRedstoneUpdateEvent& blockEvent) const;
124
125 virtual ~BaseRailBlock() /*override*/ = default;
126 // NOLINTEND
127
128public:
129 // member functions
130 // NOLINTBEGIN
131 MCFOLD void _onRedstoneUpdateBase(::BlockEvents::BlockRedstoneUpdateEvent& blockEvent) const;
132
133 MCFOLD void _updatePlacement(::BlockSource& region, ::BlockPos const& pos) const;
134
135 MCAPI void onPlace(::BlockEvents::BlockPlaceEvent& eventData) const;
136
137 MCAPI void updateDir(::BlockSource& region, ::BlockPos const& pos, bool first) const;
138 // NOLINTEND
139
140public:
141 // static functions
142 // NOLINTBEGIN
143 MCAPI static void _createCircuitComponent(::BlockSource& region, ::BlockPos const& pos);
144 // NOLINTEND
145
146public:
147 // virtual function thunks
148 // NOLINTBEGIN
149 MCAPI ::AABB const& $getVisualShape(::Block const& block, ::AABB& bufferAABB) const;
150
151 MCFOLD ::AABB $getCollisionShape(
152 ::Block const&,
153 ::IConstBlockSource const&,
154 ::BlockPos const&,
156 ) const;
157
158 MCAPI bool $mayPlace(::BlockSource& region, ::BlockPos const& pos) const;
159
160 MCAPI ::BlockRenderLayer $getRenderLayer(::Block const&, ::BlockSource& region, ::BlockPos const& pos) const;
161
162 MCAPI void $setupRedstoneComponent(::BlockSource& region, ::BlockPos const& pos) const;
163
164 MCAPI void $neighborChanged(::BlockSource& region, ::BlockPos const& pos, ::BlockPos const& neighborPos) const;
165
166 MCFOLD bool $isRailBlock() const;
167
168 MCFOLD bool $canSpawnOn(::Actor*) const;
169
170 MCFOLD bool $isLavaBlocking() const;
171
172 MCAPI void $onGraphicsModeChanged(::BlockGraphicsModeChangeContext const& context);
173
174 MCAPI void $tick(::BlockEvents::BlockQueuedTickEvent& eventData) const;
175
176 MCAPI bool $canSurvive(::BlockSource& region, ::BlockPos const& pos) const;
177
178 MCAPI void $_addHardCodedBlockComponents(::Experiments const&);
179
180 MCAPI void $_onRedstoneUpdate(::BlockEvents::BlockRedstoneUpdateEvent& blockEvent) const;
181
182
183 // NOLINTEND
184};
Definition AABB.h:18
Definition Actor.h:105
Definition BaseRailBlock.h:34
Definition BaseRailBlock.h:26
Definition BlockPlaceEvent.h:16
Definition BlockQueuedTickEvent.h:16
Definition BlockRedstoneUpdateEvent.h:15
Definition BlockPos.h:19
Definition BlockSource.h:68
Definition Block.h:43
Definition Experiments.h:14
Definition GetCollisionShapeInterface.h:13
Definition IConstBlockSource.h:25
Definition optional_ref.h:10
Definition BlockGraphicsModeChangeContext.h:5
Definition context.h:5