Class MagicRuntime

java.lang.Object
dev.ua.theroer.magicutils.bootstrap.MagicRuntime
All Implemented Interfaces:
AutoCloseable

public final class MagicRuntime extends Object implements AutoCloseable
Shared runtime container for MagicUtils-powered plugins and mods.

The runtime tracks core services, exposes a lightweight typed component registry, and owns shutdown actions/resources that should be cleaned up when the platform stops.

  • Method Details

    • builder

      public static MagicRuntime.Builder builder(Platform platform, ConfigManager configManager, LoggerCore logger)
      Creates a builder for a runtime rooted in the given core services.
      Parameters:
      platform - platform adapter
      configManager - config manager
      logger - logger core
      Returns:
      builder instance
    • platform

      public Platform platform()
      Returns the platform adapter.
      Returns:
      platform instance
    • configManager

      public ConfigManager configManager()
      Returns the config manager owned by the runtime.
      Returns:
      config manager
    • logger

      public LoggerCore logger()
      Returns the logger core.
      Returns:
      logger core
    • languageManager

      @Nullable public @Nullable LanguageManager languageManager()
      Returns the language manager when one was configured.
      Returns:
      language manager or null
    • components

      public Map<Class<?>,Object> components()
      Returns a snapshot of registered typed components.
      Returns:
      immutable component map snapshot
    • namedComponents

      public Map<String,Object> namedComponents()
      Returns a snapshot of named components registered in the runtime.
      Returns:
      immutable named component map snapshot
    • isClosed

      public boolean isClosed()
      Returns true when the runtime has already been closed.
      Returns:
      closed flag
    • putComponent

      public <T> T putComponent(Class<T> type, T component)
      Registers or replaces a typed component.
      Type Parameters:
      T - component type
      Parameters:
      type - component key
      component - component instance
      Returns:
      the provided component
    • putNamedComponent

      public <T> T putNamedComponent(String name, T component)
      Registers or replaces a named component.
      Type Parameters:
      T - component type
      Parameters:
      name - component name
      component - component instance
      Returns:
      the provided component
    • removeNamedComponent

      @Nullable public @Nullable Object removeNamedComponent(String name)
      Removes a named component.
      Parameters:
      name - component name
      Returns:
      removed component or null when absent
    • onStateChanged

      public MagicRuntime onStateChanged(Runnable listener)
      Registers a listener that is invoked whenever runtime component state changes.
      Parameters:
      listener - listener to invoke after component registry updates
      Returns:
      runtime for chaining
    • onClose

      public MagicRuntime onClose(String name, Runnable action)
      Registers a shutdown action.
      Parameters:
      name - debug label for logging
      action - action to run during close
      Returns:
      runtime for chaining
    • manage

      @Nullable public <T extends AutoCloseable> T manage(String name, @Nullable T closeable)
      Registers a closeable resource.
      Type Parameters:
      T - closeable type
      Parameters:
      name - debug label for logging
      closeable - closeable resource
      Returns:
      the same resource
    • findComponent

      public <T> Optional<T> findComponent(Class<T> type)
      Returns a component by exact or assignable type.
      Type Parameters:
      T - component type
      Parameters:
      type - component type
      Returns:
      optional component
    • findNamedComponent

      public Optional<Object> findNamedComponent(String name)
      Returns a named component by name.
      Parameters:
      name - component name
      Returns:
      optional component
    • findNamedComponent

      public <T> Optional<T> findNamedComponent(String name, Class<T> type)
      Returns a named component when it matches the requested type.
      Type Parameters:
      T - component type
      Parameters:
      name - component name
      type - expected component type
      Returns:
      optional typed component
    • requireComponent

      public <T> T requireComponent(Class<T> type)
      Returns a component or throws when missing.
      Type Parameters:
      T - component type
      Parameters:
      type - component type
      Returns:
      component instance
    • requireNamedComponent

      public <T> T requireNamedComponent(String name, Class<T> type)
      Returns a named component or throws when missing.
      Type Parameters:
      T - component type
      Parameters:
      name - component name
      type - expected component type
      Returns:
      component instance
    • resource

      public <T extends AutoCloseable> MagicRuntimeResource<T> resource(String name)
      Creates a managed runtime resource handle.
      Type Parameters:
      T - resource type
      Parameters:
      name - resource name used for runtime registration
      Returns:
      managed resource handle
    • resource

      public <T extends AutoCloseable> MagicRuntimeResource<T> resource(String name, @Nullable T initial)
      Creates a managed runtime resource handle with an initial resource.
      Type Parameters:
      T - resource type
      Parameters:
      name - resource name used for runtime registration
      initial - initial resource, optionally null
      Returns:
      managed resource handle
    • bindConfig

      public <C, T extends AutoCloseable> MagicRuntimeConfigBinding<C,T> bindConfig(String name, Class<C> configClass, Function<C, ? extends T> factory, String... sections)
      Creates a config-aware managed resource binding that rebuilds the resource when the target config changes.
      Type Parameters:
      C - config type
      T - resource type
      Parameters:
      name - resource name used for runtime registration
      configClass - config class driving the resource
      factory - resource factory receiving the current config instance
      sections - optional sections that should trigger a rebuild
      Returns:
      config-aware managed resource binding
    • close

      public void close()
      Specified by:
      close in interface AutoCloseable