Skip to content
LeviMC
English
AutoLightDark
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 MCNAPI 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 MCNAPI void _acquireAllTicks(::BlockTickingQueue& otherChunkQueue);
77
78#ifdef LL_PLAT_C
79 MCNAPI void _addToNextTickQueue(::BlockPos const& pos, ::Block const& block, int tickDelay, int priorityOffset);
80#endif
81
82#ifdef LL_PLAT_S
83 MCNAPI void
84 _addToNextTickQueue(::BlockPos const& pos, ::Block const& block, int const tickDelay, int const priorityOffset);
85#endif
86
88
89 MCNAPI void _saveQueue(::ListTag& list, ::BlockTickingQueue::TickDataSet const& queue) const;
90
91 MCAPI void
92 add(::BlockSource& region, ::BlockPos const& pos, ::Block const& block, int tickDelay, int priorityOffset);
93
94 MCAPI void addTickToLevelChunk(
95 ::LevelChunk& lc,
96 ::BlockPos const& pos,
97 ::Block const& block,
98 int tickDelay,
99 int priorityOffset
100 );
101
102 MCNAPI void eliminateDuplicatesOf(::BlockType const& block);
103
104 MCNAPI void finishInstaticking();
105
106 MCAPI bool getNextUpdateForPos(::BlockPos const& pos, ::Tick& tick) const;
107
108 MCNAPI ::std::unordered_multimap<::BlockPos, ::TickDelayBlock>
109 getTickDelaysInArea(::BoundingBox const& boundingBox) const;
110
111 MCNAPI void load(::CompoundTag const& tag, ::BlockPalette const& palette);
112
113 MCNAPI void remove(::brstd::function_ref<bool(::TickNextTickData const&)> removeCondition);
114
115 MCNAPI void remove(::BlockPos const& pos, ::Block const& block);
116
117 MCNAPI void save(::CompoundTag& tag) const;
118
119 MCAPI bool tickPendingTicks(::BlockSource& region, ::Tick const& until, int max, bool instaTick_);
120
122 // NOLINTEND
123
124public:
125 // destructor thunk
126 // NOLINTBEGIN
127 MCNAPI void $dtor();
128 // NOLINTEND
129};
Definition BlockPalette.h:18
Definition BlockPos.h:14
Definition BlockSource.h:72
Definition BlockTickingQueue.h:37
Definition BlockTickingQueue.h:53
Definition BlockTickingQueue.h:27
MCAPI ::std::unordered_multimap<::BlockPos, ::TickDelayBlock > getTickDelaysInArea(::BoundingBox const &boundingBox) const
MCAPI void _eliminateTicksForZeroAndAbove(::BlockTickingQueue::TickDataSet &queue)
MCAPI void _acquireAllTicks(::BlockTickingQueue &otherChunkQueue)
MCAPI void eliminateDuplicatesOf(::BlockType const &block)
MCAPI void remove(::brstd::function_ref< bool(::TickNextTickData const &)> removeCondition)
MCAPI void _saveQueue(::ListTag &list, ::BlockTickingQueue::TickDataSet const &queue) const
MCAPI void load(::CompoundTag const &tag, ::BlockPalette const &palette)
MCAPI void save(::CompoundTag &tag) const
MCAPI void finishInstaticking()
MCAPI void $dtor()
MCAPI ~BlockTickingQueue()
MCAPI void remove(::BlockPos const &pos, ::Block const &block)
Definition BlockType.h:79
Definition Block.h:42
Definition BoundingBox.h:13
Definition CompoundTag.h:18
Definition LevelChunk.h:76
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