Плагины/ParticleProjectileApi
ParticleProjectileApi

ParticleProjectileApi

A simple api for creating plugins with custom projectiles using particles

12
0

 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 link below to get started now!

 

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

Совместимость

Minecraft: Java Edition

1.20–1.21.10

Платформы

Поддерживаемые окружения

Сервер

Создатели

Детали

Лицензия:GPL-3.0-only
Опубликован:1 месяц назад
Обновлён:1 месяц назад
Главная