├── assets
├── Screenshot_1.png
├── docs
│ ├── manage_listeners.png
│ ├── action_script_editor.png
│ ├── essential_settings.png
│ ├── nine_slicing_example.png
│ ├── modified_fancymenu_jar.png
│ ├── fov_slider_action_script.png
│ ├── modrinth_launcher_instance.png
│ ├── curseforge_launcher_instance.png
│ └── element_animator_video_thumbnail.png
├── fancymenu_glyph_16x16.ico
├── fancymenu_glyph_16x16.png
├── fancymenu_glyph_32x32.ico
├── fancymenu_glyph_32x32.png
├── fancymenu_glyph_64x64.ico
├── fancymenu_glyph_64x64.png
├── fancymenu_glyph_100x100.png
├── fancymenu_glyph_128x128.png
├── fancymenu_glyph_180x180.png
└── fancymenu_glyph_978x978.png
├── .github
└── ISSUE_TEMPLATE
│ ├── feature_request.md
│ ├── mod_incompatibility.md
│ └── bug_report.md
├── README.md
├── LICENSE.md
└── wip_changelog.txt
/assets/Screenshot_1.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Keksuccino/FancyMenu/HEAD/assets/Screenshot_1.png
--------------------------------------------------------------------------------
/assets/docs/manage_listeners.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Keksuccino/FancyMenu/HEAD/assets/docs/manage_listeners.png
--------------------------------------------------------------------------------
/assets/fancymenu_glyph_16x16.ico:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Keksuccino/FancyMenu/HEAD/assets/fancymenu_glyph_16x16.ico
--------------------------------------------------------------------------------
/assets/fancymenu_glyph_16x16.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Keksuccino/FancyMenu/HEAD/assets/fancymenu_glyph_16x16.png
--------------------------------------------------------------------------------
/assets/fancymenu_glyph_32x32.ico:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Keksuccino/FancyMenu/HEAD/assets/fancymenu_glyph_32x32.ico
--------------------------------------------------------------------------------
/assets/fancymenu_glyph_32x32.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Keksuccino/FancyMenu/HEAD/assets/fancymenu_glyph_32x32.png
--------------------------------------------------------------------------------
/assets/fancymenu_glyph_64x64.ico:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Keksuccino/FancyMenu/HEAD/assets/fancymenu_glyph_64x64.ico
--------------------------------------------------------------------------------
/assets/fancymenu_glyph_64x64.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Keksuccino/FancyMenu/HEAD/assets/fancymenu_glyph_64x64.png
--------------------------------------------------------------------------------
/assets/docs/action_script_editor.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Keksuccino/FancyMenu/HEAD/assets/docs/action_script_editor.png
--------------------------------------------------------------------------------
/assets/docs/essential_settings.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Keksuccino/FancyMenu/HEAD/assets/docs/essential_settings.png
--------------------------------------------------------------------------------
/assets/docs/nine_slicing_example.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Keksuccino/FancyMenu/HEAD/assets/docs/nine_slicing_example.png
--------------------------------------------------------------------------------
/assets/fancymenu_glyph_100x100.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Keksuccino/FancyMenu/HEAD/assets/fancymenu_glyph_100x100.png
--------------------------------------------------------------------------------
/assets/fancymenu_glyph_128x128.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Keksuccino/FancyMenu/HEAD/assets/fancymenu_glyph_128x128.png
--------------------------------------------------------------------------------
/assets/fancymenu_glyph_180x180.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Keksuccino/FancyMenu/HEAD/assets/fancymenu_glyph_180x180.png
--------------------------------------------------------------------------------
/assets/fancymenu_glyph_978x978.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Keksuccino/FancyMenu/HEAD/assets/fancymenu_glyph_978x978.png
--------------------------------------------------------------------------------
/assets/docs/modified_fancymenu_jar.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Keksuccino/FancyMenu/HEAD/assets/docs/modified_fancymenu_jar.png
--------------------------------------------------------------------------------
/assets/docs/fov_slider_action_script.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Keksuccino/FancyMenu/HEAD/assets/docs/fov_slider_action_script.png
--------------------------------------------------------------------------------
/assets/docs/modrinth_launcher_instance.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Keksuccino/FancyMenu/HEAD/assets/docs/modrinth_launcher_instance.png
--------------------------------------------------------------------------------
/assets/docs/curseforge_launcher_instance.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Keksuccino/FancyMenu/HEAD/assets/docs/curseforge_launcher_instance.png
--------------------------------------------------------------------------------
/assets/docs/element_animator_video_thumbnail.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Keksuccino/FancyMenu/HEAD/assets/docs/element_animator_video_thumbnail.png
--------------------------------------------------------------------------------
/.github/ISSUE_TEMPLATE/feature_request.md:
--------------------------------------------------------------------------------
1 | ---
2 | name: Feature Request
3 | about: You miss a feature in the mod? Talking about it can relieve the pain.
4 | title: ''
5 | labels: feature request
6 | assignees: ''
7 |
8 | ---
9 |
10 | **Describe your idea**
11 | A detailed and clear description of what you want to see in the mod.
12 | The feature should fit the mod's lore. Stuff like "add speaking potatos ridden by Trump" will be ignored.
13 |
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | ## About
2 |
3 | This is the repository for FancyMenu, a mod for Minecraft to customize menus.
4 |
5 | ## Branches | Source Code
6 |
7 | Check the branches to see the **source code** for all versions of FancyMenu.
8 |
9 | ## Copyright
10 |
11 | FancyMenu © Copyright 2020-2025 Keksuccino.
12 | FancyMenu is licensed under DSMSLv3 (DON'T SNATCH MA STUFF LICENSE V3).
13 | See `LICENSE.md` for more information.
14 |
15 | Japng © Copyright A. Ellerton.
16 | Japng is licensed under Apache-2.0.
17 |
18 | [Animated GIF library for Java](https://github.com/rtyley/animated-gif-lib-for-java) © Copyright Roberto Tyley, Kevin Weiner.
19 | Original code by Kevin Weiner on [fmsware.com](http://www.fmsware.com/stuff/gif.html).
20 | Re-packaged and improved by Roberto Tyley. Improvements licensed under the Apache-2.0 license.
21 |
--------------------------------------------------------------------------------
/.github/ISSUE_TEMPLATE/mod_incompatibility.md:
--------------------------------------------------------------------------------
1 | ---
2 | name: Mod Incompatibility
3 | about: Some mod is conflicting with FancyMenu? Tell me about it!
4 | title: ''
5 | labels: mod conflict
6 | assignees: ''
7 |
8 | ---
9 |
10 | **Describe the issue**
11 | What exactly is telling you that the mod is incompatible?
12 |
13 | **Game Log**
14 | Please always include your `.minecraft/logs/latest.log` file **right after the issue happened**.
15 | Please don't send the whole log as plain text here. Upload the file to https/gist.github.com and send the link.
16 |
17 | **Screenshots**
18 | If screenshots would help to explain the issue, please include these.
19 |
20 | **Basic Information (please complete the following information):**
21 | - OS: [e.g. Windows]
22 | - FancyMenu Version [e.g. 3.5.0]
23 | - Fabric/Forge/NeoForge Version [e.g. 31.2.24]
24 | - Minecraft Version [e.g. 1.15.1]
25 | - Active Mods [e.g. Optifine, 5zig, TooManyItems]
26 |
--------------------------------------------------------------------------------
/.github/ISSUE_TEMPLATE/bug_report.md:
--------------------------------------------------------------------------------
1 | ---
2 | name: Bug Report
3 | about: Found a bug? Please tell me, so I can fix it!
4 | title: ''
5 | labels: bug
6 | assignees: ''
7 |
8 | ---
9 |
10 | **Describe the bug**
11 | A clear and detailed description of what the bug is.
12 |
13 | **To Reproduce**
14 | Steps to reproduce the behavior (e.g.):
15 | 1. Go to '...'
16 | 2. Click on '....'
17 | 3. Scroll down to '....'
18 | 4. See error
19 |
20 | **Expected behavior**
21 | A clear and detailed description of what you expected to happen.
22 |
23 | **Game Log**
24 | Please always include your `.minecraft/logs/latest.log` file **right after the issue happened**.
25 | Please don't send the whole log as plain text here. Upload the file to https://gist.github.com and send the link.
26 | DON'T SEND LOG SNIPPETS OR CRASH LOGS, PLEASE SEND THE WHOLE LATEST.LOG FILE!
27 |
28 | **Screenshots**
29 | If screenshots would help to explain the issue, please include these.
30 |
31 | **Basic Information (please complete the following information):**
32 | - OS: [e.g. Windows]
33 | - FancyMenu Version [e.g. 3.5.0]
34 | - Fabric/Forge/NeoForge Version [e.g. 31.2.24]
35 | - Minecraft Version [e.g. 1.15.1]
36 | - Active Mods [e.g. Optifine, 5zig, TooManyItems]
37 |
--------------------------------------------------------------------------------
/LICENSE.md:
--------------------------------------------------------------------------------
1 |
2 | # DON'T SNATCH MA STUFF LICENSE V3 (DSMSLv3)
3 |
4 |
5 | ## Summary
6 |
7 | - **Modpacks:** You can use this mod in modpacks, but you must not include its files directly. Instead, list it as a dependency (mod reference) that points to an official download source.
8 |
9 | - **For Devs:** You’re allowed to create addons or integrate support for the mod, but you must not copy any of its code. Instead, make it an external dependency that gets downloaded from an official source.
10 |
11 | - **Redistribution Limits:** You cannot re-upload or share the mod’s code or compiled files publicly without the author’s explicit permission. Forking for personal use is okay, but distributing a compiled fork is not allowed.
12 |
13 | - **Personal Use:** You may use and modify the mod for personal use, but any changes must remain private and not be shared publicly.
14 |
15 | - **Official Download Requirement:** Any dependency or modpack reference must point to the official download sources provided by the author.
16 |
17 |
18 | ## Definitions
19 |
20 | - **Mod Definition**: For the purposes of this license, the terms "this mod" or "the mod" refer to the entire product or project this license accompanies. This includes, but is not limited to, the source code, the compiled JAR files, associated assets, documentation, and any other related components distributed under this license.
21 |
22 | - **Private**: "Private" means that any modified version of the mod is used solely by the individual who made the modifications and is not shared with, distributed to, or made accessible to ANYONE else.
23 |
24 | - **Public**: "Public" means sharing the mod or any portion of its source code in any form that is accessible to other individuals. This includes, for example, uploading the mod or its code to public repositories or mod hosting sites such as Modrinth, CurseForge, etc.
25 |
26 |
27 | ## Terms and Conditions
28 |
29 | 1. **Usage in Modpacks and as Dependencies**
30 | - **1.1.** You may include this mod in modpacks as a mod reference. In such cases, the mod **must not** be physically included or shipped within the pack’s files. Instead, it should be listed as a dependency that the end-user or end-user’s mod launcher downloads from the official source (see Section 5).
31 | - **1.2.** When used as a dependency in any project, the mod must be obtained from an official download source (see Section 5). No part of its JAR file or code should be embedded in the distributed product.
32 |
33 | 2. **Creating Addons and Extensions**
34 | - **2.1.** You are free to develop addons or integrate support for this mod into your own projects.
35 | - **2.2.** Your project must not include any portion of this mod’s source code or its compiled JAR file. Instead, it should reference the mod as an external dependency that gets downloaded from an official download source (see Section 5).
36 |
37 | 3. **Redistribution Prohibitions**
38 | - **3.1.** You may not re-upload, re-distribute, or otherwise publicly share the mod’s compiled JAR or any portion of its source code without obtaining explicit permission from the author.
39 | - **3.2.** **Forking Exception and Public Forks**: You are permitted to publicly fork the mod’s source code (for example, by hosting it on a public repository such as GitHub) for the purposes of personal modifications or contributions. However, while public forks of the source code are allowed, any distribution of a compiled version (e.g., the JAR file) derived from such a fork is strictly prohibited unless you have obtained explicit permission from the author.
40 |
41 | 4. **Personal Use and Modification**
42 | - **4.1.** You may freely use and modify the mod’s source code or mod file for personal use.
43 | - **4.2.** Any modifications made for personal use must remain private. Public re-uploading or distribution of any modified (or unmodified) version is strictly forbidden without permission.
44 |
45 | 5. **Official Download Source Requirement**
46 | - **5.1.** For modpacks, the mod reference must clearly point to an official download source, ensuring that end-users are directed to download the mod only from that designated source. It is acceptable for mod launchers (for example, CurseForge launcher, Modrinth launcher, Technic Launcher, ATLauncher, etc.) to automatically download the mod to the end-user’s system, as long as the mod is obtained from the official download sources:
47 | - https://curseforge.com/members/keksuccino
48 | - https://modrinth.com/user/keksuccino
49 | - **5.2.** When used as a dependency, the mod must not be bundled within your distributed files. Instead, it should be configured as an external dependency, ensuring that it is downloaded either directly by the end-user or automatically by their mod launcher from the official download sources listed above.
50 |
51 | 6. **Permission Requests**
52 | - **6.1.** If you wish to re-upload, re-distribute, or otherwise publicly share any portions of the mod's code or the mod itself (or any version of it) in a manner not permitted by these Terms and Conditions, you must first obtain explicit permission from the author.
53 | - **6.2.** To request such permission, please contact the author via Discord. Join the Discord server at https://discord.gg/rhayah27GC and send a private message to @keksuccino detailing your intended use.
54 | - **6.3.** The author reserves the right to approve or deny any permission request at their sole discretion.
55 |
--------------------------------------------------------------------------------
/wip_changelog.txt:
--------------------------------------------------------------------------------
1 |
2 | ## CHANGELOG | FANCYMENU v3.9.0 [ W I P !! Not public yet !! ]
3 |
4 | ### New Features and Improvements
5 |
6 | - Added a new kind/category of customizations: Global Customizations (#1355)
7 | - These customizations are different to most others in the mod, because they do not need you to enable customizations for a screen to apply them
8 | - Can be accessed via "menu bar -> Customization -> Global Customizations" while NOT in the layout editor
9 | - Allows you to change Vanilla button textures globally for all screens without using a resource pack
10 | - Allows you to change Vanilla menu music globally for all screens without using a resource pack
11 | - Many of the customization options previously located in "menu bar -> Customization -> Settings" (like custom window icon/title, etc.) are now located in the new "Global Customizations" menu
12 | - Added a new type of fullscreen customization: Decoration Overlays
13 | - These overlays have pre-defined overlay types, similar to menu background types and they can be toggled on/off for each overlay type
14 | - Decoration overlays can be accessed via right-clicking the layout editor background -> Decoration Overlays
15 | - Currently there are three overlay types available:
16 | - Snowfall, that makes it snow in your menus with snow accumulation on the ground and buttons (with customizable snow color and intensity)
17 | - Rainfall, that makes it rain in menus, with forming puddles and dripping water from buttons (with customizable rain color and intensity)
18 | - Fireflies, to have groups of fireflies fly around in the menu and sometimes landing on the ground and on buttons (with customizable color, group amount, group density, group size, etc.)
19 | - Firefly groups will follow the mouse when you get close to them with the cursor
20 | - Added a file browser for Minecraft resources to the "Choose Resource" screen, so you can now browse nearly all resources loaded via resource packs like a normal directory
21 | - Added click events to Markdown, which let's you use a listener to listen for specific text clicks in Markdown text (used for the Text element, etc.) (#1366)
22 | - The formatting for a click event is very similar to hyperlinks: "[some clickable text](click:unique_text_click_event_id)"
23 | - Listen to text clicks by using the "On Markdown Text Clicked" listener
24 | - Added hover events to Markdown, which let's you use a listener to listen for specific text hovers in Markdown text (used for the Text element, etc.) (#1366)
25 | - The formatting for a hover event is very similar to hyperlinks: "[some hoverable text](hover:unique_text_hover_event_id)"
26 | - Listen to text hovers by using the "On Markdown Text Hovered" listener
27 | - Added a "timing offset" feature to the "Element Animator" element that makes it possible to apply start timing offsets individually for each controlled element (#1379)
28 | - There's also a "random timing offset" mode that randomly applies offsets in a specified range to all controlled elements
29 | - Added a "Delay" block to the action script system that waits for the specified time before running its contained actions (The rest of the script keeps running while the delay counts down) (#1397)
30 | - Added a "Variable Mode" for the "Checkbox" element that lets you link checkboxes directly to a FancyMenu variable (#1256)
31 | - Added "Text Input Field Value" placeholder that returns the current value of an input field (text box) by its element identifier (#1391)
32 | - Added "Current World Seed" placeholder that returns the seed of the current world (#1354)
33 | - Added "Clicks Per Second" placeholder that returns the clicks per second (CPS) for the given mouse button (left/right) (#1383)
34 | - Added "Slot Item Durability" placeholder that returns durability information of the item in the given inventory slot (#1382)
35 | - Supports multiple return formats (current, max, damage, percentage)
36 | - Added "Player Armor Toughness" placeholder that returns the player's total armor toughness (#1384)
37 | - Added "Inventory Item Count" placeholder that returns the total count of an item type in the player inventory (#1386)
38 | - Added "Slot Item Count" placeholder that returns the item count of the item in the given inventory slot (#1385)
39 | - Added "Slot Item Food Point Restore Amount" placeholder that returns the amount of food/hunger points the food in the given slot would restore when eating it (#1418)
40 | - Added "Current Player Hunger Saturation" placeholder that returns the saturation level of the player (#1416)
41 | - Added "Current Biome" placeholder that returns the biome the player is in (has option to return the display name of biomes, otherwise returns the biome key) (#1428)
42 | - Added "Current Dimension" placeholder that returns the dimension the player is in (has option to return the display name of Vanilla dimensions, otherwise returns dimension key) (#1437)
43 | - Added "Item Category" placeholder that returns the creative tab category of the input item key (#1435)
44 | - Added "Hovered Inventory Item" placeholder that returns the item that is hovered in the currently open inventory (player inventory, chest, etc.) (#1434)
45 | - Added "Set Text Input Field Value" action to set the value of an input field (text box) by its element identifier (works for custom and Vanilla elements) (#1392)
46 | - Added "Extract ZIP File In Game Directory" action to extract ZIP files in the game directory or the default .minecraft folder (#1394)
47 | - Also added a listener called "On ZIP Extracted via Action" that triggers once the ZIP finished extracting
48 | - Added "Open File/Folder In Game Directory" action that opens a file/folder in the game directory or the default .minecraft folder (#1395)
49 | - Added "Play Audio" action to play an audio resource once with configurable sound channel and base volume (#1433)
50 | - Added "Execute Command As Integrated Server" action (#1372)
51 | - Force-executes a command in singleplayer as the integrated server, ignoring permissions and the cheats setting
52 | - Does nothing on multiplayer or when the world is opened to LAN
53 | - Added "Stop All Action Audios" action to stop all audio tracks started via the "Play Audio" action
54 | - Added "On Item Hovered in Inventory" listener that triggers when the users hovers an item in any inventory (player inventory, chests, etc.) (#1432)
55 | - Added "Is Hardcore" requirement to check if the currently loaded world is in hardcore mode (#1387)
56 | - Added "Is MC Debug Overlay Enabled" requirement to check if the F3 debug overlay is enabled (#1436)
57 | - Added "Is Item Hovered in Inventory" requirement to check if the user is hovering over an item in any inventory screen (main inventory, chests, etc.) (#1431)
58 | - Added "Is Cursor Holding Inventory Item" requirement to check if the user is holding an item with the mouse in any inventory screen (main inventory, chests, etc.) (#1427)
59 | - Added "Is Camera Perspective" requirement to check for the user's current perspective (first person, third person, front view) (#1375)
60 | - Added "Is Active Cursor Type" requirement that checks if a specific standard cursor type (normal, pointing hand, writing cursor, etc.) is currently the active cursor (#1430)
61 | - Ported "Is Player Using Item" requirement from Spiffy (#1401)
62 | - Ported "Is Player In Structure" requirement from Spiffy (#1402)
63 | - The border display of elements in the layout editor (position, anchor, rotation, etc.) now renders inside the element when there's not enough space to render it outside (#1380)
64 | - The Markdown text color formatting code now also supports common HTML-like color names in addition to HEX, so you can now do "%#red%This is red text%#%" for example (#1368)
65 | - Available color names: black, silver, gray, grey, white, maroon, red, purple, fuchsia, magenta, green, lime, olive, yellow, navy, blue, teal, aqua, cyan, transparent
66 | - The Parallax intensity for elements and menu backgrounds can now be configured individually for the X and Y axis (instead of combined setting for both, like before) (#1378)
67 | - More of FancyMenu's list-based screens now have search bars
68 | - There's now an option to toggle on/off the screen background overlay in Custom GUIs while in a world (the blur/dark tint) (#1441)
69 | - The Book button in the Inventory screen now has a persistent identifier ("inventory_screen_book_button") to hopefully improve how the customization engine can interact with it (#1098)
70 |
71 | ### Breaking Changes
72 |
73 | - REMOVED all placeholders related to the scoreboard, because they never worked correctly and basically need a full rewrite (#1198)
74 | - I will add scoreboard placeholders back in the future, but for now it makes no sense to keep them in
75 | - I also normally never just remove features without prior warning, but I felt it was the only correct action here
76 | - Removed placeholders: Scoreboard Player Team, Scoreboard Score, Scoreboard Objectives List, Scoreboard Tracked Players, Scoreboard Display Slot, Scoreboard Has Score, Scoreboard Objective Display Name, Scoreboard Objective Criteria, Scoreboard Objective Render Type, Scoreboard Player Scores List, Scoreboard Objective Count, Player Tags List, Player Has Tag
77 |
78 | ### Bug Fixes
79 |
80 | - Fixed "Splash Text" elements not resolving placeholders anymore in MC 1.21.10+ (#1353, #1457)
81 | - Fixed "Replace Text" placeholder can’t replace literal "\" characters (#1456)
82 | - Fixed branding and copyright text in the Title screen being affected by the opacity of other elements/buttons in some Minecraft versions (#1460)
83 | - Fixed a Vanilla bug that made icons of icon buttons (Language and Accessibility buttons) not react to opacity changes in some Minecraft versions
84 | - Fixed (at least tried to fix) a crash related to "Player Entity" elements sometimes failing to get constructed (#1323)
85 | - Fixed menu bar in the Creative Mode Inventory screen sometimes not clickable because the creative mode tabs consume the click (#1046)
86 |
87 | %changelog:end%
88 |
--------------------------------------------------------------------------------