Recipe book entries are no longer sorted in any meaningful manner
Recipe book entries are not sorted in any meaningful manner (even changing randomly upon reloading) leading to inconsistent and confusing usage of the recipe book. This is especially interesting, considering that the recipe book used to be sorted alphabetically, and that block sets were grouped together. Here is a demonstration:
2024-04-28_16-27-39.mp4
How to reproduce
- Give the player all vanilla recipes
/recipe give @p *
- Place down a crafting table
- Open the recipe book
- Set to "Showing All" mode
Observed & Expected behavior
- The item recipes will be randomly placed with no real rhyme or reason for where they are inside each category, leaving the player to search through each category randomly to find the item they want to craft.
- Each recipe entry would be neatly sorted by item type, colors, category, etc. just as the creative inventory is currently.
Suggested fix:
Either sort the recipe book categories by their alphabetical order, color, id, or just as the creative inventory is done.
Code analysis:
(Mappings: MCP Reborn 1.20.2 // Class: RecipeBookComponent.java // Method: updateCollections(boolean)):
private void updateCollections(boolean p_100383_) { List<RecipeCollection> list = this.book.getCollection(this.selectedTab.getCategory()); list.forEach((p_296197_) -> p_296197_.canCraft(this.stackedContents, this.menu.getGridWidth(), this.menu.getGridHeight(), this.book)); List<RecipeCollection> list1 = Lists.newArrayList(list); list1.removeIf((p_100368_) -> !p_100368_.hasKnownRecipes()); list1.removeIf((p_100360_) -> !p_100360_.hasFitting()); String s = this.searchBox.getValue(); if (!s.isEmpty()) { ObjectSet<RecipeCollection> objectset = new ObjectLinkedOpenHashSet<>(this.minecraft.getSearchTree(SearchRegistry.RECIPE_COLLECTIONS).search(s.toLowerCase(Locale.ROOT))); list1.removeIf((p_301525_) -> !objectset.contains(p_301525_)); } if (this.book.isFiltering(this.menu)) { list1.removeIf((p_100331_) -> !p_100331_.hasCraftable()); } this.recipeBookPage.updateCollections(list1, p_100383_); }
Here, the result list list1 is not sorted in any way before passing it to RecipeBookPage.updateCollections, which does pagination and layout of the recipes onto the buttons of each page.
2018-01-02, 12:57 AM
2024-10-30, 10:54 AM
2024-10-30, 10:54 AM
23
14
category, recipe-book, sorting
Minecraft 1.12.2 - 1.21
Minecraft 1.12.2, Minecraft 17w50a, Minecraft 1.13-pre1, Minecraft 1.13.1, 1.15.1, 1.15.2 Pre-release 2, 1.15.2, 20w21a, 1.16.1, 20w27a, 21w03a, 1.16.5, 21w08b, 1.19.3, 1.20.2, 23w46a, 1.20.3 Pre-Release 1, 1.20.3 Pre-Release 3, 1.20.3 Pre-Release 4, 1.20.3, 1.20.4, 24w04a, 24w07a, 24w09a, 24w11a, 1.20.5 Pre-Release 1, 1.20.5, 1.21