Package org.getspout.spoutapi.particle

Source Code of org.getspout.spoutapi.particle.Particle

/*
* This file is part of SpoutcraftPlugin.
*
* Copyright (c) 2011 SpoutcraftDev <http://spoutcraft.org//>
* SpoutcraftPlugin is licensed under the GNU Lesser General Public License.
*
* SpoutcraftPlugin is free software: you can redistribute it and/or modify
* it under the terms of the GNU Lesser General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* SpoutcraftPlugin is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
* GNU Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public License
* along with this program.  If not, see <http://www.gnu.org/licenses/>.
*/
package org.getspout.spoutapi.particle;

import java.util.Random;

import org.bukkit.Location;
import org.bukkit.entity.Player;
import org.bukkit.util.Vector;

import org.getspout.spoutapi.packet.PacketParticle;
import org.getspout.spoutapi.player.SpoutPlayer;

public class Particle {
  private String name;
  private Location location;
  private Vector motion;
  private int maxAge;
  private double range = 16;
  private float scale;
  private float gravity = 0F;
  private float particleRed = -1F;
  private float particleBlue = -1F;
  private float particleGreen = -1F;
  private int amount = 10;

  public Particle(ParticleType particle, Location location, Vector motion) {
    this(particle.name, location, motion);
  }

  public Particle(String particle, Location location, Vector motion) {
    this.setName(particle);
    this.setLocation(location);
    this.setMotion(motion);
    setMaxAge((new Random()).nextInt(100) + 100);
    setScale((new Random().nextFloat() * 0.5F + 0.5F) * 2.0F);
  }

  /**
   * Gets the name of this type of particle
   * @return name
   */
  public String getName() {
    return name;
  }

  /**
   * Sets the name of this type of particle
   * @param name
   */
  public void setName(String name) {
    this.name = name;
  }

  /**
   * Gets the spawn location for this particle
   * @return particle
   */
  public Location getLocation() {
    return location;
  }

  /**
   * Sets the spawn location for this particle
   * @param location
   */
  public void setLocation(Location location) {
    this.location = location;
  }

  /**
   * Gets the direction of motion for this particle
   * @return motion
   */
  public Vector getMotion() {
    return motion;
  }

  /**
   * Sets the direction of motion for this particle
   * @param motion to set
   */
  public Particle setMotion(Vector motion) {
    this.motion = motion;
    return this;
  }

  /**
   * Get the maximum age (in ticks) that this particle will last
   * @return age
   */
  public int getMaxAge() {
    return maxAge;
  }

  /**
   * Sets the maximum age (in ticks) that the particle will last
   * @param maxAge
   */
  public Particle setMaxAge(int maxAge) {
    this.maxAge = maxAge;
    return this;
  }

  /**
   * Gets the red color for the particle, or -1 if it uses the default color. Values should be (0-1)
   * @return color
   */
  public float getParticleRed() {
    return particleRed;
  }

  /**
   * Sets the red color for the particle, or -1 if it uses the default color. Values should be (0-1)
   * @param particleRed
   */
  public Particle setParticleRed(float particleRed) {
    this.particleRed = particleRed;
    return this;
  }

  /**
   * Gets the blue color for the particle, or -1 if it uses the default color. Values should be (0-1)
   * @return color
   */
  public float getParticleBlue() {
    return particleBlue;
  }

  /**
   * Sets the blue color for the particle, or -1 if it uses the default color. Values should be (0-1)
   * @return color
   */
  public Particle setParticleBlue(float particleBlue) {
    this.particleBlue = particleBlue;
    return this;
  }

  /**
   * Gets the gree color for the particle, or -1 if it uses the default color. Values should be (0-1)
   * @return color
   */
  public float getParticleGreen() {
    return particleGreen;
  }

  /**
   * Gets the green color for the particle, or -1 if it uses the default color. Values should be (0-1)
   * @return color
   */
  public Particle setParticleGreen(float particleGreen) {
    this.particleGreen = particleGreen;
    return this;
  }

  /**
   * Gets the scale of the particle
   * @return scale
   */
  public float getScale() {
    return scale;
  }

  /**
   * Sets the scale of the particle
   * @param scale
   */
  public Particle setScale(float scale) {
    this.scale = scale;
    return this;
  }

  /**
   * Gets the gravity modifier for the particle (0 = no gravity)
   * @return gravity
   */
  public float getGravity() {
    return gravity;
  }

  /**
   * Sets the gravity modifier for the particle (0 = no gravity)
   * @param gravity
   */
  public Particle setGravity(float gravity) {
    this.gravity = gravity;
    return this;
  }

  /**
   * Spawns this particle - making it visible to the given player
   * @param player to spawn the particle for
   */
  public void spawn(SpoutPlayer player) {
    if (player.isSpoutCraftEnabled() && player.getLocation().distance(location) <= range) {
      player.sendPacket(new PacketParticle(this));
    }
  }

  /**
   * Spawns this particle in the world, making it visible to all players
   */
  public void spawn() {
    if (location != null && name != null) {
      for (Player p : location.getWorld().getPlayers()) {
        if (p instanceof SpoutPlayer) {
          spawn(((SpoutPlayer) p));
        }
      }
    }
  }

  public int getAmount() {
    return amount;
  }

  public Particle setAmount(int amount) {
    this.amount = amount;
    return this;
  }

  /**
   * Gets the range this particle will be visible at
   * @return range
   */
  public double getRange() {
    return range;
  }

  /**
   * Sets the range this particle will be visible at
   * Client graphics settings may override this
   * @param range
   */
  public Particle setRange(double range) {
    this.range = range;
    return this;
  }

  public enum ParticleType {
    BUBBLE("bubble"),
    SUSPENDED("suspended"),
    DEPTHSUSPEND("depthsuspend"),
    TOWNAURA("townaura"),
    CRIT("crit"),
    MAGICCRIT("magicCrit"),
    SMOKE("smoke"),
    MOBSPELL("mobSpell"),
    SPELL("spell"),
    NOTE("note"),
    PORTAL("portal"),
    ENCHANTMENTTABLE("enchantmenttable"),
    EXPLODE("explode"),
    FLAME("flame"),
    LAVA("lava"),
    FOOTSTEP("footstep"),
    SPLASH("splash"),
    LARGESMOKE("largesmoke"),
    CLOUD("cloud"),
    REDDUST("reddust"),
    SNOWBALLPOOF("snowballpoof"),
    DRIPWATER("dripWater"),
    DRIPLAVA("dripLava"),
    SNOWSHOVEL("snowshovel"),
    SLIME("slime"),
    HEART("heart"),
    UNKNOWN(null),;
    final String name;

    ParticleType(final String name) {
      this.name = name;
    }

    public String getName() {
      return name;
    }

    public static ParticleType getTypeFromName(String name) {
      for (ParticleType type : ParticleType.values()) {
        if (type.name != null && type.name.equals(name)) {
          return type;
        }
      }
      return UNKNOWN;
    }
  }
}
TOP

Related Classes of org.getspout.spoutapi.particle.Particle

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.