LeviLamina
Loading...
Searching...
No Matches
ServerScriptManager.h
1#pragma once
2
3#include "mc/_HeaderOutputPredefine.h"
4#include "mc/deps/core/threading/Scheduler.h"
5#include "mc/deps/script_core/script_engine/scripting/DependencyLocator.h"
6#include "mc/scripting/ScriptFormPromiseTracker.h"
7#include "mc/scripting/ScriptPluginManager.h"
8#include "mc/scripting/ScriptPluginResult.h"
9#include "mc/scripting/ScriptSettings.h"
10#include "mc/scripting/ScriptTickListener.h"
11#include "mc/scripting/debugger/ScriptDebugger.h"
12#include "mc/scripting/debugger/ScriptDebuggerWatchdog.h"
13
14
15// auto generated inclusion list
16#include "mc/deps/core/utility/NonOwnerPointer.h"
17#include "mc/deps/game_refs/OwnerPtr.h"
18#include "mc/scripting/PluginExecutionGroup.h"
19#include "mc/scripting/RegisterDiagnosticsStatsTypes.h"
20#include "mc/scripting/ScriptSettings.h"
21#include "mc/scripting/ServerScriptManagerEvents.h"
22#include "mc/scripting/modules/FilterResult.h"
23#include "mc/world/events/EventListenerDispatcher.h"
24#include "mc/world/events/EventResult.h"
25#include "mc/world/events/LevelEventListener.h"
26#include "mc/world/events/ServerInstanceEventListener.h"
27
28// auto generated forward declare list
29// clang-format off
38class ItemRegistryRef;
42class PackManifest;
43class Scheduler;
46class ScriptDebugger;
53class ScriptTaskGroup;
55class ScriptWatchdog;
56class ServerInstance;
57class ServerLevel;
61namespace ScriptModuleMinecraft { class CustomCommandRegistry; }
62namespace ScriptModuleMinecraft { class IScriptItemCustomComponentRegistry; }
63namespace ScriptModuleMinecraft { class ScriptBlockCustomComponentsRegistry; }
64namespace ScriptModuleMinecraft { class ScriptCustomComponentParameterCache; }
65namespace ScriptModuleMinecraft { class ScriptCustomDimensionRegistry; }
66namespace ScriptModuleMinecraft { class ScriptCustomSpawnRulesRegistry; }
67namespace ScriptModuleMinecraft { class ScriptCustomWorldClockRegistry; }
68namespace ScriptModuleMinecraft { class ScriptGlobalEventListeners; }
69namespace Scripting { class DependencyLocator; }
70namespace Scripting { class IRuntime; }
71namespace Scripting { class RegistryManager; }
72namespace Scripting { class ScriptEngine; }
73namespace Scripting { struct ModuleDescriptor; }
74namespace cereal { struct ReflectionCtx; }
75// clang-format on
76
77class ServerScriptManager : public ::EventListenerDispatcher<::ServerInstanceEventListener>,
78 public ::EventListenerDispatcher<::LevelEventListener> {
79public:
80 // ServerScriptManager inner types define
81 enum class RuntimeVersion : int {
82 V1 = 1,
83 V2 = 2,
84 };
85
86public:
87 // member variables
88 // NOLINTBEGIN
89 ::ll::TypedStorage<8, 144, ::ServerScriptManagerEvents> mScriptStateEvents;
90 ::ll::TypedStorage<8, 800, ::ScriptSettings> mSettings;
91 ::ll::TypedStorage<8, 8, ::ServerLevel&> mServerLevel;
92 ::ll::TypedStorage<8, 16, ::std::shared_ptr<::ScriptPackSettingsCache>> mPackSettingsCache;
93 ::ll::TypedStorage<8, 24, ::Bedrock::NonOwnerPointer<::Scheduler>> mServerScheduler;
94 ::ll::TypedStorage<8, 8, ::std::unique_ptr<::cereal::ReflectionCtx>> mCerealContext;
95 ::ll::TypedStorage<1, 1, ::RegisterDiagnosticsStatsTypes> mRegisterDiagnosticsStatsTypes;
96 ::ll::TypedStorage<8, 8, ::std::unique_ptr<::IScriptTelemetryLogger>> mTelemetryLogger;
97 ::ll::TypedStorage<8, 8, ::std::unique_ptr<::DebuggerClientDiagnosticsListener>> mClientDiagnosticsListener;
98 ::ll::TypedStorage<8, 8, ::std::unique_ptr<::LevelEventHandlerRegistrar>> mLevelEventHandlerRegistrar;
99 ::ll::TypedStorage<8, 8, ::std::unique_ptr<::ScriptModuleMinecraft::CustomCommandRegistry>> mCustomCommandRegistry;
100 ::ll::TypedStorage<8, 8, ::std::unique_ptr<::ScriptModuleMinecraft::ScriptCustomComponentParameterCache>>
101 mCustomComponentParameterCache;
102 ::ll::TypedStorage<8, 16, ::OwnerPtr<::ScriptModuleMinecraft::ScriptBlockCustomComponentsRegistry>>
103 mBlockCustomComponentsRegistry;
104 ::ll::TypedStorage<8, 16, ::OwnerPtr<::ScriptModuleMinecraft::IScriptItemCustomComponentRegistry>>
105 mItemCustomComponentRegistry;
106 ::ll::TypedStorage<8, 8, ::std::unique_ptr<::ScriptModuleMinecraft::ScriptCustomSpawnRulesRegistry>>
107 mCustomSpawnRulesRegistry;
108 ::ll::TypedStorage<8, 8, ::std::unique_ptr<::ScriptModuleMinecraft::ScriptCustomDimensionRegistry>>
109 mCustomDimensionRegistry;
110 ::ll::TypedStorage<8, 8, ::std::unique_ptr<::ScriptModuleMinecraft::ScriptCustomWorldClockRegistry>>
111 mCustomWorldClockRegistry;
112 ::ll::TypedStorage<8, 8, ::std::unique_ptr<::ScriptModuleMinecraft::ScriptGlobalEventListeners>>
113 mGlobalEventListeners;
114 ::ll::TypedStorage<8, 8, ::std::unique_ptr<::IScriptServerNetworkInterface>> mServerNetworkInterface;
115 ::ll::TypedStorage<8, 8, ::std::unique_ptr<::Scripting::ScriptEngine>> mScriptEngine;
116 ::ll::TypedStorage<8, 8, ::std::unique_ptr<::ScriptPluginManager>> mScriptPluginManager;
117 ::ll::TypedStorage<8, 8, ::std::unique_ptr<::ScriptAsyncJobCoordinator>> mAsyncJobCoordinator;
118 ::ll::TypedStorage<8, 8, ::std::unique_ptr<::ScriptFormPromiseTracker>> mFormPromiseTracker;
119 ::ll::TypedStorage<8, 8, ::std::unique_ptr<::ScriptDebuggerWatchdog>> mScriptDebuggerWatchdog;
120 ::ll::TypedStorage<8, 8, ::std::unique_ptr<::ScriptDebugger>> mScriptDebugger;
121 ::ll::TypedStorage<8, 24, ::Bedrock::NonOwnerPointer<::DebuggerDiagnostics>> mDiagnostics;
122 ::ll::TypedStorage<8, 8, ::std::unique_ptr<::DebuggerDiagnosticsPublishToFile>> mDiagnosticsPublishToFile;
123 ::ll::TypedStorage<8, 8, ::std::unique_ptr<::DebuggerDiagnosticsCollectors>> mScriptDiagnosticsCollectors;
124 ::ll::TypedStorage<8, 8, ::std::unique_ptr<::ScriptTickListener>> mScriptTickListener;
125 ::ll::TypedStorage<8, 8, ::std::unique_ptr<::ScriptTaskGroup>> mScriptTaskGroup;
126 ::ll::TypedStorage<8, 8, ::std::unique_ptr<::ScriptContentLogEndPoint>> mScriptContentLogEndPoint;
127 ::ll::TypedStorage<8, 8, ::std::unique_ptr<::ScriptWatchdog>> mScriptWatchdog;
128 ::ll::TypedStorage<8, 8, ::std::unique_ptr<::AsyncJoinRegistrar>> mAsyncJoinRegistrar;
129 ::ll::TypedStorage<8, 8, ::std::unique_ptr<::InstanceIdGenerator>> mInstanceIdGenerator;
130 ::ll::TypedStorage<8, 8, ::std::unique_ptr<::Scripting::DependencyLocator>> mDependencyLocator;
131 ::ll::TypedStorage<8, 24, ::std::vector<::std::shared_ptr<::Scripting::IRuntime>>> mSharedRuntimes;
132 ::ll::TypedStorage<
133 8,
134 24,
135 ::std::vector<::std::function<::ScriptModuleFilters::FilterResult(
136 ::PackManifest const&,
140 )>>>
141 mModuleFilters;
142 // NOLINTEND
143
144public:
145 // prevent constructor by default
146 ServerScriptManager& operator=(ServerScriptManager const&);
147 ServerScriptManager(ServerScriptManager const&);
148 ServerScriptManager();
149
150public:
151 // virtual functions
152 // NOLINTBEGIN
153 virtual ~ServerScriptManager() /*override*/ = default;
154
155 virtual ::EventResult onServerUpdateEnd(::ServerInstance& instance) /*override*/;
156
157 virtual ::EventResult onServerThreadStarted(::ServerInstance& instance) /*override*/;
158
159 virtual ::EventResult onEvent(::ServerInstanceRequestResourceReload const& reloadEvent) /*override*/;
160
161 virtual ::EventResult onEvent(::LevelStartLeaveGameEvent const& levelStartLeaveGameEvent) /*override*/;
162 // NOLINTEND
163
164public:
165 // member functions
166 // NOLINTBEGIN
167 MCAPI ServerScriptManager(
168 ::ScriptSettings&& settings,
169 ::ServerLevel& serverLevel,
170 ::std::shared_ptr<::ScriptPackSettingsCache> packSettingsCache,
172 ::MinecraftCommands& commands,
173 ::IMinecraftEventing& eventing,
174 ::ItemRegistryRef itemRegistry,
175 ::ServerInstance& server,
178 ::std::unique_ptr<::AsyncJoinRegistrar>&& asyncJoinRegistrar,
180 );
181
182 MCAPI void _checkForSystemPackErrors(::ScriptPluginManagerResult const& result);
183
184 MCAPI void _loadPlugins(::ServerLevel& serverLevel, bool fromReload);
185
186 MCAPI void _runPlugins(::PluginExecutionGroup exeGroup, ::ServerInstance& serverInstance);
187
188 MCAPI void addModuleFilter(
189 ::std::function<::ScriptModuleFilters::FilterResult(
190 ::PackManifest const&,
194 )> moduleFilter
195 );
196
197 MCAPI void setBlockCustomComponentCerealContext(::cereal::ReflectionCtx& ctx);
198 // NOLINTEND
199
200public:
201 // constructor thunks
202 // NOLINTBEGIN
203 MCAPI void* $ctor(
204 ::ScriptSettings&& settings,
205 ::ServerLevel& serverLevel,
206 ::std::shared_ptr<::ScriptPackSettingsCache> packSettingsCache,
208 ::MinecraftCommands& commands,
209 ::IMinecraftEventing& eventing,
210 ::ItemRegistryRef itemRegistry,
211 ::ServerInstance& server,
214 ::std::unique_ptr<::AsyncJoinRegistrar>&& asyncJoinRegistrar,
216 );
217 // NOLINTEND
218
219public:
220 // virtual function thunks
221 // NOLINTBEGIN
222 MCAPI ::EventResult $onServerUpdateEnd(::ServerInstance& instance);
223
224 MCAPI ::EventResult $onServerThreadStarted(::ServerInstance& instance);
225
226 MCAPI ::EventResult $onEvent(::ServerInstanceRequestResourceReload const& reloadEvent);
227
228 MCAPI ::EventResult $onEvent(::LevelStartLeaveGameEvent const& levelStartLeaveGameEvent);
229
230
231 // NOLINTEND
232};
Definition AsyncJoinRegistrar.h:18
Definition NonOwnerPointer.h:9
Definition DebuggerClientDiagnosticsListener.h:15
Definition DebuggerDiagnosticsCollectors.h:15
Definition DebuggerDiagnosticsPublishToFile.h:17
Definition DebuggerDiagnostics.h:14
Definition EventListenerDispatcher.h:6
Definition IMinecraftEventing.h:147
Definition IScriptServerNetworkInterface.h:19
Definition IScriptTelemetryLogger.h:10
Definition ItemRegistryRef.h:41
Definition LevelEventHandlerRegistrar.h:10
Definition LocalProfilerControlBroker.h:11
Definition MinecraftCommands.h:33
Definition PackManifest.h:39
Definition Scheduler.h:14
Definition ScriptAsyncJobCoordinator.h:15
Definition ScriptContentLogEndPoint.h:10
Definition ScriptDebuggerWatchdog.h:8
Definition ScriptDebugger.h:28
Definition ScriptFormPromiseTracker.h:37
Definition CustomCommandRegistry.h:21
Definition IScriptItemCustomComponentRegistry.h:20
Definition ScriptBlockCustomComponentsRegistry.h:62
Definition ScriptCustomComponentParameterCache.h:21
Definition ScriptCustomDimensionRegistry.h:19
Definition ScriptCustomSpawnRulesRegistry.h:21
Definition ScriptCustomWorldClockRegistry.h:17
Definition ScriptGlobalEventListeners.h:28
Definition ScriptPackSettingsCache.h:16
Definition ScriptPluginManagerResult.h:12
Definition ScriptPluginManager.h:33
Definition ScriptPluginResult.h:9
Definition ScriptTaskGroup.h:13
Definition ScriptTickListener.h:22
Definition ScriptWatchdog.h:10
Definition DependencyLocator.h:7
Definition IRuntime.h:37
Definition RegistryManager.h:12
Definition ScriptEngine.h:21
Definition ServerInstance.h:76
Definition ServerLevel.h:57
Definition InstanceIdGenerator.h:8
Definition LevelStartLeaveGameEvent.h:13
Definition ScriptSettings.h:19
Definition ModuleDescriptor.h:7
Definition ServerInstanceRequestResourceReload.h:13
Definition ReflectionCtx.h:11
Definition ctx.h:5