Interface FabricLoader


public interface FabricLoader
The public-facing FabricLoader instance.

To obtain a working instance, call getInstance().

Since:
0.4.0
  • Method Details

    • getInstance

      static FabricLoader getInstance()
      Returns the public-facing Fabric Loader instance.
    • getEntrypoints

      <T> List<T> getEntrypoints(String key, Class<T> type)
      Returns all entrypoints declared under a key, assuming they are of a specific type.
      Type Parameters:
      T - the type of entrypoints
      Parameters:
      key - the key in entrypoint declaration in fabric.mod.json
      type - the type of entrypoints
      Returns:
      the obtained entrypoints
      See Also:
    • getEntrypointContainers

      <T> List<EntrypointContainer<T>> getEntrypointContainers(String key, Class<T> type)
      Returns all entrypoints declared under a key, assuming they are of a specific type.

      The entrypoint is declared in the fabric.mod.json as following:

      "entrypoints": { "<a key>": [ <a list of entrypoint declarations> ] }
      Multiple keys can be present in the entrypoints section.

      An entrypoint declaration indicates that an arbitrary notation is sent to a LanguageAdapter to offer an instance of entrypoint. It is either a string, or an object. An object declaration is of this form:

      { "adapter": "<a custom adatper>" "value": "<an arbitrary notation>" }
      A string declaration <an arbitrary notation> is equivalent to
      { "adapter": "default" "value": "<an arbitrary notation>" }
      where the default adapter is the adapter offered by Fabric Loader.

      Type Parameters:
      T - the type of entrypoints
      Parameters:
      key - the key in entrypoint declaration in fabric.mod.json
      type - the type of entrypoints
      Returns:
      the entrypoint containers related to this key
      Throws:
      EntrypointException - if a problem arises during entrypoint creation
      See Also:
    • getObjectShare

      ObjectShare getObjectShare()
      Get the object share for inter-mod communication.

      The share allows mods to exchange data without directly referencing each other. This makes simple interaction easier by eliminating any compile- or run-time dependencies if the shared value type is independent of the mod (only Java/game/Fabric types like collections, primitives, String, Consumer, Function, ...).

      Active interaction is possible as well since the shared values can be arbitrary Java objects. For example exposing a Runnable or Function allows the "API" user to directly invoke some program logic.

      It is required to prefix the share key with the mod id like mymod:someProperty. Mods should not modify entries by other mods. The share is thread safe.

      Returns:
      the global object share instance
      Since:
      0.12.0
    • getMappingResolver

      MappingResolver getMappingResolver()
      Get the current mapping resolver.

      When performing reflection, a mod should always query the mapping resolver for the remapped names of members than relying on other heuristics.

      Returns:
      the current mapping resolver instance
      Since:
      0.4.1
    • getModContainer

      Optional<ModContainer> getModContainer(String id)
      Gets the container for a given mod.
      Parameters:
      id - the ID of the mod
      Returns:
      the mod container, if present
    • getAllMods

      Collection<ModContainer> getAllMods()
      Gets all mod containers.
      Returns:
      a collection of all loaded mod containers
    • isModLoaded

      boolean isModLoaded(String id)
      Checks if a mod with a given ID is loaded.
      Parameters:
      id - the ID of the mod, as defined in fabric.mod.json
      Returns:
      whether or not the mod is present in this Fabric Loader instance
    • isDevelopmentEnvironment

      boolean isDevelopmentEnvironment()
      Checks if Fabric Loader is currently running in a "development" environment. Can be used for enabling debug mode or additional checks.

      This should not be used to make assumptions on certain features, such as mappings, but as a toggle for certain functionalities.

      Returns:
      whether or not Loader is currently in a "development" environment
    • getEnvironmentType

      EnvType getEnvironmentType()
      Get the current environment type.
      Returns:
      the current environment type
    • getGameInstance

      @Deprecated Object getGameInstance()
      Deprecated.
      This method is experimental and it's use is discouraged.
      Get the current game instance. Can represent a game client or server object. As such, the exact return is dependent on the current environment type.

      The game instance may not always be available depending on the game version and environment.

      Returns:
      A client or server instance object
    • getGameDir

      Path getGameDir()
      Get the current game working directory.
      Returns:
      the working directory
    • getGameDirectory

      @Deprecated File getGameDirectory()
      Deprecated.
    • getConfigDir

      Path getConfigDir()
      Get the current directory for game configuration files.
      Returns:
      the configuration directory
    • getConfigDirectory

      @Deprecated File getConfigDirectory()
      Deprecated.
    • getLaunchArguments

      String[] getLaunchArguments(boolean sanitize)
      Gets the command line arguments used to launch the game.

      The implementation will try to strip or obscure sensitive data like authentication tokens if sanitize is set to true. Callers are highly encouraged to enable sanitization as compromising the information can easily happen with logging, exceptions, serialization or other causes.

      There is no guarantee that sanitize covers everything, so the launch arguments should still not be logged or otherwise exposed routinely even if the parameter is set to true. In particular it won't necessarily strip all information that can be used to identify the user.

      Parameters:
      sanitize - Whether to try to remove or obscure sensitive information
      Returns:
      the launch arguments for the game