Are Minecraft’s mobs not challenging enough for you? Do you find that survival lacks the tension it once had because the mobs no longer pose any threat to you? On the other hand, maybe you find some of Minecraft’s mobs too challenging. Perhaps you wish that these mobs were less difficult and overwhelming. If you fall into either of these groups or just want more control over the difficulty of the mobs in general, then DynamicDifficulty may be the plugin you are looking for.
What is dynamic difficulty?
Dynamic difficulty is a system where the difficulty of the videogame scales up or down in the middle of game play to match how well the player is currently performing at the game. In the case of this plugin, DynamicDifficulty scales how tough the mobs are based on its assessment of the player’s capability to fight off the mobs.
Each player has one “auto performance level” for each type of hostile mob (not including bosses). A player’s auto performance level can range anywhere from 50 to 200 with 100 being the default value. 100 means that the mob is at its normal level of difficulty. 200 means that the mob is twice as tough as normal, and 50 means that the mob is only half as tough.
As a player fights each type of mob, the plugin calculates the player’s auto performance levels based on how much damage a player receives from a type of mob on average and how much damage a player gives to a type of mob on average.
Players also have a “manual performance level” for each mob if they would prefer to set the difficulty manually rather than have the plugin calculate the difficulty for them.
The plugin scales certain attributes of the mobs based on the player’s performance level for that mob. The chart below shows how much the mob attributes scale in relation to some sample performance levels.
|Example Performance Level
|Attack Damage (% of damage normally dealt)
|Defense (% of damage normally taken)
|Speed (% of normal speed)
|Knockback Resistance (%)
|Max Follow Distance (% of normal distance)
|XP (multiply amount of xp normally dropped by this %)
* (multiply amount of loot normally dropped by this %)
*Loot scaling does not affect items worn or held by the mob; it only affects standard drops.
Note that this plugin scales the mob's attributes based on the player the mob is currently targeting. This means that this plugin can cater the difficulty to each individual player on the server all simultaneously.
DynamicDifficulty provides several adjustable settings for each type of mob.
There are three difficulty settings: auto, manual, and disabled.
|The plugin will calculate your auto performance level and use it to scale the mob’s attributes.
|The plugin will not calculate your auto performance level. It will change the mob’s attributes based on the manual performance level you provide.
|The mob’s attributes will not change from their normal values.
Every 30 seconds, the plugin will update a player’s auto performance level. The max increment setting determines the maximum amount that a player’s auto performance level can change by in a single update. For example, if the player’s max increment is 10 and the player’s current auto performance level is 100 and the plugin determines that the player’s auto performance level should be 150, during the first update, it will change it to 110. Every 30 seconds, the player’s auto performance level will change by 10 units until it reaches 150.
Scaling for the following attributes of the mob can be toggled to true or false so that the plugin either will scale them based on the player’s performance level or will not scale them.
- Knockback resistance
- Max follow distance
DynamicDifficulty features commands to allow players fine-tuned control over the difficulty of the mobs. Commands are listed here: Commands.
DynamicDifficulty features permissions to allow or deny players from using certain commands. Permission nodes are listed here: Permissions.
Each player has a config file, named <player-uuid>.yml. When the player logs onto the server, the plugin will generate this file if the file does not exist. It will be placed in the "players" folder. The plugin saves a player’s dynamic difficulty settings to their config file when they log out. The next time a player logs onto the server, their data will be loaded back up.
The plugin will also generate a default_player.yml file. Server owners can specify default values for players’ settings using this file. When the plugin goes to generate the player's config file for the first time, it will load the values from default_player.yml.
The default config for default_player.yml is listed here: Configuration.
The source code can be viewed here: Source Code.
- The descriptions here are for the most current version of DynamicDifficulty. Older versions of the plugin do not have some of the features listed here and some features have changed slightly between updates.
- Each version of DynamicDifficulty is only compatible with the version of Bukkit it is listed with.
- As of DynamicDifficulty v1.3.0, this plugin is compatible with the new UUID system. Previous versions use a player’s name to link them with a yml file. Under old versions, if a player changes their name, they will lose their old yml file and a new one will be generated for their new name.