Figura is a Minecraft mod (client-side with optional server-side backend) that allows players to fully customize their avatar's appearance, animations, sounds, particles, and behavior using Lua scripting. The architecture is a multi-loader (Fabric, Forge, Quilt, NeoForge) client mod with a server-side plugin (Spigot) for avatar storage, permissions, and networking. The client-side core includes a Lua runtime (LuaJ) with a sandboxed API exposing over 30 modules (e.g., models, textures, sounds, events, keybinds, action wheel, networking, math). Avatars are defined by Blockbench models, Lua scripts, textures, and sounds, all packaged into NBT files. The rendering pipeline hooks into Minecraft's vanilla rendering via extensive mixins to replace player models, modify armor, cape, elytra, and nameplates. The server-side backend (Figura Server Bridge) provides avatar upload/download, user data, pings, and permission management via WebSocket or custom Minecraft packets. Key entry points include the `Avatar` class (lifecycle), `FiguraLuaRuntime` (script execution), `AvatarRenderer` (rendering), `PermissionManager` (access control), and `NetworkStuff` (backend communication). External dependencies include LuaJ, Gson, nv-websocket-client, and Minecraft's own libraries.
BetterModel is a high-performance, server-side Minecraft plugin and mod (Bukkit/Paper/Fabric) that renders custom 3D models from BlockBench (.bbmodel) files using Minecraft's display entities. It automatically generates resource packs, supports keyframe and Molang-driven animations, per-player model visibility, hitboxes, mounting, player skin integration, and third-party compatibility (MythicMobs, Citizens, SkinsRestorer). The architecture is modular with a clean API/implementation split, platform abstraction, and version-specific NMS modules for multiple Minecraft versions (1.21.4 through 26.3). The codebase demonstrates strong engineering practices in packet bundling, animation interpolation, concurrency utilities, and event-driven design. However, it suffers from significant code duplication across NMS versions, minimal test coverage, and heavy reliance on Minecraft internals via reflection, which introduces maintenance fragility. It is actively maintained with frequent updates and a responsive issue tracker.