1- #include " mc/world/level/Level.h"
1+ #include " magic_enum/magic_enum.hpp"
2+
3+ #include " mc/world/level/Level.h"
24#include " mc/world/level/Tick.h"
5+ #include " mc/world/Minecraft.h"
6+ #include " mc/server/ServerInstance.h"
37
48#include " ll/api/memory/Hook.h"
59
913
1014using namespace pc ;
1115
16+ LL_AUTO_TYPE_INSTANCE_HOOK (
17+ LevelInitializeHook,
18+ HookPriority::Normal,
19+ ::Level,
20+ &::Level::$initialize,
21+ bool ,
22+ ::std::string const & levelName,
23+ ::LevelSettings const & levelSettings,
24+ ::Experiments const & experiments,
25+ ::std::string const * levelId,
26+ ::std::optional<::std::reference_wrapper<
27+ ::std::unordered_map<::std::string, ::std::unique_ptr<::BiomeJsonDocumentGlue::ResolvedBiomeData>>>>
28+ biomeIdToResolvedData
29+ ) {
30+ if (isClientSide ()) {
31+ CallbackManager::getInstance ().invokeCallback (" OnClientLevelInitialize" , levelName);
32+ } else {
33+ CallbackManager::getInstance ().invokeCallback (" OnServerLevelInitialize" , levelName);
34+ }
35+ return origin (levelName, levelSettings, experiments, levelId, biomeIdToResolvedData);
36+ }
37+
1238LL_AUTO_TYPE_INSTANCE_HOOK (
1339 LevelTickHook,
1440 HookPriority::Normal,
1541 ::Level,
1642 &::Level::$tick,
17- void ) {
43+ void
44+ ) {
1845 {
1946 Game::EventScope scope;
2047 if (isClientSide ()) {
@@ -35,3 +62,30 @@ LL_AUTO_TYPE_INSTANCE_HOOK(
3562 }
3663 return origin ();
3764}
65+
66+ LL_AUTO_TYPE_INSTANCE_HOOK (
67+ MinecraftStartLeaveGameHook,
68+ HookPriority::Normal,
69+ ::Minecraft,
70+ &::Minecraft::startLeaveGame,
71+ void ,
72+ bool stopNetwork
73+ ) {
74+ if (getLevel ()->isClientSide ()) {
75+ CallbackManager::getInstance ().invokeCallback (" OnClientStartLeaveGame" , stopNetwork);
76+ } else {
77+ CallbackManager::getInstance ().invokeCallback (" OnServerStartLeaveGame" , stopNetwork);
78+ }
79+ return origin (stopNetwork);
80+ }
81+
82+ LL_AUTO_TYPE_INSTANCE_HOOK (
83+ ServerInstanceOnLevelCorruptHook,
84+ HookPriority::Normal,
85+ ::ServerInstance,
86+ &::ServerInstance::$onLevelCorrupt,
87+ void
88+ ) {
89+ CallbackManager::getInstance ().invokeCallback (" OnServerLevelCorrupt" );
90+ return origin ();
91+ }
0 commit comments