Tags
Creators
Details
v2.0.7+1.21.1
Compatibility
Changes
NeoOrigins 2.0.7
Spawns a vanilla particle on the player at a fixed cadence. Server-side
ServerLevel.sendParticles packetizes to nearby clients, so this works
on dedicated servers without a client-side mixin.
{
"type": "neoorigins:particle",
"particle": "minecraft:end_rod",
"frequency": 6,
"spread": [0.4, 0.6, 0.4]
}
Accepts a simple particle id string or the object form for parameterized
particles (dust with color + scale). Configurable frequency,
count, spread, offset, speed, and an optional condition gate.
Compat: origins:particle, apace:particle, apoli:particle, and
apugli:particle now auto-translate to this — previously they were
silently dropped as "no server-side equivalent."
Two leak paths from the per-power onRevoked sequence in
ActiveOriginService.revokeAllPowers:
- Stale legacy-format modifier IDs in NBT from older buggy formats.
purgeStaleModifiersran only on the grant path, soinstance.removeModifier(currentModId)couldn't match them. - Modifiers from origins whose JSON is gone —
revokeAllPowersskipped them becauseOriginDataManager.getOrigin(...)returned null.
Fix: after the per-power loop, sweep every neoorigins:power_*
AttributeModifier off every attribute attached to the player. New
AttributeModifierPower.purgeAllOriginModifiers(LivingEntity). Common
case is no-op; only does work when one of the leak paths is in play.
Pack authors can now suppress a power's row in the origin info panel
without origins:multiple wrapping or hardcoded type exclusions:
{
"type": "neoorigins:toggle",
"default": false,
"hidden": true
}
Mechanical effect of the power is unchanged — only the display row is
suppressed. Default is false, so no existing pack regresses.
PowerHolder and ClientPowerCache.Entry carry the new flag;
SyncOriginRegistryPayload syncs it to dedicated-server clients;
OriginDetailViewModel.isHiddenPowerType checks it before the legacy
HideHudBarPower path.
- POWER_TYPES.md: new shared metadata table now lists
hidden. Newneoorigins:particlereference entry with sparkle-aesthetic picks. - COOKBOOK.md: recipe #15 (Toggleable abilities) updated to recommend
hidden: trueon internal flag/glue powers. - power.schema.json: both new fields documented.
Optional dependencies
Projects on Modrinth are automatically available through a Maven repository for use with JVM build tools such as Gradle. To learn more about the Modrinth Maven API, click here.
Note: When available, you should use the creator's maven repo instead as it will have transitive dependency information that the Modrinth Maven API does not. You may also end up with duplicate dependencies if you use a mix of Modrinth and non-Modrinth Maven repositories for your dependencies, because the group identifier will be different when served through the Modrinth Maven API.
Maven coordinates:
Version ID:
build.gradle:
repositories {
exclusiveContent {
forRepository {
maven {
name = "Modrinth"
url = "https://api.modrinth.com/maven"
}
}
// forRepositories(fg.repository) // Uncomment when using ForgeGradle
filter {
includeGroup "maven.modrinth"
}
}
}
// Standard Gradle dependency
dependencies {
implementation "maven.modrinth:RUtQ9kfe:ej3kfqk5"
}
// Legacy Loom dependency
dependencies {
modImplementation "maven.modrinth:RUtQ9kfe:ej3kfqk5"
}


