Changelog

Last updated Sep 18, 2026

Changelog

1.1.5

Paginated help with clickable navigation.

  • /sts and /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_effect supports target: 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_stat buffs no longer expire early when re-procced (generation tokens)
  • Invalid add_stat / apply_potion_effect maps 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 test validates the trait and reports failure correctly
  • /sts migrate reapplies 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_forward stops 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-enabled documentation
  • Documented distance_above, inclusive level_above, and is_in_combat: false

1.1.1

Follow-up polish after the MMOCore companion pass.

Fixes

  • /sts cooldown always locks the player's active trait
  • /sts toggle state survives trait swaps and class sync
  • Manual /sts set survives relog when settings.respect-manual-assign is true
  • Temporary add_stat buffs 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_above means 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_above condition 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 reset reapplies MythicLib stats and notifies the player
  • /sts cooldown actually locks trait procs (trait-wide gate)
  • /sts stats shows live stats and remaining effect cooldowns
  • /sts info shows 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.yml snapshot writes
  • Warns when MythicLib is missing but stat traits are configured
  • Invalid default-trait warns and falls back at load
  • /sts reload cancels 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-trait when 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.bak backup

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