12345678910111213141516171819202122232425262728293031 |
- package me.km.snuviscript.commands;
- import me.hammerle.snuviscript.code.ScriptManager;
- import me.km.utils.Location;
- import me.km.utils.Mapper;
- import net.minecraft.entity.player.ServerPlayerEntity;
- import net.minecraft.network.play.server.SPlaySoundEffectPacket;
- import net.minecraft.util.SoundCategory;
- import net.minecraft.util.SoundEvent;
- import net.minecraft.world.server.ServerWorld;
- public class SoundCommands {
- public static void registerFunctions(ScriptManager sm) {
- sm.registerFunction("sound.get", (sc, in) -> Mapper.getSound(in[0].getString(sc)));
- sm.registerFunction("sound.getcategory", (sc, in) -> Mapper.getSoundCategory(in[0].getString(sc)));
- sm.registerConsumer("sound.spawn", (sc, in) -> {
- Location l = (Location) in[0].get(sc);
- ServerWorld sw = (ServerWorld) l.getWorld();
- float volume = in.length >= 4 ? in[3].getFloat(sc) : 1.0f;
- float pitch = in.length >= 5 ? in[4].getFloat(sc) : (sw.rand.nextFloat() * 0.1f + 0.9f);
- sw.playSound(null, l.getX(), l.getY(), l.getZ(), (SoundEvent) in[1].get(sc), (SoundCategory) in[2].get(sc), volume, pitch);
- });
- sm.registerConsumer("sound.spawnforplayer", (sc, in) -> {
- ServerPlayerEntity p = (ServerPlayerEntity) in[0].get(sc);
- float volume = in.length >= 4 ? in[3].getFloat(sc) : 1.0f;
- float pitch = in.length >= 5 ? in[4].getFloat(sc) : (p.world.rand.nextFloat() * 0.1f + 0.9f);
- p.connection.sendPacket(new SPlaySoundEffectPacket((SoundEvent) in[1].get(sc),
- (SoundCategory) in[2].get(sc), p.getPosX(), p.getPosY(), p.getPosZ(), volume, pitch));
- });
- }
- }
|