Skip to main content

Extensions

Extensions are platform-agnostic JARs loaded at runtime from the plugin data folder. Each extension registers a strategy class and ships YAML config plus texture assets.

Deploy paths

KindFolderExample
Blockblocks/blocks/my-tnt-1.0.0.jar
Itemitems/items/my-grenade-1.0.0.jar

Bundled extensions ship inside the bootstrap JAR and extract on first boot.

Two identifiers

FieldSourcePurpose
Manifest id*-extension.ymlRegisters the strategy in IgnisStrategyRegistry
Config idconfig.ymlIn-game type id (/ignis give, NBT type key)

These are usually the same (e.g. nuke). Hyphens in ids become package segments without hyphens (quarry-cachequarrycache).

Manifest

Block extensions use block-extension.yml; items use item-extension.yml:

id: my-tnt
name: My TNT
version: 1.0.0
api-version: 1.0.0
author: YourName
strategy: dev.rono.igniscore.block.mytnt.Strategy

Project layout

my-extension/
├── pom.xml
├── src/main/java/.../Strategy.java
├── src/main/resources/
│ ├── block-extension.yml # or item-extension.yml
│ ├── config.yml
│ └── textures/
└── src/test/java/...

API version

api-version declares the Ignis API your extension was built against — see API versioning.

Reference extensions

BlockPattern
nukeExplosive + fuse + ExplosionConfig
quarry-cacheNon-combustible GUI block
tunneling-tntMinimal onTrigger-only strategy
ItemPattern
grenadeThrowable + ThrowableItemConfig
detonatorMulti-click item