A sophisticated Minecraft server plugin that transforms ordinary mobs into powerful, customizable "Infernal" mobs with level-based difficulty scaling, unique abilities, advanced AI, and configurable loot systems.
- Level-Based Mob Scaling: Mobs scale with configurable levels affecting health, damage, and rewards
- 33+ Active Abilities: Combat abilities mobs use against players (meteor, beam, summon, teleport, etc.)
- 12+ Passive Abilities: Defensive and trigger-based abilities (thorns, armor, resurrection, etc.)
- Weighted Loot System: Common and special drops with player skill modifiers
- Boss Bar Tracking: Real-time health display for each infernal mob
- Region-Based Spawning: Custom mob spawning rules per region
- Group System: Cooperative play with configurable loot/exp distribution
- WorldGuard Integration: Spawn region validation
- True Damage System: Damage types that ignore resistance
- Paper/Spigot 1.21+
- Java 21+
- NyaaCore (required dependency)
- Download the latest release
- Place the JAR file in your server's
pluginsfolder - Ensure NyaaCore is also installed
- Restart the server
- Configure the plugin in
plugins/InfiniteInfernal/
plugins/InfiniteInfernal/
├── config.yml # Main configuration
├── mobs/ # Mob definitions
│ ├── zombie-1.yml
│ └── ...
├── abilities/ # Ability set definitions
│ ├── set-generic-spawn.yml
│ └── ...
├── levels/ # Level configurations
│ ├── level-1.yml
│ └── ...
├── regions/ # Region-specific spawning
│ └── ...
└── loots/ # Loot item definitions
└── ...
language: en_US
enabled: true
# Name tag format for infernal mobs
# Placeholders: {level.prefix}, {mob.name}, {level.level}, {mob.type}
nameTag: '&r[&8Infernal&r] {level.prefix}{mob.name} &cLv.&e{level.level}&r'
# Boss bar settings
bossbar:
enabled: true
killsuffix: ' &e[KILLED]'
# Scoreboard tags added to all infernal mobs
tags:
- im_mob
# World-specific configurations
worlds:
world:
enabled: true
disable-natural-spawning: true
max-mob-per-player: 10
max-mob-in-world: 240
spawn-range-min: 16
spawn-range-max: 50
spawn-interval: 20 # Ticks between spawn attempts
mob-active-interval: 60 # Ticks between ability cycles
despawnRange: 128
# Aggro configuration
aggro:
range:
min: 4
max: 56
base: 32
dec: effect:INVISIBILITY:4 # Reduces aggro
inc: effect:GLOWING:10 # Increases aggro
# Loot configuration
looting:
global: 85 # Base drop chance %
overall:
inc:
- attribute:GENERIC_LUCK:5
- enchant:looting:3
dec:
- effect:UNLUCK:10
max: 40.0name: '&7Infernal Zombie' # Display name (supports color codes)
type: ZOMBIE # Bukkit EntityType
# Abilities (references ability sets)
abilities:
- set-generic-spawn
- set-attack-poison
# NBT tags to apply (optional)
nbttags: '{ArmorDropChances:[0.0f,0.0f,0.0f,0.0f]}'
# Health override (-1 = use level config)
healthOverride: -1
# Dynamic health calculation
enableDynamicHealth: false
dynamicHealthExpression: 'maxHealth * playerCount * 0.5'
# Spawn configuration
spawn:
autoSpawn: true # Include in natural spawning
weight: 100 # Selection weight
levels:
- '1-5' # Level range
- '10' # Single level
worlds:
- world # Allowed worlds (empty = all)
biomes: [] # Allowed biomes (empty = all)
# Loot configuration
loot:
vanilla: false # Drop vanilla loot
imLoot: true # Drop configured loot
special:
chance: 20.0 # Special drop chance %
list:
- rare-sword:50 # item:weight
- rare-armor:30
expOverride: -1 # -1 = use level configlevel: 5
prefix: '&e' # Color prefix for name
attr:
health: 100.0
damage: 15.0
damageResist: 0.0 # Percentage damage reduction
exp: 25
aggro: 32.0 # Aggro range
spawnConfig:
from: 500 # Min distance from world spawn
to: 1500 # Max distance from world spawn
weight: 10 # Selection weight at this distanceweight: 10 # Selection weight for this set
abilities:
TeleportToPlayer:
__class__: cat.nyaa.infiniteinfernal.ability.impl.active.AbilityTeleportToPlayer
radius: 10.0 # Teleport radius around target
range: 64.0 # Max range to target
SkillEffect:
__class__: cat.nyaa.infiniteinfernal.ability.impl.active.AbilitySkillEffect
particle:
type: PORTAL
amount: 100
particleEnabled: true
soundEnabled: true
sound: ENTITY_ENDERMAN_TELEPORTname: dungeon_region
region:
world: world
xMin: 100
xMax: 200
yMin: 60
yMax: 150
zMin: -100
zMax: 0
mobs:
- boss-mob:100 # mob:weight
- minion-mob:50
followGlobalLevel: false # Use region-specific levels
maxSpawnAmountOverride: 50 # Max mobs in region| Command | Permission | Description |
|---|---|---|
/ii reload |
im.reload |
Reload all configurations |
/ii spawn <mob> [world x y z] [level] |
im.spawn |
Spawn a mob manually |
/ii addloot <name> [dynamic] |
im.addloot |
Add held item as loot |
/ii getloot <name> |
im.getloot |
Get loot item |
/ii setdrop <item> <level> <weight> |
im.setdrop |
Set loot for level |
/ii inspect <level> |
im.inspect |
View level's loot table |
/ii kill all |
im.kill.all |
Kill all infernal mobs |
Aliases: infiniteinfernal, ii, im, inf
| Command | Description |
|---|---|
/ig join <group> |
Join a group |
/ig leave |
Leave current group |
/ig list |
List group members |
/ig kick <player> |
Remove a member |
/ig disband |
Disband the group |
/ig setlootmode <roll|round|equal> |
Set loot distribution |
/ig setexpmode <share|average> |
Set exp distribution |
| Command | Description |
|---|---|
/imi all |
Receive all kill messages |
/imi me |
Only your kills |
/imi near |
Nearby kills only |
/imi off |
Disable messages |
Runtime configuration management using dot-notation paths.
| Command | Permission | Description |
|---|---|---|
/ii config get <path> |
im.config |
Read a config value |
/ii config set <path> <value> |
im.config |
Set a config value |
/ii config add <path> <value> |
im.config |
Add value to list/map |
/ii config remove <path> <value> |
im.config |
Remove value from list/map |
/ii config delete <path> |
im.config |
Delete entry at path |
/ii config list [path] |
im.config |
List keys at path |
/ii config reload |
im.config |
Reload config from disk |
/ii config save |
im.config |
Save config to disk |
/separates logical parts (config sections, files).accesses properties within an object
Path Examples:
language # Main config field
bossbar.enabled # Nested property
worlds/world.aggro.range.max # World config, nested properties
mobs/zombie-1.healthOverride # Mob config property
mobs/zombie-1.spawn.weight # Nested in mob config
levels/5.attr.health # Level 5 config, nested property
abilities/set-1.weight # Ability set property
regions/dungeon.mobs # Region config, list property
| Type | Format | Example |
|---|---|---|
| Single value | plain text | 100, true, ZOMBIE |
| String with spaces | quoted | "Hello World" |
| List (full replace) | comma-separated | a,b,c |
| List (add multiple) | space-separated args | /ii config add tags tag1 tag2 |
| Map entry | key:value | /ii config add worlds/world.trueDamage fire:2.0 |
# Get values
/ii config get language
/ii config get bossbar.enabled
/ii config get worlds/world.aggro.range.max
/ii config get mobs/zombie-1.healthOverride
# Set values
/ii config set language en_US
/ii config set bossbar.enabled true
/ii config set mobs/zombie-1.healthOverride 5000
# List operations
/ii config add tags im_boss # Add single item
/ii config add mobs/zombie-1.abilities set-2 set-3 # Add multiple
/ii config remove tags im_mob # Remove item
/ii config set tags a,b,c # Replace entire list
# Map operations
/ii config add worlds/world.trueDamage freeze:3.0 # Add entry
/ii config remove worlds/world.trueDamage freeze # Remove entry
# Persistence
/ii config save # Save all changes
/ii config reload # Reload from disk| Permission | Default | Description |
|---|---|---|
im.command |
true | Use basic commands |
im.reload |
op | Reload configurations |
im.spawn |
op | Spawn mobs manually |
im.addloot |
op | Add loot items |
im.getloot |
op | Retrieve loot items |
im.setdrop |
op | Configure drops |
im.inspect |
op | View loot tables |
im.kill.all |
op | Kill all mobs |
im.config |
op | Runtime config commands |
im.debug |
op | Debug commands |
im.group |
true | Group commands |
imi.command |
true | Message control |
| Ability | Description |
|---|---|
AbilityBeam |
Damaging beam projectile |
AbilityMeteor |
Meteors fall from sky |
AbilityFang |
Evoker fang attack |
AbilitySummon |
Summon minion mobs |
AbilityClone |
Create mob clones |
AbilityProjectile |
Throw projectiles |
AbilityTeleportToPlayer |
Teleport near target |
AbilityLifesteal |
Steal health on hit |
AbilityFire |
Fire-based attacks |
AbilityAOE |
Area of effect damage |
AbilityThrowPlayer |
Throw target player |
AbilityPull |
Pull target toward mob |
AbilityShield |
Temporary invulnerability |
AbilityExplode |
Explosion attack |
| Ability | Description |
|---|---|
AbilityArmor |
Increased armor rating |
AbilityResistance |
Damage resistance |
AbilityThorns |
Reflect damage |
AbilityImmunity |
Immune to effect/damage type |
AbilityNirvana |
Resurrect on death |
AbilityIgnite |
Set attacker on fire |
AbilityPotionHit |
Apply potion on attack |
Mobs can have dynamic health calculated from expressions:
Available Variables:
health- Base health from level configmaxHealth- Current max healthplayerCount- Players near the mobaggroRange- Mob's aggro range
Example:
enableDynamicHealth: true
dynamicHealthExpression: 'maxHealth * playerCount * (0.6 + 0.1 * playerCount)'Modifiers affect loot drop chances based on player attributes/effects:
# Attribute modifier: attribute:ATTRIBUTE_NAME:value
- attribute:GENERIC_LUCK:5
# Effect modifier: effect:EFFECT_NAME:minLevel
- effect:INVISIBILITY:2
# Enchantment modifier: enchant:ENCHANTMENT:level
- enchant:looting:3The plugin fires custom events that other plugins can listen to:
InfernalSpawnEvent- When an infernal mob spawnsLootDropEvent- When loot is about to drop (cancellable)IMobNearDeathEvent- When mob is about to die (can prevent death)
- Check
enabled: truein config.yml - Verify world is in the
worldssection - Check
autoSpawn: truein mob config - Verify level configs exist for spawn distance
- Check
max-mob-per-playerandmax-mob-in-worldlimits
- Verify ability set exists in
abilities/folder - Check mob config references correct ability set name
- Ensure player is within aggro range
- Check
mob-active-intervaltiming
- Check
imLoot: truein mob config - Verify loot items exist
- Check
looting.globalpercentage in world config - Review modifier conditions (luck, effects)
This project is licensed under the MIT License.
- NyaaCat Development Team
- Contributors and testers