描述
此 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% 的首月费用。
点击以下链接开始吧!