A modern rendering & UI framework for Minecraft 1.7.10, providing a full backport of the 1.8+ JSON model system, an enhanced multi‑layer item renderer, and a modular UI toolkit for building complex GUIs.
Designed as a foundational library for mods that require modern visuals and structured UI components.
- 1.8‑style JSON model system (inheritance, elements, textures, display transforms)
- Blockstate JSON with variants, rotations, weighted randomness, multipart logic
- Runtime state mapping via
IBlockStateProvider - Automatic model baking into
BakedQuad - Enhanced item rendering with unlimited texture layers (
ItemModern) - Modular UI framework (Cyclable buttons, content panels, tab system)
- Namespace‑based resource loading
- Mixin‑based integration with vanilla block & item rendering
Add CatFrame as a dependency in your build.gradle:
dependencies {
implementation 'com.github.song682:CatFrame:<version>'
}Replace <version> with the latest release.
CatFrame backports the entire 1.8+ model pipeline to 1.7.10.
parentinheritance chainelementswith per‑face UV, rotation, cullfacetextureswith recursive#referencesdisplaytransforms for GUI, ground, first‑person, third‑person, fixed, shelfgui_light: "front" | "side"- Automatic texture collection & stitching
{
"parent": "block/cube_all",
"textures": {
"all": "minecraft:blocks/stone"
}
}CatFrame implements a full blockstate JSON system identical to 1.8+.
- Property‑based variants
x/yrotation- UV lock
- Weighted random models
- Multipart rendering
- Metadata mapping for legacy blocks
{
"variants": {
"facing=north": { "model": "block/furnace", "y": 0 },
"facing=east": { "model": "block/furnace", "y": 90 }
}
}For modded blocks, CatFrame can dynamically compute blockstate properties at runtime.
public class BlockModCake extends Block implements IBlockStateProvider {
@Override
public Map<String, String> getStateProperties(IBlockAccess world, int x, int y, int z, int meta) {
return Map.of("bites", String.valueOf(meta));
}
}CatFrame will:
- Read your properties
- Build a variant key (
bites=3) - Select the correct model
- Bake & render it
No ISBRH. No TESR. No OpenGL.
ItemModern extends vanilla item rendering with:
- Unlimited texture layers
- Per‑layer color tinting
- 2D GUI + 3D in‑hand rendering
- JSON model compatibility
setLayerTextureNames(
"mymod:items/blade",
"mymod:items/guard",
"mymod:items/handle",
"mymod:items/gem"
);CatFrame includes a modular UI toolkit used by CreateWorldUI and available for any mod.
A type‑safe cycling button with scroll‑wheel support.
- Custom value‑to‑text formatting
- Dynamic value lists
- Update callbacks
- On/off builder shortcut
GuiCyclableButton<Boolean> cheats = GuiCyclableButton.onOffBuilder()
.initially(false)
.build(201, x, y, 200, 20, (btn, v) -> setAllowCheats(v));A shared renderer for structured panel layouts.
- Header & footer separators
- Tiled backgrounds
- Custom textures
- One‑call
drawContentPanel()
ContentPanelRenderer.drawContentPanel(x, top, width, bottom);A complete multi‑tab GUI framework.
Tab— core interfaceAbstractScreenTab— base implementationTabManager— switching, input routing, resize persistenceTabBar— customizable tab bar (solid color, tiled texture, custom tab buttons)TabRegistry— register tabs from external mods
TabRegistry.registerTab(MyTab::new, 103, "mymod.tab.custom", 5);assets/<namespace>/
├── blockstates/
├── models/
│ ├── block/
│ ├── item/
│ └── builtin/
└── model_mappings.json
- VanillaModelManager — core loader, baker, renderer
- ModelResolver — parent chain resolution
- BlockJsonModelBake — element → BakedQuad
- MixinRenderBlocks / MixinRenderItem — rendering hooks
- ItemModern — enhanced item renderer
- UI Components — cycling buttons, panels, tabs
- Model System
- ItemModern
- UI Components