Efektler

Sponge’daki efekt API’sini kullanarak, bir sunucuda kullanılacak özel efektler oluşturabilirsiniz. Bir: javadoc: `izleyici ‘kullanarak, sunucudaki sesleri çalar veya parçacık üretebiliriz.

Çalınan sesler

Verilen herhangi bir “Görüntüleyici” ile, sadece bir yerde bir ses çalabiliriz:

import org.spongepowered.api.effect.Viewer;
import org.spongepowered.api.effect.sound.SoundTypes;

import com.flowpowered.math.vector.Vector3d;

viewer.playSound(SoundTypes.ENTITY_CREEPER_PRIMED, new Vector3d(1, 65, 1), 1);

Şimdi bunları parçalayalım.Önce, şu özelliklere sahibiz: javadoc: SoundType çalınıyor.Bu sadece çalınacak sestir.Sonra bir `` Vector3d`` pozisyonu var.Bu pozisyon inşa edilebilir, yada Location#getPosition() metodunu kullanarak konum alınabilir.Yukarıdaki örnekte, ses “1, 65, 1” koordinatlarında oynatılacaktır.Son olarak, sesin çalınacağı ses var. Ses, sıfırdan ikiye değişen bir çift.

Şimdi temel sesleri çalabiliyoruz, daha derinlemesine seslerimizle gidebiliriz.Diyelim ki, sesi belirli bir aralıkla çalmak istedik.Sahayı belirli bir nota modüle etmek için sınıf SoundCategory kullanacağız.

import org.spongepowered.api.effect.sound.PitchModulation;
import org.spongepowered.api.effect.sound.SoundCategories;

viewer.playSound(SoundTypes.ENTITY_CREEPER_PRIMED, SoundCategories.HOSTILE,
    new Vector3d(1, 65, 1), 1, PitchModulation.AFLAT0);

Bir ses çalınırken `` SoundCategory`` belirtilmemişse, SoundCategories#MASTER kullanılacak.

Yumurtlayan parçacıklar

Benzer şekilde, sesler arasında, dünyadaki parçacıkları yumurtlamak için “Görüntüleyici” sınıfını kullanabiliriz:

import org.spongepowered.api.effect.particle.ParticleEffect;
import org.spongepowered.api.effect.particle.ParticleTypes;

ParticleEffect effect = ParticleEffect.builder()
    .type(ParticleTypes.LAVA).count(50).build();
viewer.spawnParticles(effect, position);

:javadoc:`ParticleEffect.Builder`kullanın,biz yumurtlamak istediğiniz parçacığın türünü belirtebiliriz.Bununla birlikte, elli partikülün parçacık efektinde olacağını da belirttik.

Şimdi, daha belirli bir parçacık yapmak istediysek, bir bloğun parçacıklarını söylersek : javadoc: org.spongepowered.api.effect.particle paketinde bulunan serveral sınıflarından birini kullanabiliriz:

import org.spongepowered.api.effect.particle.BlockParticle;

BlockParticle blockParticle = BlockParticle.builder()
    .type(ParticleTypes.BLOCK_CRACK).block(BlockTypes.SAND.getDefaultState()).build();
viewer.spawnParticles(blockParticle, position);

İksirler Hazırlanıyor

Parçacıklara ve seslere benzer şekilde, iksir etkisi yaratmak için bir yapıcı kullanmamız gerekir:

import org.spongepowered.api.effect.potion.PotionEffect;
import org.spongepowered.api.effect.potion.PotionEffectTypes;

PotionEffect potion = PotionEffect.builder().potionType(PotionEffectTypes.HASTE)
    .duration(10).amplifier(5).build();

Bunu kullanarak on işaretleme kadar sürecek ve beş kat güçlendiriciye sahip olacak PotionEffect ivmesi oluşturabiliriz.Partiküller ve seslerin aksine iksirler ``Viewer``a uygulanamaz. Bunun yerine bir oyuncu gibi :javadoc:`PotionEffectData`kodunu destekleyen bir varlığa ihtiyacımız vardır.

import org.spongepowered.api.data.manipulator.mutable.PotionEffectData;
import org.spongepowered.api.entity.living.player.Player;

PotionEffectData effects = player.getOrCreate(PotionEffectData.class).get();
effects.addElement(potion);
player.offer(effects);

Bu, bir oyuncudan bir “PotionEffectData” alacak veya yaratacak.