A minimal client-side Fabric mod for Minecraft 1.21.1 that prevents armor stands and item frames from being frustum-culled when they are within a configurable range. No commands, no tags — just open Mod Menu, tweak the slider, and your furniture stays visible.
Vanilla Minecraft skips rendering entities whose bounding box is outside the camera frustum. Armor stands and item frames have a very small physical box, but custom resource packs (such as those used by ItemsAdder furniture) attach display models that are much larger than that box.
Result: the custom furniture disappears the moment the armor stand's tiny box slides off the edge of the screen, even though most of the model is still clearly visible.
ForceRender mixes into EntityRenderer#shouldRender. For every armor stand and item frame within
the configured range, it returns true immediately — bypassing the frustum check. Entities
outside that range fall back to vanilla behaviour, so performance is only affected near the player.
Open Mod Menu → ForceRender → (gear icon) to access the config screen:
| Setting | Description | Default |
|---|---|---|
| Force Render | Enable or disable the mod entirely | Enabled |
| Render Range | Entities beyond this many blocks use vanilla culling | 32 blocks |
Settings are saved to .minecraft/config/forcerender.properties and can also be edited by hand.
No Mod Menu? The mod still works; just edit
forcerender.propertiesdirectly.
- Install Fabric Loader and Fabric API for Minecraft 1.21.1.
- (Recommended) Install Mod Menu for the in-game settings screen.
- Drop
forcerender-<version>.jarinto yourmods/folder.
Server note: This is a client-side only mod. It is never loaded server-side and does not need to be installed on the server.
Requirements: JDK 21
# One-time: generate the Gradle wrapper binary
gradle wrapper --gradle-version=8.8
# Build
./gradlew buildOutput: build/libs/forcerender-<version>.jar
EntityRenderer#shouldRender(T entity, Frustum frustum, double cameraX, double cameraY, double cameraZ)
Vanilla logic:
- Get the entity's
getVisibilityBoundingBox()— very small for armor stands. frustum.isVisible(box)→false→ entity skipped.
With ForceRender:
- If mod is disabled → vanilla logic unchanged.
- If entity is not an
ArmorStandEntityorItemFrameEntity→ vanilla logic unchanged. - If distance to camera > configured range → vanilla logic unchanged.
- Otherwise → return
trueimmediately, bypassing the frustum check.
The Mixin is declared in the "client" array of forcerender.mixins.json, so it never runs
on a dedicated server.
| Minecraft | Fabric Loader | Fabric API | Mod Menu |
|---|---|---|---|
| 1.21.1 | ≥ 0.16.0 | 0.102.0+1.21.1 | ≥ 11.0 (opt.) |