Coder Social home page Coder Social logo

modmenu's Introduction

Mod Menu

Screenshot of the Mods screen, showing a list of a few mods on the left side below a search bar and filters button, where Mod Menu is selected. On the right side of the screen, it shows more details about the mod, such as authors, a description, links, credits, and a button to configure the mod.

Mod Menu lets you view the mods you have installed and, if supported by the mod, enables quick and easy access to the mod's config screens.

Mod Menu also supports some more advanced features, such as translatable mod names and descriptions, support for QuickText formatting in mod descriptions thanks to Patbox's Text Placeholder API, filters library mods out from regular mods, a mod update checker for mods hosted on Modrinth or that provide their own update sources, and deep configuration for all the features we provide.

Supported Platforms

Mod Menu is currently available for Fabric or Quilt on Minecraft: Java Edition 1.14 or newer.

Developers

Mod Menu includes a number of APIs for developers to improve how their mod appears in Mod Menu. These come in the form of language keys, JSON metadata, and even a Java API.

Translation API

You can translate your mod's name, summary, and description all without touching any Java code. Simply add translation keys in the supported format to any language you'd like.

Translation API Documentation

Here's an example of Mod Menu's translations into Pirate Speak. To create your own, simply replace modmenu at the end (NOT the one in the beginning) of the translation key with your own mod ID, for example modmenu.descriptionTranslation.traverse.

en_pt.json

"modmenu.nameTranslation.modmenu": "Menu o' mods!",
"modmenu.descriptionTranslation.modmenu": "Menu o' mods ye installed matey!",
"modmenu.summaryTranslation.modmenu": "Menu o' mods ye installed matey!"

The summary translation is redundant here and does not need to be included because it's the same as the description, but it was included to show that you may translate the summary (a short, one-sentence description of the mod) separately from the description, even in English!

Fabric Metadata API

There's a number of things you can add just with metadata in your fabric.mod.json.

All of these are added to a custom block in your fabric.mod.json for Mod Menu's metadata. Here's an example usage of many of the features this API provides:

fabric.mod.json

{
  ...
  "custom": {
    "modmenu": {
      "links": {
        "modmenu.discord": "https://discord.gg/jEGF5fb"
      },
      "badges": [ "library", "deprecated" ],
      "parent": {
        "id": "example-api",
        "name": "Example API",
        "description": "Modular example library",
        "icon": "assets/example-api-module-v1/parent_icon.png",
        "badges": [ "library" ]
      },
      "update_checker": true
    }
  }
}
Fabric Metadata API Documentation

Badges ("badges": [ ])

While the Client badge is added automatically to mods set as client-side only (set "environment": "client" in fabric.mod.json to do this.), other badges such as the Library and Deprecated badges require definition here.

Supported values:

  • library - should be assigned to mods that are purely dependencies for other mods that should not be shown to the user by default unless they toggle them on.
  • deprecated - should be assigned to mods that exist purely for legacy reasons, such as an old API module or such.

Any others will be ignored, and Mod Menu does not support adding your own badges. You may open an issue here if you have a compelling use case for a new badge.

Links ("links": { })

The links object allows mod authors to add custom hyperlinks to the end of their description. If you specify a sources contact in the official fabric.mod.json metadata, it will also be included in the links section.

Any key in the links object will be included in the links section, with the key being used as a translation key. For example, this:

fabric.mod.json

"custom": {
    "modmenu": {
        "links": {
          "modmenu.discord": "https://discord.gg/jEGF5fb"
        }
    }
}

will show as a link with the text "Discord", since "Discord" is the English translation of "modmenu.discord" provided by Mod Menu.

Mod Menu provides several default translations that can be used for links. A full list can be seen in Mod Menu's language file here. All default link translation keys take the form modmenu.<type>.

You can also provide your own translations if you would like to add custom links. Make sure to use your own namespace (as opposed to modmenu) for any custom keys.

Parents ("parent": "mod_id" or { })

Parents are used to display a mod as a child of another one. This is meant to be used for mods divided into different modules. The following element in a fabric.mod.json will define the mod as a child of the mod 'flamingo':

fabric.mod.json

"custom": {
    "modmenu": {
        "parent": "flamingo"
    }
}

However, if you want to group mods under a parent, but the parent isn't an actual mod, you can do that too. In the example below, a mod is defining metadata for a parent. Make sure that this metadata is included in all of the children that use the fake/dummy parent. This can also be used as a fallback for an optional parent, it will be replace by the mod's real metadata if present.

fabric.mod.json

"custom": {
    "modmenu": {
        "parent": {
            "id": "this-mod-isnt-real",
            "name": "Fake Mod",
            "description": "Do cool stuff with this fake mod",
            "icon": "assets/real-mod/fake-mod-icon.png",
            "badges": [ "library" ]
        }
    }
}

Dummy parent mods only support the following metadata:

  • id (String)
  • name (String)
  • description (String)
  • icon (String)
  • badges (Array of Strings)

Disable update checker ("update_checker": false)

By default, Mod Menu's update checker will use the hash of your mod's jar to lookup the latest version on Modrinth. If it finds a matching project, it will check for the latest version that supports your mod loader and Minecraft version, and if it has a different hash from your existing file, it will prompt the user that there is an update available.

You can disable the update checker by setting update_checker to false in your Mod Menu metadata like so:

fabric.mod.json

"custom": {
    "modmenu": {
        "update_checker": false
    }
}

Quilt Metadata API

Since Mod Menu supports Quilt as well, the same APIs in the Fabric Metadata API section are also available for Quilt mods, but the format for custom metadata is slightly different.

Instead of a "modmenu" block inside of a "custom" block, you put the "modmenu" block as an element in the root object. So it should look like:

quilt.mod.json

{
  ...
  "modmenu": {
    // Here's where your links, badges, etc. stuff goes
  }
}

Java API

To use the Java API, you'll need to add Mod Menu as a compile-time dependency in your gradle project. This won't make your mod require Mod Menu, but it'll be present in your environment for you to test with.

build.gradle

// Add the Terraformers maven repo to your repositories block
repositories {
  maven {
    name = "Terraformers"
    url = "https://maven.terraformersmc.com/"
  }
}

// Add Mod Menu as a dependency in your environment
dependencies {
  modImplementation("com.terraformersmc:modmenu:${project.modmenu_version}")
}

Then, define the version of Mod Menu you're using in your gradle.properties. You can get the latest version number here, but you may need a different version if you're not using the latest Minecraft version. See the versions page for a full list of versions.

gradle.properties

modmenu_version=VERSION_NUMBER_HERE

If you don't want it in your environment for testing but still want to compile against Mod Menu for using the Java API, you can use modCompileOnly instead of modImplementation (this will work even if Mod Menu is not updated to the version of Minecraft you're running).

Java API Documentation

Getting Started

To use the API, implement the ModMenuApi interface on a class and add that as an entry point of type "modmenu" in your fabric.mod.json like this:

fabric.mod.json

"entrypoints": {
  "modmenu": [ "com.example.mod.ExampleModMenuApiImpl" ]
}

Mod Config Screens

Mods can provide a Screen factory to provide a custom config screen to open with the config button. Implement the getModConfigScreenFactory method in your API implementation to do this.

The intended use case for this is for mods to provide their own config screens. The mod id of the config screen is automagically determined by the source mod container that the entrypoint originated from.

Provided Config Screens

Mods can provide Screen factories to provide a custom config screens to open with the config buttons for other mods as well. Implement the getProvidedConfigScreenFactories method in your API implementation for this.

The intended use case for this is for a mod like Cloth Config to provide config screens for mods that use its API.

Modpack Badges

Mods can give other mods the Modpack badge by implementing the attachModpackBadges method, such as through the following:

@Override
public void attachModpackBadges(Consumer<String> consumer) {
	consumer.accept("modmenu"); // Indicates that 'modmenu' is part of the modpack
}

Note that 'internal' mods such as Minecraft itself and the mod loader cannot be given the modpack badge, as they are not distributed within a typical modpack.

Static Helper Methods

ModMenuApi also offers a few helper methods for mods that want to work with Mod Menu better, like making their own Mods buttons.

Creating a Mods screen instance

You can call this method to get an instance of the Mods screen:

Screen createModsScreen(Screen previous)

Creating a Mods button Text

You can call this method to get the Text that would be displayed on a Mod Menu Mods button:

Text createModsButtonText()

modmenu's People

Contributors

ahhj93 avatar alexiil avatar amirhan-taipovjan-greatest-i avatar egeesin avatar flashyreese avatar gazmanovich avatar github-actions[bot] avatar hambaka avatar haven-king avatar haykam821 avatar jab125 avatar jackassmc avatar lostluma avatar madis0 avatar modmuss50 avatar neusfear avatar nfitzen avatar oroarmor avatar patbox avatar po-stulate avatar prospector avatar pyrofab avatar satxm avatar shedaniel avatar soochaehwa avatar spnda avatar vanja-san avatar weblate avatar xuyuere avatar yanisbft avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

modmenu's Issues

Crashes in 19w38b

Just forgot to tell you, noticed you haven't updated it. Sorry, I can't provide the crash report, it happens when you try to open the mod menu screen.

[Feature Request] Customizable per-mod backgrounds

Let mods optionally change the background of the mod menu if it is currently selected, by providing images in a 'background' folder/package near the mod icon

Why:
That could allow mods to provide 'hints' (ex. screenshots of new worlds, entities, blocks...) for the user about the mod without visiting the mod homepage/wiki. Although that would be irrelevant in self-made modpacks or with just a few mods, it would enhance modpacks with tons of mods.

Hide child mods (modules) from the mod count

i have 2 mods installed, fabric api and this one. but it says i have 26 mods loaded, i don't know where they're coming from but it wasn't like this in older versions. If this is intentional behavior then i would say, I can see how it would be helpful to mod makers but for an average user it's more confusing/misleading/overwhelming. maybe this could be on a toggle? thanks again for making this mod
https://i.imgur.com/6ByPtio.png

Mod just...isnt working?

have both the fabric launcher and API installed. i downloaded the file directly into my mods folder like i usually do (if this could be the cause let me know? but i dont think it is? could be wrong, i have before).

The menu just...wont show up. lol. ive tried restarting the game multiple times and the menu is nowhere to be found. I'm assuming this means that it just somehow isn't working correctly? It just ... is refusing to play nice with the launcher or something for me. if anyone knows what's wrong and would walk me through lmk.

Credit authors in mod info

Now that loader 0.4.0 gives us a proper mod.json format, it'd be nice if ModMenu displayed the authors' names in the mod info screen. Bonus points for links to home page and source/issues too.

Mod Icon Transparency

I don't know if there were big changes between those two versions, but in version 1.5.4, mod icons could use transparent backgrounds, I just updated to 1.6.1 and it doesn't seem to be transparent anymore.
ModMenuTransparency

Using Fabric API v0.3.0 b175

Crash when resizing window with text in mod search field

Game crashes when the window is resized with any text in the mod search field. Just being selected or being empty does not cause the crash, however it is really slow for the window to be resized anyway.

My log: https://gist.github.com/Blayyke/1ec9c5b5a682f57d7e0d22359f2f3b2c
Log from calloatti: https://paste.ee/p/m9Rlk

Also worth pointing out is that the glassential stacktrace is printed every single time the text field is clicked. Does not cause any crashes though.

API: Redirect

Register the screen to redirect to another mod's config screen.

Current Hackery:

Function<Screen, ? extends Screen> getConfigScreenFactory() {
	return parent -> {
		Screen screen = ModMenu.getConfigScreen("cloth-config2", parent);
		if (screen != null) {
			return screen;
		}
		ModMenu.openConfigScreen("cloth-config2");
		screen = MinecraftClient.getInstance().currentScreen;
		MinecraftClient.getInstance().openScreen(parent);
		return screen;
	};
}

Mod Menu depends on the monolith `fabric` rather than `fabric-resource-loader`

Because Mod Menu also depends on literally everything.

net.fabricmc.loader.discovery.ModResolutionException: Errors were found!
 - Mod modmenu depends on mod {fabric @ [*]}, which is missing!
	at net.fabricmc.loader.discovery.ModResolver.findCompatibleSet(ModResolver.java:309)
	at net.fabricmc.loader.discovery.ModResolver.resolve(ModResolver.java:603)
	at net.fabricmc.loader.FabricLoader.setup(FabricLoader.java:176)
	at net.fabricmc.loader.FabricLoader.load(FabricLoader.java:166)
	at net.fabricmc.loader.launch.knot.Knot.init(Knot.java:127)
	at net.fabricmc.loader.launch.knot.KnotClient.main(KnotClient.java:26)
	at net.fabricmc.devlaunchinjector.Main.main(Main.java:84)

Please only depend on the things you use.

"website" & "issues" buttons do not update

when i select mods, the icon & description update, but Website and Issues will link to the first mod in the list alphabetically. when i cancel and go back to mod list, the buttons have updated, but if the selected mod doesn't have these links set up then they can't be clicked, and so they can't be updated again.
hope that was clear, i tried to take screenshots but the program i use doesn't work for minecraft i guess

Suggestion: Some minor layout changes

image

  1. I centered the search box and window title to be consistent with other minecraft screens.
  2. Added a placeholder text to the search box
  3. Details window for mods now has a scrollbar so they can contain any amount of content the modder wants and still fit into the same space.
  4. Moved the link buttons into a category below the description (also in the scrolling panel)

Some of these changes were in response to the space issue mentioned at #23

Extra links/credits could also be included below the buttons with horizontal rules between them to differentiate the sections.

Suggestion: Discord links

Support for linking a discord server for a mod, or a discord account for an author.

"discord": "Username#0000"
"discord": "ServerId"

The Mod Menu Button doesn't show up

Hi! So the Mod Menu Button doesn't show up for me in minecraft and I really don't know what to do. I installed fabric and the other stuff but it just doesn't work.
Unbenannt
Unbenandant

Crash when pressing F3 + Esc

WHen pressing F3 + Esc (pause the game without visible screen in singleplayer) the game crasehs due to ModMenu's mixin trying to access index 5 of an empty array list.

I encountered the issue in AOF first, and was able to reproduce it in my dev workspace:

java.lang.IndexOutOfBoundsException: Index: 5, Size: 0
	at java.util.ArrayList.rangeCheckForAdd(ArrayList.java:665) ~[?:1.8.0_212]
	at java.util.ArrayList.add(ArrayList.java:477) ~[?:1.8.0_212]
	at net.minecraft.client.gui.screen.GameMenuScreen.addButton(GameMenuScreen.java:534) ~[minecraft-1.14.4-mapped-net.fabricmc.yarn-5.jar:?]
	at net.minecraft.client.gui.screen.GameMenuScreen.handler$drawMenuButton$zep001(GameMenuScreen.java:527) ~[minecraft-1.14.4-mapped-net.fabricmc.yarn-5.jar:?]

which leads to this line in the mixin output:

    @MixinMerged(
        mixin = "io.github.prospector.modmenu.mixin.PauseMenuScreenMixin",
        priority = 1000,
        sessionId = "e4704896-c392-449d-8fc2-5270d7798be2"
    )
    public void handler$drawMenuButton$zep001(CallbackInfo info) {
        int i = FabricLoader.getInstance().getAllMods().size();
        this.addButton(new ModMenuButtonWidget(this.width / 2 - 102, this.height / 4 + 8 + 72, 204, 20, (ModMenu.noFabric ? "Mods" : I18n.translate("modmenu.title", new Object[0])) + " " + (ModMenu.noFabric ? "(" + i + " Loaded)" : I18n.translate("modmenu.loaded", new Object[]{i})), this), 5);
    }

(uses index 5).

Can be fixed by moving the injection into initWidgets() instead of init().

Mod update checker

  • Uses Curseforge API to check current mods' new releases for launched game version
  • Checks once per game session
  • If there are updates, show the Realms 🔷 icon on mod list button
  • Checks for stable releases by default, option to use beta/alpha too
  • "Update" badge on mods that have updates
  • A button "Update mod" on the mod detail view that directly links to latest JAR on Curseforge

Use mod.json "icon" field

The mod.json spec includes an "icon" field. Would it be possible to use that to get the path to the mod's icon, instead of requiring exactly "modid/icon.png"?

I'd be happy to make the PR myself if this is something that would be accepted.

Feature Request: Tag Search Filtering

I sometimes quickly need to find something, but the size of the menu with 200+ mods loaded can leave me having to memorize certain mod names and what they do, it would be handy if there were buttons that I could toggle that filtered the results by:

  • mods that have a config button
  • mods that are tagged as APIs
  • mods that are tagged as Client-Only

This would make it a lot easier to manage the configuration and balance phase of creating a mod loadout.

Mixin error

[main/WARN]: Error loading class: net/minecraft/class_433 (java.lang.ClassNotFoundException: net/minecraft/class_433)
[main/WARN]: @Mixin target net.minecraft.class_433 was not found mixins.modmenu.json:MixinGameMenuScreen
[main/WARN]: Error loading class: net/minecraft/class_442 (java.lang.ClassNotFoundException: net/minecraft/class_442)
[main/WARN]: @Mixin target net.minecraft.class_442 was not found mixins.modmenu.json:MixinTitleScreen

use
modmenu-1.7.15.1.14.4+build.127
fabric 0.4.1+build.245-1.14
loader 0.6.3+build.167
mapping 1.14.4+build.14

and the button does not display

Crash when opening mod menu (click mods button)

Crashes when pressing the mod menu button.

Clicked the button, text appears saying saving world, then this crash happens.

MultiMC version: 0.6.7-1375


Minecraft folder is:
C:/Users/--------/Downloads/Games/Minecraft/MultiMC/instances/multimc/.minecraft


Java path is:
C:/Program Files (x86)/Common Files/Oracle/Java/javapath/javaw.exe


Java is version 1.8.0_211, using 64-bit architecture.


Main Class:
  net.fabricmc.loader.launch.knot.KnotClient

Native path:
  C:/Users/--------/Downloads/Games/Minecraft/MultiMC/instances/multimc/natives

Traits:
traits FirstThreadOnMacOS

Libraries:
  C:/Users/--------/Downloads/Games/Minecraft/MultiMC/libraries/org/lwjgl/lwjgl/3.2.2/lwjgl-3.2.2.jar
  C:/Users/--------/Downloads/Games/Minecraft/MultiMC/libraries/org/lwjgl/lwjgl-jemalloc/3.2.2/lwjgl-jemalloc-3.2.2.jar
  C:/Users/--------/Downloads/Games/Minecraft/MultiMC/libraries/org/lwjgl/lwjgl-openal/3.2.2/lwjgl-openal-3.2.2.jar
  C:/Users/--------/Downloads/Games/Minecraft/MultiMC/libraries/org/lwjgl/lwjgl-opengl/3.2.2/lwjgl-opengl-3.2.2.jar
  C:/Users/--------/Downloads/Games/Minecraft/MultiMC/libraries/org/lwjgl/lwjgl-glfw/3.2.2/lwjgl-glfw-3.2.2.jar
  C:/Users/--------/Downloads/Games/Minecraft/MultiMC/libraries/org/lwjgl/lwjgl-stb/3.2.2/lwjgl-stb-3.2.2.jar
  C:/Users/--------/Downloads/Games/Minecraft/MultiMC/libraries/com/mojang/patchy/1.1/patchy-1.1.jar
  C:/Users/--------/Downloads/Games/Minecraft/MultiMC/libraries/oshi-project/oshi-core/1.1/oshi-core-1.1.jar
  C:/Users/--------/Downloads/Games/Minecraft/MultiMC/libraries/net/java/dev/jna/jna/4.4.0/jna-4.4.0.jar
  C:/Users/--------/Downloads/Games/Minecraft/MultiMC/libraries/net/java/dev/jna/platform/3.4.0/platform-3.4.0.jar
  C:/Users/--------/Downloads/Games/Minecraft/MultiMC/libraries/com/ibm/icu/icu4j-core-mojang/51.2/icu4j-core-mojang-51.2.jar
  C:/Users/--------/Downloads/Games/Minecraft/MultiMC/libraries/com/mojang/javabridge/1.0.22/javabridge-1.0.22.jar
  C:/Users/--------/Downloads/Games/Minecraft/MultiMC/libraries/net/sf/jopt-simple/jopt-simple/5.0.3/jopt-simple-5.0.3.jar
  C:/Users/--------/Downloads/Games/Minecraft/MultiMC/libraries/io/netty/netty-all/4.1.25.Final/netty-all-4.1.25.Final.jar
  C:/Users/--------/Downloads/Games/Minecraft/MultiMC/libraries/com/google/guava/guava/21.0/guava-21.0.jar
  C:/Users/--------/Downloads/Games/Minecraft/MultiMC/libraries/org/apache/commons/commons-lang3/3.5/commons-lang3-3.5.jar
  C:/Users/--------/Downloads/Games/Minecraft/MultiMC/libraries/commons-io/commons-io/2.5/commons-io-2.5.jar
  C:/Users/--------/Downloads/Games/Minecraft/MultiMC/libraries/commons-codec/commons-codec/1.10/commons-codec-1.10.jar
  C:/Users/--------/Downloads/Games/Minecraft/MultiMC/libraries/com/mojang/brigadier/1.0.17/brigadier-1.0.17.jar
  C:/Users/--------/Downloads/Games/Minecraft/MultiMC/libraries/com/mojang/datafixerupper/2.0.24/datafixerupper-2.0.24.jar
  C:/Users/--------/Downloads/Games/Minecraft/MultiMC/libraries/com/google/code/gson/gson/2.8.0/gson-2.8.0.jar
  C:/Users/--------/Downloads/Games/Minecraft/MultiMC/libraries/com/mojang/authlib/1.5.25/authlib-1.5.25.jar
  C:/Users/--------/Downloads/Games/Minecraft/MultiMC/libraries/org/apache/commons/commons-compress/1.8.1/commons-compress-1.8.1.jar
  C:/Users/--------/Downloads/Games/Minecraft/MultiMC/libraries/org/apache/httpcomponents/httpclient/4.3.3/httpclient-4.3.3.jar
  C:/Users/--------/Downloads/Games/Minecraft/MultiMC/libraries/commons-logging/commons-logging/1.1.3/commons-logging-1.1.3.jar
  C:/Users/--------/Downloads/Games/Minecraft/MultiMC/libraries/org/apache/httpcomponents/httpcore/4.3.2/httpcore-4.3.2.jar
  C:/Users/--------/Downloads/Games/Minecraft/MultiMC/libraries/it/unimi/dsi/fastutil/8.2.1/fastutil-8.2.1.jar
  C:/Users/--------/Downloads/Games/Minecraft/MultiMC/libraries/org/apache/logging/log4j/log4j-api/2.8.1/log4j-api-2.8.1.jar
  C:/Users/--------/Downloads/Games/Minecraft/MultiMC/libraries/org/apache/logging/log4j/log4j-core/2.8.1/log4j-core-2.8.1.jar
  C:/Users/--------/Downloads/Games/Minecraft/MultiMC/libraries/com/mojang/text2speech/1.11.3/text2speech-1.11.3.jar
  C:/Users/--------/Downloads/Games/Minecraft/MultiMC/libraries/net/fabricmc/fabric-loader/0.4.8+build.159/fabric-loader-0.4.8+build.159.jar
  C:/Users/--------/Downloads/Games/Minecraft/MultiMC/libraries/net/fabricmc/yarn/1.14.4+build.11/yarn-1.14.4+build.11.jar
  C:/Users/--------/Downloads/Games/Minecraft/MultiMC/libraries/net/fabricmc/tiny-mappings-parser/0.1.1.8/tiny-mappings-parser-0.1.1.8.jar
  C:/Users/--------/Downloads/Games/Minecraft/MultiMC/libraries/net/fabricmc/sponge-mixin/0.7.11.38/sponge-mixin-0.7.11.38.jar
  C:/Users/--------/Downloads/Games/Minecraft/MultiMC/libraries/net/fabricmc/tiny-remapper/0.1.0.33/tiny-remapper-0.1.0.33.jar
  C:/Users/--------/Downloads/Games/Minecraft/MultiMC/libraries/net/fabricmc/fabric-loader-sat4j/2.3.5.4/fabric-loader-sat4j-2.3.5.4.jar
  C:/Users/--------/Downloads/Games/Minecraft/MultiMC/libraries/com/google/jimfs/jimfs/1.1/jimfs-1.1.jar
  C:/Users/--------/Downloads/Games/Minecraft/MultiMC/libraries/org/ow2/asm/asm/7.1/asm-7.1.jar
  C:/Users/--------/Downloads/Games/Minecraft/MultiMC/libraries/org/ow2/asm/asm-analysis/7.1/asm-analysis-7.1.jar
  C:/Users/--------/Downloads/Games/Minecraft/MultiMC/libraries/org/ow2/asm/asm-commons/7.1/asm-commons-7.1.jar
  C:/Users/--------/Downloads/Games/Minecraft/MultiMC/libraries/org/ow2/asm/asm-tree/7.1/asm-tree-7.1.jar
  C:/Users/--------/Downloads/Games/Minecraft/MultiMC/libraries/org/ow2/asm/asm-util/7.1/asm-util-7.1.jar
  C:/Users/--------/Downloads/Games/Minecraft/MultiMC/libraries/com/mojang/minecraft/1.14.4/minecraft-1.14.4-client.jar

Native libraries:
  C:/Users/--------/Downloads/Games/Minecraft/MultiMC/libraries/org/lwjgl/lwjgl/3.2.2/lwjgl-3.2.2-natives-windows.jar
  C:/Users/--------/Downloads/Games/Minecraft/MultiMC/libraries/org/lwjgl/lwjgl-jemalloc/3.2.2/lwjgl-jemalloc-3.2.2-natives-windows.jar
  C:/Users/--------/Downloads/Games/Minecraft/MultiMC/libraries/org/lwjgl/lwjgl-openal/3.2.2/lwjgl-openal-3.2.2-natives-windows.jar
  C:/Users/--------/Downloads/Games/Minecraft/MultiMC/libraries/org/lwjgl/lwjgl-opengl/3.2.2/lwjgl-opengl-3.2.2-natives-windows.jar
  C:/Users/--------/Downloads/Games/Minecraft/MultiMC/libraries/org/lwjgl/lwjgl-glfw/3.2.2/lwjgl-glfw-3.2.2-natives-windows.jar
  C:/Users/--------/Downloads/Games/Minecraft/MultiMC/libraries/org/lwjgl/lwjgl-stb/3.2.2/lwjgl-stb-3.2.2-natives-windows.jar
  C:/Users/--------/Downloads/Games/Minecraft/MultiMC/libraries/com/mojang/text2speech/1.11.3/text2speech-1.11.3-natives-windows.jar

Mods:
  [✔️] cmdkeybind-1.2.1
  [✔️] fabric-api-0.3.1+build.208
  [✔️] fabricmod_VoxelMap-1.9.13_for_1.14.4
  [✔️] LightOverlay-3.4
  [✔️] litematica-fabric-1.14.4-0.0.0-dev.20190720.191654
  [✔️] malilib-fabric-1.14.4-0.10.0-dev.20
  [📁] mamiyaotaru (folder)
  [✔️] modmenu-1.7.9-unstable.19w34a+build.1
  [✔️] mousewheelie-1.2.13+1.14.4
  [✔️] orderly-1.1.1+build.16

Params:
  --username  --version MultiMC5 --gameDir C:/Users/--------/Downloads/Games/Minecraft/MultiMC/instances/multimc/.minecraft --assetsDir C:/Users/--------/Downloads/Games/Minecraft/MultiMC/assets --assetIndex 1.14 --uuid  --accessToken  --userType  --versionType release

Window size: 854 x 480

Java Arguments:
[-XX:HeapDumpPath=MojangTricksIntelDriversForPerformance_javaw.exe_minecraft.exe.heapdump, -Xms2048m, -Xmx4096m, -Duser.language=en]


Minecraft process ID: 10616


Using onesix launcher.

[19:23:57] [main/INFO]: Loading for game Minecraft 1.14.4
[19:24:00] [main/WARN]: Warnings were found! 
 - Conflicting versions found for fabric-keybindings-v0: used 0.1.1+7dfef87c42, also found 0.1.1+7dfef87c55
 - Conflicting versions found for fabric-api-base: used 0.1.0+5914746355, also found 0.1.0+b494ebeb42
 - Conflicting versions found for fabric-tag-extensions-v0: used 0.1.1+b494ebeb42, also found 0.1.1+c189dc5c55
 - Conflicting versions found for fabric-mining-levels-v0: used 0.1.0+59147463, also found 0.1.0+ab421b9c42
[19:24:00] [main/WARN]: Mod `lightoverlay` (3.4) uses 'requires' key in fabric.mod.json, which is not supported - use 'depends'
[19:24:00] [main/WARN]: Mod `voxelmap` (1.9.13) uses 'requires' key in fabric.mod.json, which is not supported - use 'depends'
[19:24:00] [main/WARN]: Mod `tweed` (2.2.2) uses 'requires' key in fabric.mod.json, which is not supported - use 'depends'
[19:24:00] [main/WARN]: Mod `cloth` (0.3.1+build.23) uses 'requires' key in fabric.mod.json, which is not supported - use 'depends'
[19:24:00] [main/INFO]: [FabricLoader] Loading 39 mods: [email protected]+9b03381f42, [email protected]+b494ebeb42, [email protected]+7dfef87c42, [email protected]+build.1, [email protected]+build.159, [email protected], [email protected]+f0fe03ff42, [email protected]+b494ebeb42, [email protected]+896c7fbb42, [email protected]+9f55aa7042, [email protected]+9f55aa7042, [email protected]+build.16, [email protected]+5914746355, [email protected]+6dad974e42, [email protected]+1.14.4, [email protected], [email protected]+b494ebeb42, [email protected]+232e294c42, [email protected]+b494ebeb42, [email protected], [email protected]+b494ebeb42, [email protected]+b494ebeb42, blue_endless_jankson@+, [email protected]+39442fc242, [email protected]+b494ebeb42, [email protected], [email protected]+9b03381f42, [email protected], [email protected]+59147463, [email protected], [email protected]+eff46b3d42, [email protected]+b494ebeb42, [email protected]+build.208, [email protected]+5914746342, [email protected]+1e69a0a542, [email protected]+9b03381f42, [email protected]+9f55aa7042, [email protected], [email protected]+build.23
[19:24:00] [main/WARN]: Mod `blue_endless_jankson` (+) does not respect SemVer - comparison support is limited.
[19:24:00] [main/INFO]: SpongePowered MIXIN Subsystem Version=0.7.11 Source=file:/C:/Users/--------/Downloads/Games/Minecraft/MultiMC/libraries/net/fabricmc/sponge-mixin/0.7.11.38/sponge-mixin-0.7.11.38.jar Service=Knot/Fabric Env=CLIENT
[19:24:01] [main/INFO]: Compatibility level set to JAVA_8
[19:24:02] [main/INFO]: Setting user: ---------
[19:24:06] [main/INFO]: [Indigo] Registering Indigo renderer!
[19:24:07] [main/INFO]: Reloaded configs for mousewheelie
[19:24:07] [main/WARN]: Skipping bad option: lastServer:
[19:24:07] [main/INFO]: LWJGL Version: 3.2.2 build 10
[19:24:13] [main/INFO]: Narrator library for x64 successfully loaded
AL lib: (EE) UpdateDeviceParams: Failed to set Stereo, got 7.1 Surround instead
AL lib: (EE) UpdateDeviceParams: Failed to set 44100hz, got 48000hz instead
[19:24:24] [main/INFO]: OpenAL initialized.
[19:24:24] [main/INFO]: Sound engine started
[19:24:24] [main/INFO]: Created: 1024x512 textures-atlas
[19:24:24] [main/INFO]: Created: 256x256 textures/particle-atlas
[19:24:24] [main/INFO]: Created: 256x256 textures/painting-atlas
[19:24:24] [main/INFO]: Created: 256x128 textures/mob_effect-atlas
[19:24:24] [main/INFO]: Reloaded configs for mousewheelie
[19:24:25] [main/INFO]: [STDOUT]: CATEGORY ORDER IS 9
[19:24:25] [main/INFO]: Created: 256x256 waypoints-atlas
[19:24:25] [main/INFO]: Created: 256x128 chooser-atlas
[19:24:26] [main/INFO]: Created: 512x256 mobs-atlas
[19:24:26] [main/INFO]: Created: 64x64 pings-atlas
[19:24:32] [main/INFO]: Connecting to ------, 25565
[19:24:34] [main/INFO]: [CHAT] --------- joined the game
[19:24:36] [main/WARN]: Received passengers for unknown entity
[19:24:36] [main/INFO]: Loaded 513 advancements
[19:24:36] [main/INFO]: [CHAT] Welcome, ---------!
[19:24:36] [main/INFO]: [CHAT] Type /help for a list of commands.
[19:24:36] [main/INFO]: [CHAT] Type /list to see who else is online.
[19:24:36] [main/INFO]: [CHAT] Players online: 3 - World time: 1:53 PM
[19:24:36] [main/INFO]: [CHAT] You have no new mail.
[19:24:42] [main/FATAL]: Reported exception thrown!
net.minecraft.class_148: Rendering screen
    at net.minecraft.class_757.method_3192(class_757.java:695) ~[intermediary-minecraft-1.14.4-client.jar:?]
    at net.minecraft.class_310.method_1523(class_310.java:954) ~[intermediary-minecraft-1.14.4-client.jar:?]
    at net.minecraft.class_310.method_1514(class_310.java:410) [intermediary-minecraft-1.14.4-client.jar:?]
    at net.minecraft.client.main.Main.main(Main.java:155) [intermediary-minecraft-1.14.4-client.jar:?]
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[?:1.8.0_211]
    at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) ~[?:1.8.0_211]
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) ~[?:1.8.0_211]
    at java.lang.reflect.Method.invoke(Unknown Source) ~[?:1.8.0_211]
    at net.fabricmc.loader.game.MinecraftGameProvider.launch(MinecraftGameProvider.java:170) [fabric-loader-0.4.8+build.159.jar:?]
    at net.fabricmc.loader.launch.knot.Knot.init(Knot.java:129) [fabric-loader-0.4.8+build.159.jar:?]
    at net.fabricmc.loader.launch.knot.KnotClient.main(KnotClient.java:26) [fabric-loader-0.4.8+build.159.jar:?]
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[?:1.8.0_211]
    at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) ~[?:1.8.0_211]
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) ~[?:1.8.0_211]
    at java.lang.reflect.Method.invoke(Unknown Source) ~[?:1.8.0_211]
    at org.multimc.onesix.OneSixLauncher.launchWithMainClass(OneSixLauncher.java:196) [NewLaunch.jar:?]
    at org.multimc.onesix.OneSixLauncher.launch(OneSixLauncher.java:231) [NewLaunch.jar:?]
    at org.multimc.EntryPoint.listen(EntryPoint.java:143) [NewLaunch.jar:?]
    at org.multimc.EntryPoint.main(EntryPoint.java:34) [NewLaunch.jar:?]
Caused by: java.lang.NoClassDefFoundError: com/mojang/blaze3d/systems/RenderSystem
    at io.github.prospector.modmenu.gui.ModListScreen.overlayBackground(ModListScreen.java:294) ~[modmenu-1.7.9-unstable.19w34a+build.1.jar:?]
    at io.github.prospector.modmenu.gui.ModListScreen.render(ModListScreen.java:231) ~[modmenu-1.7.9-unstable.19w34a+build.1.jar:?]
    at net.minecraft.class_757.method_3192(class_757.java:686) ~[intermediary-minecraft-1.14.4-client.jar:?]
    ... 18 more
Caused by: java.lang.ClassNotFoundException: com.mojang.blaze3d.systems.RenderSystem
    at java.net.URLClassLoader.findClass(Unknown Source) ~[?:1.8.0_211]
    at java.lang.ClassLoader.loadClass(Unknown Source) ~[?:1.8.0_211]
    at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source) ~[?:1.8.0_211]
    at java.lang.ClassLoader.loadClass(Unknown Source) ~[?:1.8.0_211]
    at net.fabricmc.loader.launch.knot.KnotClassLoader.loadClass(KnotClassLoader.java:160) ~[fabric-loader-0.4.8+build.159.jar:?]
    at java.lang.ClassLoader.loadClass(Unknown Source) ~[?:1.8.0_211]
    at io.github.prospector.modmenu.gui.ModListScreen.overlayBackground(ModListScreen.java:294) ~[modmenu-1.7.9-unstable.19w34a+build.1.jar:?]
    at io.github.prospector.modmenu.gui.ModListScreen.render(ModListScreen.java:231) ~[modmenu-1.7.9-unstable.19w34a+build.1.jar:?]
    at net.minecraft.class_757.method_3192(class_757.java:686) ~[intermediary-minecraft-1.14.4-client.jar:?]
    ... 18 more
---- Minecraft Crash Report ----
// You should try our sister game, Minceraft!

Time: 28/08/19 19:24
Description: Rendering screen

java.lang.NoClassDefFoundError: com/mojang/blaze3d/systems/RenderSystem
    at io.github.prospector.modmenu.gui.ModListScreen.overlayBackground(ModListScreen.java:294)
    at io.github.prospector.modmenu.gui.ModListScreen.render(ModListScreen.java:231)
    at net.minecraft.class_757.method_3192(class_757.java:686)
    at net.minecraft.class_310.method_1523(class_310.java:954)
    at net.minecraft.class_310.method_1514(class_310.java:410)
    at net.minecraft.client.main.Main.main(Main.java:155)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
    at java.lang.reflect.Method.invoke(Unknown Source)
    at net.fabricmc.loader.game.MinecraftGameProvider.launch(MinecraftGameProvider.java:170)
    at net.fabricmc.loader.launch.knot.Knot.init(Knot.java:129)
    at net.fabricmc.loader.launch.knot.KnotClient.main(KnotClient.java:26)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
    at java.lang.reflect.Method.invoke(Unknown Source)
    at org.multimc.onesix.OneSixLauncher.launchWithMainClass(OneSixLauncher.java:196)
    at org.multimc.onesix.OneSixLauncher.launch(OneSixLauncher.java:231)
    at org.multimc.EntryPoint.listen(EntryPoint.java:143)
    at org.multimc.EntryPoint.main(EntryPoint.java:34)
Caused by: java.lang.ClassNotFoundException: com.mojang.blaze3d.systems.RenderSystem
    at java.net.URLClassLoader.findClass(Unknown Source)
    at java.lang.ClassLoader.loadClass(Unknown Source)
    at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source)
    at java.lang.ClassLoader.loadClass(Unknown Source)
    at net.fabricmc.loader.launch.knot.KnotClassLoader.loadClass(KnotClassLoader.java:160)
    at java.lang.ClassLoader.loadClass(Unknown Source)
    ... 21 more


A detailed walkthrough of the error, its code path and all known details is as follows:
---------------------------------------------------------------------------------------

-- Head --
Thread: Client thread
Stacktrace:
    at io.github.prospector.modmenu.gui.ModListScreen.overlayBackground(ModListScreen.java:294)
    at io.github.prospector.modmenu.gui.ModListScreen.render(ModListScreen.java:231)

-- Screen render details --
Details:
    Screen name: io.github.prospector.modmenu.gui.ModListScreen
    Mouse location: Scaled: (485, 204). Absolute: (970.000000, 408.000000)
    Screen size: Scaled: (960, 509). Absolute: (1920, 1017). Scale factor of 2.000000

-- Affected level --
Details:
    All players: 2 total; [class_746['---------'/60695, l='MpServer', x=206.70, y=7.00, z=-100.70], class_745['SoulRetriever'/59265, l='MpServer', x=206.70, y=7.00, z=-99.30]]
    Chunk stats: Client Chunk Cache: 729, 471
    Level dimension: minecraft:overworld
    Level name: MpServer
    Level seed: 0
    Level generator: ID 00 - default, ver 1. Features enabled: false
    Level generator options: {}
    Level spawn location: World: (105,74,-74), Chunk: (at 9,4,6 in 6,-5; contains blocks 96,0,-80 to 111,255,-65), Region: (0,-1; contains chunks 0,-32 to 31,-1, blocks 0,0,-512 to 511,255,-1)
    Level time: 22532 game time, 12224046 day time
    Level storage version: 0x00000 - Unknown?
    Level weather: Rain time: 0 (now: false), thunder time: 0 (now: false)
    Level game mode: Game mode: survival (ID 0). Hardcore: false. Cheats: false
    Server brand: Paper
    Server type: Non-integrated multiplayer server
Stacktrace:
    at net.minecraft.class_638.method_8538(class_638.java:421)
    at net.minecraft.class_310.method_1587(class_310.java:1923)
    at net.minecraft.class_310.method_1514(class_310.java:425)
    at net.minecraft.client.main.Main.main(Main.java:155)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
    at java.lang.reflect.Method.invoke(Unknown Source)
    at net.fabricmc.loader.game.MinecraftGameProvider.launch(MinecraftGameProvider.java:170)
    at net.fabricmc.loader.launch.knot.Knot.init(Knot.java:129)
    at net.fabricmc.loader.launch.knot.KnotClient.main(KnotClient.java:26)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
    at java.lang.reflect.Method.invoke(Unknown Source)
    at org.multimc.onesix.OneSixLauncher.launchWithMainClass(OneSixLauncher.java:196)
    at org.multimc.onesix.OneSixLauncher.launch(OneSixLauncher.java:231)
    at org.multimc.EntryPoint.listen(EntryPoint.java:143)
    at org.multimc.EntryPoint.main(EntryPoint.java:34)

-- System Details --
Details:
    Minecraft Version: 1.14.4
    Minecraft Version ID: 1.14.4
    Operating System: Windows 10 (amd64) version 10.0
    Java Version: 1.8.0_211, Oracle Corporation
    Java VM Version: Java HotSpot(TM) 64-Bit Server VM (mixed mode), Oracle Corporation
    Memory: 3256838472 bytes (3105 MB) / 3928489984 bytes (3746 MB) up to 3928489984 bytes (3746 MB)
    CPUs: 4
    JVM Flags: 3 total; -XX:HeapDumpPath=MojangTricksIntelDriversForPerformance_javaw.exe_minecraft.exe.heapdump -Xms2048m -Xmx4096m
    Fabric Mods: 
        blue_endless_jankson: jankson +
        cloth: Cloth Events 0.3.1+build.23
        cloth-config2: Cloth Config v2 1.0.0
        cmdkeybind: Command Macros 1.2.1
        fabric: Fabric API 0.3.1+build.208
        fabric-api-base: fabric-api-base 0.1.0+5914746355
        fabric-biomes-v1: fabric-biomes-v1 0.1.0+896c7fbb42
        fabric-commands-v0: fabric-commands-v0 0.1.1+b494ebeb42
        fabric-containers-v0: fabric-containers-v0 0.1.2+b494ebeb42
        fabric-content-registries-v0: fabric-content-registries-v0 0.1.1+b494ebeb42
        fabric-crash-report-info-v1: fabric-crash-report-info-v1 0.1.1+9f55aa7042
        fabric-events-interaction-v0: fabric-events-interaction-v0 0.1.1+9f55aa7042
        fabric-events-lifecycle-v0: fabric-events-lifecycle-v0 0.1.1+eff46b3d42
        fabric-item-groups-v0: fabric-item-groups-v0 0.1.0+1e69a0a542
        fabric-keybindings-v0: fabric-keybindings-v0 0.1.1+7dfef87c42
        fabric-loot-tables-v1: fabric-loot-tables-v1 0.1.0+b494ebeb42
        fabric-mining-levels-v0: fabric-mining-levels-v0 0.1.0+59147463
        fabric-models-v0: fabric-models-v0 0.1.0+5914746342
        fabric-networking-blockentity-v0: fabric-networking-blockentity-v0 0.1.1+b494ebeb42
        fabric-networking-v0: fabric-networking-v0 0.1.3+9f55aa7042
        fabric-object-builders-v0: fabric-object-builders-v0 0.1.1+9b03381f42
        fabric-registry-sync-v0: fabric-registry-sync-v0 0.2.2+9b03381f42
        fabric-renderer-api-v1: fabric-renderer-api-v1 0.1.1+9b03381f42
        fabric-renderer-indigo: fabric-renderer-indigo 0.1.10+f0fe03ff42
        fabric-rendering-data-attachment-v1: fabric-rendering-data-attachment-v1 0.1.0+b494ebeb42
        fabric-rendering-fluids-v1: fabric-rendering-fluids-v1 0.1.1+39442fc242
        fabric-rendering-v0: fabric-rendering-v0 0.1.1+6dad974e42
        fabric-resource-loader-v0: fabric-resource-loader-v0 0.1.2+232e294c42
        fabric-tag-extensions-v0: fabric-tag-extensions-v0 0.1.1+b494ebeb42
        fabric-textures-v0: fabric-textures-v0 0.1.4+b494ebeb42
        fabricloader: Fabric Loader 0.4.8+build.159
        lightoverlay: Light Overlay 3.4
        litematica: Litematica 0.0.0-dev.20190720.191654
        malilib: MaLiLib 0.10.0-dev.20
        modmenu: Mod Menu 1.7.9-unstable.19w34a+build.1
        mousewheelie: Mouse Wheelie 1.2.13+1.14.4
        orderly: Orderly 1.1.1+build.16
        tweed: Tweed API 2.2.2
        voxelmap: VoxelMap 1.9.13
    Launched Version: MultiMC5
    LWJGL: 3.2.2 build 10
    OpenGL: GeForce GTX 1070/PCIe/SSE2 GL version 4.6.0 NVIDIA 417.71, NVIDIA Corporation
    GL Caps: Using GL 1.3 multitexturing.
Using GL 1.3 texture combiners.
Using framebuffer objects because OpenGL 3.0 is supported and separate blending is supported.
Shaders are available because OpenGL 2.1 is supported.
VBOs are available because OpenGL 1.5 is supported.

    Using VBOs: Yes
    Is Modded: Definitely; Client brand changed to 'fabric'
    Type: Client (map_client.txt)
    Resource Packs: vanilla
    Current Language: English (US)
    CPU: 4x Intel(R) Core(TM) i5-4590 CPU @ 3.30GHz
#@!@# Game crashed! Crash report saved to: #@!@# C:\Users\--------\Downloads\Games\Minecraft\MultiMC\instances\multimc\.minecraft\crash-reports\crash-2019-08-28_19.24.42-client.txt
AL lib: (EE) alc_cleanup: 1 device not closed
Process exited with code -1.
Clipboard copy at: 28 Aug 2019 19:24:48 +0100
Clipboard copy at: 28 Aug 2019 19:26:43 +0100

Buttons on the Title Screen get moved around

For some reason buttons are always pushed either up (above the mods button) or down (below the mods button) depending on window size.

One example being the pony button that jumps between positions as you resize the window:

Also less noticeable, the pants button was being moved down. Here's what it's supposed to look like given the positions I specified when adding the buttons:

I had to force them back to their original positions using a future call like this:

  MinecraftClient.getInstance().execute(() -> {
      button.y = y;
  });

I feel like Mod Menu should actually check whether a button is going to overlap before it goes moving everything around.

Crash when Mod Menu screen re-inits with an empty list

Affected versions:
Up to 1.7.8+build.117

Steps to reproduce:

  • Open ModMenu gui
  • Turn on libraries if you have to to get a gui with a config
  • Click on a library which has a config and a working Done / back button. LibGui has such a button.
  • Type into the search bar until no mods are showing
  • Go into the config of the mod you had selected
  • Hit "Done" or back out of the config to the ModMenu Screen

Expected result:
ModMenu screen appears, and either the search box is cleared or the interface looks the same way we left it

Observed result:
Hard crash as ModMenu appears to look up the selected item from the [empty] list.
https://gist.github.com/falkreon/265cfe5edcc8eb10023a6ea64cb0d9e3

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.