Plugin Mixins

Mixins dapat digunakan untuk mengubah classes pada waktu pelaksanaan sebelum mereka dimuat. Anda dapat menggunakannya pada plugins jika anda ingin mengoptimalkan bagian dari permainan secara spesifik untuk server anda tanpa harus merubah Sponge. Perubahan akan ditumpuk secara langsung dengan plugins anda dan hanya aktif selama plugin anda dimuat.

Lihat juga

Mixin documentation

Mixin documentation termasuk sebuah pengenalan terhadap Mixins.

Example plugin

Example plugins yang menggunakan Plugins Mixins untuk mencetak sebuah pesan ketika server dimulai.

Pengaturan

  1. Tambahkan Mixin library secara bebas kedalam plugins anda:

    dependencies {
        compile 'org.spongepowered:mixin:0.7.11-SNAPSHOT'
    }
    
  2. Tambahkan pengaturan Mixin baru kedalam plugin, contohnya mixins.myplugin.json inside your resource folder:

    {
        "required": true,
        "minVersion": "0.7.10",
        "package": "com.example.myplugin.mixin",
        "refmap": "mixins.myplugin.refmap.json",
        "target": "@env(DEFAULT)",
        "compatibilityLevel": "JAVA_8",
        "mixins": [
            "MixinMinecraftServer"
        ]
    }
    
  3. Tambahkan Mixin class kedalam paket tertentu:

    package com.example.myplugin.mixin;
    
    import net.minecraft.server.MinecraftServer;
    import org.spongepowered.asm.mixin.Mixin;
    
    @Mixin(MinecraftServer.class)
    public abstract class MixinMinecraftServer {
    
    }
    

Menelusuri

Biasanya, pengaturan Mixin terdaftar didalam JAR yang jelas dari plugin. Karena plugin tidak dikemas dalam sebuah JAR saat penelusuran didalam IDE anda harus menentukan Mixins untuk menerapkan sebagain opsi command line:

  1. Tambahkan opsi --mixin <mixin config file name> untuk setiap pengaturan berkas Mixin kedalam program arguments dari pengaturan anda yang sedang berjalan:

    --mixin mixins.myplugin.json
    

Produksi

Jika Mixin anda bekerja di lingkungan pengembangan anda, anda masih harus membuat beberapa perubahan agar itu bekerja didalam produksi:

  1. Terapkan plugin MixinGradle kedalam build script anda:

    buildscript {
        repositories {
            maven {
                name = 'sponge'
                url = 'https://repo.spongepowered.org/maven'
            }
        }
        dependencies {
            classpath 'org.spongepowered:mixingradle:0.6-SNAPSHOT'
        }
    }
    
    apply plugin: 'org.spongepowered.mixin'
    
  2. Atur refmap dari pengaturan Mixin anda:

    sourceSets {
        main {
            ext.refMap = "mixins.myplugin.refmap.json"
        }
    }
    
  3. Tambahkan pengaturan Mixin anda kedalam JAR yang jelas. catatan FMLCorePluginContainsFMLMod yg jelas dibutuhkan jika anda ingin memuat Mixin anda di SpongeForge:

    jar {
        manifest.attributes(
            'TweakClass': 'org.spongepowered.asm.launch.MixinTweaker',
            'MixinConfigs': 'mixins.myplugin.json',
            'FMLCorePluginContainsFMLMod': 'true',
        )
    }
    
  4. Pastikan untuk membangun ulang plugin menggunakan Gradle. Kemudian Mixin harus diaplikasikan oleh SpongeVanilla dan SpongeForge.

    gradle clean build