diff --git a/CHANGELOG.md b/CHANGELOG.md new file mode 100644 index 0000000..b1ed177 --- /dev/null +++ b/CHANGELOG.md @@ -0,0 +1,136 @@ +# PixelReel Custom Fork Changelog + +## v1.1.0 + +Screenwriter media-server load controls. + +- Screenwriter now starts **OFF by default** in fresh worlds. Existing worlds keep their saved ON/OFF state. +- Added `/screenwriter maxstreams <0-30>` to cap the number of **simultaneous scheduled auditorium shows**. +- Default simultaneous-show limit is **4**. A value of `0` means unlimited. +- Daily schedule generation now respects that cap for the complete duration of every movie, not just the start time. +- Scheduling is built chronologically across all linked auditoriums so higher auditorium numbers still receive shows as capacity becomes available. +- Changing the limit preserves the already-generated day; `/screenwriter regenerate` applies the new setting to today's schedule. +- `/screenwriter status` now reports the configured simultaneous-show limit. + +## v1.0.0 + +First formal release of the theater-focused PixelReel Custom Fork. + +### Custom cinema screens + +- Replaced the normal screen lineup with two user-facing theater screens: + - **Custom Cinema Screen** — flat. + - **Custom Curved Cinema Screen** — dynamically curved using the original PixelReel curved-screen profile. +- Both screens open a placement menu for custom width, height, audio depth, and side range. +- Supported custom dimensions: **1–64 blocks wide** and **1–36 blocks tall**. +- Default custom dimensions: **27 × 11**. +- Screen placement validates that all required panel cells are available before consuming the item. +- Custom screen geometry, size, and audio-zone settings persist in the block entity and sync to clients. +- Flat screens render/collide against the back face of their occupied cells so they can sit flush against a wall. +- Breaking any generated screen panel removes the complete bound display. Survival drops the controller item normally; creative does not duplicate it. +- Legacy preset display registrations remain internally for world compatibility, but the old preset TV/monitor items are no longer part of the normal creative/crafting lineup. + +### Auditorium audio + +- Custom screens use a hard auditorium-shaped audio zone rather than circular distance attenuation. +- Default audio zone: **40 blocks forward**, **2 blocks beyond each screen edge**, and **1 block behind the screen**. +- Audio remains at the screen's configured volume anywhere inside the zone and becomes silent outside it. +- The client chooses at most one audible screen when zones overlap. +- Replaced shared LibVLC native volume output with per-screen decoded PCM callbacks and independent JavaSound output. +- Each physical screen has its own playback/audio session, preventing simultaneous auditorium tracks from mixing. + +### Remote Control + +- Added a Remote Control that can target screens from a longer distance and open normal screen controls. +- Added **Reset Connection** to rebuild only the local client's media/audio session for the selected screen and reconnect at the current synchronized playback position. +- The remote is also used to link custom cinema screens to Screenwriter. +- Recipe: + +```text +II +RB +II +``` + +- `I` = Iron Ingot +- `R` = Redstone +- `B` = any Button + +### Screenwriter theater automation + +- Added the **Screenwriter Console** for centralized real-world theater scheduling. +- Supports up to **30 linked custom cinema screens**. +- Auditorium numbers are user-selected and unique from **1–30**; link order does not determine auditorium number. +- Re-linking can change an auditorium number without deleting that auditorium's current generated schedule. +- Right-click the console to arm linking; sneak + right-click a custom screen with the Remote Control to open the auditorium link/update menu. +- Shift + right-click the console toggles Screenwriter on/off. +- Screenwriter can also be enabled/disabled through commands. +- Generates a new schedule for the current real-world day from configured **Jellyfin or Plex** movie libraries. +- Provider mode can be `AUTO`, `JELLYFIN`, or `PLEX`; AUTO prefers Jellyfin when available and otherwise uses Plex. +- Only movies with runtime metadata are scheduled. +- Uses runtime metadata to calculate exact end times. +- Supports configurable theater opening/closing times, turnaround gaps, and first-show staggering. +- Default settings: + - open: **11:00 AM** + - close: **11:30 PM** + - turnaround: **20 minutes** + - first-show stagger window: **30 minutes** + - later-show rounding: **10 minutes** +- The first show in each auditorium is distributed through the stagger window rather than starting every auditorium at opening time. +- A movie used in the previous **3 calendar days** is excluded from the current day's random schedule. +- A movie is used at most once in the same generated day. +- Schedules are saved to `pixelreel-screenwriter.json` in the world folder and are not rerolled by server restarts. +- If the server starts during an active scheduled movie, Screenwriter resumes that movie at the elapsed real-world position. +- Screenwriter powers linked displays off between shows. +- Turning Screenwriter off stops its controlled playback and prevents automatic generation until re-enabled. + +### Screenwriter commands + +```text +/screenwriter +/screenwriter status +/screenwriter on +/screenwriter off +/screenwriter schedule +/screenwriter book +/screenwriter generate +/screenwriter regenerate +/screenwriter source +/screenwriter open