Hasil

Dengan menggunakan API efek dalam Sponge, kita dapat membuat efek istimewa untuk digunakan pada sebuah server. Dengan menggunakan Viewer, kita dapat memutar suara atau menciptakan partikel pada server.

Memainkan Suara

Dengan diberikan Viewer, kita bisa memainkan suara yang sederhana di sebuah lokasi:

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

Sekarang mari kita rincikan. Pertama, kita memiliki SoundType yang sedang diputar. Ini hanya suara yang akan diputar. Selanjutnya kita memiliki posisi Vector3d. Posisi ini akan dikonstruksikan, atau dapat diambil dari Location menggunakan metode Location#getPosition(). Pada contoh di atas, suara akan diputar pada koordinat 1, 65, 1. Terakhir, kita memiliki volume suara yang akan diputar. Volume suaranya dobel, berkisar antara nol hingga dua.

Sekarang kita dapat memutar suara dasar, kita dapat melangkah lebih jauh dengan suara kita. Katakanlah kita ingin memutar suara kita pada nada yang ditetapkan. Kita dapat menggunakan kelas PitchModulation untuk memodulasi nada ke sebuah not tertentu. Kita dapat juga menggunakan SoundCategory untuk menetapkan kategori suara apa yang sedang diputar. Contoh ini ditunjukkan di bawah ini:

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

Jika ``SoundCategory``tidak ditentukan ketika memainkan sebuah suara, SoundCategories#MASTER akan digunakan.

Partikel pemijahan

Demikian pula dengan suara, kita bisa menggunakan Viewer kelas untuk menelurkan partikel di dunia:

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

Menggunakan ParticleEffect.Builder, kita dapat menetapkan tipe partikel yang kita ingin hasilkan. Dengan begitu, kita juga menetapkan lima puluh partikel akan berada dalam efek partikel.

Adapun jika kita ingin membuat partikel yang lebih spesifik lagi, katakanlah partikel dari sebuah blok, kemudian kita dapat menggunakan salah satu kelas several yang terdapat didalam paket :javadoc: org.spongepowered.api.effect.particle. Untuk contoh, katakanlah kita ingin menelurkan partikel pasir, ParticleTypes#BLOCK_CRACK. kita perlu menggunakan :javadoc: kelas`BlockParticle` dan tentukan kita ingin menggunakan blok pasir, ini bisa dilakukan seperti ini:

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

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

Membuat Ramuan

Demikian pula untuk potion dan suara, kita perlu menggunakan builder untuk membuat potion efek:

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();

Dengan menggunakan ini, kita dapat membuat PotionEffect dengan cepat yang akan berlangsung selama sepuluh detik dan memiliki sebuah pengeras dari lima pengeras. Tidak seperti partikel dan suara, potion tidak dapat diterapkan pada sebuah Viewer. Sebagai gantinya, kita membutuhkan sebuah entitas yang mendukung PotionEffectData, seperti sebuah pemutar.

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

Ini akan mendapatkan atau membuat `` PotionEffectData`` dari pemain. kami kemudian menambahkan efek ramuannya ke daftar dan menawarkannya ke pemain.