Compatibility
Minecraft: Java Edition
Platforms
Supported environments
Tags
Creators
Details
Further Difficulty
Further Difficulty is a Minecraft NeoForge mod designed to add progressive difficulty through a configurable world progression system. You can define multiple stages, each with independent triggers, mob blacklists, and attribute modifiers (health, armor, armor toughness, attack damage). All configurations are done via simple JSON files, and the mod supports in-game command reloading and progress management.
✨ Features
- Multi-stage progression – Support unlimited stages with unique IDs.
- Four progression modes –
strict,progressive,unordered, andfirst_onlyto suit various difficulty designs. - Flexible triggers – Stages can be triggered by entering a dimension (e.g.,
minecraft:the_nether) or killing a specific mob (e.g.,minecraft:ender_dragon). - Mob blacklist – Each stage has its own blacklist; mobs from locked stages will not spawn naturally (spawn eggs still work).
- Attribute modifiers – Independently multiply/add to health, armor, armor toughness, and attack damage.
- Hot-reload command –
/furtherdifficulty reloadreloadsconfig/further_difficulty.jsonwithout restarting the server. - Progress management commands
/furtherdifficulty progress set <stageId>– Force-complete a stage./furtherdifficulty progress reset– Reset all progress (for testing/debugging).
- Fully localized – Command feedback supports multiple languages (English and Simplified Chinese built-in).
- Open source & MIT License – Free to use, modify, and redistribute.
📥 Installation
- Ensure you have NeoForge 1.21.1 or a compatible version installed.
- Put the downloaded
further_difficulty-X.X.X.jarinto themodsfolder. - The default config file
further_difficulty.jsonwill be generated in theconfigdirectory on first run.
⚙️ Configuration
The configuration file is located at config/further_difficulty.json and uses JSON format. The default content is:
{
"mode": "strict",
"stages": [
{
"id": "nether_entry",
"trigger": {
"type": "dimension",
"target": "minecraft:the_nether"
},
"triggerMessage": "A tremor echoes from the core...",
"blacklist": [],
"modifiers": {
"healthMultiplier": 1.5,
"healthAddition": 0.0,
"armorMultiplier": 2.0,
"armorAddition": 5.0,
"toughnessMultiplier": 2.0,
"toughnessAddition": 5.0,
"attackMultiplier": 2.0,
"attackAddition": 0.0
}
},
{
"id": "dragon_kill",
"trigger": {
"type": "kill",
"target": "minecraft:ender_dragon"
},
"triggerMessage": "You have broken an ancient taboo...",
"blacklist": [],
"modifiers": {
"healthMultiplier": 2.0,
"healthAddition": 0.0,
"armorMultiplier": 2.0,
"armorAddition": 5.0,
"toughnessMultiplier": 2.0,
"toughnessAddition": 5.0,
"attackMultiplier": 2.0,
"attackAddition": 0.0
}
}
]
}
Top-level Fields
| Field | Type | Description |
|---|---|---|
mode |
string | Progression mode (see table below) |
stages |
array | List of stages, defined in order (index 0,1,2,...) |
Stage Fields
| Field | Type | Description |
|---|---|---|
id |
string | Unique identifier for the stage, used in commands and storage |
trigger |
object | Trigger condition, containing type and target |
triggerMessage |
string | Global message broadcast when the stage is first triggered |
blacklist |
array | List of entity IDs (e.g., "minecraft:skeleton") banned from spawning while this stage is locked |
modifiers |
object | Attribute modifier settings (see below) |
Modifiers Fields
| Field | Type | Description |
|---|---|---|
healthMultiplier |
double | Health multiplier |
healthAddition |
double | Flat health addition |
armorMultiplier |
double | Armor multiplier |
armorAddition |
double | Flat armor addition |
toughnessMultiplier |
double | Armor toughness multiplier |
toughnessAddition |
double | Flat armor toughness addition |
attackMultiplier |
double | Attack damage multiplier |
attackAddition |
double | Flat attack damage addition |
Note: Final attribute value = (base value × multiplier) + addition. Modifiers from all unlocked stages are applied cumulatively (multipliers multiply, additions add).
📈 Stage Expansion and Limitations
1. Stage Count Limit
Internally, the mod uses an int bitmask to store completed stage indices, which supports up to 31 stages (bits 0 to 30). This is because Java int is 32-bit signed; the highest bit (bit 31) is the sign bit, leaving 31 usable bits. If you configure more than 31 stages, the extra stages will not be stored or recognized correctly.
If you need more than 31 stages, you can modify the source code:
- Change the type of
COMPLETED_CONDITIONSinModAttachments.javafromCodec.INTtoCodec.LONG(supports up to 63 stages) and update all bit operations (replace1 << iwith1L << i). - Alternatively, use a
BitSetand serialize it to a byte array (theoretically unlimited).
2. How to Add New Stages
Adding a new stage is simple: just append a new stage object to the stages array in the config file. Keep in mind:
- Each stage must have a unique ID (e.g.,
"ender_dragon_kill"). - Stage order matters:
- In
strictmode, stages must be triggered in order (stage 0 → stage 1 → stage 2 → ...). - In
progressivemode, completing stage N automatically activates all stages 0 through N (cumulative). - In
unorderedandfirst_onlymodes, there is no order dependency, but the completed list is still recorded by ID.
- In
- Adding a new stage does not affect existing progress. The list of completed stage IDs remains the same, but the active bitmask is recalculated according to the new stage order and the current mode.
Example: In
progressivemode, if a player has completed stage 2, adding a new stage 3 will not automatically activate stage 3 (the player must complete its trigger). However, stages 0–2 still apply.
Example: Adding a third stage (killing the Ender Dragon)
{
"mode": "progressive",
"stages": [
// ... previous stages ...
{
"id": "ender_dragon_kill",
"trigger": {
"type": "kill",
"target": "minecraft:ender_dragon"
},
"triggerMessage": "The dragon falls, the world trembles...",
"blacklist": [],
"modifiers": {
"healthMultiplier": 3.0,
"healthAddition": 10,
"armorMultiplier": 1.5,
"armorAddition": 2,
"toughnessMultiplier": 1.5,
"toughnessAddition": 2,
"attackMultiplier": 2.0,
"attackAddition": 3
}
}
]
}
🎮 Commands
All commands require permission level 2 (typically operator/admin). The command prefix is /furtherdifficulty.
| Command | Description |
|---|---|
/furtherdifficulty reload |
Reload the config file config/further_difficulty.json |
/furtherdifficulty progress set <stageId> |
Force-complete the specified stage (if not already completed) |
/furtherdifficulty progress reset |
Reset all progress (clear completed stages) |
Examples
/furtherdifficulty reload
/furtherdifficulty progress set nether_entry
/furtherdifficulty progress reset
🧠 Progression Modes
| Mode Name | Config Value | Behavior Description |
|---|---|---|
| Strict | strict |
Stages must be completed in order: stage 1 must be completed before stage 2, stage 2 before stage 3, etc. |
| Progressive | progressive |
Completing stage N automatically activates all effects of stages 0 through N (cumulative). Example: completing stage 2 applies stages 0, 1, and 2. |
| Unordered | unordered |
Stages can be triggered in any order; each stage's effects are applied independently and cumulatively. Completing stage 0 and stage 2 applies both. |
| First Only | first_only |
Only the first triggered stage takes effect; subsequent stages are ignored (only broadcast their message). |
💾 Data Storage
Progress data is stored in the overworld's level.dat using NeoForge's Attachment system. This means:
- Progress is global and affects all dimensions.
- Data is saved with the world and persists across server restarts.
- In multiplayer, all players share the same progress (determined by the first player who triggers a stage).
Stored data:
completed_conditions: List of completed stage IDs (List<String>).first_condition: ID of the first completed stage (String, used forfirst_onlymode).
🗑️ Uninstallation Notes
-
Directly uninstalling the mod is safe; the world save will not be corrupted or become unopenable.
-
Note: After uninstalling the mod, any existing mobs that have been enhanced by the mod will retain their boosted attributes (e.g., higher health). Only newly spawned mobs will revert to vanilla strength.
-
If you wish to completely "purify" the world, you may consider using the command /furtherdifficulty progress reset to reset progress before uninstalling. However, this will not change the attributes of already spawned mobs.
📝 Developer Info
- Author: 盐灯水母
- Version: 1.0.0
- License: MIT
- GitHub: (none yet)
- e-mail:Jellyfishlamp0v0@outlook.com
You are free to include this mod in your modpack. Attribution is appreciated but not required.
- 中文介绍:
Further Difficulty
Further Difficulty旨在通过可配置的世界进度机制,为游戏增加渐进式难度。
你可以定义多个阶段(Stage),每个阶段可独立配置触发条件、生物黑名单和属性增强(生命值、护甲、护甲韧性、攻击力)。
所有配置通过简单的 JSON 文件完成,并支持游戏内指令热重载和进度管理。
✨ 特性
多阶段进度系统:支持任意数量的阶段,每个阶段有唯一 ID。
四种进度模式:strict、progressive、unordered、first_only,满足不同难度设计需求。
灵活的触发条件:阶段可通过进入特定维度(如 minecraft:the_nether)或击杀特定生物(如 minecraft:ender_dragon)触发。
生物黑名单:每个阶段可独立配置黑名单,未解锁阶段中的生物将无法生成(允许刷怪蛋生成黑名单中的怪物)
属性增强:对生命值、护甲、护甲韧性、攻击力分别设置倍数和固定加值。
热重载指令:/furtherdifficulty reload 在不重启服务器的情况下重新加载 config/further_difficulty.json
进度管理指令:
- 强制完成指定阶段
/furtherdifficulty progress set <stageId>
- 重置所有进度
/furtherdifficulty progress reset
方便测试与调试。
完全本地化:指令反馈支持多语言(内置英文和简体中文)。
开源 & MIT 许可证:允许自由使用、修改和整合。
📥 安装
-
确保已安装 NeoForge 1.21.1 或兼容版本。
-
将下载的 further_difficulty-X.X.X.jar 放入 mods 文件夹。
-
首次启动游戏会在 config 目录下生成默认配置文件 further_difficulty.json。
⚙️ 配置文件
- 配置文件位于 config/further_difficulty.json,采用 JSON 格式。默认内容如下:
{
"mode": "strict",
"stages": [
{
"id": "nether_entry",
"trigger": {
"type": "dimension",
"target": "minecraft:the_nether"
},
"triggerMessage": "地核某处传来一阵悸动...",
"blacklist": [],
"modifiers": {
"healthMultiplier": 1.5,
"healthAddition": 0.0,
"armorMultiplier": 2.0,
"armorAddition": 5.0,
"toughnessMultiplier": 2.0,
"toughnessAddition": 5.0,
"attackMultiplier": 2.0,
"attackAddition": 0.0
}
},
{
"id": "dragon_kill",
"trigger": {
"type": "kill",
"target": "minecraft:ender_dragon"
},
"triggerMessage": "似乎打破了某种未知的禁忌...",
"blacklist": [],
"modifiers": {
"healthMultiplier": 2.0,
"healthAddition": 0.0,
"armorMultiplier": 2.0,
"armorAddition": 5.0,
"toughnessMultiplier": 2.0,
"toughnessAddition": 5.0,
"attackMultiplier": 2.0,
"attackAddition": 0.0
}
}
]
}
- 顶级字段说明
| 字段 | 类型 | 描述 |
|---|---|---|
| mode | string | 进度模式,可选值见下文 |
| stages | array | 阶段列表,按顺序定义(索引从0开始) |
- 阶段(Stage)字段
| 字段 | 类型 | 描述 |
|---|---|---|
| id | string | 唯一标识符,用于进度存储和指令操作 |
| trigger | object | 触发条件,包含 type 和 target |
| triggerMessage | string | 阶段首次触发时全局广播的消息 |
| blacklist | array | 该阶段未解锁时禁止生成的生物 ID 列表(例如 "minecraft:skeleton") |
| modifiers | object | 属性增强配置,见下表 |
- 修饰符(Modifiers)字段
| 字段 | 类型 | 描述 |
|---|---|---|
| healthMultiplier | double | 最大生命值倍数 |
| healthAddition | double | 最大生命值固定增加值 |
| armorMultiplier | double | 护甲值倍数 |
| armorAddition | double | 护甲值固定增加值 |
| toughnessMultiplier | double | 护甲韧性倍数 |
| toughnessAddition | double | 护甲韧性固定增加值 |
| attackMultiplier | double | 攻击力倍数 |
| attackAddition | double | 攻击力固定增加值 |
注意:最终属性值 = (基础值 × 倍数) + 固定增加值。所有已解锁阶段的修饰符会按顺序累积(倍数相乘,加值相加)。
📈 阶段扩展与限制
1.阶段数量限制
由于模组内部使用 int 类型的位掩码来存储已完成的阶段索引,理论上最多支持 31 个阶段(位 0 到 30)。
这是因为 int 在 Java 中为 32 位有符号整数,最高位(第 31 位)为符号位,实际可用 31 位。
如果配置的阶段数量超过 31,超出的阶段将无法被正确存储和识别。
- 若您确实需要更多阶段,可以自行修改源码:
将 ModAttachments.java 中 COMPLETED_CONDITIONS 的类型从 Codec.INT 改为 Codec.LONG(支持最多 63 个阶段),并同步修改所有位操作(将 1 << i 改为 1L << i)。
或改用 BitSet 并序列化为字节数组,理论上无上限。
2.如何扩展阶段
扩展阶段非常简单,只需在配置文件 stages 数组的末尾添加新的阶段对象。注意:
每个阶段必须有一个唯一的 id,建议使用语义化的字符串(如 "ender_dragon_kill")。
- 阶段顺序很重要:
在 strict 模式下,阶段必须按顺序触发(阶段0 → 阶段1 → 阶段2 → …)。
在 progressive 模式下,完成阶段 N 会自动激活 0 到 N 的所有效果。
在 unordered 和 first_only 模式下,阶段之间无顺序依赖,但已完成列表仍按 ID 记录。
-
新阶段不会影响已有进度。
-
已完成阶段的 ID 列表保持不变,但在新模式下会按照新的阶段顺序重新计算激活的位掩码。
-
例如,在 progressive 模式下,如果玩家已完成阶段2,新增阶段3后,阶段3不会自动激活(需要玩家完成阶段3的触发条件),但阶段0~2的效果仍然存在。
-
示例:添加第三个阶段(以击杀末影龙为例)
{
"mode": "progressive",
"stages": [
// ... 原有阶段 ...
{
"id": "ender_dragon_kill",
"trigger": {
"type": "kill",
"target": "minecraft:ender_dragon"
},
"triggerMessage": "巨龙陨落,世界震颤...",
"blacklist": [],
"modifiers": {
"healthMultiplier": 3.0,
"healthAddition": 10,
"armorMultiplier": 1.5,
"armorAddition": 2,
"toughnessMultiplier": 1.5,
"toughnessAddition": 2,
"attackMultiplier": 2.0,
"attackAddition": 3
}
}
]
}
🎮 指令系统 所有指令需要 权限等级 2(通常为管理员/OP)。指令前缀为 /furtherdifficulty。
| 指令 | 描述 |
|---|---|
/furtherdifficulty reload |
重新加载 config/further_difficulty.json 配置文件 |
/furtherdifficulty progress set <stageId> |
强制完成指定 ID 的阶段(如果尚未完成) |
/furtherdifficulty progress reset |
重置所有进度记录(清空已完成阶段) |
- 指令示例
/furtherdifficulty reload
/furtherdifficulty progress set nether_entry
/furtherdifficulty progress reset
🧠 进度模式详解
| 模式名称 | 配置值 | 行为描述 |
|---|---|---|
| 严格前置 | strict | 阶段必须按顺序完成:完成阶段1后才能触发阶段2,完成阶段2后才能触发阶段3,以此类推。 |
| 递进式 | progressive | 完成阶段 N 时,自动激活阶段 0 到 N 的所有效果(即累积增强)。例如完成阶段2,则阶段0、1、2全部生效。 |
| 无序叠加 | unordered | 阶段可任意顺序触发,每个阶段独立生效,效果累积。完成阶段0和阶段2,则两者效果均生效。 |
| 仅首次 | first_only | 只有第一个触发的阶段生效,后续阶段被忽略(仅广播消息)。 |
💾 数据存储
-
进度数据使用 NeoForge 世界附件(Attachment) 系统存储于主世界(overworld)的 level.dat 中,因此:
-
进度数据是全局的,影响所有维度。
-
数据随世界保存,重启服务器不会丢失。
-
多人游戏中,所有玩家共享同一进度(由第一个触发者决定)。
-
存储内容:
completed_conditions:已完成阶段的 ID 列表(List<String>)
first_condition:最先完成的阶段 ID(String,用于 first_only 模式)
🗑️卸载说明
-
直接卸载是安全的,存档不会因此损坏或无法打开。
-
注意:卸载模组后,所有因模组而获得增强的已存在生物将保留其强化后的属性(如高血量)。只有新生成的生物才会恢复原版强度。
-
如果你希望彻底“净化”世界,可以考虑在卸载前使用指令 /furtherdifficulty progress reset 重置进度,但这不会改变已生成生物的属性。
📝 开发者信息
- 作者:盐灯水母
- 版本:1.0.0
- 开源协议:MIT License
- github:暂时没有
- 邮箱:Jellyfishlamp0v0@outlook.com
你可以在整合包中使用,请保留原作者署名(非强制,但很感谢)


