Some checks failed
build / build (push) Has been cancelled
Crash fix (4K delete EXCEPTION_ACCESS_VIOLATION): - JavaCvBackend.stopWorker() no longer calls grabber.close() from caller thread. Only flips running=false, stops/flushes audio line, then interrupt+join(2s). The worker's own finally still closes grabber from the decoder thread, so the av_frame native plane is never freed mid-memCopy. - Validate memCopy length against ByteBuffer.capacity() AND width*height*4 before copying, and re-check running/closed inside the frameLock. Config: - max_preload_mb (default 1024) — replaces the hard-coded 512 MB cap in VideoCache. Pushed to clients at join via CachePolicyPayload. - render_distance_blocks (default 128) — replaces the hard-coded 128 in VideoAnchorRenderer.getViewDistance(). Mirrored client-side via ClientPolicy. Command rename: /videopreload → /videoCache add|list|remove - Persistent named index in cache_entries (server config). - /videoCache list prints clickable URLs (ClickEvent.OpenUrl). - /videoCache remove broadcasts DeleteCachePayload so each client purges its disk cache file. Name resolution: - /videoPlace ... <urlOrName> and the GUI save path both accept a /videoCache name in place of an http(s) URL; VideoPlayerConfig.resolveUrlOrName() does the lookup server-side before persisting to the anchor BE. Cleanup: - Drop the lowercase Brigadier aliases (videoplace, videostick, videodelete, videomute) — keep camelCase only.
457 B
457 B