Java 21 library. Minecraft chat text model (colours, formats, segments, click/hover events, font rendering) extracted from minecraft-library/asset-renderer.
- Source:
src/main/java/lib/minecraft/text/(README listsdev.sbs.renderer.text- stale) - Tests:
src/test/java/lib/minecraft/renderer/text/ - Subpackages:
.event(Click/Hover),.font(MinecraftFont + metrics + graphics),.tooling(ToolingFonts generator)
./gradlew build- standard./gradlew fonts [-PfontVersion=26.1]- clonesminecraft-library/font-generatorintocache/font-generator/, runs Python venv, emits OTFs tocache/fonts/. Run once per MC version bump or on fresh checkout before any code exercisingMinecraftFont.processResourcescopiescache/fonts/-> classpathfonts/.DuplicatesStrategy.INCLUDEso generated wins over straysrc/main/resources/fonts/.
cache/andtexturepacks/gitignored. Never commit OTFs or generated font artifacts.- No
src/main/resources/in repo - fonts arrive via generator. - Deps: version catalog (
libs.*) for Lombok/JUnit/Hamcrest/Gson/simplified-annotations; pinned jitpack commits forsimplified-devlibs (bump commit hash inbuild.gradle.kts, not version range). - Runtime font bootstrap:
MinecraftFontextracts classpath OTF to temp file on first init - downstream consumers don't ship OTFs.
- Global rules (Javadoc, exception ctor order, control flow, git) live in
~/.claude/CLAUDE.md. Don't restate here. - Lombok:
@Getter/@RequiredArgsConstructoridiomatic; doc the field, not the generated method. @NotNull/@Nullablefromorg.jetbrains.annotations.