Search in sources :

Example 6 with ParticleOptions

use of net.minecraft.core.particles.ParticleOptions in project MyPet by xXKeyleXx.

the class PlatformHelper method playParticleEffect.

/**
 * @param location   the {@link Location} around which players must be to see the effect
 * @param effectName list of effects: https://gist.github.com/riking/5759002
 * @param offsetX    the amount to be randomly offset by in the X axis
 * @param offsetY    the amount to be randomly offset by in the Y axis
 * @param offsetZ    the amount to be randomly offset by in the Z axis
 * @param speed      the speed of the particles
 * @param count      the number of particles
 * @param radius     the radius around the location
 */
@Override
public void playParticleEffect(Location location, String effectName, float offsetX, float offsetY, float offsetZ, float speed, int count, int radius, de.Keyle.MyPet.api.compat.Compat<Object> data) {
    ParticleType effect = Registry.PARTICLE_TYPE.get(new ResourceLocation(effectName));
    Validate.notNull(location, "Location cannot be null");
    Validate.notNull(effect, "Effect cannot be null");
    Validate.notNull(location.getWorld(), "World cannot be null");
    ParticleOptions particle = null;
    if (effect.getDeserializer() != null && data != null) {
        try {
            particle = effect.getDeserializer().fromCommand(effect, new StringReader(" " + data.get().toString()));
        } catch (CommandSyntaxException e) {
            e.printStackTrace();
        }
    } else if (effect instanceof SimpleParticleType) {
        particle = (SimpleParticleType) effect;
    }
    if (particle == null) {
        return;
    }
    ClientboundLevelParticlesPacket packet = new ClientboundLevelParticlesPacket(particle, false, (float) location.getX(), (float) location.getY(), (float) location.getZ(), offsetX, offsetY, offsetZ, speed, count);
    radius = radius * radius;
    for (Player player : location.getWorld().getPlayers()) {
        if ((int) MyPetApi.getPlatformHelper().distanceSquared(player.getLocation(), location) <= radius) {
            ((CraftPlayer) player).getHandle().connection.send(packet);
        }
    }
}
Also used : CraftPlayer(org.bukkit.craftbukkit.v1_17_R1.entity.CraftPlayer) MyPetPlayer(de.Keyle.MyPet.api.player.MyPetPlayer) ParticleOptions(net.minecraft.core.particles.ParticleOptions) ResourceLocation(net.minecraft.resources.ResourceLocation) StringReader(com.mojang.brigadier.StringReader) ParticleType(net.minecraft.core.particles.ParticleType) SimpleParticleType(net.minecraft.core.particles.SimpleParticleType) ClientboundLevelParticlesPacket(net.minecraft.network.protocol.game.ClientboundLevelParticlesPacket) CraftPlayer(org.bukkit.craftbukkit.v1_17_R1.entity.CraftPlayer) SimpleParticleType(net.minecraft.core.particles.SimpleParticleType) CommandSyntaxException(com.mojang.brigadier.exceptions.CommandSyntaxException)

Aggregations

ParticleOptions (net.minecraft.core.particles.ParticleOptions)6 StringReader (com.mojang.brigadier.StringReader)4 CommandSyntaxException (com.mojang.brigadier.exceptions.CommandSyntaxException)4 ParticleType (net.minecraft.core.particles.ParticleType)4 SimpleParticleType (net.minecraft.core.particles.SimpleParticleType)4 ClientboundLevelParticlesPacket (net.minecraft.network.protocol.game.ClientboundLevelParticlesPacket)4 ResourceLocation (net.minecraft.resources.ResourceLocation)4 MyPetPlayer (de.Keyle.MyPet.api.player.MyPetPlayer)2 Particle (org.bukkit.Particle)2 CraftPlayer (org.bukkit.craftbukkit.v1_17_R1.entity.CraftPlayer)2 CraftPlayer (org.bukkit.craftbukkit.v1_18_R1.entity.CraftPlayer)2 CraftParticle (org.bukkit.craftbukkit.v1_17_R1.CraftParticle)1 CraftParticle (org.bukkit.craftbukkit.v1_18_R1.CraftParticle)1