37 ::ll::TypedStorage<1, 1, bool> mHasBuildDirection;
38 ::ll::TypedStorage<1, 1, bool> mHasLastBuiltPosition;
39 ::ll::TypedStorage<1, 1, bool> mLastBuildBlockWasInteractive;
40 ::ll::TypedStorage<1, 1, bool> mLastBuildBlockWasSnappable;
41 ::ll::TypedStorage<4, 12, ::BlockPos> mLastBuiltBlockPosition;
42 ::ll::TypedStorage<4, 12, ::BlockPos> mBuildDirection;
43 ::ll::TypedStorage<4, 12, ::BlockPos> mNextBuildPos;
44 ::ll::TypedStorage<4, 12, ::Vec3> mInitialClickPos;
45 ::ll::TypedStorage<1, 1, uchar> mContinueFacing;
53 ::ll::TypedStorage<1, 1, bool> mHasDelayElapsed;
54 ::ll::TypedStorage<8, 8, ::std::chrono::steady_clock::time_point> mNewLastBuildTimeIfBlockIsBuilt;
62 ::ll::TypedStorage<4, 12, ::BlockPos const> mHit;
63 ::ll::TypedStorage<1, 1, uchar const> mFacing;
71 ::ll::TypedStorage<4, 12, ::Vec3> mPosDelta;
72 ::ll::TypedStorage<1, 1, bool> mIsSneaking;
79 ::ll::TypedStorage<8, 8, ::Player&> mPlayer;
80 ::ll::TypedStorage<4, 12, ::BlockPos> mDestroyBlockPos;
81 ::ll::TypedStorage<1, 1, uchar> mDestroyBlockFace;
82 ::ll::TypedStorage<4, 4, float> mOldDestroyProgress;
83 ::ll::TypedStorage<4, 4, float> mDestroyProgress;
84 ::ll::TypedStorage<8, 8, double> mLastDestroyTime;
85 ::ll::TypedStorage<4, 4, float> mDistanceTravelled;
86 ::ll::TypedStorage<4, 12, ::Vec3> mPlayerLastPosition;
87 ::ll::TypedStorage<4, 56, ::GameMode::BuildContext> mBuildContext;
88 ::ll::TypedStorage<4, 4, float> mMinPlayerSpeed;
89 ::ll::TypedStorage<4, 4, int> mContinueBreakBlockCount;
90 ::ll::TypedStorage<8, 8, ::std::chrono::steady_clock::time_point> mLastBuildTime;
91 ::ll::TypedStorage<8, 8, ::std::chrono::steady_clock::time_point> mNoDestroyUntil;
92 ::ll::TypedStorage<8, 8, ::std::chrono::steady_clock::time_point> mNoDestroySoundUntil;
93 ::ll::TypedStorage<8, 8, ::std::chrono::milliseconds> creativeDestructionTickDelay;
94 ::ll::TypedStorage<8, 8, ::std::chrono::milliseconds> buildingTickDelay;
95 ::ll::TypedStorage<8, 8, ::std::chrono::milliseconds> destroySoundDelay;
96 ::ll::TypedStorage<8, 8, ::std::unique_ptr<::IGameModeTimer>> mTimer;
97 ::ll::TypedStorage<8, 8, ::std::unique_ptr<::IGameModeMessenger>> mMessenger;
113 virtual bool startDestroyBlock(
::BlockPos const& pos, uchar face,
bool& hasDestroyedBlock);
116 virtual bool destroyBlock(
::BlockPos const& pos, uchar face);
120 continueDestroyBlock(
::BlockPos const& pos, uchar face,
::Vec3 const& playerPos,
bool& hasDestroyedBlock);
123 virtual void stopDestroyBlock(
::BlockPos const& pos);
126 virtual void startBuildBlock(
::BlockPos const& pos, uchar face);
129 virtual bool buildBlock(
::BlockPos const& pos, uchar face,
bool const isSimTick);
132 virtual void continueBuildBlock(
::BlockPos const& pos, uchar face);
135 virtual void stopBuildBlock();
141 virtual float getPickRange(::InputMode
const& currentInputMode);
150 virtual ::InteractionResult useItemOn(
160 virtual bool interact(
::Actor& entity,
::Vec3 const& location);
163 virtual bool attack(
::Actor& entity);
166 virtual void releaseUsingItem();
169 virtual void setTrialMode(
bool);
172 virtual bool isInTrialMode();
175 virtual void registerUpsellScreenCallback(::std::function<
void(
bool)>);
183 ::std::unique_ptr<::IGameModeTimer> timer,
184 ::std::unique_ptr<::IGameModeMessenger> messenger
187 MCAPI
bool _attack(
::Actor& entity,
bool playPredictiveSound);
189 MCAPI ::BlockPos _calculatePlacePos(
::ItemStack& heldStack,
::BlockPos const& pos, uchar& face)
const;
191 MCAPI
bool _canDestroy(
::BlockPos const& pos, uchar);
193 MCAPI
bool _canUseBlock(
::Block const& block);
195 MCAPI
bool _creativeDestroyBlock(
::BlockPos const& pos, uchar face);
197 MCAPI
bool _enableBlockBreakDelay()
const;
199 MCAPI
void _sendPlayerInteractWithBlockAfterEvent(
209 MCAPI
void _sendPlayerInteractWithEntityAfterEvent(
216 MCAPI ::std::optional<::ItemStack>
219 MCAPI ::InteractionResult _sendUseItemOnEvents(
233 MCAPI
float getDestroyRate(
::Block const& block);
235 MCAPI
float getMaxPickRange();
243 ::std::unique_ptr<::IGameModeTimer> timer,
244 ::std::unique_ptr<::IGameModeMessenger> messenger
251 MCAPI
bool $startDestroyBlock(
::BlockPos const& pos, uchar face,
bool& hasDestroyedBlock);
253 MCAPI
bool $destroyBlock(
::BlockPos const& pos, uchar face);
256 $continueDestroyBlock(
::BlockPos const& pos, uchar face,
::Vec3 const& playerPos,
bool& hasDestroyedBlock);
258 MCAPI
void $stopDestroyBlock(
::BlockPos const& pos);
260 MCAPI
void $startBuildBlock(
::BlockPos const& pos, uchar face);
262 MCAPI
bool $buildBlock(
::BlockPos const& pos, uchar face,
bool const isSimTick);
264 MCAPI
void $continueBuildBlock(
::BlockPos const& pos, uchar face);
266 MCAPI
void $stopBuildBlock();
270 MCAPI
float $getPickRange(::InputMode
const& currentInputMode);
276 MCAPI ::InteractionResult $useItemOn(
285 MCAPI
bool $interact(
::Actor& entity,
::Vec3 const& location);
287 MCAPI
bool $attack(
::Actor& entity);
289 MCAPI
void $releaseUsingItem();
291 MCFOLD
void $setTrialMode(
bool);
293 MCFOLD
bool $isInTrialMode();
295 MCFOLD
void $registerUpsellScreenCallback(::std::function<
void(
bool)>);