## [26.1.2.7]
### Added
- `NetworkRegistry#versioned(String)` and `NetworkRegistry#optional()` to set a packet's network version and optionality on NeoForge
- Both are no-ops on Fabric as it has no version negotiation and never refuses connections over missing packets
- `Config#restoreFromDisk()` and `ConfigManager#restoreSyncedConfigs()` to drop values synced from a server
### Changed
- Fabric registries are now deferred until `initialize()` is called, matching NeoForge's `DeferredRegister`
- Registering an entry after its registry has been initialized now throws on both platforms instead of silently doing nothing
- Accessing a Fabric registry entry before its registry is initialized now throws with the entry's id
- Common configs now load as soon as they're registered, and reload when a server starts
- Registering a config after its type has loaded now loads it immediately instead of throwing
- Server configs on NeoForge now load before the world loads, matching Fabric
- The config sync packet is now optional, so clients with the library can join servers without it (and vice versa)
- The config sync packet no longer sends comments and supports much larger configs (256K characters, up from 32K)
- `ConfigValue#set` now saves the config file
- Config files now keep values in the order they're declared
- `CreativeModeTabBuilder#populateFromRegistry` now reads the registry's entries when the tab is populated instead of when it's called
### Deprecated
- `ExecutionTarget` and the `NetworkRegistry` overloads that take one, handlers always run on the main thread
### Fixed
- Dedicated Fabric servers loading client-only networking classes when packets were registered
- `NetworkRegistry#playBidirectional` crashing on NeoForge due to the payload being registered twice
- `Platform#sendPacketToAllPlayers` doing nothing on NeoForge
- `PlatformClient#registerResourcePackReloadListeners` never registering the listeners on NeoForge
- Server configs never loading on Fabric
- Sending an optional packet to a side without it throwing on NeoForge
- Values synced from a server sticking around after disconnecting, and being able to be written to disk
- Config keys removed from the file keeping their old value on reload
- Duplicate config keys silently replacing each other, they now throw
- `CreativeModeTabBuilder` crashing when no icon was set
- `Lazy#invalidate` holding onto the old value
Developer information
Projects on Modrinth are automatically available through a Maven repository for use with JVM build tools such as Gradle.
maven { name = "Modrinth"; url = "https://api.modrinth.com/maven" }