# BeardLib Class

Updated for version 4.0.

## BeardLib class

Contains a few useful functions.

### Variables

| Parameter  | Type   | Description                                                           |
| ---------- | ------ | --------------------------------------------------------------------- |
| Name       | String | The name of mod which of course is "BeardLib"                         |
| ModPath    | String | Path to BeardLib's folder. Generally mods/BeardLib                    |
| Frameworks | Table  | A table holding all frameworks of BeardLib                            |
| Managers   | Table  | A table holding all managers of BeardLib                              |
| Menus      | Table  | A table holding the menus of BeardLib (mods manager and achievements) |
| MusicMods  | Table  | A table holding music mods                                            |
| Modules    | Table  | holds all modules of BeardLib                                         |

### Functions

The BeardLib class inherits most of the functions found in [ModCore](https://luffyyy.gitbook.io/beardlib/api/modcore#functions)

#### Usable functions

| Function                                                                      | Description                                                                                                                                                                                                                                                                                                                               |
| ----------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| AddUpdater(String id, Function clbk, Boolean paused)                          | Adds an updater which is called after the update function is called. `id` being the ID of your updater, `clbk` is the function/callback, and `paused` determines if the updater should run when paused                                                                                                                                    |
| RemoveUpdater(String id)                                                      | Removes updater with id `id`                                                                                                                                                                                                                                                                                                              |
| CallOnNextUpdate(Function func, Boolean only\_unpaused, Boolean only\_paused) | Adds a function to be called in the next update. After it's called once it won't be called again unless you run this again. `only_unpaused` determines if the function should only run in unpaused state and `only_paused` is the opposite of it. If both `only_paused` and `only_unpaused` are not defined the function will run in both |
| RegisterModule(String key, Table module)                                      | Registers a module with `key` which is the type\_name of the module and `module` is the class/table of it. Unlike frameworks you must define this one if you create a module not using [MoudlesModule](https://luffyyy.gitbook.io/beardlib/modules/modulesmodule).                                                                        |
| GetPath()                                                                     | Returns the path of BeardLib. Should always be "mods/BeardLib"                                                                                                                                                                                                                                                                            |
| RegisterFramework(String name, Table clss)                                    | Adds a framework class to the framweworks list (Called automatically even if you create a custom framework). Though, in extreme cases you may need to use it                                                                                                                                                                              |
| RegisterManager(String name, Table clss)                                      | Registers a manager class for BeardLib                                                                                                                                                                                                                                                                                                    |
| RegisterMenu(String name, Table clss)                                         | Registers a menu class for BeardLib. For example, the mods menu                                                                                                                                                                                                                                                                           |
| RegisterClass(String name, Any obj, Number typ)                               | Registers a class. `name` is the key of the class, `obj` is the class itself, and `typ` is one of the values of BeardLib.Constants.ClassTypes. Generally used internally and is verbose.                                                                                                                                                  |
| ModError(ModCore mod, String str, ...)                                        | Called usually by [ModCore](https://luffyyy.gitbook.io/beardlib/api/modcore#functions) itself. This error is a little different than the regular Err function in that this will show a message to the user.                                                                                                                               |

#### Core functions

These functions are automatically called by BeardLib. Therefore, there's no point in calling them. Some are more BeardLib specific.

| Function                                    | Description                                                                                                                                                                                           |
| ------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| Init()                                      | The initialization function of BeardLib                                                                                                                                                               |
| LoadClasses(Table config, String prev\_dir) | Loads the classes that BeardLib uses. `config` is used have grouped classes inside the Classes table alongside `prev_dir`.                                                                            |
| LoadModules(String dir)                     | Loads BeardLib's modules by getting all files in /Modules/ or dir. `dir` is used to load subfolders in the modules folder                                                                             |
| LoadLocalization()                          | Loads the localization files from /Localization adds them to a LocalizationModule afterwards                                                                                                          |
| Update(Number t, Number dt)                 | The update function for BeardLib                                                                                                                                                                      |
| PausedUpdate(Number t, Number dt)           | The update function that runs when the game is paused for BeardLib                                                                                                                                    |
| RegisterTweak()                             | Adds the mod global value and mod DLC to the tweakdata                                                                                                                                                |
| MigrateModSettings()                        | Migrates mod settings of BeardLib versions before 4.0 to the 4.0 format. The change involves moving DisabledMods and IgnoredUpdates to the ModSettings table which will hold configurations for mods. |
| ShowErrorsDialog()                          | Gets automatically called by BeardLib when entering main menu and there are mod errors to show. Can be turned off by an option                                                                        |
| DevLog(String str, ...)                     | Used by BeardLib for debugging. Generally does nothin without editing the function                                                                                                                    |

#### Return functions

| Function                                 | Return Type | Description                                                                                                                              |
| ---------------------------------------- | ----------- | ---------------------------------------------------------------------------------------------------------------------------------------- |
| ManagerClass(String name, Any inherit)   | class()     | Makes a new manager class. With `name` used to Register it and `inherit` if you wish to inherit a previous class's functions & variables |
| MenuClass(String name, Any inherit)      | class()     | Same as ManagerClass just for menus                                                                                                      |
| ModuleClass(String name, Any inherit)    | class()     | Same as ManagerClass just for modules                                                                                                    |
| FrameworkClass(String name, Any inherit) | class()     | Same as ManagerClass just for frameworks                                                                                                 |


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://luffyyy.gitbook.io/beardlib/api/beardlib-class.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
