LeviLamina
Loading...
Searching...
No Matches
IBlockSource.h
1#pragma once
2
3#include "mc/_HeaderOutputPredefine.h"
4
5// auto generated inclusion list
6#include "mc/deps/game_refs/WeakRef.h"
7#include "mc/deps/vanilla_components/IConstBlockSource.h"
8#include "mc/platform/brstd/function_ref.h"
9#include "mc/world/actor/ActorType.h"
10#include "mc/world/level/BlockChangedEventTarget.h"
11#include "mc/world/level/ShapeType.h"
12
13// auto generated forward declare list
14// clang-format off
15class AABB;
16class Actor;
17class Block;
18class BlockActor;
20class BlockPos;
21class BlockSource;
23class ChunkPos;
24class ChunkSource;
25class Dimension;
26class EntityContext;
27class GameEvent;
28class HitResult;
29class ILevel;
30class ItemStackBase;
31class Level;
32class LevelChunk;
33class LevelSeed64;
34class Vec3;
36struct ClipParameters;
37// clang-format on
38
40public:
41 // IBlockSource inner types define
42 using Listener = ::BlockSourceListener;
43
44 using ListenerVector = ::std::vector<::BlockSourceListener*>;
45
46public:
47 // virtual functions
48 // NOLINTBEGIN
49 virtual ::std::vector<::AABB>& fetchAABBs(::AABB const& intersectTestBox, bool withUnloadedChunks) = 0;
50
51 virtual ::std::vector<::AABB>& fetchCollisionShapes(
52 ::AABB const& intersectTestBox,
53 bool withUnloadedChunks,
54 ::std::optional<::EntityContext const> entity,
55 ::std::vector<::AABB>* tempShapes
56 ) = 0;
57
58 virtual ::WeakRef<::BlockSource> getWeakRef() = 0;
59
60 virtual void addListener(::BlockSourceListener& l) = 0;
61
62 virtual void removeListener(::BlockSourceListener& l) = 0;
63
64 virtual ::gsl::span<::gsl::not_null<::Actor*>>
65 fetchEntities(::Actor const* except, ::AABB const& bb, bool useHitbox, bool getDisplayEntities) = 0;
66
67 virtual ::gsl::span<::gsl::not_null<::Actor*>> fetchEntities(
68 ::ActorType entityTypeId,
69 ::AABB const& bb,
70 ::Actor const* except,
71 ::std::function<bool(::Actor*)> selector
72 ) = 0;
73
74 virtual bool setBlock(
75 ::BlockPos const& pos,
76 ::Block const& block,
77 int updateFlags,
78 ::ActorBlockSyncMessage const* syncMsg,
79 ::BlockChangeContext const& changeSourceContext
80 ) = 0;
81
82 virtual bool setExtraBlock(::BlockPos const& pos, ::Block const& block, int updateFlags) = 0;
83
84 virtual bool removeBlock(::BlockPos const& pos, ::BlockChangeContext const& changeSourceContext) = 0;
85
86 virtual short getMinHeight() const = 0;
87
88 virtual short getMaxHeight() const = 0;
89
90 virtual ::Dimension& getDimension() const = 0;
91
92 virtual ::Dimension& getDimension() = 0;
93
94 virtual ::Dimension const& getDimensionConst() const = 0;
95
96 virtual ::LevelChunk* getChunkAt(::BlockPos const& pos) const = 0;
97
98 virtual ::LevelChunk* getChunk(int x, int z) const = 0;
99
100 virtual ::LevelChunk* getChunk(::ChunkPos const& pos) const = 0;
101
102 virtual ::Level& getLevel() = 0;
103
104 virtual ::ILevel& getILevel() const = 0;
105
106 virtual ::LevelSeed64 getLevelSeed64() const = 0;
107
108 virtual short getAboveTopSolidBlock(int x, int z, bool includeWater, bool includeLeaves) const = 0;
109
110 virtual short getAboveTopSolidBlock(
111 ::BlockPos const& pos,
112 bool includeWater,
113 bool includeLeaves,
114 bool iteratePastInitialBlocking
115 ) const = 0;
116
117 virtual short getHeight(::brstd::function_ref<bool(::Block const&)> const& type, ::BlockPos const& pos) const = 0;
118
119 virtual short getHeight(::brstd::function_ref<bool(::Block const&)> const& type, int x, int z) const = 0;
120
121 virtual ::HitResult clip(
122 ::Vec3 const& A,
123 ::Vec3 const& B,
124 bool checkAgainstLiquid,
125 ::ShapeType shapeType,
126 int maxDistance,
127 bool ignoreBorderBlocks,
128 bool fullOnly,
129 ::Actor* actor,
130 ::std::function<bool(::BlockSource const&, ::Block const&, bool)> const& shouldCheckBlock,
131 bool stopOnFirstLiquidHit
132 ) const = 0;
133
134 virtual ::HitResult clip(::ClipParameters const& parameters) const = 0;
135
136 virtual ::ChunkSource& getChunkSource() = 0;
137
138 virtual bool isSolidBlockingBlock(::BlockPos const& p) const = 0;
139
140 virtual bool isSolidBlockingBlock(int x, int y, int z) const = 0;
141
142 virtual bool areChunksFullyLoaded(::BlockPos const& pos, int r) const = 0;
143
144 virtual bool mayPlace(
145 ::Block const& block,
146 ::BlockPos const& pos,
147 uchar face,
148 ::Actor* placer,
149 bool ignoreEntities,
150 ::Vec3 clickPos
151 ) = 0;
152
153 virtual bool canDoBlockDrops(::Actor const* instigatingActor) const = 0;
154
155 virtual bool canDoContainedItemDrops(::Actor const* instigatingActor) const = 0;
156
157 virtual bool isInstaticking(::BlockPos const& pos) const = 0;
158
159 virtual bool checkBlockDestroyPermissions(
160 ::Actor& entity,
161 ::BlockPos const& pos,
162 ::ItemStackBase const& item,
163 bool generateParticle
164 ) = 0;
165
166 virtual bool checkBlockPermissions(
167 ::Actor& entity,
168 ::BlockPos const& blockPos,
169 uchar face,
170 ::ItemStackBase const& item,
171 bool generateParticle
172 ) = 0;
173
174 virtual void postGameEvent(
175 ::Actor* source,
176 ::GameEvent const& gameEvent,
177 ::BlockPos const& originPos,
178 ::Block const* affectedBlock
179 ) = 0;
180
181 virtual void fireBlockChanged(
182 ::BlockPos const& pos,
183 uint layer,
184 ::Block const& block,
185 ::Block const& oldBlock,
186 int flags,
187 ::BlockChangedEventTarget eventTarget,
188 ::ActorBlockSyncMessage const* syncMsg,
189 ::Actor* source
190 ) = 0;
191
192 virtual void fireBlockEntityChanged(::BlockActor& te) = 0;
193
194 virtual void blockEvent(::BlockPos const& pos, int b0, int b1) = 0;
195 // NOLINTEND
196};
Definition AABB.h:18
Definition Actor.h:114
Definition BlockActor.h:27
Definition BlockChangeContext.h:10
Definition BlockPos.h:21
Definition BlockSourceListener.h:18
Definition BlockSource.h:71
Definition Block.h:41
Definition ChunkPos.h:12
Definition ChunkSource.h:38
Definition Dimension.h:86
Definition EntityContext.h:15
Definition GameEvent.h:8
Definition HitResult.h:18
Definition IBlockSource.h:39
Definition IConstBlockSource.h:25
Definition ILevel.h:220
Definition ItemStackBase.h:44
Definition LevelChunk.h:75
Definition LevelSeed64.h:5
Definition Level.h:253
Definition Vec3.h:10
Definition function_ref.h:60
Definition ActorBlockSyncMessage.h:8
Definition ClipParameters.h:16