![[AN]Adaptive Nemesis](https://cdn.modrinth.com/data/anacxDIl/f63c99aa9be78e31253e68c2c8368f95ea97d58e.gif)
[AN]Adaptive Nemesis
The dynamic difficulty balancing module specifically designed for integration packs aims to address the issue of difficulty imbalance in current mainstream integration packs, where the early game is too easy and the late game is too challenging.
Tags
Creators
Details
1.0.4
Compatibility
Changes
⚔️ Adaptive Nemesis v1.0.4 ⚔️
Every time you grow stronger, your Nemesis evolves
✨ New Features
🎯 Boss Identification System Refactor
Adopted Strategy Pattern + Chain of Responsibility for unified Boss identification logic:
| Strategy | Priority | Description |
|---|---|---|
| Type-Based | 1 | instanceof check for vanilla Bosses |
| Name-Based | 2 | Keyword matching for modded Bosses |
| Health Threshold | 3 | Auto-identify when MaxHealth ≥ 200 |
New configs:
bossIdentificationKeywords,bossHealthThreshold
🛡️ Dangerous Enchantment Protection
Added dangerous enchantment detection to prevent mobs from obtaining game-breaking enchants:
| Detection Keywords | Examples |
|---|---|
| English | immune, invulnerable, god, divine_protection |
| Chinese | 免伤, 无敌, 免疫 |
Auto-skips dangerous enchants, logs WARN message
🤝 Mod Compatibility Enhancement
L2Hostility Compatibility
| Config | Effect |
|---|---|
modCompatL2HostilityEnabled |
Skips health/speed scaling to prevent HP explosion from ADD_MULTIPLIED_TOTAL mechanic |
Epic Fight & Iron's Spells NaN/Infinity Protection
| Protection | Description |
|---|---|
safeSetAttribute() |
Prevents NaN/Infinity attribute value propagation |
safeDouble() |
Falls back to safe defaults on abnormal values |
💎 Soul Stone Marker System
Solves duplicate scaling after soul stone capture/release:
| Marker Method | Persistence | Purpose |
|---|---|---|
| NBT Marker | ❌ Cleared by soul stone | Standard detection path |
| LUCK Attribute Marker | ✅ Retained by soul stone | Secondary detection path |
Uses characteristic value
0.0420as cross-NBT clearing marker
📝 Debug Log File
Fixed config shell issue, implemented complete log file output:
[debug]
debugLogToFile = true
debugLogFilePath = "logs/adaptive_nemesis_debug.log"
🐛 Bug Fixes
| Fix | Description |
|---|---|
| Mob State Validation | Clears Invulnerable flag, fixes invalid health/attack/armor attributes |
| Config Screen Update | Added "Mod Compatibility" category with 4 toggleable switches |
| Localization Added | Added EN/ZH translations for 6 new config options |
⚙️ New Config Options
| Config Key | Type | Default | Description |
|---|---|---|---|
bossIdentificationKeywords |
String | boss,dragon,wither,warden |
Boss identification keywords |
bossHealthThreshold |
Double | 200.0 | Boss health identification threshold |
modCompatL2HostilityEnabled |
Boolean | true | L2Hostility compatibility |
modCompatEpicFightEnabled |
Boolean | true | Epic Fight compatibility |
modCompatIronsSpellsEnabled |
Boolean | true | Iron's Spells compatibility |
modCompatApotheosisEnabled |
Boolean | true | Apotheosis compatibility |
Projects on Modrinth are automatically available through a Maven repository for use with JVM build tools such as Gradle. To learn more about the Modrinth Maven API, click here.
Note: When available, you should use the creator's maven repo instead as it will have transitive dependency information that the Modrinth Maven API does not. You may also end up with duplicate dependencies if you use a mix of Modrinth and non-Modrinth Maven repositories for your dependencies, because the group identifier will be different when served through the Modrinth Maven API.
Maven coordinates:
Version ID:
build.gradle:
repositories {
exclusiveContent {
forRepository {
maven {
name = "Modrinth"
url = "https://api.modrinth.com/maven"
}
}
// forRepositories(fg.repository) // Uncomment when using ForgeGradle
filter {
includeGroup "maven.modrinth"
}
}
}
// Standard Gradle dependency
dependencies {
implementation "maven.modrinth:anacxDIl:9wYZ9eV5"
}
// Legacy Loom dependency
dependencies {
modImplementation "maven.modrinth:anacxDIl:9wYZ9eV5"
}
