{"url":"https://levimc.org/mods/github.com/MRUIAW/UtilityRenderDistanceExpansion/","tooth":"github.com/MRUIAW/UtilityRenderDistanceExpansion","name":"UtilityRenderDistanceExpansion","description":"Independent server actor-interest and client collection/detail ranges","owner":"MRUIAW","icon":"https://raw.githubusercontent.com/MRUIAW/UtilityRenderDistanceExpansion/refs/heads/main/assets/URDE_logo.png","repository":"https://github.com/MRUIAW/UtilityRenderDistanceExpansion","issues":"https://github.com/MRUIAW/UtilityRenderDistanceExpansion/issues","releases":"https://github.com/MRUIAW/UtilityRenderDistanceExpansion/releases","stars":0,"updated":"2026-11-07T18:42:34Z","published":"2026-11-07T18:42:34Z","created":"2026-11-01T02:59:21Z","license":"LGPL-3.0","categories":[],"platforms":["levilamina"],"env":["client"],"gameVersions":["1.26.60"],"tags":["platform:levilamina","type:mod"],"latest":{"variant":"","version":"1.0.0","install":"lip install github.com/MRUIAW/UtilityRenderDistanceExpansion@1.0.0"},"readmes":[{"file":"README.md","lang":"en","text":"# UtilityRenderDistanceExpansion\n\nA [LeviLamina](https://github.com/LiteLDev/LeviLamina) mod for Minecraft Bedrock that lets players see and shoot\nactors, see block entities and keep terrain detail **farther than vanilla**, and makes\ndistant movement smooth. It has a **server build** (dedicated server) and a\n**client build** (also covers single-player and LAN hosting).\n\n- Game: Bedrock **1.26.60** (client 1.26.60.05, BDS 1.26.60.2), Windows x64.\n- Requires **LeviLamina `>=26.60.2 <26.61.0`**.\n- License: LGPL-3.0.\n\n## What it does\n\n| Feature | Side | Default |\n|---|---|---|\n| Send actors to players from farther away (replication range) | server, and the client when it hosts a world | 32 chunks (512 blocks) |\n| Draw actors farther away | client | 512 blocks |\n| Draw block entities (chests, signs, ...) farther away | client | 512 blocks |\n| Keep vegetation, leaves and glass at high detail farther away (**experimental**) | client | 512 blocks |\n| Update distant moving actors more often, with matching interpolation | server, and the client when it hosts a world | 4 ticks (server), 1 tick (hosting) |\n\nIt does not change fog, fancy leaves, view distance, tick distance, chunk loading or\nshadows. Actors only move inside the server's simulation range (`tick-distance`).\n\n## Install\n\nUse `lip` with `tooth.json`, or copy the folder by hand.\n\n| Build | Copy `UtilityRenderDistanceExpansion/` to |\n|---|---|\n| Dedicated server | `<server>/mods/UtilityRenderDistanceExpansion/` |\n| Client | `<game instance>/mods/UtilityRenderDistanceExpansion/` |\n\nRun the server build on the server and the client build on every player who wants\nthe client features. For single-player or LAN hosting you only need the **client**\nbuild: its in-process server uses the same settings as the client.\n\nEach build creates its own config file in the mod's `config/` folder on first start:\n`server.json` or `client.json`.\n\n## Commands\n\nServer: `/urde` (needs operator / GameDirectors permission). Client: `/urdec`\n(local to your game, no permission needed).\n\n```text\n/urde status\n/urde reload\n/urde set <setting: setting> [value: int]\n/urde set <setting: setting> vanilla\n\n/urdec status\n/urdec reload\n/urdec set <setting: setting> [value: float]\n/urdec set <setting: setting> vanilla\n/urdec set entity_shape <circle|square>\n```\n\n`set` takes effect on the next tick and is saved to the config file. `vanilla`\nrestores the native behaviour for that setting. `reload` re-reads the config file; if\nthe file is invalid the old settings stay. Changes are limited to one per second.\nThe in-game grey syntax hint does not list `reload`, but Tab completes it and it works.\n\n### Settings\n\n| Command | Setting | Default | Allowed | What it controls |\n|---|---|---|---|---|\n| `/urde` | `actor_interest_chunks` | 32 | whole 1..32, or `vanilla` | How far (in chunks) the server sends actors to each player. Vanilla is a fixed 57-chunk pattern, about 70 blocks. |\n| `/urde` | `update_interval` | 4 | whole 1..10, or `vanilla` | Minimum ticks between movement updates for distant actors (see below). |\n| `/urdec` | `entity_range` | 512 | 1..512, or `vanilla` | How far actors are drawn. |\n| `/urdec` | `block_entity_range` | 512 | 1..512, or `vanilla` | How far block entities are drawn. |\n| `/urdec` | `terrain_detail` | 512 | 1..512, or `vanilla` | Distance up to which vegetation, leaves and raster glass keep high detail. **Experimental.** |\n| `/urdec` | `entity_shape` | circle | `circle`, `square` | `circle` draws actors within a horizontal circle of `entity_range`; `square` uses a cube. |\n| `/urdec` | `replication_margin` | 16 | 0..512 | Extra blocks of replication beyond `entity_range` when you host a world. |\n| `/urdec` | `update_interval` | 1 | whole 1..10, or `vanilla` | Same as the server setting, for the world you host. |\n\nBoth sides also read two lists from their config file (edit the file, then `reload`):\n\n- `full_rate_types`: entity type ids that always use the fastest update rate. Default `[\"minecraft:player\"]` (only used when the key is missing).\n- `full_rate_tags`: actors with one of these `/tag` names always use the fastest update rate. Default `[]`.\n\nExample `server.json`:\n\n```json\n{\"actor_interest_chunks\":32,\"update_interval\":4,\"full_rate_types\":[\"minecraft:player\",\"minecraft:villager\"],\"full_rate_tags\":[\"fullrate\"]}\n```\n\nExample `client.json`:\n\n```json\n{\"entity_range\":512,\"block_entity_range\":512,\"terrain_detail\":512,\"entity_shape\":\"circle\",\"replication_margin\":16,\"update_interval\":1,\"full_rate_types\":[\"minecraft:player\"],\"full_rate_tags\":[]}\n```\n\n## How the ranges work together\n\n**Actors** need two things: the server must send them (`actor_interest_chunks`), and\nthe client must draw them (`entity_range`). The result is the smaller of the two.\nWhen you play on a dedicated server, set `entity_range` a little below the server's\nrange so actors near the edge do not freeze before they disappear. When you host a\nworld yourself, the client derives the server range from `entity_range +\nreplication_margin` automatically, and never uses less than vanilla.\n\n**Block entities** (`block_entity_range`) and **terrain detail** (`terrain_detail`)\nare client-only; the server does not need to do anything, but the chunks must be\nloaded (server `view-distance`).\n\n**Smooth distant movement.** Vanilla sends far-away actors about every 7 ticks and\ntells the client to glide over that time. `update_interval` makes the server send\nsooner (never later), and the packet tells the client the real time since the\nprevious update, so the motion stays smooth. Lower values mean smoother and more\naccurate positions but more network traffic. Estimate for distant moving actors:\nabout +70% packets at 4, about 6x at 1, compared with vanilla. Values at or above the\nnative interval (about 7) change nothing. Players use the fastest rate if\n`minecraft:player` is in `full_rate_types`.\n\n## Known limits\n\n- Terrain detail is a single experimental threshold for vegetation, leaves and glass. It does not guarantee glass transparency under Vibrant Visuals or ray tracing, and it does not change fancy leaves.\n- Shadows (Vibrant Visuals) are not extended.\n- Actors beyond the server's `tick-distance` stand still.\n- A remote server's movement and range settings cannot be changed from the client; use the server build there.\n- The movement lever has been tested with animals. Other players on this path have not been tested yet.\n- Longer ranges mean more actors to process and send. Network and CPU costs were estimated, not measured.\n\n## Build\n\n```powershell\nxmake f -a x64 -m release -p windows --target_type=server -y\nxmake build\nxmake f -a x64 -m release -p windows --target_type=client -y\nxmake build\n```\n\nOutput goes to `bin/server/UtilityRenderDistanceExpansion/` and\n`bin/client/UtilityRenderDistanceExpansion/`. `xmake build urde-checks` followed by\n`xmake run urde-checks` runs the game-independent checks.\n\nDeveloper notes (hook signatures, reverse-engineering evidence, live acceptance\nnotes) are in [docs/](docs/).\n\n## License\n\nLicensed under the [GNU Lesser General Public License v3.0](LICENSE) (LGPL-3.0).\nThe LGPL supplements the [GNU General Public License v3.0](COPYING).\n"}],"gallery":[],"variants":[{"label":"","versions":["1.0.0"]},{"label":"client","versions":["1.0.0"]}],"versions":[{"version":"1.0.0","prerelease":false,"released":"2026-11-07T18:42:34Z","releaseUrl":"https://github.com/MRUIAW/UtilityRenderDistanceExpansion/releases/tag/v1.0.0","manifestUrl":"https://github.com/MRUIAW/UtilityRenderDistanceExpansion/blob/v1.0.0/tooth.json","info":{"name":"UtilityRenderDistanceExpansion","description":"Independent server actor-interest and client collection/detail ranges","tags":["platform:levilamina","type:mod"],"avatar_url":"https://raw.githubusercontent.com/MRUIAW/UtilityRenderDistanceExpansion/refs/heads/main/assets/URDE_logo.png"},"variants":[{"label":"","platform":"win-x64","dependencies":{"github.com/LiteLDev/LeviLamina":">=26.60.2 <26.61.0"},"leviLamina":">=26.60.2 <26.61.0","install":"lip install github.com/MRUIAW/UtilityRenderDistanceExpansion@1.0.0"},{"label":"client","platform":"win-x64","dependencies":{"github.com/LiteLDev/LeviLamina#client":">=26.60.2 <26.61.0"},"leviLamina":">=26.60.2 <26.61.0","install":"lip install github.com/MRUIAW/UtilityRenderDistanceExpansion#client@1.0.0"}]}],"dependencies":{"github.com/liteldev/levilamina":{"tooth":"github.com/LiteLDev/LeviLamina","name":"LeviLamina","owner":"LiteLDev","url":"https://levimc.org/mods/github.com/LiteLDev/LeviLamina/"}},"requiredBy":[]}