Checking player status…
View all
Browse WaterMedia articles
reference / WaterMedia

WaterMedia API and integration reference

For mod developers: find playback APIs, supported source handlers and integration requirements reported for version 3.0.0.23.

WaterMedia 3.0.0.23Java 1.21.1NeoForge
Software authors
SrRapero720 / WaterMedia Team

Build and initialization

This is a PDF-derived reference to watermedia-3.0.0.23.jar. The report inventoried 1,209 archive entries, 1,066 compiled classes and 490 own-namespace classes outside org/watermedia/libs. Counts include inner/generated helpers and do not count gameplay features. Selected behavioral paths were disassembled; there was no branch-by-branch proof of every class.

Fabric onInitialize and Forge/NeoForge constructors call WaterMedia.start with an environment name, paths and side determination. The common start constructs one environment instance and coordinates modules; the constructor rejects an already-created instance.

Static module orderReported responsibility
WaterMediaBinariesCompanion class; binary paths and client FFmpeg preparation
WaterMediaConfigConfiguration registration via WaterConfig registerBlocking
CodecsAPIMedia type inspection and image codecs; startup refuses the server-side codec path
PlatformAPIClient adapter registration, fetch and search
MediaAPIPlayer selection and engine factories, including server timeline
NetworkAPIMIME support and optional media file server

The main module list directly constructs the companion class. Treat this distribution as a pair even though the main Fabric dependency list omits the companion.

Source locators and adapters

MediaAPI.mrl accepts a String or URI. MRL resolution is separate from playback and can represent multiple sources with per-source metadata. Its states are FETCHING, LOADED, EXPIRED, ERROR, BLOCKED, FORGOTTEN. Integrations must handle pending/unavailable sources and null player creation.

PlatformAPI declares search, searchHistory, fetch, register, unregister. Search uses a cache and can supersede a prior search task. Neither method presence nor a resolver proves a Minecraft search screen exists.

PlatformAPI.load constructs these 21 adapter instances in the reported client startup list:

NumberAdapter
1WaterPlatform
2Imgur
3Kick
4Streamable
5Medal
6PornHub
7Lightshot
8Twitch
9Twitter
10Bluesky
11BiliBili
12Drive
13Dropbox
14MediaFire
15Sendvid
16Odysee
17VidLii
18TikTok
19DTube
20YtDlp
21YouTube

These are registered paths, not a live support matrix for 21 services. platforms.allowMatureContent defaults to false. No third-party media was fetched or offered as sample content, and no current service-access claim follows from this catalog.

Player families and controls

FamilyRole and limit
MediaPlayerStatus, time, duration, start/pause/stop, seek, volume, speed, repeat and release contract
FFMediaPlayerNative FFmpeg audio/video pipeline with selected output engines
TxMediaPlayerTexture/image playback, including image-frame support; not every animated format certified
ServerMediaPlayerTimeline authority/follower without a local video/audio decoder

createPlayer selects image playback for images and can select FFmpeg for other media when loaded. It can return null for unavailable sources or backends. Player statuses are WAITING, LOADING, BUFFERING, PLAYING, PAUSED, STOPPED, ENDED, ERROR; consumers choose UI messages.

Quality declarations are UNKNOWN, Q144P, LOWEST, LOWER, LOW, MEDIUM, HIGH, HIGHER, HIGHEST, Q8K. They express selection choices rather than guaranteed dimensions or available source renditions. The constructor preference is HIGHER.

In 3.0.0.23, start() and startPaused() return boolean instead of void. Rebuild requirements are dependent-binary concerns even within version 3. A successful call still requires handling asynchronous status and source capability; live media cannot be treated as a finite seekable recording.

Codecs, graphics and sound

SubsystemReported declarationsBoundary
Raster/animated readersPNG, JPEG/JPG, GIF, WEBP, NETPBM/PNM/PBM/PGM/PPM/PAMReader presence is not decoded-corpus verification
VectorSVGReader, parser/rasterizerNo promise for all SVG features/external references
Compressed texturesBC availability checks/native initialization; DDS/BC structures/readersMissing native BC bindings explicitly handled
OpenGLMediaAPI.glEngine(thread, executor)Respect render thread and environment
VulkanMediaAPI.vkEngine(VKContext)Factory present, Minecraft operation untested
Other graphicsAWT, JavaFX, headless factories; SWEngineAPI/desktop paths, not automatic Minecraft controls
AudioOpenAL ALEngine; Java Sound JSEngine factoriesRequires actual device/context readiness

Native availability, reader selection, media detection, successful decode and hardware acceleration remain separate claims. No FPS, memory, latency, throughput or GPU measurement was made.

Synchronization and file networking

Synchronization roles are SOLO, AUTHORITY, FOLLOWER. A Bridge transports session bytes. Packet families Sync, Config, Watch, Unwatch, Report, Control and capability flags LOCKSTEP, CONTROLS, VOLUME form an integration vocabulary.

The consumer still supplies Minecraft packet routing, display/session identity, permissions and timeline persistence. A ServerMediaPlayer does not decode video on a dedicated server. Afterfall supplies its own target-time behavior; its television and radio have different drift/seek conditions.

The optional media file server defaults to disabled. Its gate is forceEnableServer OR (not clientSide AND enableServer) and its default port is 25572. Upload is HTTP POST with configured token/filename headers. These facilities do not supply Minecraft station ownership or player progression.

Library caches/binary paths and the companion’s ffmpeg, yt-dlp, botguard directories are program preparation/storage, not a world save format. Placed displays, station links, permissions and progression belong to the consumer.

Separate desktop application and negative content audit

The manifest’s Main-Class is org.watermedia.bootstrap.AppBootstrap. WaterMediaApp, home/player/settings screens, media selection/opening screens, desktop popup players and UI classes establish a packaged standalone application path. They are not Minecraft menus, HUD controls or keybind registrations. The application was not launched; its full interaction paths were not audited.

The report found no data/ entries, registered Minecraft item/block acquisition catalog, recipes, mobs, bosses, combat progression, worldgen, biomes/dimensions, quests, story/economy or Minecraft command tree in the inventoried archive and inspected loader paths. This does not rule out third-party reflective extensions. pack.png, icon.png, banner.png and an eight-frame duck sequence are presentation assets, not gameplay content; none is redistributed here.

Verification still required

The report’s proposed tests cover paired startup, consumer fallback, direct images/animation, finite audio/video, live sources, online helpers, two clients/late join, device/network failures, repeated open/close and file-server gating. They are future tests. Neither this packet nor the report establishes a passing runtime, multiplayer or performance result. The named machine-readable source companions were not attached; this wiki preserves only supplied table values and attributed report findings.

Sources & verification

Evidence: pdf-derived. Feature status: mixed. Article coverage: ready.

Local documentation context: Minecraft 1.21.1 / NeoForge; no launch verification

WaterMedia-3.0.0.23-Extensive-Breakdown.pdf

PDF pages 6-10, 15-18 · Architecture; adapters; players; codecs; sessions; audit; provenance · WaterMedia:L1-L6

Attributed static report findings only. Matching JARs and consumer source not independently inspected for this wiki. No game, native/helper, source-fetch, playback, desktop-app, multiplayer or performance test performed.

The wiki has not independently playtested report-derived instructions. Your server or modpack settings may change them.

Editor setupEditing guide →