You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
- Default API methods use plugin-level owner scope for predictable lifecycle behavior.
36
+
- If one plugin/software process multiplexes multiple components through one wrapper class, use optional scoped lifecycle facades (`DataProviderAPI.scope(...)`) to preserve component isolation.
37
+
- Explicit plugin-wide cleanup is available for shutdown flows that span multiple caller scopes.
33
38
- Stale/disconnected providers are evicted from registry lookup paths.
34
39
- Shutdown hooks unregister or stop backend resources cleanly.
35
40
- Bounded executors are used for asynchronous backend work queues.
41
+
- Platform runtime wrappers use a shared thread-safe lifecycle holder to prevent stale instance leaks across enable/disable cycles.
42
+
43
+
## Platform Layer Design
44
+
45
+
-`PlatformDataProviderRuntime` centralizes bootstrap shutdown behavior and startup rollback handling.
46
+
- Platform command adapters delegate to a shared `DataProviderCommandService` so Bukkit and Velocity command behavior stays identical.
47
+
- Command service exposes diagnostics-focused admin commands (`status`, `config`, `reload`) with permission-gated filtering and runtime health summaries.
48
+
- API discovery is platform-native: Bukkit registers `DataProviderAPI` in `ServicesManager`; Velocity exposes `DataProviderApiSupplier` on plugin instance.
49
+
- Platform-specific wrappers only map host APIs to shared internals (logger, command registration, event/plugin lifecycle hooks).
0 commit comments