mirror of
https://github.com/KAMKEEL/CustomNPC-Plus-API.git
synced 2026-11-14 10:54:44 +00:00
137 lines
4.8 KiB
Java
137 lines
4.8 KiB
Java
package noppes.npcs.api;
|
|
|
|
import noppes.npcs.api.entity.*;
|
|
import noppes.npcs.api.entity.IEnergyExplosion;
|
|
|
|
/**
|
|
* Central controller for creating energy entities and routing energy damage.
|
|
* Access via API.getEnergyController().
|
|
*
|
|
* All factory methods create entities that are NOT spawned in the world.
|
|
* Configure the entity, then call fire() (projectiles) or spawn() (zones/sweepers/panels)
|
|
* to place it in the world.
|
|
*/
|
|
public interface IEnergyHandler {
|
|
|
|
// ==================== PROJECTILE CREATION ====================
|
|
|
|
/**
|
|
* Create an energy orb projectile. Not spawned until fire() is called.
|
|
* @param world the world
|
|
* @param owner the owning entity
|
|
* @param x X position
|
|
* @param y Y position
|
|
* @param z Z position
|
|
* @param size the orb size
|
|
* @return the energy orb entity
|
|
*/
|
|
IEnergyOrb createOrb(IWorld world, IEntity owner, double x, double y, double z, float size);
|
|
|
|
/**
|
|
* Create an energy beam projectile. Not spawned until fire() is called.
|
|
* @param world the world
|
|
* @param owner the owning entity
|
|
* @param x X position
|
|
* @param y Y position
|
|
* @param z Z position
|
|
* @param beamWidth the beam width
|
|
* @param headSize the head size
|
|
* @return the energy beam entity
|
|
*/
|
|
IEnergyBeam createBeam(IWorld world, IEntity owner, double x, double y, double z, float beamWidth, float headSize);
|
|
|
|
/**
|
|
* Create an energy disc projectile. Not spawned until fire() is called.
|
|
* @param world the world
|
|
* @param owner the owning entity
|
|
* @param x X position
|
|
* @param y Y position
|
|
* @param z Z position
|
|
* @param radius the disc radius
|
|
* @param thickness the disc thickness
|
|
* @return the energy disc entity
|
|
*/
|
|
IEnergyDisc createDisc(IWorld world, IEntity owner, double x, double y, double z, float radius, float thickness);
|
|
|
|
/**
|
|
* Create an energy laser projectile. Not spawned until fire() is called.
|
|
* @param world the world
|
|
* @param owner the owning entity
|
|
* @param x X position
|
|
* @param y Y position
|
|
* @param z Z position
|
|
* @param laserWidth the laser width
|
|
* @return the energy laser entity
|
|
*/
|
|
IEnergyLaser createLaser(IWorld world, IEntity owner, double x, double y, double z, float laserWidth);
|
|
|
|
// ==================== ZONE CREATION ====================
|
|
|
|
/**
|
|
* Create a hazard zone entity with defaults. Not spawned until spawn() is called.
|
|
* Hazards deal continuous damage to entities within the zone.
|
|
* @param world the world
|
|
* @param owner the owning entity
|
|
* @param x X position
|
|
* @param y Y position
|
|
* @param z Z position
|
|
* @return the energy zone entity
|
|
*/
|
|
IEnergyZone createHazard(IWorld world, IEntity owner, double x, double y, double z);
|
|
|
|
/**
|
|
* Create a trap zone entity with defaults. Not spawned until spawn() is called.
|
|
* Traps trigger when entities enter and deal burst damage.
|
|
* @param world the world
|
|
* @param owner the owning entity
|
|
* @param x X position
|
|
* @param y Y position
|
|
* @param z Z position
|
|
* @return the energy zone entity
|
|
*/
|
|
IEnergyZone createTrap(IWorld world, IEntity owner, double x, double y, double z);
|
|
|
|
// ==================== SWEEPER CREATION ====================
|
|
|
|
/**
|
|
* Create a sweeper entity with defaults. Not spawned until spawn() is called.
|
|
* Sweepers rotate a beam that damages entities in its path.
|
|
* @param world the world
|
|
* @param owner the owning entity
|
|
* @param x X position
|
|
* @param y Y position
|
|
* @param z Z position
|
|
* @return the energy sweeper entity
|
|
*/
|
|
IEnergySweeper createSweeper(IWorld world, IEntity owner, double x, double y, double z);
|
|
|
|
// ==================== PANEL CREATION ====================
|
|
|
|
/**
|
|
* Create a panel entity with defaults. Not spawned until spawn() is called.
|
|
* Panels are flat energy barriers that can deal damage on contact.
|
|
* @param world the world
|
|
* @param owner the owning entity
|
|
* @param x X position
|
|
* @param y Y position
|
|
* @param z Z position
|
|
* @return the energy panel entity
|
|
*/
|
|
IEnergyPanel createPanel(IWorld world, IEntity owner, double x, double y, double z);
|
|
|
|
// ==================== EXPLOSION CREATION ====================
|
|
|
|
/**
|
|
* Create an energy explosion entity. Not spawned until spawn() is called.
|
|
* Visual-only by default. Set damage > 0 to enable area damage with falloff.
|
|
* @param world the world
|
|
* @param owner the owning entity
|
|
* @param x X position
|
|
* @param y Y position
|
|
* @param z Z position
|
|
* @param radius the explosion radius
|
|
* @return the energy explosion entity
|
|
*/
|
|
IEnergyExplosion createExplosion(IWorld world, IEntity owner, double x, double y, double z, float radius);
|
|
}
|