Dönüştürücülere Ulaşın

Uyarı

These docs were written for SpongeAPI 7 and are likely out of date. If you feel like you can help update them, please submit a PR!

Minecraft kodunun bazı kısımları kullanılamadığında, bu bölüme denk gelebilirsiniz. Bu alana veya yönteme erişmek için yansıma kullanabilirsiniz, fakat MCP bile, iki farklı isme sahip olacağınızdan işlemi daha zor yapar - geliştirme ortamındaki MCP adları ve oluşturulan Searge adları.

Mesela, tick () yöntemine yansıma kullanarak erişmek için, ortamdaki tick ‘i kullanmanız gerekir, ancak geliştirmedeki func_71217_p kullanmanız gerekir. Tekrar şaşırtma adımı, yalnızca yansıma çağrısına geçirilen dize parametresine değil, yöntemlere ve alanlara yapılan doğrudan başvuruları yönetir.

As a solution, ForgeGradle supports using access transformers (or AT) that automatically make the specified methods/fields public so you can reference them directly (without reflection). While they are primarily intended for usage with the Minecraft code base, they can be also applied to classes from other projects. If configured in the JAR manifest of the plugin, SpongeVanilla and Forge will also apply them in production.

Kurulum

ForgeGradle, kaynak klasörlerinizde dosya adı sonekiyle``_at.cfg`` olan erişim dönüştürücü dosyalarını otomatik olarak tarar. Erişim dönüştürücüsünü çalışma zamanında kullanabilmek için bunları kaynak dizininizdeki bir “META-INF” klasörüne eklemelisiniz, örneğin META-INF/myplugin_at.cfg.

3 farklı erişim dönüştürücü türü vardır: sınıfların, alanların ve yöntemlerin değiştiricilerini değiştirebilirsiniz. Erişim dönüştürücü hattı, 2 parça (sınıflar için) veya 3 parça (alanlar ve yöntemler için), her biri bir boşluk ile ayrılmış olarak tanımlanır.

  • Yöntemi/alanı değiştirmek istediğiniz erişim türü, ör.``public`` or protected. Bir alandan final kelimesini kaldırmak için, erişim türünün sonuna -f ekleyin. ör. public-f.

  • Tam olarak nitelenmiş sınıf adı, ör. net.minecraft.server.MinecraftServer

  • Alanlar ve yöntemler için: Searge alan adı yada yöntem adı ve yöntem imzası, örn. `field_54654_a veya func_4444_a()V

Tüyo

Onlara öneki # ile yorum ekleyebilirsiniz. Her erişim dönüştürücü hattından sonra MCP adını eklemek, hattın hangi alana / metoda başvurduğunu bildiğinizden emin olmak için iyi bir kuraldır.

Erişim dönüştürücü hatları için iki örnek:

public-f net.minecraft.server.MinecraftServer field_71308_o # anvilFile
public net.minecraft.server.MinecraftServer func_71260_j()V # stopServer
public-f net.minecraft.item.ItemStack

Erişim dönüştürücülerini geliştirme ortamınıza uygulamak için Gradle setupDecompWorkspace görevini tekrar çalıştırın ve Gradle projenizi yenileyin:

gradle setupDecompWorkspace

Tüyo

You can use the MCP bot which is present in the MCP and Sponge IRC channels, or in the #bot-spam channel on Discord, to quickly get the access transformer line for a field or method. After looking up a method using !gm <mcp method name> or a field using !gf <mcp field name>, simply copy the listed AT line to your access transformer file.

Not

Bir alanı/yöntemi daha az erişilebilir yapmak (ör. public -> private).

Ürünler

Erişim dönüştürücülerini üretimde uygulamak için, eklentinize``META-INF`` dizininde erişim dönüştürücünüzün dosya adı ile bir FMLAT manifesto girişi eklemeniz gerekir.

jar {
    manifest.attributes('FMLAT': 'myplugin_at.cfg')
}