msmpExtension

inline fun <P : Any, R : Any, T : MsmpExtension> msmpExtension(registryName: String, crossinline factory: (MsmpClient, String, KSerializer<P>, KSerializer<R>) -> T, crossinline config: MsmpExtensionConfig<T>.() -> Unit = {}): ReadOnlyProperty<MsmpClient, T>

Registry for MSMP request extension.

This variant automatically injects registryName and the KSerializer for P and R into the factory.

Example:

public val MsmpClient.allowList: ArrayExtension<PlayerDto>
by msmpExtension("minecraft:allowlist", ::ArrayExtension)

inline fun <T : MsmpExtension> msmpExtension(registryName: String, crossinline factory: (MsmpClient, String) -> T, crossinline config: MsmpExtensionConfig<T>.() -> Unit = {}): ReadOnlyProperty<MsmpClient, T>

Registry for MSMP request extension.

This variant automatically injects registryName into the factory.

Use this for extensions that don't use generic types.

Example:

public val MsmpClient.server: ServerExtension
by msmpExtension("minecraft:server", ::ServerExtension)