
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!