WorldGeneratorModifiers

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!

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;

public 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) {

    }

}

As you can see, WorldGeneratorModifier has three methods which we override. CatalogType#getId() must be overridden to return a constant and unique identifier for your WorldGeneratorModifier, this is the identifier which will be used in the world configuration to specify which worlds your modifier should be applied to. CatalogType#getName() must be overridden with a constant and simple human-readable name for your modifier.

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

Now that you have created the modifier, all you have to do is register it in the GameRegistry. To do this you need to create a listener for the GameRegistryEvent.Register<WorldGeneratorModifier> event and register your instance there, as shown in the following example:

@Listener
public void onWorldGeneratorModifierRegistration(GameRegistryEvent.Register<WorldGeneratorModifier> event) {
    event.register(new MyModifier());
}

To apply your WorldGeneratorModifier to a world you must add it to the world-generation-modifiers array within the world config file found at config/sponge/worlds/[dimension]/[worldName]/world.conf. For example, to apply the skylands WorldGeneratorModifier to a world you would add the skylands modifier’s id to the modifiers list.

# 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.