Tags
Creators
Details
1.0.0
Compatibility
Changes
v1.0.0 — First Stable Release
Architecture
- Package renamed to
network.azusake.halo - Decoupled halo position calculation from rendering via
AnchorFrame/AnchorFrameCalculator - Multi-layer halo system with independent per-layer position, rotation, scale, and glowing toggle
- Billboard primitive that always faces the camera
Orientation Modes
locked— halo follows entity yaw rotationfree— halo floats independentlysync— halo normal-axis spin tracks entity yaw, pitch/roll remain independent
Animation System
AnimationTermsealed interface withsin,cos, andlinearterm types- Per-layer and definition-level animation blocks with offset (x/y/z) and rotation (yaw/pitch/roll) axes
linearterms support an optionalstartparameter for custom initial rotation angles- Multiple terms on the same axis are summed via linear superposition
- Animation time uses elapsed time since halo creation, avoiding floating-point precision drift
Built-in Definitions
ring_default— 7-layer clock-ring design with concentric rings rotating at staggered speeds
Fixes
- Halo no longer flips position at extreme pitch angles (±90°)
- Halo position resets reliably after teleporting cross-dimension or long distances
- Server reload no longer overwrites client-loaded definitions (each source independently tracks its own entries)
- Missing halo definitions trigger immediate deactivation rather than per-frame error spam
- Removed duplicate definition file that could cause data-pack vs resource-pack conflicts
JSON Format
All halo definitions moved to data/halo/halo_definitions/. Animations use function-based term arrays under animation.offset and animation.rotation nodes. Single-layer definitions remain backward-compatible.
Supplementary resources
| File | Type | Size | |
|---|---|---|---|
| halo-1.0.0-sources.jar | Source jar | 96.97 KiB |
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:k2fEt5RO:70Kxw2Ft"
}
// Legacy Loom dependency
dependencies {
modImplementation "maven.modrinth:k2fEt5RO:70Kxw2Ft"
}

