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
79 _addToNextTickQueue(::BlockPos const& pos, ::Block const& block, int const tickDelay, int const priorityOffset);
80
81 MCAPI void _eliminateTicksForZeroAndAbove(::BlockTickingQueue::TickDataSet& queue);
82
83 MCAPI void _saveQueue(::ListTag& list, ::BlockTickingQueue::TickDataSet const& queue) const;
84
85 MCAPI void
86 add(::BlockSource& region, ::BlockPos const& pos, ::Block const& block, int tickDelay, int priorityOffset);
87
88 MCAPI void addTickToLevelChunk(
89 ::LevelChunk& lc,
90 ::BlockPos const& pos,
91 ::Block const& block,
92 int tickDelay,
93 int priorityOffset
94 );
95
96 MCAPI void eliminateDuplicatesOf(::BlockType const& block);
97
98 MCAPI void finishInstaticking();
99
100 MCAPI bool getNextUpdateForPos(::BlockPos const& pos, ::Tick& tick) const;
101
102 MCAPI ::std::unordered_multimap<::BlockPos, ::TickDelayBlock>
103 getTickDelaysInArea(::BoundingBox const& boundingBox) const;
104
105 MCAPI void load(::CompoundTag const& tag, ::BlockPalette const& palette);
106
107 MCAPI void remove(::brstd::function_ref<bool(::TickNextTickData const&)> removeCondition);
108
109 MCAPI void remove(::BlockPos const& pos, ::Block const& block);
110
111 MCAPI void save(::CompoundTag& tag) const;
112
113 MCAPI bool tickPendingTicks(::BlockSource& region, ::Tick const& until, int max, bool instaTick_);
114
115 MCAPI ~BlockTickingQueue();
116 // NOLINTEND
117
118public:
119 // destructor thunk
120 // NOLINTBEGIN
121 MCAPI void $dtor();
122 // NOLINTEND
123};
Definition BlockPalette.h:18
Definition BlockPos.h:17
Definition BlockSource.h:71
Definition BlockTickingQueue.h:37
Definition BlockTickingQueue.h:53
Definition BlockTickingQueue.h:27
Definition BlockType.h:79
Definition Block.h:41
Definition BoundingBox.h:13
Definition CompoundTag.h:18
Definition LevelChunk.h:77
Definition ListTag.h:19
Definition MovePriorityQueue.h:6
Definition TickNextTickData.h:14
Definition function_ref.h:60
Definition BlockTickingQueue.h:49
Definition TickDelayBlock.h:10
Definition Tick.h:5