Skip to content

Echelons

gottsch edited this page Jun 28, 2025 · 11 revisions

Echelons

This documentation is for Enemy Echelons v1.4.0 and prior. For v2+ and Enemy Echelons API, refer to [TBD page]

Echelons are defined in the eechelons-echelons.toml server config file located in the [world save]/serverconfigs folder.

Full default eechelons-echelons.toml file

Example 1. Excerpt of default Echelon definition for the Overworld dimension

# list of echelons
[[echelons]]
	dimensions = ["minecraft:overworld"]
	hpFactor = 0.2
	damageFactor = 0.2
	maxDamage = 10.0
	armorFactor = 0.1
	armorToughnessFactor = 1.0
	knockbackIncrement = 0.2
	knockbackResistIncrement = 0.0
	speedFactor = 0.05
	maxSpeed = 0.35
	xpFactor = 0.2
	mobBlacklist = ["minecraft:creeper"]

	[[echelons.stratum]]
		min = 60
		max = 319
		[[echelons.stratum.histogram]]
			level = 0
			weight = 200.0

		[[echelons.stratum.histogram]]
			level = 1
			weight = 100.0

[[echelons]]

The [[echelons]] tag defines the top-level element in the list. An echelon has the following properties:

  • dimensions text list - a list of fully qualified dimension names that this echelon is applied to, eg. "minecraft:overworld".
  • hpFactor real number - value that is multiplied with the base hit points/health per level. eg. a mob with 20 base hp @ level3 = 20 + (20 * 0.2 * 3) = 32hp.
  • maxHp real number - the maximum hp that that can be assigned regardless of level.
  • damageFactor real number - value that is multiplied with the base damage per level. eg. a mob with 3 base damage @ level3 = 3 + (3 * 0.2 * 3) = 4.8 damage.
  • maxDamage real number - the maximum damage that can be assigned regardless of level.
  • armorFactor real number - value that is multiplied with the base armor per level.
  • maxArmorFactor real number - the maximum armor that can be assigned regardless of level.
  • knockbackIncrement real number -
  • maxKnockback 'real number` -
  • knockbackResistIncrement real number -
  • maxKnockbackResist real number -
  • speedFactor real number -
  • maxSpeed real number -
  • xpFactor real number -
  • maxXp real number -
  • mobBlacklist text list - a list of fully qualified mob names that will not be modified by this echelon, eg. "minecraft:creeper".
  • mobWhitelist text list - a list of fully qualified mob names that will be modified by this echelon, eg. "minecraft:creeper".

NOTE: the inclusion of a whitelist or blacklist is mutually exclusive, ie. there can only be one or the other per echelon.

NOTE: if a whitelist or blacklist is not defined, the echelon will apply to all mobs.

NOTE: a whitelist in other echelons for the same dimension will be checked before blacklists.

Difference between Factor and Increment properties

Some attributes like hp/health have a range from 0.0 to infinity (there is an actual cap). These type of attributes have factor properties which are multiples of the base value. Other attributes like knockback have a range from 0.0 to 1.0, or another defined upper limit like 5.0. These attributes have increment properties which are additions to the base value.

NOTE: all properties do not need to appear in the definition, only the ones that are to be modified. eg maxHp is not listed and therefor a maximum HP value is not set.`

[[echelons.stratum]]

The [[echelons.stratum]] tag defines an entry in the stratum of the parent echelon. A stratum is a range of y-values in the world. Mobs that spawn in this range will have one of the levels from the histogram (explained below) applied to it. A stratum has the following properties:

  • min integer - the minimum y value in the range.
  • max integer - the maximum y value in the range.

[[echelons.stratum.histogram]]

The [[echelons.stratum.histogram]] tag defines an entry in the histogram of the parent stratum. Each stratum has its own histogram. A histogram is a level:weight pairing, which defines the probability of level being selected.

  • level integer - the level to be assigned to a mob.
  • weight real number - a value which determines the probability. Higher numbers relative to other defined weights have a higher probability of being selected. eg. histogram has 2 levels: level0 has weight of 10, level2 has a weight of 20. Therefor level2 has 2x chance of being selected. eg. histogram has 2 levels: level0 has weight of 50, level2 has a weight of 50. Therefor each level has the same chance of being selected even though their weights are larger than the first example.

The echelons config can be setup with as many stratum and levels as desired.

Each stratum DOES NOT require the same number of levels in the histogram.

Example 2. Different level sets per stratum

In this example, mobs at y=60 and above have 2x the chance of being level0 as level1. At y=30 through 59, mobs have equal chance of being level1 or level2. Note that level0 has been removed at this stratum and therefor cannot be assigned.

[[echelons]]
	dimensions = ["minecraft:overworld"]
	hpFactor = 0.2
	[[echelons.stratum]]
		min = 60
		max = 319
		[[echelons.stratum.histogram]]
			level = 0
			weight = 200.0
		[[echelons.stratum.histogram]]
			level = 1
			weight = 100.0
	[[echelons.stratum]]
		min = 30
		max = 59
		[[echelons.stratum.histogram]]
			level = 1
			weight = 100.0
		[[echelons.stratum.histogram]]
			level = 2
			weight = 100.0

Multiple echelons

The eechelons-echelons.toml file can contain multiple echelon definitions.

Example 3. Adding a second Echelon definition

[[echelons]]
	dimensions=["minecraft:overworld"]
	mobWhitelist=["minecraft:creeper"]
...

This example adds a second echelon that is for the overworld dimension as well. The echelon in Example 1 contained a blacklist that excluded Creepers. This echelon contains a whitelist that is for Creepers only. A mob whitelist will be checked before the blacklist. Technically, having the Creeper in the first echelon's blacklist is not necessary as it appears in this whitelist and this echelon will be applied to the Creeper.

Default echelon

A default echelon can be defined by using ".", ".:.", "*", or "*:*" for the dimension. This echelon will be used if a dimension isn't specified in another echelon.