Dönüştürücülere Ulaşın
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.
Bir çözüm olarak, ForgeGradle, erişim dönüştürücüleri (veya AT) doğrudan (yansıma olmadan) başvuruda bulunabilir, böylece otomatik olarak belirtilen yöntemleri/alanları herkese açarak referans olarak kullanmayı destekler. Öncelikle Minecraft kod tabanı ile kullanım amacına uygun olarak diğer projelerdeki sınıflara da uygulanabilirler. SpongeVanilla ve Forge, eklentinin JAR manifestosunda yapılandırılmışsa bunları üretim aşamasında da uygulayacaktır.
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 alandanfinal
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
veyafunc_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
MCP ve Sponge IRC kanallarında bulunan bir alana veya metoda hızlı erişim dönüştürücü hattını sağlamak için bulunan MCP bot kullanabilirsiniz. !gm <mcp method name>
ya da `!gf <mcp field name>
kullanarak bir yöntem aradıktan sonra, listelenen AT
satırı access transformer dosyanıza kopyalamanız yeterlidir.
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')
}