Extension Development Guide
How to create an internal and an external extension.
Overview
Extension Types
final class KnockbackExtension extends JavaPlugin {
public static double knockbackMultiplication;
public static double onGroundAdd;
@Override
public void onEnable() {
Plugin plugin = getServer().getPluginManager().getPlugin("Asteroid");
knockbackMultiplication = plugin.getConfig().getDouble("knockback.multiplication");
onGroundAdd = plugin.getConfig().getDouble("knockback.on_ground_add");
plugin.getServer().getPluginManager().registerEvents(new KnockbackEvent(), plugin);
}
@Override
public void onDisable() {
// Plugin shutdown logic
}
}public class KnockbackEvent implements Listener {
public final FakePlayerRegistry fakePlayerRegistry;
public KnockbackEvent() {
fakePlayerRegistry = new FakePlayerRegistry();
}
@EventHandler
public void entityDamage(EntityDamageByEntityEvent event) {
Entity attacker = event.getDamager();
Entity victim = event.getEntity();
double damage = event.getDamage();
if (attacker instanceof Player && fakePlayerRegistry.isFakePlayer(victim)) {
FakePlayer fakePlayer = fakePlayerRegistry.getFakePlayer(victim);
Location attackerLoc = attacker.getLocation();
Location victimLoc = victim.getLocation();
double dX = victimLoc.getX() - attackerLoc.getX();
double dZ = victimLoc.getZ() - attackerLoc.getZ();
double distance = Math.sqrt(dX * dX + dZ * dZ);
if (distance > 0) {
dX = dX / distance;
dZ = dZ / distance;
}
double knockbackForce = damage * KnockbackExtension.knockbackMultiplication;
if (victim.isOnGround()) {
knockbackForce += KnockbackExtension.onGroundAdd;
}
Vector velocity = new Vector(dX * knockbackForce, 0.4, dZ * knockbackForce);
fakePlayer.setVelocity(velocity);
}
}
}Internal Extensions
Extension Lifecycle
Interfaces
2. Choose Your Interfaces
3. Implement Lifecycle Methods
4. Add Version Compatibility
Extension Management
Loading Extensions
Best Practices
1. Resource Management
2. Error Handling
3. Version Compatibility
4. Dependency Management
Common Extension Types
1. Behavior Extensions
2. Spawn Effect Extensions
Testing Extensions
Common Issues and Solutions
Extension Not Loading
Dependency Issues
Last updated