AbyssalDao API Information¶
AbyssalDao does not currently expose a dedicated, stable public API package in the same style as some larger Bukkit plugins.
What it does expose today is:
- a main plugin entry point
- public model/config records
- an internal storage contract
- built-in config-driven hooks for MythicMobs and Fabled
The practical takeaway is:
- supported integration is mainly configuration-driven
- there are no custom Bukkit events defined in source
- internal services are not exposed through public getters or Bukkit's
ServicesManager
Main Entry Point¶
The Bukkit plugin main class is net.cyberneticforge.AbyssalDao.
Useful public entry points:
AbyssalDao.getInstance()AbyssalDao.reloadAll()
Example:
import net.cyberneticforge.AbyssalDao;
AbyssalDao plugin = AbyssalDao.getInstance();
boolean ok = plugin != null && plugin.reloadAll();
Important note:
reloadAll()hot-reloads the YAML-backed runtime systems, but the storage backend itself is not swapped live. Changes tostorage.ymlstill require a restart.
Supported Integration Model¶
MythicMobs¶
If MythicMobs is installed, AbyssalDao reads mythicmobs.yml and exposes those configured entries as external Dao skills.
Those skills can then:
- appear in the skills GUI
- be cast through
/dao cast <skill> - be bound with
/dao cast bind <skill> <combo> - be recorded as external recording steps
Fabled¶
If Fabled is installed, AbyssalDao reads fabled.yml and exposes those configured entries the same way.
Additional Fabled note:
required-classcan be used to gate the external skill to a specific Fabled class.
SkillProvider and Registry¶
Internally, the plugin uses:
SkillProviderSkillProviderRegistryDaoSkill
SkillProvider defines:
providerId()getSkills()execute(DaoSkill skill, Player caster, PlayerDaoProfile profile)
SkillProviderRegistry supports:
register(SkillProvider provider)provider(String providerId)externalSkills()findExternalSkillById(String skillId)
Important limitation:
- although these classes are public, the plugin's live
SkillProviderRegistryinstance is a private field insideAbyssalDaoand is not exposed by a public getter. - that means third-party plugins do not currently have a clean supported way to register their own provider at runtime without modifying AbyssalDao or using reflection.
- in practice, the supported path today is the shipped MythicMobs/Fabled config integration rather than arbitrary provider injection.
Persistence Contract¶
The persistence abstraction is StorageProvider.
It defines:
initialize()loadProfile(UUID playerId)saveProfile(PlayerDaoProfileSnapshot snapshot)close()
Bundled implementations:
SqliteStorageProviderMySqlStorageProviderMariaDbStorageProvider
The serialized snapshot shape is PlayerDaoProfileSnapshot.
It stores:
playerIdaffinityprogressionLevelcultivationExperiencecultivationInsightactiveCultivationMethodIdcultivationFocuscultivationFocusUpdatedAtinstabilityUntillastBreakthroughAttemptAtrecordedSkillsskillBindingsmethodMasteryExperienceunlockedSkillTreeNodesskillProgressions
Important note:
- this storage interface is internal to the plugin. There is no public runtime setter for swapping providers after startup.
Main Runtime Models¶
Public model types that are useful to understand when reading or extending the code:
| Type | Purpose |
|---|---|
PlayerDaoProfile |
Main in-memory player state: affinity, level, cultivation resources, recorded skills, bindings, mastery, instability, and unlocked tree nodes. |
RecordedSkill |
A saved player technique built from recorded combo or external skill steps. |
SkillBinding |
A player-defined combo binding that maps an L/R sequence to a skill. |
DaoSkill |
General skill descriptor used for native, recorded, and external skills. |
SkillProgression |
Evolution data for a recorded skill. |
TaoCreatureProfile |
Element and Tao level data attached to a Tao creature. |
InfusionState |
Current Tao infusion state for a player. |
Public Config and Math Records¶
The plugin also exposes many public records that mirror loaded config:
DaoConfigurationDaoSettingsElementDefinitionComboDefinitionCultivationConfigurationCultivationGlobalSettingsBreakthroughSettingsCultivationMethodDefinitionRealmDefinitionSkillTreeConfigurationSkillTreeNodeDefinitionSkillTreeNodeRequirementSkillTreeNodeBonusesFocusEnvironmentConfigurationSynergyDefinitionTaoCreatureSettings
Useful public helper classes:
CultivationMathSkillTreeMath
These are helpful for understanding how values are derived, but they are still part of the plugin's own internal architecture rather than a documented compatibility contract.
Events¶
There are currently no custom Bukkit events in the source tree for:
- casts
- breakthroughs
- recordings
- skill tree unlocks
- Tao Sense state changes
- Tao creature kills
That means external integrations cannot subscribe to a formal AbyssalDao event bus today. If you need to react to plugin behavior, you currently have to:
- listen to normal Paper/Bukkit events yourself
- inspect player state indirectly
- or modify/fork the plugin
Practical Integration Notes¶
- The safest supported integration surface is the config-based external skill system through
mythicmobs.ymlandfabled.yml. AbyssalDao.reloadAll()is the main public runtime control surface.- Internal services like
ProfileService,DaoCombatService,CultivationService,SkillTreeService, andTaoSenseServiceare not published through getters. - There is no Bukkit
ServicesManagerregistration for AbyssalDao services. - If you need a hard API for third-party plugins, the current codebase would need explicit new public accessors and probably custom Bukkit events.