ParticleProjectileApi

一个用于创建使用粒子效果的自定义投射物的插件的简单API。

资源图片

 描述


此 API 的设计目的是为了让插件开发者能够轻松添加自定义粒子弹道,因此得名。ParticleProjectileApi 带有自己的事件类,为开发者提供了一种当粒子击中时取消效果的方法,这在小游戏(例如防止友军射击)中非常有用。完全有可能创建多个弹道类,并且也鼓励这样做。当扩展 ParticleProjectile 类时,开发者将遇到五种方法:OnHit、OnHitBlock、OnHitEntity、OnPenetrateBlock、OnPenetrateEntity 和 OnMove。这些方法允许在弹道击中、穿过某物或移动时添加代码来执行。

特性


使用方法


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 org.bukkit.entity.LivingEntity;

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);
     }
   }
}

示例插件,利用 ParticleProjectileApi & Javadocs


Javadocs: ParticleProjectileApi

示例插件:

 

合作伙伴

正在考虑购买专属服务器?试试 Kinetic hosting!
使用优惠码 'UberDiscount' 在结账时节省 15% 的首月费用。
点击以下链接开始吧!

 

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