Configuration Files - MarkusBordihn/BOs-Easy-NPC GitHub Wiki

Configuration Files ⚙️

Easy NPC keeps its settings in config/easy_npc/. Every file is plain key=value text and is read when the game or server starts, so restart after editing.

Most files exist on both sides. On a dedicated server, edit them in the server directory; in single player, in your own config folder.

File Loaded on What it controls
security.cfg Both Permissions, command levels, features
spawner_type.cfg Both Default parameters of the spawner blocks
dialog_options.cfg Both Default dialog screen behavior
render_entity_type_support.cfg Both Which entity models may be rendered
remote_texture.cfg Both Safety rules for URL skins
npc_base.cfg Both Base NPC behavior
dialog_client.cfg Client only Personal dialog display preferences

security.cfg 🔐

The largest file. It decides what NPCs are allowed to do and which players may configure which features - command levels, the execute-as-player allowlist, spawn rate limits, and the per-feature roles.

This file has its own page: Permissions.

spawner_type.cfg 🌟

Changes the preset parameters of the spawner blocks. Keys follow <Type>Spawner:<Parameter>:

DefaultSpawner=Delay=600
DefaultSpawner=MinSpawnDelay=400
DefaultSpawner=MaxSpawnDelay=1200
DefaultSpawner=SpawnCount=2
DefaultSpawner=MaxNearbyEntities=4
DefaultSpawner=RequiredPlayerRange=16
DefaultSpawner=SpawnRange=8

The same seven parameters exist for BossSpawner, GroupSpawner, SingleSpawner, and WorldSpawner. See Spawner for the defaults of every type.

Changes apply to newly placed spawners. Already placed spawners keep their values - adjust those with /easy_npc spawner set.

dialog_options.cfg 💬

The defaults for every dialog. A single dialog can override each of these in its own options, so this file sets the baseline rather than a hard rule.

allowEscClose=true
showCloseButton=true
displayAvatar=true
buttonConditionMode=LOCK
  • allowEscClose - players may close a dialog with ESC
  • showCloseButton - the close button is shown
  • displayAvatar - the NPC avatar is rendered next to the dialog text
  • buttonConditionMode - LOCK shows unavailable buttons greyed out with a lock icon, HIDE removes them from the dialog

Turning off allowEscClose and showCloseButton forces the player to answer with a dialog button. Make sure at least one button closes the dialog, otherwise players get stuck.

dialog_client.cfg 🖥️

Client-side only, so every player can set this for themselves.

typewriterEnabled=true
typewriterCharsPerSecond=40

The typewriter effect reveals dialog text character by character. Set typewriterEnabled=false to show the full text immediately, or raise typewriterCharsPerSecond to speed it up.

remote_texture.cfg 🌐

Safety rules for skins loaded from a URL.

blockPrivateAddresses=false

With blockPrivateAddresses=true, URLs that resolve to loopback, private, or link-local addresses are rejected - including redirect targets. Recommended for public servers. The download itself runs on the client that renders the skin, so for full coverage this belongs into the modpack's client config as well.

Independent of this setting, remote skin downloads are always capped at 5 MB and at most 5 redirects. Who may use URL skins at all is the URL_RESOURCE feature in security.cfg.

See Skins for the player-facing side.

npc_base.cfg 🧍

allowBypassInvulnerability=true

Allows damage sources like the /kill command or the void to bypass an NPC's Invulnerable attribute. Keep this enabled unless you really want NPCs that survive /kill - otherwise admins have no easy way to remove a stuck invulnerable NPC.

render_entity_type_support.cfg 🎭

Allows or blocks entity types for the custom render pipeline, which is what the Doppler NPC uses. See CustomModels.

Troubleshooting 🔧

  • A change had no effect: the files are read at startup only. Restart the game or server.
  • Editing on a server had no effect for players: check whether the setting is a client-side file (remote_texture.cfg, dialog_client.cfg) - those are read from each player's own config folder.
  • A file is missing: it is created with defaults on first start. Delete a file to reset it.
⚠️ **GitHub.com Fallback** ⚠️