Extension Cookbook
Short, task-oriented recipes. Link to Javadoc for full signatures.
Minimal block strategy
public class Strategy extends AbstractIgnisBlockStrategy {
public Strategy(IgnisStrategyContext context) {
super(context);
}
}
Maven: dev.rono:api:1.0.0 (provided)
Javadoc: AbstractIgnisBlockStrategy
Explosion config (blocks)
ExplosionConfig explosion = ExtensionConfigs.explosion(definition);
int fuse = explosion.fuse();
float power = explosion.resolvedPower();
Maven: dev.rono.extensions:shared (provided)
Sample: extensions/blocks/nuke
Throwable item
@Override
public void onItemUse(IgnisPlayer player, ItemDefinition definition, IgnisItem item,
IgnisInteraction action, IgnisBlock clickedBlock) {
if (action == IgnisInteraction.RIGHT_CLICK_AIR) {
ThrowableItemConfig cfg = ExtensionConfigs.throwable(definition);
throwWithFuse(player, item, cfg.throwVelocity(), cfg.fuseTicks());
}
}
Javadoc: IgnisItemStrategy
Sample: extensions/items/grenade
Block manifest
id: my-tnt
name: My TNT
version: 1.0.0
api-version: 1.0.0
author: YourName
strategy: com.example.mytnt.Strategy
Place in src/main/resources/block-extension.yml.
Test dependency
<dependency>
<groupId>dev.rono</groupId>
<artifactId>api</artifactId>
<type>test-jar</type>
<scope>test</scope>
</dependency>
Minimum tests: StrategyTest (manifest + profile smoke) and BehaviorTest (lifecycle callbacks).
Related
- Extensions — deploy paths and identifiers
- API Reference — package overview
- API versioning — semver rules