LeviLamina
Loading...
Searching...
No Matches
BlockTickingQueue.h
1#pragma once
2
3#include "mc/_HeaderOutputPredefine.h"
4#include "mc/world/level/TickNextTickData.h"
5
6// auto generated inclusion list
7#include "mc/deps/core/container/MovePriorityQueue.h"
8#include "mc/platform/brstd/function_ref.h"
9#include "mc/world/level/Tick.h"
10#include "mc/world/level/TickNextTickData.h"
11#include "mc/world/level/TickingQueueType.h"
12
13// auto generated forward declare list
14// clang-format off
15class Block;
16class BlockPalette;
17class BlockPos;
18class BlockSource;
19class BlockType;
20class BoundingBox;
21class CompoundTag;
22class LevelChunk;
23class ListTag;
24struct TickDelayBlock;
25// clang-format on
26
28public:
29 // BlockTickingQueue inner types declare
30 // clang-format off
31 class BlockTick;
32 struct HashBlockTick;
33 class TickDataSet;
34 // clang-format on
35
36 // BlockTickingQueue inner types define
37 class BlockTick {
38 public:
39 [[nodiscard]] bool operator>(BlockTick const& other) const { return mData > other.mData; }
40
41 public:
42 // member variables
43 // NOLINTBEGIN
44 bool mIsRemoved;
46 // NOLINTEND
47 };
48
49 struct HashBlockTick {};
50
51
53 : public ::MovePriorityQueue<::BlockTickingQueue::BlockTick, ::std::greater<::BlockTickingQueue::BlockTick>> {
54 public:
55 // member functions
56 // NOLINTBEGIN
57 MCAPI void _pruneQueueForMemory();
58 // NOLINTEND
59 };
60
61public:
62 // member variables
63 // NOLINTBEGIN
64 ::ll::TypedStorage<8, 8, ::LevelChunk*> mOwningChunk;
65 ::ll::TypedStorage<8, 8, ::Tick> mCurrentTick;
66 ::ll::TypedStorage<8, 24, ::BlockTickingQueue::TickDataSet> mNextTickQueue;
67 ::ll::TypedStorage<8, 24, ::BlockTickingQueue::TickDataSet> mActiveTickQueue;
68 ::ll::TypedStorage<8, 24, ::BlockTickingQueue::TickDataSet> mDeferredTicks;
69 ::ll::TypedStorage<1, 1, ::TickingQueueType> mQueueType;
70 ::ll::TypedStorage<1, 1, bool> mInstaTick;
71 // NOLINTEND
72
73public:
74 // member functions
75 // NOLINTBEGIN
76 MCAPI void _acquireAllTicks(::BlockTickingQueue& otherChunkQueue);
77
78 MCAPI void _addToNextTickQueue(::BlockPos const& pos, ::Block const& block, int tickDelay, int priorityOffset);
79
80 MCAPI void _eliminateTicksForZeroAndAbove(::BlockTickingQueue::TickDataSet& queue);
81
82 MCAPI void _saveQueue(::ListTag& list, ::BlockTickingQueue::TickDataSet const& queue) const;
83
84 MCAPI void acquireAllRandomTicks(::LevelChunk& lc);
85
86 MCAPI void acquireAllTicks(::LevelChunk& lc);
87
88 MCAPI void acquireAllTicks(::BlockTickingQueue& otherQueue);
89
90 MCAPI void
91 add(::BlockSource& region, ::BlockPos const& pos, ::Block const& block, int tickDelay, int priorityOffset);
92
93 MCAPI void addTickToLevelChunk(
94 ::LevelChunk& lc,
95 ::BlockPos const& pos,
96 ::Block const& block,
97 int tickDelay,
98 int priorityOffset
99 );
100
101 MCAPI void eliminateAllTicksZeroAndAbove();
102
103 MCAPI void eliminateDuplicatesOf(::BlockType const& block);
104
105 MCAPI void finishInstaticking();
106
107 MCAPI bool getNextUpdateForPos(::BlockPos const& pos, ::Tick& tick) const;
108
109 MCAPI ::std::optional<::Tick> getTickDelayForNextTickUpdateAtPos(::BlockPos const& pos) const;
110
111 MCAPI ::std::unordered_multimap<::BlockPos, ::TickDelayBlock>
112 getTickDelaysInArea(::BoundingBox const& boundingBox) const;
113
114 MCAPI bool hasTickInPendingTicks(::BlockPos const& pos) const;
115
116 MCAPI bool isEmpty() const;
117
118 MCAPI bool isInNextTickQueue(::BlockPos const& pos, ::BlockType const& blockType, int tickDelay) const;
119
120 MCAPI void load(::CompoundTag const& tag, ::BlockPalette const& palette);
121
122 MCAPI void remove(::brstd::function_ref<bool(::TickNextTickData const&)> removeCondition);
123
124 MCAPI void remove(::BlockPos const& pos, ::Block const& block);
125
126 MCAPI void save(::CompoundTag& tag) const;
127
128 MCFOLD void setOwningChunk(::LevelChunk* owningChunk);
129
130 MCAPI void tickAllPendingTicks(::BlockSource& region, uint64 maximumTicksAllowed);
131
132 MCAPI bool tickPendingTicks(::BlockSource& region, ::Tick const& until, int max, bool instaTick_);
133
134 MCAPI int ticksFromNow(int offset) const;
135
136 MCAPI ~BlockTickingQueue();
137 // NOLINTEND
138
139public:
140 // destructor thunk
141 // NOLINTBEGIN
142 MCFOLD void $dtor();
143 // NOLINTEND
144};
Definition BlockPalette.h:21
Definition BlockPos.h:21
Definition BlockSource.h:73
Definition BlockTickingQueue.h:37
Definition BlockTickingQueue.h:53
Definition BlockTickingQueue.h:27
Definition BlockType.h:84
Definition Block.h:69
Definition BoundingBox.h:13
Definition CompoundTag.h:23
Definition LevelChunk.h:87
Definition ListTag.h:21
Definition MovePriorityQueue.h:6
Definition TickNextTickData.h:16
Definition function_ref.h:60
Definition BlockTickingQueue.h:49
Definition TickDelayBlock.h:10
Definition Tick.h:5