Fabric mod for Minecraft Java Edition 26.3-snapshot-5 that lets you place televisions and cinema screens in your world and watch live TV and on-demand media together with friends.
Live channels come from a Tunarr (or any M3U + XMLTV) playlist. Movies and shows can come from Jellyfin, Emby, or Plex. Each display keeps its own channel or title, multiple screens can play at once, and audio is positional.
| Requirement | Notes |
|---|---|
| Java 25+ | Required by this snapshot toolchain. |
| Minecraft 26.3-snapshot-5 | Built against this snapshot specifically. |
Fabric Loader >=0.19.3 |
Pinned in gradle.properties. |
| Fabric API | Use the build matching 26.3 (see gradle.properties). |
| VLC (64-bit) | Needed on each client for video/audio. Install from videolan.org. |
Without VLC, menus, guide, commands, and multiplayer sync still work, but screens show a “video player unavailable” state instead of video.
If VLC is installed in a non-standard location, launch the game with:
-Dpixelreel.vlc.path=C:\Path\To\VLC
Windows:
build-mod.bator:
gradlew.bat clean buildThe installable JAR is:
build\libs\pixelreel-1.0.0.jar
Use the JAR without -sources.
Dev client:
run-client.bat- Install Fabric Loader for Minecraft 26.3-snapshot-5.
- Put Fabric API in your
modsfolder. - Put
pixelreel-1.0.0.jarinmods. - Install 64-bit VLC on every client that should see video.
The mod runs on clients and servers (environment: *). For multiplayer, both sides need the mod. VLC is only required on clients.
Created on first launch at config/pixelreel.json.
| Key | Default | Meaning |
|---|---|---|
m3uUrl |
"" |
Tunarr base URL or full M3U URL. A base like http://1.1.1.1:8000 expands to /api/channels.m3u. |
xmltvUrl |
"" |
XMLTV guide URL. Auto-filled from a Tunarr base as /api/xmltv.xml when empty. |
Tip: create a dedicated Jellyfin user with access only to Movies and TV Shows, or Anime then use that user’s API key here. I feel it’s simpler and safer than pointing the mod at your admin account.
| Key | Default | Meaning |
|---|---|---|
jellyfinUrl |
"" |
Server URL (often port 8096). |
jellyfinApiKey |
"" |
API key. |
jellyfinUserId |
"" |
Optional user id |
jellyfinMoviesEnabled |
true |
Show movies. |
jellyfinTvShowsEnabled |
true |
Show TV series. |
jellyfinLibraryIds |
[] |
Limit to specific libraries; empty = all. |
jellyfinAutoplayNextEpisode |
true |
Autoplay next episode. |
jellyfinLibraryCacheSeconds |
600 |
Library cache lifetime. |
jellyfinProgressReportSeconds |
30 |
Playback progress report interval. |
jellyfinNextEpisodeCountdownSeconds |
10 |
Countdown before next episode. |
Tip: create a dedicated Emby user with access only to Movies and TV Shows, or Anime then use that user’s API key here. I feel it’s simpler and safer than pointing the mod at your admin account.
| Key | Default | Meaning |
|---|---|---|
embyUrl |
"" |
Server URL. |
embyApiKey |
"" |
API key. |
embyUserId |
"" |
Optional user id. |
embyMoviesEnabled |
true |
Show movies. |
embyTvShowsEnabled |
true |
Show TV series. |
embyLibraryIds |
[] |
Limit to specific libraries; empty = all. |
embyLibraryCacheSeconds |
600 |
Library cache lifetime. |
Tip: prefer a Plex account/user that only has access to Movies, TV Shows, and/or Anime, then use that account’s token here instead of a full admin setup.
- Open your Plex web app and sign in.
- Click any movie or TV show (for example American Dad).
- Click the three dots → Get Info → View XML.
- In the address bar of the XML page, find
X-Plex-Token=— the value after it is your Plex token. - Paste that value into
plexTokenin in game GUI.
| Key | Default | Meaning |
|---|---|---|
plexUrl |
"" |
Server URL (often port 32400). |
plexToken |
"" |
Plex token (see steps above). |
plexMoviesEnabled |
true |
Show movies. |
plexTvShowsEnabled |
true |
Show TV series. |
plexLibraryKeys |
[] |
Limit to specific libraries; empty = all. |
plexLibraryCacheSeconds |
600 |
Library cache lifetime. |
API keys and tokens stay server-side. Clients only receive non-secret public config.
| Block | Size | Audio range |
|---|---|---|
| Compact Television | 3 × 2 | 16 |
| Wall Television | 6 × 4 | 24 |
| Ultrawide Monitor | 8 × 4 | 24 |
| Cinema Screen | 14 × 8 | 80 |
| Curved Cinema Screen | 16 × 7 | 80 |
Using a curved cinema screen is the best way to watch 4k HDR content when creating your own home movie theater. (just my opinion)
All are craftable, appear in the pixelReel creative tab, and are findable by searching television, TV, screen, cinema, or monitor. (need more work on this but for now)
Pixel Glasses are also craftable: wear them for a fullscreen overlay of a nearby playing screen.
Only the active screen area has collision — bezels stay buildable so you can frame screens with your own blocks. Breaking the Center of the controller removes the whole display;
player build is never touched.
- Right-click a display: open the media menu.
- Sneak + right-click: toggle power.
- Video is letterboxed/pillarboxed to the screen aspect (never stretched), it plays its orginial aspect ratio
Most screen actions use these commands
/tv menu open the media menu
/tv channels list live channels
/tv channel <n or name> tune a live channel
/tv next | previous change channel
/tv guide now/next programme overview
/tv status power, channel, stream, and volume diagnostics
/tv retry restart playback
/tv reload re-download playlist/guide
/tv stop | resume pause/resume playback
/tv power on|off|toggle power control
/tv volume <0-100> per-display volume
/tv rebuild rebuild screen collision without touching builds
/tv jellyfin status|refresh|configure
Display state (type, power, channel/media, facing, volume, playback position) is server-auth and synced to every client, including players who join later.
Each client decodes the stream locally with its own VLC. Credentials are never stored in world data
What already works in this snapshot build — crossed out as complete:
-
Fabric mod targeting Minecraft 26.3-snapshot-5 -
Five display sizes (Compact TV, Wall TV, Ultrawide, Cinema, Curved Cinema) -
Live TV via Tunarr / M3U + XMLTV guide -
Jellyfin, Emby, and Plex integration -
In-game provider config GUIs (Tunarr, Jellyfin, Emby, Plex) -
Poster-based movie & TV browse UI -
Playback controls (power, pause/resume, volume, channel/media select) -
/tvcommand suite for screen control & diagnostics -
Server-authoritative multiplayer sync (late-join included) -
Client-side VLC decode with positional audio -
Subtitles, letterboxing, and HDR tone mapping -
Pixel Glasses fullscreen overlay -
Craftable displays + creative tab - Fabric mod targeting Minecraft 1.21.1
| Feature | Status | Priority | Notes |
|---|---|---|---|
| Admin remote control | Planned | High | Item or GUI usable from anywhere (not only at the screen). Admins can start, pause, rewind/seek, pick content, and open config for any display. |
| Personalized screens | Planned | High | Per-player private viewing — each player can have their own channel/title on a shared or personal display without forcing everyone onto the same stream. |
| Movie scheduler | Planned | Medium | Queue showtimes (date/time + title or channel). Auto power-on, start playback, and optional lobby announcements for cinema nights. |
| YouTube / streaming integration | Planned | Medium | Play YouTube (and possibly other stream sources) on displays alongside Tunarr and media servers. Exact providers TBD. |
| Posters as paintings | Planned | Medium | Place movie/show posters in the world as painting-style decor (from library artwork), not only inside the browse menus. |
| Fabric on stable versions | Planned | High | Port from 26.3-snapshot-5 to older/stable Fabric target 1.20.1. |
| NeoForge support | Planned | High | First-class NeoForge build so servers/clients on NeoForge can run pixelReel. |
| Forge support | Planned | Medium | Forge port after (or alongside) NeoForge, depending on version demand. |
DISCORD: https://discord.gg/RSWQuEnMj Mincraft Mod 1.21.1: https://github.com/Samarth-programming/PixelReel_1.21.1
Ideas and PRs welcome — especially for loaders, version ports, and the admin remote.