Stellar Aura is a single server-side NeoForge 1.21.1 mod that replaces the legacy EntityParticles 3.1.1 + ParticlesAddon 1.1.4 stack. It targets Pixelmon 9.3.16, requires Java 21, and uses only vanilla particle packets, so players do not install a companion client mod.
The old combination supplied persistent effects, aura/remover items, commands, 27 fixed aura definitions, a 1-in-8192 Pixelmon aura roll, weighted Pixelmon spec mutations, spawn announcements, and capture announcements. Stellar Aura preserves those behaviors and identities while moving storage, commands, particles, permissions, item data, and Pixelmon events to current APIs.
The first launch creates 55 editable, working definitions under config/StellarAura/auras/premade/. They are never overwritten.
Legacy identities:
american, angelic, attract, blizzard, christmas, demonic, draconic, easter, eternal, explosion, fire, ghoul, grass, hypnotic, poop, portal, rhythm, sandstorm, shadow_form, smokey, spellbound, toxic, twilight, volcanic, water, yin_yang, zombie.
New identities:
aurora, celestial, cosmic, galaxy, nebula, solar, lunar, void, ender, oceanic, storm, thunderlord, nature, sakura, fairy, royal, phoenix, dragon_soul, frostfire, blood_moon, cyber, rainbow, bee, sculk, emerald, infernal, prism, serenity.
Every preset is a normal config file. It is not privileged or hardcoded at render time, so an admin can clone it, replace every layer, or disable it.
Aura definitions are .yml or .yaml files anywhere below config/StellarAura/auras/. The generated config/StellarAura/examples/kitchen-sink-aura.yml documents every field.
Each aura supports:
replace/add/toggle behavior;Supported shapes:
point, cloud, rain, ring, halo, disc, sphere, sphere_shell, spiral, helix, double_helix, dna, vortex, torus, crown, heart, wings, rune, pentagram, star, cube, cylinder, cone, fountain, comet, trail, wave, orbit, atom, galaxy, lotus, butterfly, snowflake, phoenix, lightning, constellation, beam, burst, and infinity.
Vanilla simple particles work by registry ID. dust, dust_color_transition, block, block_marker, falling_dust, item, entity_effect, sculk_charge, and shriek also consume their corresponding payload fields.
Generic entities use a serialized NeoForge entity attachment. Pokémon also store the same state in Pokemon#getPersistentData, so auras survive capture, party/PC storage, server restarts, and later send-out. State is immutable and may contain multiple deduplicated aura IDs plus actor, timestamp, and source metadata.
Unknown IDs remain stored by default. This lets an admin temporarily remove or rename a definition without destructively erasing entity data.
The default random roll remains 1 in 8192. The original addon’s weighted spec mutations are preserved in random-spawns.pixelmon-modifiers and are fully editable. Eligible aura selection is weighted and can be constrained per definition.
Pixelmon 9.3.16 gender specifications use female, male, or none. Stellar Aura 1.0.1 also expands the legacy g:f, g:m, and g:n forms automatically for existing configs. Every configured match/apply specification is exception-contained: Pixelmon parser failures are logged once and skipped instead of being allowed to crash the server tick thread.
Randomly assigned auras are written to both the world entity and its underlying Pokémon before capture. Capture and send-out events therefore use one consistent state rather than trying to match replacement entity UUIDs.
The renderer tracks only aura-bearing entities and periodically repairs its index. It does not scan every entity every render tick.
Global controls include render and rescan intervals, view distance, tracked entities per level, rendered entities per tick, particle packets per tick, layers per aura, and auras per entity. Distance and viewer filters run before packet creation. Adaptive throttling scales both packet and entity budgets down when the server’s smoothed tick time exceeds the configured threshold.
/aura stats exposes current tracking, preview, packet, render, and throttle counters.
Aliases are /aura, /auras, /stellaraura, and /entityparticles.
| Command | Purpose |
|---|---|
/aura list [page] |
List enabled IDs. |
/aura info <aura> |
Inspect catalog metadata. |
/aura give <players> <aura> [amount] |
Give configured applicator items. |
/aura give-remover <players> [amount] |
Give remover items. |
/aura set <entities> <aura> [replace|add|toggle] |
Assign an aura with selectors. |
/aura random <entities> |
Assign a compatible random aura. |
/aura remove <entities> [aura|all] |
Remove one or all assignments. |
/aura copy <source> <targets> |
Copy the complete stacked state. |
/aura inspect <entity> |
Show current IDs. |
/aura preview <aura> [seconds] |
Non-persistent preview on the command player. |
/aura reload |
Atomically reload global, message, and aura files and rebuild tracking. |
/aura validate |
Show schema/registry warnings. |
/aura stats |
Show renderer counters and throttling. |
Dynamic Brigadier suggestions are generated from the current catalog.
Core nodes are:
stellar_aura.command.list, stellar_aura.command.info, stellar_aura.item.use — everyone by default;stellar_aura.command.give, .set, .remove, .random, .copy, .inspect, .preview, .reload, .validate, .stats — operators by default.An aura’s permission is registered as a NeoForge permission node and can be managed by a compatible provider such as LuckPerms. New node strings require a restart so NeoForge can gather them; all other edits support live reload.
Commands and messages support %player%, %player_uuid%, %entity%, %entity_uuid%, %entity_type%, %aura%, %display%, %world%, %x%, %y%, %z%, %biome%, %pokemon%, and %pokemon_uuid% where available.
Commands run from the server’s suppressed-output console source. Definition messages are sent to the applying player. Built-in spawn and capture messages broadcast when enabled.