{"$schema":"http://json-schema.org/draft-07/schema#","$id":"https://json.schemastore.org/sponge-mixins.json","definitions":{"mixin_class":{"type":"string","description":"The dot-separated path to the mixin class relative to the specified package. The class must be annotated with @Mixin"},"injector_options":{"type":"object","description":"Injection options","properties":{"defaultRequire":{"type":"integer","minimum":0,"description":"Sets the default minimum of injections that must be successfully applied per injector","default":0},"defaultGroup":{"type":"string","description":"Sets the default injector group","default":"default"},"injectionPoints":{"type":"array","description":"Registers injection points for this configuration","items":{"type":"string"}},"maxShiftBy":{"type":"integer","minimum":0,"maximum":5,"default":5,"description":"Sets the maximum allowed number of opcodes that can be shifted in @At annotations. This is hard capped at 5"}}},"overwrite_options":{"type":"object","description":"Overwrite options","properties":{"conformVisibility":{"type":"boolean","description":"Sets whether the visibility of overwritten methods should be conformed to the target class"},"requireAnnotations":{"type":"boolean","default":true,"description":"Sets whether overwriting methods must explicitly be declared through @Overwrite annotations"}}}},"properties":{"parent":{"type":"string","description":"The name of a parent configuration that options get inherited from"},"target":{"type":"string","description":"Target selector. Either the specifies the phase directly or use \"@env(PHASE)\" separated by '&', '\\', or ' '"},"minVersion":{"type":"string","pattern":"^(\\d{1,5})(?:\\.(\\d{1,5})(?:\\.(\\d{1,5})(?:\\.(\\d{1,5}))?)?)?(-[a-zA-Z0-9_\\-]+)?$","description":"Minimum version of the mixin subsystem required for this configuration"},"compatibilityLevel":{"type":"string","description":"Minimum compatibility level required for mixins in this set"},"required":{"type":"boolean","description":"Determines whether mixin failures in this configuration are considered terminal and stop the game"},"priority":{"type":"integer","description":"The priority of this configuration. Will be inherited if smaller than 0","default":-1},"mixinPriority":{"type":"integer","description":"Default mixin priority for this configuration. Will be inherited if smaller than 0","default":-1},"package":{"type":"string","description":"The target package where the mixin classes reside"},"mixins":{"type":"array","description":"Mixin classes to load in all environments. Class names get prepended with the specified package","items":{"$ref":"#/definitions/mixin_class"}},"client":{"type":"array","description":"Mixin classes to load ONLY on client. Class names get prepended with the specified package","items":{"$ref":"#/definitions/mixin_class"}},"server":{"type":"array","description":"Mixin classes to load ONLY on server. Class names get prepended with the specified package","items":{"$ref":"#/definitions/mixin_class"}},"setSourceFile":{"type":"boolean","description":"Sets whether targets' source files will be updated to the mixin source file"},"refmap":{"type":"string","description":"The path to the reference map resource to use for this configuration"},"verbose":{"type":"boolean","description":"Increases log detail level from DEBUG to INFO","default":false},"plugin":{"type":"string","description":"Name of the mixin config plugin to use for this config"},"injectors":{"$ref":"#/definitions/injector_options"},"overwrites":{"$ref":"#/definitions/overwrite_options"}},"required":["package"],"type":"object"}