promotional bannermobile promotional banner

MediaFrames

Synchronized media frames for NeoForge 1.21.1: play YouTube videos and show images on blocks, in sync for every player. Server and client required. Alpha.
gallery-5-ceiling-frame.png

gallery-5-ceiling-frame.png

gallery-1-gui-simple.png

gallery-1-gui-simple.png

gallery-2-gui-advanced.png

gallery-2-gui-advanced.png

gallery-3-create-train.png

gallery-3-create-train.png

gallery-4-floor-frame.png

gallery-4-floor-frame.png

Description

MediaFrames

Synchronized media frames for NeoForge 1.21.1: play YouTube videos and show images on blocks in the world, in sync for every player.

Alpha release. Expect rough edges. See "Known limits and untested" below.

MediaFrames adds one block, the Media Frame. Place it on any face (wall, floor, ceiling, even underwater), right-click it, paste a YouTube link or an image link, and the video plays on the frame for everyone nearby, with positional sound and synchronized play/pause/seek.

It is a standalone, original implementation. It is not affiliated with WaterFrames or WaterMedia: they inspired the general idea of media frames, but no code was taken from them, and MediaFrames does not depend on them (nor on VLC).

Features

  • One block: the Media Frame. It attaches to the clicked face (including floor, ceiling and underwater) and breaks if its support disappears.
  • YouTube playback (video and audio) with automatic quality selection (AUTO, 360p, 480p, 720p, 1080p, with a per-client cap).
  • Images by URL: Imgur is accepted by default; other image hosts through a server allowlist. Static images stay displayed; GIF and gifv/mp4 loop.
  • Server-authoritative state: play, pause, stop, seek and loading are synchronized between all clients, including players who join late.
  • Several videos at once: AUTO quality adapts to the frame size and to how many videos are already playing; H.264 is preferred and FFmpeg hardware decoding is attempted (with automatic software fallback).
  • In-game screen with a simple mode (link, Load, Play/Pause, Stop, time bar, Mute, Volume, Width/Height, keep proportions, fit to media) and an advanced mode (image, size and offsets, sound, playback, advanced). Changes apply immediately.
  • Sizes in blocks (default 1 x 0.5625, server maximum 32 x 32 by default), offsets, rotation and mirroring.
  • Positional audio that follows Minecraft's Master and Ambient volumes and pauses with the game.
  • /mediaframes commands, usable from the console.
  • No Mixin, no CoreMod, no ASM. The dedicated server never loads client classes.

Installation

  1. Install NeoForge for Minecraft 1.21.1 (21.1.x; 21.1.252 was tested) and run the game with Java 21.
  2. Put the MediaFrames JAR in mods/ on the server and on every client. The mod is required on both sides.
  3. Optional: with MediaFrames: Create Compat (separate project), videos can play on Create contraptions such as trains. That addon must also be installed on the server and on every client.

MediaFrames can be distributed to players by AutoModpack (validated with AutoModpack 4.0.6; AutoModpack 5.x is untested). It does not need AutoModpack.

Requirements

  • Minecraft 1.21.1, NeoForge 21.1.x, Java 21.
  • An internet connection on the client at first launch (see below).
  • Validated on Windows 11 x64. Linux and macOS support is implemented and unit-tested but has not been run on those systems.

First launch and network connections (please read)

MediaFrames does not bundle any media tool. At first launch, each client downloads three tools from their official sources into <game folder>/mediaframes/runtime/:

Tool Source Purpose
yt-dlp official GitHub releases (yt-dlp/yt-dlp) resolves YouTube streams
Deno official GitHub releases (denoland/deno) JavaScript runtime used by yt-dlp
FFmpeg static build from the imageio-ffmpeg wheel on PyPI (Windows ARM64: BtbN builds on GitHub) decodes video and audio

Downloads are HTTPS only, restricted to approved hosts, size and time limited, and verified with SHA-256 before use. They run in the background; the game stays usable and the screen shows progress with a Retry button if the network is down. No Python, Node, VLC or PATH change is needed.

After that, the client connects to YouTube (to read videos) and to Imgur (or any allowlisted host) to read images. Images are downloaded over HTTPS (20 MB and 30 s maximum) and cached in <game folder>/mediaframes/cache/ (256 MB, 7 days). yt-dlp is checked for updates every 24 hours by default.

The server downloads and decodes nothing. It only validates URLs and synchronizes the logical state (what is playing, and where). MediaFrames has no telemetry.

Configuration

mediaframes-server.toml (config folder of the server) includes, among others:

  • maximum dimensions, surface offset, distances, volume, maximum playlist length;
  • allowYouTube (blocks only YouTube), allowImgur (default true), local files (leave disabled in this alpha);
  • an allowlist of domains for other image hosts;
  • who may edit a frame: ANY_PLAYER, OWNER_ONLY, CREATIVE_ONLY or OPERATOR_ONLY.

mediaframes-client.toml includes: maximum quality, 30/60 FPS limit, hardwareDecoding (default true), advancedScreen, master media volume, shader mode, debug, yt-dlp check interval.

Commands

Root: /mediaframes

help, edit <x> <y> <z>, play|pause|stop <x> <y> <z>, seek <x> <y> <z> <seconds|mm:ss|hh:mm:ss>, seturl <x> <y> <z> <url>, previous|next <x> <y> <z>, audit <x> <y> <z>, reload, debug <x> <y> <z>.

Known limits and untested

  • YouTube may sometimes answer "Sign in to confirm you're not a bot" after many attempts from the same IP; space out your attempts.
  • Local files are not wired to the player yet; keep allowLocalFiles off.
  • auto-next for playlists is stored and synchronized, but the automatic trigger at the end of a media is not finished.
  • Shader modes are stored, but all use the same render path in this alpha.
  • Images: DNS rebinding is not covered; a real Imgur album has not been tested; animated WebP shows its first frame.
  • Validated on Windows x64 only (singleplayer, dedicated server, and a production server with two simultaneous clients, via AutoModpack 4.0.6). Not tested: Sodium, Iris/shaders, ModernFix, FerriteCore, ImmediatelyFast, Entity Culling, JEI, Valkyrien Skies, AutoModpack 5.x, WaterMedia/WaterFrames running alongside, Linux/macOS, read-only screen for players without edit rights.
  • In a small window (854x480) some labels touch the controls in the Advanced tab.

AI disclosure

MediaFrames was developed with extensive help from AI coding assistants (Claude and Codex), under the direction of fushoo, who defined the features, tested it on a real server and maintains it. The images on this page are real in-game screenshots; no AI-generated images are used.

License (summary)

Copyright (c) 2026 fushoo. All rights reserved, with these usage rights: you may use the official files to play (clients and servers, including public and monetized servers); include the mod in modpacks that download the official, unmodified files from their official project pages (for example a CurseForge modpack) or deliver them unmodified to your own server's players (for example with AutoModpack); and show it in videos, streams and reviews. You may not re-upload or mirror the files, modify or publish derivative works, or sell it. The full text is the LICENSE file.

Credits and third-party tools

Downloaded at runtime, not part of the mod's license, each under its own license:

Screenshots show a Blender Foundation film:

  • Big Buck Bunny © Blender Foundation | peach.blender.org, CC BY 3.0.

MediaFrames (français)

Cadres média synchronisés pour NeoForge 1.21.1 : lisez des vidéos YouTube et affichez des images sur des blocs du monde, synchronisés pour tous les joueurs.

Version alpha. Des défauts sont à prévoir. Voir « Limites connues et non testé » ci-dessous.

MediaFrames ajoute un seul bloc, le Cadre média. Posez-le sur n'importe quelle face (mur, sol, plafond, même sous l'eau), faites un clic droit, collez un lien YouTube ou d'image : la vidéo se lit sur le cadre pour tous les joueurs proches, avec un son positionnel et une pause, lecture et avance synchronisées.

C'est une implémentation autonome et originale. Le mod n'est pas affilié à WaterFrames ni à WaterMedia : ils ont inspiré l'idée générale de cadres média, mais aucun code n'en a été repris, et MediaFrames n'en dépend pas (ni de VLC).

Fonctionnalités

  • Un seul bloc : le Cadre média. Il se fixe à la face cliquée (y compris sol, plafond et sous l'eau) et se casse si son support disparaît.
  • Lecture YouTube (vidéo et son) avec qualité automatique (AUTO, 360p, 480p, 720p, 1080p, plafond réglable par client).
  • Images par URL : Imgur accepté par défaut, autres hébergeurs via une allowlist serveur. Une image fixe reste affichée ; les GIF et gifv/mp4 bouclent.
  • État géré par le serveur : lecture, pause, stop, avance et chargement synchronisés entre tous les clients, y compris pour les joueurs qui arrivent en retard.
  • Plusieurs vidéos simultanées : la qualité AUTO s'adapte à la taille du cadre et au nombre de vidéos en cours ; H.264 préféré, décodage matériel FFmpeg tenté (repli logiciel automatique).
  • Écran en jeu avec un mode simple (lien, Charger, Lecture/Pause, Stop, barre de temps, Muet, Volume, Largeur/Hauteur, garder les proportions, adapter au média) et un mode avancé (image, taille et décalages, son, lecture, avancé). Les changements s'appliquent immédiatement.
  • Tailles en blocs (1 x 0,5625 par défaut, maximum serveur 32 x 32 par défaut), décalages, rotation et miroirs.
  • Son positionnel qui suit les volumes Principal et Environnement de Minecraft et se met en pause avec le jeu.
  • Commandes /mediaframes, utilisables depuis la console.
  • Ni Mixin, ni CoreMod, ni ASM. Le serveur dédié ne charge jamais de classe client.

Installation

  1. Installez NeoForge pour Minecraft 1.21.1 (21.1.x ; 21.1.252 testé) et lancez le jeu avec Java 21.
  2. Placez le JAR MediaFrames dans mods/ sur le serveur et sur chaque client. Le mod est requis des deux côtés.
  3. Facultatif : avec MediaFrames: Create Compat (projet séparé), les vidéos peuvent jouer sur des contraptions Create comme les trains. Cet addon doit aussi être installé sur le serveur et sur chaque client.

MediaFrames peut être distribué aux joueurs par AutoModpack (validé avec AutoModpack 4.0.6 ; AutoModpack 5.x non testé). Il n'en a pas besoin.

Prérequis

  • Minecraft 1.21.1, NeoForge 21.1.x, Java 21.
  • Une connexion internet côté client au premier lancement (voir ci-dessous).
  • Validé sous Windows 11 x64. Le support Linux et macOS est implémenté et testé unitairement, mais n'a pas été exécuté sur ces systèmes.

Premier lancement et connexions réseau (à lire)

MediaFrames n'embarque aucun outil média. Au premier lancement, chaque client télécharge trois outils depuis leurs sources officielles dans <dossier du jeu>/mediaframes/runtime/ :

Outil Source Rôle
yt-dlp releases GitHub officielles (yt-dlp/yt-dlp) résout les flux YouTube
Deno releases GitHub officielles (denoland/deno) environnement JavaScript utilisé par yt-dlp
FFmpeg build statique du wheel imageio-ffmpeg sur PyPI (Windows ARM64 : builds BtbN sur GitHub) décode vidéo et audio

Les téléchargements sont en HTTPS uniquement, limités à des hôtes approuvés, bornés en taille et en durée, et vérifiés par SHA-256 avant usage. Ils se font en arrière-plan ; le jeu reste utilisable et l'écran affiche la progression avec un bouton Réessayer si le réseau est coupé. Aucun Python, Node, VLC ni réglage du PATH n'est nécessaire.

Ensuite, le client se connecte à YouTube (pour lire les vidéos) et à Imgur (ou tout hôte autorisé) pour les images. Les images sont téléchargées en HTTPS (20 Mo et 30 s au plus) et mises en cache dans <dossier du jeu>/mediaframes/cache/ (256 Mo, 7 jours). yt-dlp est vérifié toutes les 24 h par défaut.

Le serveur ne télécharge ni ne décode rien. Il valide les URL et synchronise seulement l'état logique (ce qui joue, et à quel instant). MediaFrames n'a aucune télémétrie.

Configuration

mediaframes-server.toml (dossier de configuration du serveur) contient notamment :

  • dimensions maximales, décalage de surface, distances, volume, longueur de playlist maximale ;
  • allowYouTube (ne bloque que YouTube), allowImgur (défaut true), fichiers locaux (à laisser désactivés dans cette alpha) ;
  • une allowlist de domaines pour les autres hébergeurs d'images ;
  • qui peut éditer un cadre : ANY_PLAYER, OWNER_ONLY, CREATIVE_ONLY ou OPERATOR_ONLY.

mediaframes-client.toml contient : qualité maximale, limite 30/60 FPS, hardwareDecoding (défaut true), advancedScreen, volume média maître, mode shaders, debug, intervalle de vérification de yt-dlp.

Commandes

Racine : /mediaframes

help, edit <x> <y> <z>, play|pause|stop <x> <y> <z>, seek <x> <y> <z> <secondes|mm:ss|hh:mm:ss>, seturl <x> <y> <z> <url>, previous|next <x> <y> <z>, audit <x> <y> <z>, reload, debug <x> <y> <z>.

Limites connues et non testé

  • YouTube peut répondre « Sign in to confirm you're not a bot » après de nombreux essais depuis la même IP : espacez vos essais.
  • Les fichiers locaux ne sont pas encore branchés au lecteur ; laissez allowLocalFiles désactivé.
  • L'auto-next des playlists est stocké et synchronisé, mais le déclenchement automatique en fin de média n'est pas terminé.
  • Les modes shaders sont stockés, mais utilisent tous le même chemin de rendu dans cette alpha.
  • Images : DNS rebinding non couvert ; un vrai album Imgur n'a pas été testé ; un WebP animé affiche sa première image.
  • Validé sous Windows x64 uniquement (solo, serveur dédié, et serveur de production avec deux clients simultanés via AutoModpack 4.0.6). Non testé : Sodium, Iris/shaders, ModernFix, FerriteCore, ImmediatelyFast, Entity Culling, JEI, Valkyrien Skies, AutoModpack 5.x, cohabitation avec WaterMedia/WaterFrames, Linux/macOS, écran en lecture seule pour un joueur sans droit d'édition.
  • Dans une petite fenêtre (854x480), certains libellés touchent les contrôles dans l'onglet Avancé.

Déclaration d'usage de l'IA

MediaFrames was developed with extensive help from AI coding assistants (Claude and Codex), under the direction of fushoo, who defined the features, tested it on a real server and maintains it.

Traduction : MediaFrames a été développé avec l'aide importante d'assistants de programmation IA (Claude et Codex), sous la direction de fushoo, qui a défini les fonctionnalités, l'a testé sur un vrai serveur et le maintient. Les images de cette page sont de vraies captures d'écran en jeu ; aucune image générée par IA n'est utilisée.

Licence (résumé)

Copyright (c) 2026 fushoo. Tous droits réservés, avec ces droits d'usage : utiliser les fichiers officiels pour jouer (clients et serveurs, y compris publics et monétisés) ; l'inclure dans des modpacks qui téléchargent les fichiers officiels non modifiés depuis leurs pages de projet officielles (par exemple un modpack CurseForge) ou les livrent non modifiés aux joueurs de votre propre serveur (par exemple avec AutoModpack) ; le montrer dans des vidéos, streams et critiques. Il est interdit de réuploader ou de miroiter les fichiers, de les modifier ou de publier des dérivés, ou de les vendre. Le texte complet est le fichier LICENSE.

Crédits et outils tiers

Téléchargés à l'exécution, hors de la licence du mod, chacun sous sa propre licence :

Les captures montrent un film de la Blender Foundation :

  • Big Buck Bunny © Blender Foundation | peach.blender.org, CC BY 3.0.

MediaFrames Team

profile avatar
Owner
  • 4
    Projects
  • 186
    Downloads

More from fushoo