#✅ | 🙋 | Black background

1 messages · Page 1 of 1 (latest)

glossy lintel
#

The video for my custom menu, plays normally in the editor. However once i exit the editor, it turns black and refuse ti show up. How come ?

tall vaporBOT
# glossy lintel The video for my custom menu, plays normally in the editor. However once i exit ...

If the video shows in the editor but the background turns black outside, that usually means Minecraft can’t actually play MP4s at runtime. FancyMenu’s video support requires a working MCEF installation—without it the editor can still preview the video, but the real screen just renders nothing (black).
Make sure you have MCEF installed for your Minecraft version, and if you use 1.21.5+ grab the Keksuccino fork that still provides builds. Once MCEF is installed/reloaded, the video should play normally in-game.
More details (including which downloads to get) are on the Videos (MP4) page.

glossy lintel
#

I'm using 1.19

tall vaporBOT
# glossy lintel I'm using 1.19

On 1.19 the only reason a Video element shows in the editor but renders as black in-game is missing/incompatible MCEF. The editor can preview the file without MCEF, but actual playback (background or element) needs the Chromium backend.
So please double-check you have MCEF installed for 1.19 (the official build is still available there). If you already do, try reloading FancyMenu or reinstalling MCEF to make sure it initializes correctly. Once the backend is working, the video should show outside the editor as well.
If you need the downloads or extra info, the Videos (MP4) doc has the requirements and links.

glossy lintel
#

Sorry wrong version i'm actualy on 1.20.1

tall vaporBOT
# glossy lintel Sorry wrong version i'm actualy on 1.20.1

On 1.20.1 you still need a working MCEF build (the official project stopped at 1.20.0, so for 1.20.1 you must install the Keksuccino-maintained MCEF fork or the equivalent CurseForge build). Without that Chromium backend, FancyMenu can only preview the video in the editor—actual screens just stay black.
Make sure you’ve installed that fork’s jar for 1.20.1, restart Minecraft, and optionally reload FancyMenu (Ctrl+Alt+R) so the video element can initialize properly. Once MCEF is running, the video should appear in-game again.
For the full requirements and notes, see the Videos (MP4) doc.

glossy lintel
#

Ok i've installed the right mod and now it works. Altho now i find a new problem.
I've followed quick instructions by ChatGPT to bassicaly make it so the background randomly changes everytime the menu shows up.
I've made multiple different videos that i've regrouped into a single folder.
The path source of the video is now backgrounds/background${random.int(1,6)}.mp4. All videos are named the right way from 1 to 6, but it shows nothing but a black screen.

tall vaporBOT
# glossy lintel Ok i've installed the right mod and now it works. Altho now i find a new problem...

The path you’re using (backgrounds/background${random.int(1,6)}.mp4) isn’t a valid FancyMenu placeholder. To inject a random number into a resource path you need to use the random_number placeholder described in the Placeholders doc. For example:

backgrounds/background{"placeholder":"random_number","values":{"min":"1","max":"6"}}.mp4

That way every time FancyMenu evaluates the background source it will pick a random number between 1 and 6 and load the matching file. Make sure your files are named exactly background1.mp4 … background6.mp4 and are stored under /config/fancymenu/assets/backgrounds/.

If you still see black, double-check the placeholder syntax (it must be valid JSON with quotes) and that MCEF is still running—video backgrounds only work when the Chromium backend is available.

glossy lintel
#

Now the background is flashing between black and all of the other backgrounds in the folder. like they are all being selected at once.

tall vaporBOT
# glossy lintel Now the background is flashing between black and all of the other backgrounds in...

That happens because your random_number placeholder is evaluated continuously, so FancyMenu keeps switching the video every tick—which looks like everything flashing at once. To fix it, pick one random background per load and keep that value stable.

Two easy approaches:

  1. Use a layout group and enable FancyMenu's built-in Random Mode (documentation here: Randomize Layouts). Create one layout per video background and let FancyMenu choose one per screen load. This doesn’t need any placeholders at all.
  2. Store the random choice in a variable once when the menu opens and reuse it for the video path. You can run an action script on the screen (e.g., right-click the background → Manage Action Script → add a listener for “On Screen Opened”) that sets a variable like selectedVideo to background{"placeholder":"random_number",...}. Then point your video source to backgrounds/background{"placeholder":"getvariable","values":{"name":"selectedVideo"}}.mp4. Because the variable stays constant until you change it again, the video no longer flickers.

Either method stops the placeholder from re-evaluating every frame, so you get a single random video instead of a flashing mess.

glossy lintel
#

is it important to precise that i'm using a seperate video to act as a background. Is it necessary for me to achieve what i'm looking for, or is it easier to import all the backgrounds as actual backgrounds and not videos that plays in its sted.

tall vaporBOT
# glossy lintel is it important to precise that i'm using a seperate **video** to act as a backg...

Thanks for clarifying! If your goal is just to show a random animated background, using menu backgrounds (regular background type) is usually easier than a separate Video element. Backgrounds can be randomized per layout via the Random Mode feature, so you don’t need action scripts or variable tricks—the layout selector handles picking one of the preset backgrounds each time the screen loads. That’s documented here: Randomize Layouts.

However, if you need more control (overlays, playback controls, or syncing with other elements) then using a Video element is fine—you just need to make sure the video source itself only changes once per load (e.g., store a random choice in a variable or use a layout-per-video). For pure background swapping, a background entry per video (or FMA) plus Random Mode is often the cleanest path.

glossy lintel
#

I'm not looking to create one layout per background. Please Explain step by step how i can achieve my goal using this so called variable

tall vaporBOT
# glossy lintel I'm not looking to create one layout per background. Please Explain step by step...

Here’s how to pick one random video per menu load using a variable, so the path stays stable once the screen opens:

  1. Create the variable

    • Open the menu bar → Customization → Variables → Manage Variables.
    • Click Add Variable and name it (e.g., random_video_index). Leave its value empty.
  2. Set the variable when the menu opens

    • While not in the editor, go to Customization → Manage Listeners.
    • Add a new On Screen Opened listener.
    • In its action script add an If statement with the requirement Is Screen Identifier (set to the menu you target, e.g., title_screen).
    • Inside that If, add a Set Variable Value action with the value:
      random_video_index:{"placeholder":"random_number","values":{"min":"1","max":"6"}}
      
      This runs once when the screen opens and stores a single random number between 1 and 6 in the variable. (See the Placeholders doc for random_number.)
  3. Point your video element to the stored number

    • In the layout, select the Video element and edit its source.
    • Use the getvariable placeholder so the path becomes:
      backgrounds/background{"placeholder":"getvariable","values":{"name":"random_video_index"}}.mp4
      
      This keeps the chosen file locked in for the session because it reads the variable value that was set when the screen opened.
  4. Make sure the files exist

    • Name them background1.mp4 through background6.mp4 and place them in /config/fancymenu/assets/backgrounds/.

This way the random selection happens once per menu open (via the listener) and the video path no longer re-evaluates every tick.

glossy lintel
#

There is no Is Screen Identifier in the requirement list...

tall vaporBOT
# glossy lintel There is no Is Screen Identifier in the requirement list...

Ah, right—there’s no “Is Screen Identifier” requirement, so you can’t filter that way directly. Instead, keep using the On Screen Opened listener (it already gives you the $$screen_identifier variable) and wrap your actions in an IF that uses the Is Text requirement to compare $$screen_identifier to the identifier you want.

Quick outline:

  1. In the listener’s action script, add an IF statement.
  2. Add the Is Text requirement inside the IF.
  3. Set the requirement value to:
    {"placeholder":"text","values":{"text":"$$screen_identifier","compare_with":"title_screen","mode":"equals"}}
    
    (Replace title_screen with your actual screen identifier.)
  4. Inside the IF, set your variable with random_number as before.

By keeping the check inside the action script, it only runs the variable assignment when that specific screen opens. You can read more about the requirement in the Conditions (Requirements) page if you need extra help configuring it.

Let me know if you need help writing the exact JSON for the requirement or variable action!

glossy lintel
#

Redo your entire step by step process and take in account that i'm using the 1.20.1 version of the mod AND that a "Is Screen Identifier" requirement doesn't exist

tall vaporBOT
# glossy lintel Redo your entire step by step process and take in account that i'm using the 1.2...

Got it—here’s how to pick one random video per menu load on FancyMenu 1.20.1 without the nonexistent “Is Screen Identifier” requirement. We’ll use the On Screen Opened listener, the Is Text requirement, and a variable to store a single random index:


1. Create a variable for the chosen video

  1. Open the menu bar → Customization → Variables → Manage Variables.
  2. Click Add Variable, name it (e.g., random_video_index), and leave the value empty.

2. Set the variable when the target screen opens

  1. Open the menu bar → Customization → Manage Listeners (while you’re not in the layout editor).
  2. Create a new listener → choose On Screen Opened.
  3. Open its action script and add:
    • IF Statement
      • Add the Is Text requirement (since there is no Is Screen Identifier). Configure it like this:
        • Mode: equals
        • Text: {"placeholder":"$$screen_identifier"}
          (Click “Open in Editor” on the requirement value and paste this JSON.)
        • Compare With: your_screen_identifier (for Title screen it’s title_screen, replace with the correct identifier if it’s another screen)
    • Inside that IF, add Set Variable Value with:
      random_video_index:{"placeholder":"random_number","values":{"min":"1","max":"6"}}
      
      This runs once when the screen opens and stores a random 1–6 value.

3. Make the Video element use the stored number

  1. In your layout, select the Video element.
  2. For its source, use:
    backgrounds/background{"placeholder":"getvariable","values":{"name":"random_video_index"}}.mp4
    
  3. Ensure the files are named background1.mp4 through background6.mp4 and placed in /config/fancymenu/assets/backgrounds/.

#

Why this works

  • The listener runs every time a screen opens but only executes the inner action when the requirement sees the right $$screen_identifier.
  • The variable is set just once per load, so the video path stays constant.
  • The video element reads that variable (via getvariable) instead of re-running random_number every tick, so no flashing.

If you’d like, I can help you double-check the JSON for the requirement or even show how to test which identifier to use. Just let me know!

glossy lintel
#

There is no mode "equal"... only normal and opposite

tall vaporBOT
# glossy lintel There is no mode "equal"... only normal and opposite

Right, the requirement’s toggle only switches the whole requirement between “normal” and “opposite” (that’s the “Mode” in the UI), so you still need to configure the actual comparison inside the requirement value.

Here’s what to do:

  1. In the On Screen Opened listener’s action script, add an IF Statement.
  2. Add the Is Text requirement to that IF.
  3. When configuring the requirement value, click Open in Editor and paste this JSON:
{"placeholder":"text","values":{"text":"$$screen_identifier","compare_with":"title_screen","mode":"equals"}}

Replace title_screen with whatever identifier you’re targeting.

  1. Leave the requirement’s mode set to Normal (not Opposite). It will now only pass when the opened screen matches the identifier.
  2. Inside that IF, set your variable as before (random_video_index:{"placeholder":"random_number","values":{"min":"1","max":"6"}}).

Because the comparison lives inside the JSON value, you don’t need any extra “equals” option in the UI—the placeholder handles it. Let me know if you want a screenshot or the exact listener layout.

glossy lintel
#

How do i add a "set variable value"

tall vaporBOT
# glossy lintel How do i add a "set variable value"
  1. Open the listener’s action script (right-click the action area in the listener, choose Manage Action Script).
  2. Click Add Action and pick Set Variable Value (FM Variable).
  3. When the action value editor opens, type variable_name:desired_value (e.g., random_video_index:{"placeholder":"random_number","values":{"min":"1","max":"6"}}).
  4. Save the action and drag it underneath the IF so it only runs when the screen matches.

That stores a single number in random_video_index every time the screen opens. If you need the full syntax reminder, see the Set Variable Value action description in the Action Scripts doc.

glossy lintel
#

It works the video is stable once again, but now i'm back with the same "black screen" issue i had earlier. The screen remains black outside of the editor, even tho i installed the right version of MCEF [Keksuccino's Fork]

tall vaporBOT
# glossy lintel It works the video is stable once again, but now i'm back with the same "black s...

If the screen goes black again, it usually means the video path resolves to something invalid (like backgrounds/background.mp4 without the number) and MCEF just shows black.

Can you double-check whether the random_video_index variable actually holds a number right after the menu opens?

  1. Run /fmvariable get random_video_index after the title screen loads. If it prints nothing, the listener isn’t firing / the requirement isn’t matching yet, so the video path becomes invalid.

  2. Re-open the On Screen Opened listener’s action script, and make sure the Is Text requirement is configured like this (open the value editor and paste):

    {"placeholder":"text","values":{"text":"$$screen_identifier","compare_with":"title_screen","mode":"equals"}}
    

    Leave the requirement’s toggle on Normal. Inside that IF, the Set Variable Value action should still be:

    random_video_index:{"placeholder":"random_number","values":{"min":"1","max":"6"}}
    
  3. After that runs, the video source (backgrounds/background{"placeholder":"getvariable","values":{"name":"random_video_index"}}.mp4) will point to a valid file.

If the variable is still blank even though the listener runs, the screen identifier might be different—use the Debug Overlay (Ctrl+Alt+D) to copy the actual identifier and plug it into the compare_with field.

Also, keep an eye on latest.log for any MCEF-related errors after the listener fires; sometimes the Chromium backend fails to initialize if the video path is malformed. You can reload FancyMenu (Ctrl+Alt+R) to test again after you adjust the listener.

Let me know the /fmvariable get output and whether the requirement matches the identifier you’re customizing, and we can take it from there.

glossy lintel
#

Note that the video is perfectly visible in the editor

tall vaporBOT
# glossy lintel Note that the video is perfectly visible in the editor

If it still goes black outside the editor, it means FancyMenu is trying to play a file that doesn’t exist (because the variable stayed empty) or MCEF failed to initialize with that file. The editor can show it because it previews directly, but the real screen needs a valid path + working MCEF.

Please do this:

  1. Run /fmvariable get random_video_index right after the menu opens.

    • If it prints nothing, the listener didn’t set the variable, so the video source becomes backgrounds/background.mp4, which doesn’t exist.
  2. Verify your listener’s requirement matches the actual screen identifier:

    • Use the Debug Overlay (Ctrl + Alt + D) on the title screen to copy the identifier.
    • In the listener’s IF, paste this JSON as the value:
      {"placeholder":"text","values":{"text":"$$screen_identifier","compare_with":"title_screen","mode":"equals"}}
      
      Replace title_screen with the identifier you just copied.
    • Keep the requirement toggle at Normal.
    • Inside that IF, the action must still be:
      random_video_index:{"placeholder":"random_number","values":{"min":"1","max":"6"}}
      
  3. After that runs, /fmvariable get random_video_index should print 1–6, and your video source (backgrounds/background{"placeholder":"getvariable","values":{"name":"random_video_index"}}.mp4) will resolve to an actual file.

If you confirm the variable has a number but it’s still black, there might be an MCEF error logged in latest.log. In that case, reload FancyMenu (Ctrl + Alt + R) and check the log for MCEF startup issues.

Let me know what /fmvariable get shows and whether the listener requirement matches the identifier you actually see in the debug overlay, and I can help you finish the setup.

glossy lintel
#

how do i run a command inside the editor

tall vaporBOT
# glossy lintel how do i run a command inside the editor

You can’t run Minecraft chat commands while the Layout Editor is open, because the editor takes over the input focus.
To run a command (like /fmvariable get random_video_index), just close the editor, open the chat (press T), and type the command there. Once you’ve checked the result, reopen the editor if needed.

glossy lintel
#

I don't understand i'm not trying to execute a minecraft command, i'm trying to execute the /fmvariable get random_video_index like you asked me.

tall vaporBOT
# glossy lintel I don't understand i'm not trying to execute a minecraft command, i'm trying to ...

Ah, got it—/fmvariable is still a Minecraft chat command, so you have to close the layout editor to enter it. Here’s what to do:

  1. Exit the layout editor so you’re back in the normal menu screen.
  2. Press T (or your chat key) to open the chat input.
  3. Type /fmvariable get random_video_index and press Enter.
  4. The chat will show the current value of the variable.

Once you have the result, reopen the editor to continue tweaking the listener or video source. Let me know what the command prints and we can go from there!

#

🙋 | Black background

#

<@&1365490168563372113>

Human Help Requested

@glossy lintel has requested human assistance.

A human moderator will help you as soon as possible. In the meantime, you can continue asking questions to the AI support bot if you'd like.

The support team has been notified.

#
Ticket Summary

User wants a random video background chosen once per menu load via a variable and listener, but outside the editor the screen goes black because the variable either isn’t being set (so the video path becomes invalid) or the listener’s requirement isn’t matching the actual screen identifier, so MCEF can’t play the video at runtime.

glossy lintel
#

I've installed the right MCEF version port by Keksuccino, and now your bot is asking me to somehow execute a command like any other minecraft command... while in the main menu ??

tall vaporBOT
# glossy lintel I've installed the right MCEF version port by Keksuccino, and now your bot is as...

You can’t run /fmvariable (or any other Minecraft command) from inside the layout editor because it steals every keypress. Just exit the editor, go back to the title screen, open chat with T, and type /fmvariable get random_video_index. That will show whether the listener actually stored a number 1–6 after the screen opened. Once you’ve seen the result, you can reopen the editor to keep tweaking the listener or video source.

If it still prints nothing, double-check that your listener’s IF uses the correct identifier (copy it from the debug overlay) and that the Set Variable Value action runs inside that block.

hollow shuttle
tall vaporBOT
# hollow shuttle <@795315959212539934> You can explain how to make a debug display of the variabl...

Sure! To show the variable’s current value directly on the menu, just add a Text element (or a button label) and insert the getvariable placeholder.

Steps:

  1. Open the layout editor for your screen and add a Text element where you want the debug info to appear.
  2. Edit the text content and paste this placeholder:
    {"placeholder":"getvariable","values":{"name":"random_video_index"}}
    
  3. Optionally add some label like Random video index: {"placeholder"...} so it’s easier to read.
  4. Save the layout. Every time the screen loads, the text will show the value stored in random_video_index.

If you prefer a non-text element, buttons/sliders also support text components—just set the label to the same placeholder.
For more placeholder info, see the Placeholders docs (look for getvariable).

hollow shuttle
#

Does that help you ?

tall vaporBOT
#
How to Interact with Alice

If Alice isn't answering, you must either:

1. Mention her

Include @Alice [AI] in your message

2. Reply to her

Use Discord's reply feature on any of her messages

Note

The person who originally asked the question can send follow-up messages directly after the bot's response without mentioning or replying.

glossy lintel
hollow shuttle
glossy lintel
#

thanks for the heads up

#

Well now the video does change, but i do need to hit the force-close button some times when it shows up black.

#

Should be good regardless, thanks again!

tall vaporBOT
#

✅ | 🙋 | Black background