Files
emotes/core/build.gradle.kts
selimaj-devandclaude e40aa1353b Load Emotecraft emotes into a registry and add a whole-player bone
- core: EmotecraftLoader reads Emotecraft / player-animation-lib JSON
  into a KeyframeAnimation (per-channel keyframes with Easing), following
  player-animation-lib's reader: absolute pivots become offsets, body
  (and torso before version 3) is the whole player in blocks, angles are
  degrees unless "degrees": false, turn adds whole turns, and loops jump
  back to returnTick after endTick. Emote and EmoteRegistry hold emotes
  by ID with their name, description and author. Animation.loopStart
  lets loops restart after an intro. Uses Jackson 2.17.0, the version
  Saturn Client ships.
- Bone.ROOT moves the whole player around its middle (0.7 blocks above
  the feet), through the model's root part, so armor and held items
  follow.
- fabric: Emotes.registry() and Emotes.play(uuid, id). Core and Jackson
  are bundled in the jar.
- testmod: loads Saturn's six emotes into the library's registry
  (/emotes play), and keeps its test animations in a separate registry
  (/emotes test). The gametest shoots the loaded emotes too.

Blending with the vanilla pose is issue #4.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-09-26 20:51:52 +02:00

42 lines
956 B
Kotlin

plugins {
`java-library`
`maven-publish`
}
group = "org.saturnclient"
version = rootProject.property("mod.version") as String
repositories {
mavenCentral()
}
dependencies {
// Same version Saturn Client ships, so only one copy ends up in the game.
implementation("com.fasterxml.jackson.core:jackson-databind:2.17.0")
testImplementation(platform("org.junit:junit-bom:5.13.4"))
testImplementation("org.junit.jupiter:junit-jupiter")
testRuntimeOnly("org.junit.platform:junit-platform-launcher")
}
java {
// Kept at 21 so it runs on every supported Minecraft version.
toolchain.languageVersion = JavaLanguageVersion.of(21)
withSourcesJar()
}
tasks.test {
useJUnitPlatform()
}
publishing {
publications {
create<MavenPublication>("maven") {
artifactId = "emotes-core"
from(components["java"])
}
}
}
apply(from = rootProject.file("gradle/gitea.gradle.kts"))