Skip to content

banner-core

Core (rpg-core)

Status: In Progress — persistence (YAML + MySQL), damage pipeline, block break handler, skills framework, stat registry, health display, status-effect framework, loot tables, natural spawning, admin spawners, expression evaluator, and content loaders (items/mobs/abilities/blocks/recipes) all working.

rpg-core is the bootstrap plugin that owns every shared service. Every addon depends on it.

What lives here

System Page
Stats framework + registry stats reference
Persistence (YAML / MySQL toggle) persistence
Vanilla suppression master config vanilla-suppression
Damage pipeline damage
Status-effect framework status-effects
Skills framework (XP, levels, curves, milestones) skills
Cooldown service (covered in damage + abilities)
Health display (heart-as-percent) health-display
Selection wand (admin tool) selection-wand
Name formatter (LuckPerms prefix/suffix) (covered in chat addon)
Message formatter (i18n keys) (covered in configuration)
Scheduler abstraction (Folia-ready wrapper) (developer-facing; development)
Loot-table primitive loot-tables
Expression evaluator (formula parser) skills
Content loaders (items, mobs, abilities, blocks, recipes) content/
Spawner runtime + natural spawning spawning
Armor set bonuses + passive abilities armor-sets

Service locator

Other plugins access core services via RpgServices:

RpgServices.stats();        // StatRegistry
RpgServices.items();        // ItemRegistry
RpgServices.mobs();         // MobRegistry
RpgServices.abilities();    // AbilityRegistry
RpgServices.mana();         // ManaService
RpgServices.player(player); // RpgPlayer
// more services to be added as systems land — see development.md

The lookup throws IllegalStateException if called before rpg-core has bootstrapped. Since rpg-core uses load: POSTWORLD and all addons hard-depend on it, this never happens in practice.

Core commands

See commands.md for the full table. Key ones:

  • /rpg version
  • /rpg reloadall
  • /rpg item give <id>
  • /rpg mob spawn <id>
  • /rpg wand [mode]
  • /rpg block give <id>
  • /rpg block convert <radius> <fromMaterial> <toBlockId>
  • /stats, /skill, /effects

Core config knobs (high level)

The main config.yml covers:

  • Persistence backend (backend: yaml | mysql) + MySQL connection
  • vanilla-suppression master block (dedicated page)
  • Stat modifier order, default stat caps
  • Damage formula constants (defense reduction, crit cap, lifesteal cap)
  • Default skill curve + per-skill overrides
  • Health/Mana defaults
  • Death-rule tiers
  • Natural-spawning master toggle
  • Combat tagging duration, vitality scaling
  • Status-effect stacking defaults
  • Chat name-format defaults (LuckPerms wiring)
  • i18n locale
  • Resource pack auto-deliveryresource-pack.enabled/url/sha1/prompt/required; sends pack to players on join. Disabled by default.
  • Damage indicatorsdamage-indicators.enabled/duration-ticks/rise-blocks; TextDisplay entities animate via a sine arc (rise then fall) with linear scale shrink 1→0.
  • Mob death animation — per-mob YAML fields DeathParticle, DeathParticleCount, DeathParticleSpread, DeathSound; optional burst + sound at death location, velocity zeroed to suppress knockback flop.

Each field has a comment block in the generated config.yml describing it.