WorldGeneratorModifiers
Sponge’da Dünya Nesilleri sürecine kısa bir bakış için, lütfen şunu okuyun Dünya oluşturma. Şimdi, dünya nesillerinde nasıl iz bırakmaya başlayabileceğinizi gösterelim.
Bir dünya jeneratöründe değişiklik yapmak isteyen tüm eklentiler bir WorldGeneratorModifier a kaydolmak zorundadır. Bu değiştiriciler küresel olarak benzersiz bir kimlik ile kaydedilir, bu, bir sunucunun yöneticisi tarafından bir dünyanın yapılandırmasına eklenmelidir. Dünya konfigürasyonunda belirtilen kimlik ile, o dünya için jeneratör kurulduğunda WorldGeneratorModifier
otomatik olarak çağrılır ve jeneratörde değişiklikler yapılmasına izin verilir.
Bir WorldGeneratorModifier yaratma
Bir dosya biçimi olan WorldGeneratorModifier
ile başlayalım. İlk önce, `` WorldGeneratorModifier`` arayüzünü sağlayan bir sınıfa ihtiyacınız var:
import org.spongepowered.api.world.storage.WorldProperties;
private class MyModifier implements WorldGeneratorModifier {
@Override
public String getId() {
return "pluginid:mymodifier";
}
@Override
public String getName() {
return "My Modifier";
}
@Override
public void modifyWorldGenerator(WorldProperties world, DataContainer settings, WorldGenerator worldGenerator) {
}
}
Gördüğünüz gibi, WorldGeneratorModifier
geçersiz kıldığımız üç yöntem var. WorldGeneratorModifier
için sabit ve benzersiz bir tanımlayıcı döndürmek için CatalogType#getId() geçersiz kılınmalıdır, bu, değiştiricinizin hangi dünyalara uygulanacağını belirlemek için dünya yapılandırmasında kullanılacak tanımlayıcıdır. CatalogType#getName() , değiştirici için sürekli ve basit bir şekilde insan tarafından okunabilen bir adla geçersiz kılınmalıdır.
Geçersiz kılınmış olan üçüncü yöntem, dünya jeneratöründe yaptığınız değişikliklerdir. Bu yöntem, WorldGeneratorModifier
uygulanması gerektiğini belirttiği bir dünya için dünya jeneratörü oluştururken, uygulama tarafından çağrılır.
Değişikliklerinize bağlam vermek için, dünya için ek özelliklerin bulunduğu WorldProperties ve bir DataContainer bu yöntemle geçirilir. Örneğin, `` WorldProperties`` i sadece jeneratörlerdeki değişiklikleri uygulamak için nether dünyalarını kullanabilirsiniz.
Bir WorldGeneratorModifier kaydolmak
Değiştiricimizi oluşturduğunuza göre, onu kaydettirmeniz gerekir. Bu sırada INITIALIZATION
için iyi bir zaman belirtir. Bunu kaydetmek için GameRegistry#register(Class, T) ile birlikte WorldGeneratorModifier.class
argümanı ilk olarak ve değiştiriciyi ikinci olarak kullanın.
@Listener
public void onGameInitialization(GameInitializationEvent event) {
Sponge.getRegistry().register(WorldGeneratorModifier.class , new MyModifier());
}
WorldGeneratorModifier’ınızı bir dünyaya uygulamak için onu config/sponge/worlds/[dimension]/[worldName]/world.conf
da bulunan dünya yapılandırma dosyası içindeki world-generation-modifiers
dizisine eklemelisiniz. Örneğin, skylands WorldGeneratorModifier’ı bir dünyaya uygulamak için, skylands değiştiricisinin kimliğini değiştiriciler listesine ekleyeceksiniz.
# WorldGenerationModifiers to apply to the world
world-generation-modifiers=[
"sponge:skylands"
]
Dikkat edin, varsayılan olarak, bir dünyaya uygulanan değiştiriciler yoktur ve bu nedenle yapılandırma dosyası oluşturulduğunda değer oluşturulmadığından world-generation-modifiers
listesinin olmayabileceğini unutmayın.
Bir sonraki yazımızda WorldGeneratorModifier
mizde yapabileceğiniz değişiklikleri daha yakından inceleyeceğiz.