COWMODSКаталог модов

Cushion Screens!

Turn a wall of cushions into a screen: show images, GIFs, and videos with sound. Up to 176 colors using light-emitting blocks underneath, screens persist across restarts, and images can be baked in permanently.

Автор: Atrixx1640обновлён 27 июл. 2026 г.
ДекорТехнологииУтилиты

Описание

CushionScreens

Turn a wall of cushions into a working screen. Show static images, animated GIFs, and videos - with synced audio - directly inside your Minecraft world. Load content straight from a URL, control playback like a media player (pause, resume, seek, loop, volume), and pick how many colors the screen can show.

Features

  • Images, GIFs, and video - any file FFmpeg/Java's image libraries can read.
  • Audio - video playback can stream synced audio to players' game clients (no resource pack needed), with per-command volume control.
  • Load directly from a URL - /cushionscreens url <link> downloads and displays an image or GIF straight from the web.
  • Up to 176 colors - instead of just the 16 cushion dye colors, the mod can place a different light-emitting block underneath each cushion (copper bulbs in various oxidation stages, a lit furnace, a respawn anchor, crying obsidian, a sculk catalyst, a magma block...) to get extra brightness levels per color. Every screen glows at night by default, even without this.
  • Playback controls - pause/resume freeze and continue exactly where you left off (no reloading), loop repeats video/GIF (and audio) forever instead of stopping on a blank screen, seek jumps partway into a video.
  • Three scaling modes - stretch to fill exactly, crop to fill without distortion, or fit with letterboxed black bars.
  • Survives restarts - a built screen is remembered across server restarts and rejoining; no need to rebuild it.
  • Bake - turn a specific image into a permanent, un-managed picture, then build a new screen somewhere else.
  • Command hook - other commands/datapacks can check whether something is currently playing via a scoreboard value, e.g. for /execute if score.

Requirements

Minecraft26.3-snapshot-3
Fabric Loader>=0.19.3
Fabric APIRequired
Java25+
EnvironmentClient AND server both required (audio playback and a render-distance fix run on the client)
FFmpegRequired only for /video and its audio - must be installed and available on PATH. Images, GIFs, and URLs don't need it.

Getting started

/cushionscreens build <width> <height>

Builds a screen directly in front of you. Put your images/GIFs/videos in the cushionscreens/ folder inside your game/server directory (created automatically on first use), then:

/cushionscreens image cat.png
/cushionscreens gif dance.gif
/cushionscreens video 20 trailer.mp4
/cushionscreens url https://i.imgur.com/abc123.png

Full command list

CommandDescription
/cushionscreens build <width> <height>Create a screen in front of you
/cushionscreens image <file> [{attrs}]Show an image
/cushionscreens gif <file> [{attrs}]Play a GIF
/cushionscreens url <link> [{attrs}]Show an image or GIF from a direct http(s) link
/cushionscreens video <fps> <file> [{attrs}]Play a video (needs FFmpeg)
/cushionscreens video <fps> <file> audio [targets] [{attrs}]Play with sound, optionally only for @a/@p/a player
/cushionscreens play <pattern> <speed>Play a generated animation: plasma, rainbow, bars, or noise
/cushionscreens pauseFreeze the current frame/pattern (and audio)
/cushionscreens resumeContinue exactly where it was paused
/cushionscreens stopStop whatever is currently playing
/cushionscreens clearRemove the screen entirely
/cushionscreens range <chunks>Set how far away the screen renders from, then rebuild to apply
/cushionscreens maxframes <number>Max video frames to decode (default 2000)
/cushionscreens helpIn-game command reference

Attributes

Attributes go after the file/URL (and after audio/targets for video), written as an NBT compound - the same style Minecraft uses for item components:

/cushionscreens video 20 clip.mp4 audio @a {colors:176,loop:true,volume:75,seek:30,scaling:fit}
KeyValuesApplies toDescription
colors16 (default), 17, 64, 80, 176image, gif, video, urlHow many color combinations to use - see below
baketrueimage onlyShow it, then stop managing it as a screen (see below)
looptruegif, video, url (gif)Repeat forever (audio too) instead of stopping on a blank screen
volume0-100video (with audio)Playback volume, independent of Minecraft's own sound sliders
seeksecondsvideoStart playback (and audio) partway into the file
scalingstretch (default), crop, fitimage, gif, video, urlHow to fit content that doesn't match the screen's aspect ratio

Colors

Every screen always sits on a lit waxed copper bulb by default (16 colors, glows at night). Higher values trade performance for a wider color range - changing the block under a cushion is much more expensive than just changing its color, so expect more lag at higher color counts, especially on /video and /gif with large screens. Static /image is far less affected since it's a one-time change.

  • 16 - default, just the cushion colors.
  • 17 - the 16 default colors plus one true black (a black cushion on a non-glowing block, since black on a lit block isn't fully black).
  • 64 - adds the 4 copper bulb oxidation stages under each cushion.
  • 80 - the 64 above, plus a non-glowing variant for each color.
  • 176 - all 11 supported light-level blocks under each cushion.

Scaling

  • stretch - fills the screen exactly, may distort the image if its aspect ratio doesn't match the screen.
  • crop - scales to fill the screen completely without distortion, cropping whichever edge overflows.
  • fit - scales to fit entirely within the screen without distortion or cropping; leftover space is filled with black bars (letterbox/pillarbox).

Bake

/cushionscreens image cat.png {bake:true}

Shows the image like normal, then the mod "forgets" that spot is a screen - the cushions and blocks stay exactly as they are forever, unaffected by /stop, /clear, or future /image//video//gif calls, and aren't tracked for restart persistence. Use this to permanently commit a picture and free up the screen for something else.

Checking playback state from other commands/datapacks

The mod keeps a scoreboard value in sync with whether anything is currently playing:

/execute if score CushionScreens cc_playing matches 1 run say something is playing!

Known limitations

  • Only one screen is tracked at a time.
  • The color values used for colors:64/80/176/17 are based on real in-game measurements, but may still be refined in future updates.
  • Looped audio runs independently from the video loop and isn't explicitly resynced, so very long loops may drift slightly out of sync over time.
  • After a server restart, restoring a saved screen can take a little while if the area isn't already loaded (up to ~60 seconds before it gives up).
  • /cushionscreens url supports images and GIFs only, not video/live streams.

License

MIT

Галерея

Linus

Последние версии

Все версии →
release

Cushion Screens!

0.8.1
27 июл. 2026 г.138Minecraft: 26.3-snapshot-3fabric
Скачать
Что нового
# Changelog ## 0.8.1 **New** - `{safemode:true}` attribute for `/cushionscreens video` - loads and plays very long videos in 5-minute chunks instead of decoding the whole file upfront, so they start quickly and don't use huge amounts of memory. Works together with `loop`, `audio`, and `seek` (as the starting point). There's a short pause between chunks while the next one loads, since chunks aren't pre-fetched ahead of time yet. ## 0.8.0 First public release under the CushionScreens name. This version brought a large number of changes on top of the original private fork - grouped by topic rather than by internal build number, since 0.1.0–0.7.0 were never distributed anywhere. **New commands** - `/cushionscreens url <link> [{attrs}]` - download and show an image or GIF directly from an http(s) link (detected by file signature, not URL extension). - `/cushionscreens pause` / `/cushionscreens resume` - freeze and continue the current frame/pattern (and audio) without reloading anything. - `/cushionscreens maxframes <number>` - configurable cap on how many video frames get decoded (global setting, default 2000). **New `{attributes}` syntax** - Options that used to be separate literal flags (`colors=64`, `bake`) are now a single trailing NBT compound, e.g. `{colors:176,loop:true,volume:75,seek:30,scaling:fit}` - same style Minecraft uses for item components. - `colors`: `16` (default), `17` (16 + one true black), `64` (copper bulb oxidation stages), `80` (64 + a non-glowing variant), `176` (all supported light levels). - `loop`: video/GIF repeats forever (audio included) instead of stopping on a blank screen after playing once (new default: stop after one play-through). - `volume`: 0-100, applied via the client's own audio gain control, independent of Minecraft's sound sliders. - `seek`: start video (and its audio) partway in, using FFmpeg's fast input-side seeking. - `scaling`: `stretch` (default, unchanged), `crop` (fill without distortion), `fit` (letterbox/pillarbox with black bars). **Extended color system** - Every screen now sits on a lit waxed copper bulb by default, so it glows at night even without using an extended color count. - Colors 64/80/176 place a different light-emitting block under each cushion to unlock extra brightness levels per color; values are based on real in-game color measurements rather than a theoretical brightness curve. **Persistence & lifecycle** - A built screen is now remembered across server restarts and rejoining (previously had to be rebuilt every time). - `bake` (image only): shows the image, then stops tracking those cushions as "the screen" - they become a permanent fixture, untouched by future commands. **Audio** - Video can now stream synced audio to players over the network (optionally to specific players/selectors only). - Audio now stops automatically on disconnect/return to the title screen, and pauses/resumes together with the game's own pause menu (singleplayer only, as expected). **Fixes** - Fixed videos silently restarting/looping after roughly 2 minutes regardless of actual length (old hardcoded frame cap). - Fixed a crash ("Invalid player data") that occurred specifically in creative mode / with cheats enabled, caused by an unregistered custom command argument type. - Fixed a command parser error when combining `audio` with a target selector and trailing attributes. **Renaming** - Project, package, command name, author, and all identifiers changed from the original private fork to CushionScreens / atrixx.
release

Cushion Screens!

0.8.0
23 июл. 2026 г.13Minecraft: 26.3-snapshot-3fabric
Скачать
Что нового
# Changelog ## 0.8.0 First public release under the CushionScreens name. This version brought a large number of changes on top of the original private fork — grouped by topic rather than by internal build number, since 0.1.0–0.7.0 were never distributed anywhere. **New commands** - `/cushionscreens url <link> [{attrs}]` — download and show an image or GIF directly from an http(s) link (detected by file signature, not URL extension). - `/cushionscreens pause` / `/cushionscreens resume` — freeze and continue the current frame/pattern (and audio) without reloading anything. - `/cushionscreens maxframes <number>` — configurable cap on how many video frames get decoded (global setting, default 2000). **New `{attributes}` syntax** - Options that used to be separate literal flags (`colors=64`, `bake`) are now a single trailing NBT compound, e.g. `{colors:176,loop:true,volume:75,seek:30,scaling:fit}` — same style Minecraft uses for item components. - `colors`: `16` (default), `17` (16 + one true black), `64` (copper bulb oxidation stages), `80` (64 + a non-glowing variant), `176` (all supported light levels). - `loop`: video/GIF repeats forever (audio included) instead of stopping on a blank screen after playing once (new default: stop after one play-through). - `volume`: 0-100, applied via the client's own audio gain control, independent of Minecraft's sound sliders. - `seek`: start video (and its audio) partway in, using FFmpeg's fast input-side seeking. - `scaling`: `stretch` (default, unchanged), `crop` (fill without distortion), `fit` (letterbox/pillarbox with black bars). **Extended color system** - Every screen now sits on a lit waxed copper bulb by default, so it glows at night even without using an extended color count. - Colors 64/80/176 place a different light-emitting block under each cushion to unlock extra brightness levels per color; values are based on real in-game color measurements rather than a theoretical brightness curve. **Persistence & lifecycle** - A built screen is now remembered across server restarts and rejoining (previously had to be rebuilt every time). - `bake` (image only): shows the image, then stops tracking those cushions as "the screen" — they become a permanent fixture, untouched by future commands. **Audio** - Video can now stream synced audio to players over the network (optionally to specific players/selectors only). - Audio now stops automatically on disconnect/return to the title screen, and pauses/resumes together with the game's own pause menu (singleplayer only, as expected). **Fixes** - Fixed videos silently restarting/looping after roughly 2 minutes regardless of actual length (old hardcoded frame cap). - Fixed a crash ("Invalid player data") that occurred specifically in creative mode / with cheats enabled, caused by an unregistered custom command argument type. - Fixed a command parser error when combining `audio` with a target selector and trailing attributes. **Renaming** - Project, package, command name, author, and all identifiers changed from the original private fork to CushionScreens / atrixx.
beta

Cushion Screens! 0.7.0

0.7.0
22 июл. 2026 г.13Minecraft: 26.3-snapshot-3fabric
Скачать
Что нового
# CushionScreens Turn a wall of cushions into a working screen. Show static images, animated GIFs, and videos — with synced audio — directly inside your Minecraft world. > **Beta.** This is an early release. Commands, defaults, and the exact color values may still change between versions. Feedback and bug reports are very welcome. ## Features - **Images** — any PNG/JPG, dithered down to the cushion color palette. - **GIFs** — full animation support, frame timing preserved. - **Video** — plays any video file FFmpeg can decode, at a frame rate you choose. - **Audio** — video playback can stream synced audio to players' game clients (no resource pack needed). - **Up to 176 colors** — instead of just the 16 cushion dye colors, the mod can place a different light-emitting block *underneath* each cushion (copper bulbs in various oxidation stages, a lit furnace, a respawn anchor, crying obsidian, a sculk catalyst, a magma block...) to get extra brightness levels per color. All screens glow at night by default, even without this. - **Survives restarts** — a built screen is remembered across server restarts and rejoining; no need to rebuild it every time. - **Bake** — turn a specific image into a permanent, un-managed picture, then build a new screen somewhere else. - **Command hook** — other commands/datapacks can check whether something is currently playing via a scoreboard value, e.g. for `/execute if score`. ## Requirements | | | |---|---| | Minecraft | `26.3-snapshot-3` | | Fabric Loader | `>=0.19.3` | | Fabric API | Required | | Java | `25+` | | Environment | **Client AND server both required** (audio playback and a render-distance fix run on the client) | | FFmpeg | Required **only** for `/video` and audio extraction — must be installed and available on `PATH`. Images and GIFs don't need it. | ## Getting started ``` /cushionscreens build <width> <height> ``` Builds a screen directly in front of you. Put your images/GIFs/videos in the `cushionscreens/` folder inside your game/server directory (it's created automatically the first time you use a command), then: ``` /cushionscreens image cat.png /cushionscreens gif dance.gif /cushionscreens video 20 trailer.mp4 ``` ## Full command list | Command | Description | |---|---| | `/cushionscreens build <width> <height>` | Create a screen in front of you | | `/cushionscreens image <file> [colors=64\|176] [bake]` | Show an image | | `/cushionscreens gif <file> [colors=64\|176]` | Play a GIF | | `/cushionscreens video <fps> <file> [colors=64\|176]` | Play a video (needs FFmpeg) | | `/cushionscreens video <fps> <file> [colors=64\|176] audio [targets]` | Play a video with synced audio, optionally only for specific players/selectors (`@a`, `@p`, a player name...) | | `/cushionscreens play <pattern> <speed>` | Play a generated animation: `plasma`, `rainbow`, `bars`, or `noise` | | `/cushionscreens range <chunks>` | Set how far away the screen renders from, then rebuild to apply | | `/cushionscreens stop` | Stop whatever is currently playing | | `/cushionscreens clear` | Remove the screen entirely | | `/cushionscreens help` | In-game command reference | ## Colors By default every screen uses all 16 cushion colors, sitting on a lit copper bulb (so it glows at night). Two optional upgrades trade performance for a bigger color range: - `colors=64` — adds the 4 copper bulb oxidation stages under each cushion (64 total combinations). - `colors=176` — adds all 11 supported light-level blocks under each cushion (176 total combinations). Higher color counts look noticeably better for photos/video, but changing the block under a cushion is much more expensive than just changing its color — expect more lag on `/video` and `/gif` at `colors=176`, especially on large screens. Static `/image` is unaffected by this since it's a one-time change. ## Bake ``` /cushionscreens image cat.png bake ``` Shows the image like normal, then the mod "forgets" that spot is a screen — the cushions and blocks stay exactly as they are forever, unaffected by `/stop`, `/clear`, or future `/image`/`/video`/`/gif` calls, and aren't tracked for restart persistence. Use this to permanently commit a picture and free up the screen for something else. ## Playing sound with video ``` /cushionscreens video 24 trailer.mp4 audio /cushionscreens video 24 trailer.mp4 colors=176 audio @a ``` Audio is extracted from the video and streamed to players over the network — it plays through their own game client, so it works even on a dedicated server with players far from each other. Without a target selector, audio plays for every player on the server. ## Checking playback state from other commands/datapacks The mod keeps a scoreboard value in sync with whether anything is currently playing: ``` /execute if score CushionScreens cc_playing matches 1 run say something is playing! ``` ## Known limitations (beta) - Only one screen is tracked at a time. - The color values used for `colors=64`/`colors=176` are based on real in-game measurements, but may still be refined in future updates. - After a server restart, restoring a saved screen can take a little while if the area isn't already loaded (up to ~60 seconds before it gives up). ## License MIT