Skip to main content

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).