Changelog
Last updated Sep 18, 2026
Changelog
1.1.5
Paginated help with clickable navigation.
/stsand/sts help [page]show permission-filtered commands- Click « Back / Next » to change pages
- Click a command line to suggest it in chat
1.1.4
MythicLib damage sync, respawn readiness, potion-on-target, PlaceholderAPI.
Gameplay / integrations
- Trait damage bonuses/reductions scale MythicLib damage packets when present
- Respawn retries MMOCore class sync like join, then fires RESPAWN
apply_potion_effectsupportstarget: true(archer finisher marks the foe)- PlaceholderAPI:
%soapstraits_trait%,%soapstraits_enabled%,%soapstraits_class%,%soapstraits_mmocore_class%,%soapstraits_effects%
1.1.3
Reliability pass on combat actions, conditions, and admin commands.
Fixes
- Temporary
add_statbuffs no longer expire early when re-procced (generation tokens) - Invalid
add_stat/apply_potion_effectmaps fail validation instead of becoming silent no-ops - Boolean conditions honor
false(is_sprinting,has_target,behind_target, etc.) - Attack and crit use separate damage contexts (utility crits no longer stack attack damage_bonus)
- Effect cooldown only starts after at least one action runs successfully
- Knockback clamps velocity and requires a living target
- Blink also refuses cactus, berry bush, powder snow, wither rose
/sts testvalidates the trait and reports failure correctly/sts migratereapplies stats for online migrated players- GUI warns when conditions/actions exceed visible slots
Docs
- Examples synced to current
traits.yml
1.1.2
Docs aligned to current behavior; safer blinks.
Gameplay
teleport_forwardstops before walls, skips lava/fire, and uses the farthest safe point
Docs
- Conditions, FAQ, Default Configs, Cooldowns, Getting Started, GUI, Bridges, Commands, Actions updated for 1.1.x
- Removed phantom
settings.gui-enableddocumentation - Documented
distance_above, inclusivelevel_above, andis_in_combat: false
1.1.1
Follow-up polish after the MMOCore companion pass.
Fixes
/sts cooldownalways locks the player's active trait/sts togglestate survives trait swaps and class sync- Manual
/sts setsurvives relog whensettings.respect-manual-assignis true - Temporary
add_statbuffs are cleared on trait swap/quit - Human tick heal is gated to out-of-combat (
is_in_combat: false) - Archer disengage is chance-based (no longer 100%)
level_abovemeans level at least (inclusive)- Join sync retries until MMOCore class data is ready
- GUI condition/action pickers show all registered types
1.1.0
MMOCore companion polish — clearer class identity, tighter combat flow, bug fixes.
Gameplay / MMOCore
- Traits sync to the player's MMOCore class on join (
settings.class-sync) - Class changes notify the player when their trait awakens
- Crit triggers follow MythicLib weapon/skill crits (not vanilla swing heuristics)
- New
distance_abovecondition for true ranged identity - Rebalanced default class traits for distinct roles and combat-aware procs
- Rogue backstab works in PvE; Archer precision requires real range
Fixes
- GUI trait saves no longer drop effect cooldowns
/sts resetreapplies MythicLib stats and notifies the player/sts cooldownactually locks trait procs (trait-wide gate)/sts statsshows live stats and remaining effect cooldowns/sts infoshows effect toggle state, class binding, and MMOCore class- Default-trait code fallback aligned to
human - Removed unused duplicate class-change listener
1.0.0
Initial public release of SoapsTraits.
Production readiness (2026-06-11)
- Player data save generation guard: dirty until write succeeds
- Trait tick fast-path when no tick effects are configured
- Trait edits reapply only affected online players (not full-server refresh)
- Expired cooldown entries compacted on load and before save
- Atomic
playerdata.ymlsnapshot writes - Warns when MythicLib is missing but stat traits are configured
- Invalid
default-traitwarns and falls back at load /sts reloadcancels only trait tick/autosave tasks (not all plugin tasks)- Chat input migrated to shared
SoapsChatInput
Core
- Trait system with YAML configuration (
traits.yml) - One trait per player with automatic class binding via MMOCore
- Fallback
default-traitwhen no class match exists - Base stat modifiers through MythicLib
- Effect engine with triggers, conditions, actions, and per-effect cooldowns
- Player data persistence (
playerdata.yml) with auto-save - Strict config validation option for safer YAML editing
Triggers (9)
attack, damaged, kill, crit, skill_cast, tick, death, respawn, crouch
Conditions (23)
health_below, health_above, health_between, chance, biome, time, distance_to_target, behind_target, has_stat, is_sprinting, is_sneaking, is_blocking, is_in_combat, has_potion_effect, target_type, has_target, target_is_player, target_health_below, world, mana_above, mana_below, level_above, weather
Actions (16)
damage_bonus, reduce_damage, heal, add_stat, apply_potion_effect, remove_potion_effect, send_message, play_sound, spawn_particle, set_on_fire, give_mana, cancel_event, feed, knockback_target, teleport_forward, clear_negative_effects
Commands
/sts (alias /soapstraits) with subcommands: info, set, remove, reload, list, debug, reset, toggle, stats, migrate, cooldown, version, test, import, export, gui
GUI
- In-game trait list, trait editor, stats editor, and effect editor
- Undo/redo support during editing sessions
- Safe YAML save with
traits.yml.bakbackup
Bundled traits
- Class traits: Human, Warrior, Mage, Rogue, Paladin, Archer, Berserker
- Showcase traits: Shadowstep, Executioner, Guardian
Dependencies
- Required: SoapsCommon
- Soft: MythicLib, MMOCore
- Paper API 1.21