# Partitioning the Config

There's a `PartitioningSerializer` included to partition your config into multiple files within a directory. When using `PartitioningSerializer`, your top level config class must inherit from `PartitioningSerializer.GlobalData` and every field in that top level class must be of a type that inherits from `ConfigData` and is annotated with `@Config`.

### Example

```java
@Config(name = "modid")
class ModConfig extends PartitioningSerializer.GlobalData {
    @ConfigEntry.Category("module_a")
    @ConfigEntry.Gui.TransitiveObject
    ModuleAConfig moduleA = new ModuleAConfig();
    
    @ConfigEntry.Category("module_b")
    @ConfigEntry.Gui.TransitiveObject
    ModuleBConfig moduleB = new ModuleBConfig();
}

@Config(name = "module_a")
class ModuleAConfig implements ConfigData {
    /* your config fields here */
}

@Config(name = "module_b")
class ModuleBConfig implements ConfigData {
    /* your config fields here */
}
```

### Registering the Config

```java
AutoConfig.register(
    ModConfig.class,
    PartitioningSerializer.wrap(JanksonConfigSerializer::new)
);
```
