48 lines
1.5 KiB
Java
48 lines
1.5 KiB
Java
package tc.oc.pgm.fireworks;
|
|
|
|
import javax.annotation.Nonnull;
|
|
|
|
import org.bukkit.Bukkit;
|
|
import org.bukkit.FireworkEffect;
|
|
import org.bukkit.Location;
|
|
import org.bukkit.Material;
|
|
import org.bukkit.block.Block;
|
|
import org.bukkit.entity.EntityType;
|
|
import org.bukkit.entity.Firework;
|
|
import org.bukkit.inventory.meta.FireworkMeta;
|
|
|
|
import com.google.common.base.Preconditions;
|
|
|
|
public class FireworkUtil {
|
|
public static @Nonnull Firework spawnFirework(@Nonnull Location location, @Nonnull FireworkEffect effect, int power) {
|
|
Preconditions.checkNotNull(location, "location");
|
|
Preconditions.checkNotNull(effect, "firework effect");
|
|
Preconditions.checkArgument(power >= 0, "power must be positive");
|
|
|
|
FireworkMeta meta = (FireworkMeta) Bukkit.getItemFactory().getItemMeta(Material.FIREWORK);
|
|
meta.setPower(power);
|
|
meta.addEffect(effect);
|
|
|
|
Firework firework = (Firework) location.getWorld().spawnEntity(location, EntityType.FIREWORK);
|
|
firework.setFireworkMeta(meta);
|
|
|
|
return firework;
|
|
}
|
|
|
|
public static @Nonnull Location getOpenSpaceAbove(@Nonnull Location location) {
|
|
Preconditions.checkNotNull(location, "location");
|
|
|
|
Location result = location.clone();
|
|
while(true) {
|
|
Block block = result.getBlock();
|
|
if(block == null || block.getType() == Material.AIR) break;
|
|
|
|
result.setY(result.getY() + 1);
|
|
}
|
|
|
|
return result;
|
|
}
|
|
|
|
private FireworkUtil() { }
|
|
}
|