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