-
Notifications
You must be signed in to change notification settings - Fork 0
Configuration
RPGMood ships four config files, generated automatically in plugins/RPGMood/ on first start: config.yml, zones.yml, triggers.yml, and farming.yml. Edit them and run /rpgmood reload to apply changes.
-
zones.yml— zone definitions. See Zones. -
triggers.yml— time/weather/block-break events. See Ambient Events. -
farming.yml— crops, seasons, recipes, and animals. See Farming. -
config.yml— everything else, detailed below.
New keys auto-merge into your existing files. As of v1.7.0, all four files gain any config
key added by a newer plugin version automatically on startup (and on /rpgmood reload) —
nothing you've already customized is touched, only genuinely missing keys get filled in with
their default value. One trade-off: the first time a file is merged, it loses its comments
(Bukkit's YAML writer doesn't preserve them) — every value, yours and the new defaults, is
kept exactly.
As of v1.8.0, a handful of the most commonly-tuned config.yml keys — spawn_protection.radius,
mob_scaling.early_game_fraction/parity_level/night_bonus/thunder_bonus, and
weather_effects.enabled — can also be adjusted in-game without touching YAML at all, via the
Admin Config panel in the GUI menu (rpgmood.admin). It writes straight
back to config.yml on disk, same effect as hand-editing the file and reloading.
| Key | Type | Default | Description |
|---|---|---|---|
zone_change_cooldown |
Integer (seconds) | 45 |
Minimum time between zone-change feedback for the same player |
particle_update_interval |
Integer (ticks) | 40 |
Reserved for future ambient particle scheduling — not yet read by any feature |
Low-probability day/night flavor sound near each player, checked on the same ~1s tick as everything else in AmbientTask — purely cosmetic, no chat/action-bar message, and independent of the time_events/weather_events in triggers.yml. See Ambient Events.
| Key | Type | Default | Description |
|---|---|---|---|
enabled |
Boolean | true |
Master switch |
chance |
Decimal (0–1) | 0.02 |
Chance per player per ~1s tick that a sound plays at all |
day |
List<Sound> | [entity.parrot.ambient] |
Sound pool picked from at random during vanilla day |
night |
List<Sound> | [ambient.cave] |
Sound pool picked from at random during vanilla night (13000–23000 ticks) |
ambient_sounds:
enabled: true
chance: 0.02
day:
- "entity.parrot.ambient"
night:
- "ambient.cave"Add more entries to day/night (any Bukkit Sound name, or a resource-pack custom key) to widen the pool — one is picked at random each time the chance roll succeeds.
Mechanical effects while a storm is actually live, checked against the world's real-time weather state (World#isThundering()/World#hasStorm()) every ~1s tick — separate from the one-shot start/stop messages weather_events fires in triggers.yml. See Ambient Events.
| Key | Type | Default | Description |
|---|---|---|---|
enabled |
Boolean | true |
Master switch — also toggleable in-game via the Admin Config menu |
fog_chance |
Decimal (0–1) | 0.05 |
Chance per player per ~1s tick, while thundering, to apply a brief Darkness pulse |
wind_chance |
Decimal (0–1) | 0.03 |
Chance per player per ~1s tick, while raining (including during a thunderstorm) and standing under open sky, to get nudged by wind |
wind_strength |
Decimal | 0.15 |
Horizontal velocity magnitude of the wind nudge |
weather_effects:
enabled: true
fog_chance: 0.05
wind_chance: 0.03
wind_strength: 0.15Both checks are independent and can both land for the same player during a thunderstorm — a Darkness pulse from fog_chance and a wind nudge from wind_chance aren't mutually exclusive.
| Key | Default |
|---|---|
delivery |
ACTION_BAR — ambient messages (time/weather events, farming/animal feedback) go to the action bar instead of chat. Set to CHAT for the traditional behavior. This is the server-wide default; a player can override it for themselves with the Action Bar Delivery toggle in the GUI menu's Settings panel (writes player_actionbar.<uuid>). Doesn't affect zone entry — that's Title/Subtitle only, see Zones
|
no_permission |
&c[RPGMood] You do not have permission to use this command. |
plugin_reloaded |
&a[RPGMood] Configuration reloaded successfully. |
toggle_enabled |
&a[RPGMood] Effects enabled. |
toggle_disabled |
&e[RPGMood] Effects disabled. |
player_join |
&a→ {player} joined the world. |
player_join_first_time |
&6✨ {player} arrived for the very first time! |
player_quit |
&7← {player} left the world. |
join_sound |
entity.player.levelup |
join_first_time_sound |
ui.toast.challenge_complete |
quit_sound |
entity.villager.no |
player_join/player_join_first_time/player_quit replace the vanilla join/quit chat
broadcast entirely (the vanilla message is suppressed). {player} is replaced with the
player's name. Each is sent through broadcastAmbient, so every online player receives it via
their own delivery preference (action bar or chat, per the delivery setting/toggle above),
along with the matching sound played to every online player. First-time joins
(!player.hasPlayedBefore()) use player_join_first_time + join_first_time_sound instead of
the regular join template. Set any *_sound key blank to disable just the sound for that
event.
Every message routed through delivery (all of AmbientTask's time/weather events, plus all
farming/animal interaction feedback) is centralized in MessageService, and action-bar
messages are sticky — resent twice, a second apart, so a short vanilla fade or a different
message a moment later doesn't erase it before it's been read. If a newer message is sent to
the same player before a resend fires, the stale resend is skipped instead of flashing old
text back over the new one.
Achievement unlocks always go to chat regardless of delivery — see Achievements → Notifications.
| Key | Type | Default | Description |
|---|---|---|---|
enabled |
Boolean | true |
Master switch |
radius |
Decimal (blocks) | 64 |
Hostile mobs never naturally spawn within this distance of world spawn |
spawn_protection:
enabled: true
radius: 64Only blocks natural spawns of Monster entities (same gate mob_scaling.hostile-only uses) —
passive mobs and plugin/command-summoned entities are unaffected. Keeps the immediate spawn
area/starter base safe without meaningfully delaying the first real encounter with danger once
you leave it.
See Mob Scaling for the full formula. Quick reference:
| Key | Type | Default | Description |
|---|---|---|---|
enabled |
Boolean | true |
Master switch |
hostile-only |
Boolean | true |
Only scale Monster entities |
max-level |
Integer | 40 |
Upper clamp on the computed level |
early_game_fraction |
Decimal | 0.85 |
Health/damage/follow-range multiplier at level 1, relative to each mob's own vanilla stat |
parity_level |
Integer | 8 |
Level at which the health/damage/follow-range multiplier reaches exactly 1.0 (vanilla-equivalent) |
armor_per_level |
Decimal | 0.25 |
Armor added per level |
speed_per_level |
Decimal | 0.0015 |
Movement speed added per level |
night_bonus |
Integer | 2 |
Extra flat level added while it's vanilla night (13000–23000 ticks) where the level is computed |
thunder_bonus |
Integer | 2 |
Extra flat level added while that world is currently thundering. Stacks with night_bonus
|
radius.step_distance |
Decimal (blocks) | 180 |
Distance per "ring" of difficulty from spawn |
players_bonus_per_player |
Integer | 1 |
Level added per nearby player (within ~30 blocks) |
name_format |
String | "&cLv. {level} {name}" |
Custom name shown above scaled mobs. Supports {level} and {name}
|
show_name_tags |
Boolean | false |
Show the floating name tag above scaled mobs. Off by default — RPGMood shows level via particle auras instead |
particle_aura |
Boolean | true |
Level-tiered coloured particles around scaled mobs (blue → yellow → orange → red as level rises), only rendered for mobs within ~30 blocks of a player |
bonus_xp_per_level |
Integer | 2 |
Bonus XP granted per level when a player kills a scaled mob. 0 disables |
base-levels |
Map<EntityType, Integer> | see below | Per-mob-type difficulty seed |
biome-bonuses |
Map<Biome, Integer> | see below | Flat bonus per biome |
structure-bonuses |
Map<structure key, Integer> | see below | Flat bonus near a vanilla structure |
announcement.* |
— | see below | Server-wide broadcast when a high-level mob spawns |
affixes.* |
— | see below | RPG modifiers (Swift, Wraith, Bleeding, etc.) scaled mobs can roll — see Mob Scaling → Affixes |
mob_scaling:
base-levels:
ZOMBIE: 1
SKELETON: 2
SPIDER: 2
CREEPER: 3
ENDERMAN: 4
WITHER_SKELETON: 5
biome-bonuses:
PLAINS: 0
FOREST: 1
MOUNTAINS: 3
SOUL_SAND_VALLEY: 4
structure-bonuses:
stronghold: 3
desert_pyramid: 2
jungle_pyramid: 2
woodland_mansion: 4
ocean_monument: 4
nether_fortress: 3
announcement:
enabled: true
min-level: 25
cooldown-seconds: 120
message: "&c⚠ A Level {level} {name} has emerged in {biome}!"Any EntityType / Biome not listed defaults to 0 (or 1 for base-levels) — you don't need to list every enum value, only the ones you want to deviate from baseline. See Mob Scaling for the rewards and announcement behavior in detail.
Fully documented on the Death Messages page. Top-level keys: fallback, causes (includes killers.player for PvP), biomes, killers, killer_synonyms, armed, modifiers, location_name_templates, location_name_descriptors (ships per-biome pools for common biomes plus default), location_names.
Not hand-edited — RPGMood writes player_effects.<uuid>: true|false, player_titles.<uuid>: true|false, and (as of v1.8.0) player_scoreboard.<uuid>: true|false here automatically when a player runs /rpgmood toggle, /rpgmood toggle titles, or /rpgmood toggle scoreboard respectively. See Zones → Sidebar scoreboard & zone BossBar.
None of these are hand-edited — each is written automatically by its owning feature and read back on startup / /rpgmood reload.
| File | Backs |
|---|---|
stats.yml |
/rpgmood leaderboard — per-player deaths, zone changes, highest mob level killed. See Commands
|
achievements.yml |
/rpgmood achievements — unlock timestamps and progress counters. See Achievements
|
season.yml |
Current season and day-in-season. See Farming → Seasons |
recipes.yml |
Per-player discovered recipes. See Farming → Cooking & recipes |
animals.yml |
Owned animals and their affection/health/hunger/sickness state. See Farming → Animal husbandry |
playerdata/<uuid>.yml |
/diary entries. See Commands
|
zonediscovery.yml |
/rpgmood zones — per-player discovered zones (display name, first-seen date, favorite flag). See Zones → Zone discovery
|
playerlevel.yml |
/rpgmood level — per-player progression XP/level. See Commands → /rpgmood level
|