0.8.1
Compatibility
Changes
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 withloop,audio, andseek(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
audiowith a target selector and trailing attributes.
Renaming
- Project, package, command name, author, and all identifiers changed from the original private fork to CushionScreens / atrixx.
Projects on Modrinth are automatically available through a Maven repository for use with JVM build tools such as Gradle. To learn more about the Modrinth Maven API, click here.
Note: When available, you should use the creator's maven repo instead as it will have transitive dependency information that the Modrinth Maven API does not. You may also end up with duplicate dependencies if you use a mix of Modrinth and non-Modrinth Maven repositories for your dependencies, because the group identifier will be different when served through the Modrinth Maven API.
Maven coordinates:
Version ID:
build.gradle:
repositories {
exclusiveContent {
forRepository {
maven {
name = "Modrinth"
url = "https://api.modrinth.com/maven"
}
}
// forRepositories(fg.repository) // Uncomment when using ForgeGradle
filter {
includeGroup "maven.modrinth"
}
}
}
// Standard Gradle dependency
dependencies {
implementation "maven.modrinth:GOXWHWnl:sjUrt6hO"
}
// Legacy Loom dependency
dependencies {
modImplementation "maven.modrinth:GOXWHWnl:sjUrt6hO"
}

