promotional bannermobile promotional banner

ParticleProjectileApi

A simple api for creating plugins with custom projectiles using particles
A projectile created using the API

A projectile created using the API

Description

 Description


This API is designed to allow plugin developers to easily add customized particle projectiles, hence the name. ParticleProjectileApi comes with its own event classes giving the developer a way to cancel an effect when a particle hits, this is quite useful in say mini-games to prevent friendly-fire. It is completely possible to create multiple projectile classes and is encouraged too. When extending the ParticleProjectile class, the developer will be met with five methods: OnHit, OnHitBlock, OnHitEntity, OnPenetrateBlock, OnPenetrateEntity, and OnMove. These methods allow for adding code to run when a projectile hits, passes through something, or moves.

Features


  • method to launch particles (No packets used)
  • Custom events that can be canceled
  • Create multiple projectile classes for different effects
  • More to come!

Usage


MyProjectile.class

package com.aim.coltonjgriswold.projectiles;

import org.bukkit.Location;
import org.bukkit.block.Block;
import org.bukkit.entity.Damageable;
import org.bukkit.entity.Entity;
import org.bukkit.entity.Player;

import com.aim.coltonjgriswold.api.ParticleProjectile;

public class MyProjectile extends ParticleProjectile {

   public MyProjectile() {
     super(Particle.REDSTONE, 0.1, 7.5, 20.0 , 128.0);
     setColor(ParticleColor.fromRGB(255, 0, 0));
     //Initialize a projectile with a color of red, a hitbox with size 0.1 cubed, Mass of 7.5 grams, speed of 20.0 meters/second, max distance of 128 meters
   }

   @Override
   public void OnLaunch(LivingEntity who, Location start) {
     //Do something when launch
   }

   @Override
   public void OnHit(LivingEntity who, Location end) {
     //Do something when reach max distance
   }

   @Override
   public void OnHitBlock(LivingEntity who, Location end, Block what) {
     //Do something when hit block
   }

   @Override
   public void OnHitEntity(LivingEntity who, Location end, Entity what) {
     //Do something when hit entity
   }

   @Override
   public void OnPenetrateBlock(LivingEntity who, Location where, Block what) {
     //Do something when passing through a block
   }

   @Override
   public void OnPenetrateEntity(LivingEntity who, Location where, Entity what) {
     //Do something when passing through an entity
   }

   public void OnMove(Location previous, Location current, double step) {
     //Do something when the the particle moves
   }
}
package com.aim.coltonjgriswold;
import org.bukkit.Material;
import org.bukkit.event.EventHandler;
import org.bukkit.event.Listener;
import org.bukkit.event.player.PlayerInteractEvent;
import org.bukkit.plugin.java.JavaPlugin;
import org.bukkit.util.Vector;

import com.aim.coltonjgriswold.api.utilities.ParticleColor;
import com.aim.coltonjgriswold.projectiles.MyProjectile;

public class MyPlugin extends JavaPlugin implements Listener {

   MyProjectile projectile;
 
   public void onEnable() {
     getServer().getPluginManager().registerEvents(this, this);
     projectile = new MyProjectile();
   }

   public void onDisable() {

   }
 
   @EventHandler
   public void oninteract(PlayerInteractEvent event) {
     Material item = event.getPlayer().getInventory().getItemInMainHand().getType();
     if (item == Material.STICK) {
       //launch MyProjectile with physics turned on
       projectile.launch(event.getPlayer(), true);
     }
   }
}

Example Plugin Utilizing ParticleProjectileApi & Javadocs


Javadocs: ParticleProjectileApi

Example plugin:

 

Affiliates

Thinking about getting a dedicated server? Try Kinetic hosting!
Save 15% on your first month by using code 'UberDiscount' at checkout!
Click the image or link below to get started now!

 

https://billing.kinetichosting.net/aff.php?aff=340

The ParticleProjectileApi Team

profile avatar
  • 1
    Followers
  • 8
    Projects
  • 489.0K
    Downloads

More from coltonj96View all

  • UberEnchant project image

    UberEnchant

    • 452.5K
    • Bukkit Plugins

    Now with custom enchant table/anvil mechanics! Manipulate item names, lore, enchantments, and more!

    • 452.5K
    • June 8, 2026
    • Bukkit Plugins
    • +4
  • I dont want portal yet project image

    I dont want portal yet

    • 264.2K
    • Mods

    disable nether, end, otherside, twilight forest, blue skies and divine rpg portals

    • 264.2K
    • February 25, 2024
    • Mods
    • +3
  • Media Menu project image

    Media Menu

    • 2.7K
    • Bukkit Plugins

    A GUI Menu For Media

    • 2.7K
    • December 16, 2015
    • Bukkit Plugins
    • +1
  • SimplyConnect project image

    SimplyConnect

    • 10.6K
    • Bukkit Plugins

    SimplyConnect

    • 10.6K
    • March 4, 2014
    • Bukkit Plugins
    • +1
  • UberEnchant project image

    UberEnchant

    • 452.5K
    • Bukkit Plugins

    Now with custom enchant table/anvil mechanics! Manipulate item names, lore, enchantments, and more!

    • 452.5K
    • June 8, 2026
    • Bukkit Plugins
    • +4
  • I dont want portal yet project image

    I dont want portal yet

    • 264.2K
    • Mods

    disable nether, end, otherside, twilight forest, blue skies and divine rpg portals

    • 264.2K
    • February 25, 2024
    • Mods
    • +3
  • Media Menu project image

    Media Menu

    • 2.7K
    • Bukkit Plugins

    A GUI Menu For Media

    • 2.7K
    • December 16, 2015
    • Bukkit Plugins
    • +1
  • SimplyConnect project image

    SimplyConnect

    • 10.6K
    • Bukkit Plugins

    SimplyConnect

    • 10.6K
    • March 4, 2014
    • Bukkit Plugins
    • +1