Echo:NPC contains many config values. By changing these config values, users can change Echo:NPCs default behavior.

Three Tiers

There are three tiers of settings. Each tier overrides the last, allowing you to create application level, project level, and entity-level settings:

  • settings.json: Default, system-level settings.
  • custom_settings.json: Overrides settings.json. Add your own preferences here.
  • Entity Header: Settings placed in an entity header will override both custom_settings and settings.


As an example, lets take the setting: default_transitions. This setting is placed in settings.json as "default_transitions": ["interact"]. This means that the default transition behavior is done via clicking. If you want to change the default behavior to be time, you can simply add this line in custom_settings.json: "default_transitions": ["timer"].

It is intended that users edit custom_settings.json to create their own, personal workflow.

All Settings:


default_state sets what state Echo will enter when the entity is spawned. Normally this is your top state, for example main, or introduction.

By default this value is set as "none", meaning that when the entity is spawned, NO echo event will run. This can be useful if you want to type the echo event yourself (/summon sirlich:echo_example ~ ~ ~ echo:my_event).


default_transitions sets what transition echo will use when none are supplied. By default, this is set to be ["interact"], which means the default behavior of echo is interacting (clicking). You can override this to [], if you don’t want ANY default transitions, or use some other combination that is useful for you.


sound_template sets how the sounds list will be processed. By default, it is set as: "sound_template": "/playsound SOUND @a ~ ~ ~",


text_template sets how the text list will be processed. By default, it is set as: "text_template": "/say TEXT"

The TEXT part will be replaced by whatever argument you placed in the text list. You can override this to provide a differant text behavior.

  • With a /tell
  • With a tellraw
  • With some color codes, added at the beginning

This can be particularly helpful if you want to localize your NPCs!


default_state_type sets the default type for your entity. Options:

  • standard
  • single


max_allowed_states is a warning-configuration option. Echo is not optimized for thousands of states. By default, it will warn you when you create entities with greater than 20 states. You can set this option higher or lower to meet your personal needs.


output_type sets where your entity will output to.

  • dev: Output into the development behavior packs folder
  • world: Output into the worlds folder
  • here: Export into the same folder where the template is


user_account is used when Echo:NPC cannot find your com.mojang folder. This usually happens when you have multiple Windows user-accounts, or work from a VPS. Talk to SirLich if you think you need this.


subpath is used to set the local path where Echo will output. By defualt, echo exports directly into the top-level folder: entities/example.entity.json. You can set a sub-path to make this neater:

"subpath": "echo/npcs" -> entities/echo/npcs/example.entity.json.

This applies to both entities, and animation controllers.


entity_subpath overrides subpath, but only applies to entities.


animation_controller_subpath overrides subpath, but only applies to animation controllers.


entity_name_format sets how the final file will be named. By default: NAME.entity.json, where name is the name of the template file.


donkey.json -> donkey.entity.json.

You can use this option if you want to use a different naming scheme. For example:



animation_controller_name_format, like above, but for animation controllers.