promotional bannermobile promotional banner
header
premium banner

ParticleProjectileApi will start downloading in 5 seconds...

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