Bridges and Integrations
Last updated Jul 6, 2026
Bridges and Integrations
SoapsTraits is built to sit alongside the Soaps suite and popular MMO plugins.
SoapsCommon (required)
Listed as a hard dependency in plugin.yml.
Provides:
- Shared startup banner and config merge on reload
SoapsConfigKeysfor suite-wide settings likegui.enabled- Text parsing for messages (MiniMessage and legacy
&codes)
Without SoapsCommon the plugin will not enable.
MythicLib (soft depend)
Recommended. Powers all stat modifier features.
What it does
| Feature | Bridge behavior |
|---|---|
Trait stats: block |
Registers base modifiers on assign/reload |
add_stat action |
Temporary modifiers with optional duration |
has_stat condition |
Reads MythicLib stat totals |
Stat name mapping
SoapsTraits YAML keys map to MythicLib stats automatically. See Stats System.
Without MythicLib
Console warns: MythicLib not found. Stat modifier features will be disabled.
Effects that only use heal, particles, sounds, etc. still work.
MMOCore (soft depend)
Recommended for class-based servers.
What it does
| Feature | Bridge behavior |
|---|---|
class: on traits |
Auto-assign trait when player picks that class |
skill_cast trigger |
Listens for MMOCore skill cast events |
give_mana action |
Restores mana through MMOCore API |
mana_above / mana_below |
Reads current mana vs max mana percent |
level_above |
Reads MMOCore player level |
is_in_combat |
Reads MMOCore combat tag |
Class binding
mage:
class: MAGE
The value must match PlayerData.getProfess().getId() from MMOCore (example: WARRIOR, MAGE, HUMAN).
On join and class change, ensureTrait() picks the matching trait or falls back to default-trait.
Reflective listeners
Skill cast and class change events are registered reflectively so the plugin JAR loads even when MMOCore is absent. If MMOCore is not installed, those triggers and conditions simply do nothing or fail closed.
Plugin load order
From plugin.yml:
depend:
- SoapsCommon
softdepend:
- MythicLib
- MMOCore
SoapsCommon always loads first. MythicLib and MMOCore should be present at startup for clean integration.
Paper API
api-version: '1.21'- Built against Paper 1.21.11 API
- Combat listeners use standard Bukkit events (
EntityDamageByEntityEvent, etc.)
What is not integrated (1.0.0)
- PlaceholderAPI placeholders (use
/sts infoor custom plugins) - Vault economy
- WorldGuard regions (use
worldcondition for coarse filtering) - Custom mob plugins (use
target_typefor vanilla entity types)