Complementos de Mixins
Los Mixins <https://github.com/SpongePowered/Mixin> _ se pueden usar para modificar clases en tiempo de ejecución antes de que se carguen. Puede usarlos en complementos si desea optimizar una parte del juego específicamente para su servidor, sin tener que bifurcar a Sponge. Las modificaciones se agruparán directamente con su complemento y solo estarán activas siempre que se cargue el complemento.
Ver también
- La documentación de`Mixin <https://github.com/SpongePowered/Mixin/wiki>`_
Documentación de Mixin que incluye una introducción a los Mixins.
- Plugin de ejemplo
Complemento de ejemplo que usa complementos de Mixins para publicar un mensaje cuando el servidor se está iniciando.
Configuración
Añade la librería Mixin como una dependencia a tu complemento:
dependencies { compile 'org.spongepowered:mixin:0.6.6-SNAPSHOT' }
Añade una nueva configuración Mixin para tu complemento, por ejemplo
mixins.myplugin.json
dentro de tu carpeta de recursos:{ "package": "com.example.myplugin.mixin", "refmap": "mixins.myplugin.refmap.json", "target": "@env(DEFAULT)", "compatibilityLevel": "JAVA_8", "mixins": [ "MixinMinecraftServer" ] }
Añade una clase Mixin al paquete especificado:
package com.example.myplugin.mixin; import net.minecraft.server.MinecraftServer; import org.spongepowered.asm.mixin.Mixin; @Mixin(MinecraftServer.class) public abstract class MixinMinecraftServer { }
Depuración
Normalmente, la configuración de Mixin se registra dentro del manifiesto JAR del complemento. Dado que el complemento no está empaquetado en un JAR mientras se depura dentro del IDE, debes especificar los Mixins para aplicarlos como opciones de línea de comando:
Añade una opción
--mixin<mixin config file name>
para cada archivo de configuración de Mixin a los argumentos del programa de tu configuración de ejecución:--mixin mixins.myplugin.json
Producción
Si su Combinación está funcionando en el ámbito del desarrollo, todavía deberá hacer algunos cambios para que pueda funcionar en producción:
Aplica el complemento MixinGradle a tu script de desarrollo:
buildscript { repositories { maven { name = 'sponge' url = 'https://repo.spongepowered.org/maven' } } dependencies { classpath 'org.spongepowered:mixingradle:0.4-SNAPSHOT' } } apply plugin: 'org.spongepowered.mixin'
Establezca el mapa de referencia desde la configuración de su Mixin:
sourceSets { main { refMap = "mixins.myplugin.refmap.json" } }
Añade tu configuración de Mixin al manifiesto JAR. La entrada del manifiesto
FMLCorePluginContainsFMLMod
es necesaria si quieres cargar tu Mixin en SpongeForge:jar { manifest.attributes( 'TweakClass': 'org.spongepowered.asm.launch.MixinTweaker', 'MixinConfigs': 'mixins.myplugin.json', 'FMLCorePluginContainsFMLMod': 'true', ) }
Asegúrate de reconstruir el complemento usando Gradle. El Mixin debería ser aplicado por SpongeVanilla y SpongeForge.
gradle clean build