Plugin Mixins
Les Mixins peuvent être utilisés pour modifier des classes au runtime avant qu’elles ne soient chargées. Vous pouvez les utiliser dans les plugins si vous voulez optimiser une partie du jeu spécifiquement pour votre serveur - sans avoir à faire un fork de Sponge. Les modifications seront regroupées directement avec votre plugin et seront seulement actives tant que le plugin sera chargé.
Voir aussi
- Documentation des Mixins
La documentation des Mixins inclue une introduction aux Mixins.
- Plugin Exemple
Plugin d’exemple qui utilise les Plugin Mixins pour afficher un message lorsque le serveur démarre.
Réglages
Ajoutez la librairie Mixin comme dépendance à votre plugin :
dependencies { compile 'org.spongepowered:mixin:0.6.6-SNAPSHOT' }
Ajoutez une nouvelle configuration de Mixin à votre plugin, exemple
mixins.myplugin.json
dans votre dossier ressources :{ "package": "com.example.myplugin.mixin", "refmap": "mixins.myplugin.refmap.json", "target": "@env(DEFAULT)", "compatibilityLevel": "JAVA_8", "mixins": [ "MixinMinecraftServer" ] }
Ajoutez une classeM ixin au package spécifié :
package com.example.myplugin.mixin; import net.minecraft.server.MinecraftServer; import org.spongepowered.asm.mixin.Mixin; @Mixin(MinecraftServer.class) public abstract class MixinMinecraftServer { }
Debugging
Normalement, la configuration Mixin est enregistré à l’intérieur du manifeste du JAR du plugin. Puisque le plugin n’est pas mis dans un JAR lors du debugging à l’intérieur de l’IDE vous devez spécifier les Mixins à appliquer avec une option de ligne de commande :
Ajoutez une option
--mixin <mixin config file name>
pour chaque fichier de configuration Mixin dans les arguments du programme de votre configuration de démarrage :--mixin mixins.myplugin.json
Production
Si votre Mixin fonctionne dans votre environnement de développement, vous devrez quand même faire quelques modifications pour le faire fonctionner en production :
Appliquez le plugin MixinGradle à votre script de build :
buildscript { repositories { maven { name = 'sponge' url = 'https://repo.spongepowered.org/maven' } } dependencies { classpath 'org.spongepowered:mixingradle:0.4-SNAPSHOT' } } apply plugin: 'org.spongepowered.mixin'
Définissez la refmap depuis votre configuration Mixin :
sourceSets { main { refMap = "mixins.myplugin.refmap.json" } }
Ajoutez votre configuration Mixin au manifeste du JAR. L’entrée manifeste
FMLCorePluginContainsFMLMod
est nécessaire si vous voulez charger votre Mixin sur SpongeForge :jar { manifest.attributes( 'TweakClass': 'org.spongepowered.asm.launch.MixinTweaker', 'MixinConfigs': 'mixins.myplugin.json', 'FMLCorePluginContainsFMLMod': 'true', ) }
Assurez-vous de re-build le plugin en utilisant Gradle. Le Mixin devrait maintenant être appliqué par SpongeVanilla et SpongeForge.
gradle clean build