瀏覽代碼

Merge branch '1.14-dev' into 1.14

Daniel She 6 年之前
父節點
當前提交
d27150b3d8

+ 5 - 0
CHANGELOG.md

@@ -1,4 +1,9 @@
 View full changelog [here](https://github.com/shedaniel/RoughlyEnoughItems/blob/1.14/CHANGELOG.md).
+## v2.9+build.112
+- Fixed: ConcurrentModificationException crash in opening all recipes
+- Fixed: Defaulted cheating command to `minecraft:give` instead of `give`
+- Fixed: Can't cheat a stack of items on servers
+- Fixed [#88](https://github.com/shedaniel/RoughlyEnoughItems/issues/88): Stupid Item Search
 ## v2.9+build.111
 - Added: Buttons to switch category page in original recipe viewing screen
 - Updated: Mappings to 1.14.1

+ 1 - 1
gradle.properties

@@ -1,4 +1,4 @@
-mod_version=2.9+build.111
+mod_version=2.9+build.112
 minecraft_version=1.14.1
 yarn_version=1.14.1+build.10
 fabricloader_version=0.4.7+build.147

+ 8 - 0
src/main/java/me/shedaniel/rei/RoughlyEnoughItemsCore.java

@@ -74,6 +74,14 @@ public class RoughlyEnoughItemsCore implements ClientModInitializer {
         return DISPLAY_HELPER;
     }
     
+    /**
+     * Registers a REI plugin
+     *
+     * @param identifier the identifier of the plugin
+     * @param plugin     the plugin instance
+     * @deprecated Check REI wiki
+     */
+    @Deprecated
     public static REIPluginEntry registerPlugin(Identifier identifier, REIPluginEntry plugin) {
         plugins.put(identifier, plugin);
         RoughlyEnoughItemsCore.LOGGER.info("[REI] Registered plugin %s from %s", identifier.toString(), plugin.getClass().getSimpleName());

+ 1 - 1
src/main/java/me/shedaniel/rei/client/ClientHelperImpl.java

@@ -150,7 +150,7 @@ public class ClientHelperImpl implements ClientHelper, ClientModInitializer {
         } else {
             Identifier identifier = Registry.ITEM.getId(cheatedStack.getItem());
             String tagMessage = cheatedStack.copy().getTag() != null && !cheatedStack.copy().getTag().isEmpty() ? cheatedStack.copy().getTag().asString() : "";
-            String og = cheatedStack.getAmount() != 1 ? RoughlyEnoughItemsCore.getConfigManager().getConfig().giveCommand.replaceAll(" \\{count}", "").replaceAll("\\{count}", "") : RoughlyEnoughItemsCore.getConfigManager().getConfig().giveCommand;
+            String og = cheatedStack.getAmount() == 1 ? RoughlyEnoughItemsCore.getConfigManager().getConfig().giveCommand.replaceAll(" \\{count}", "") : RoughlyEnoughItemsCore.getConfigManager().getConfig().giveCommand;
             String madeUpCommand = og.replaceAll("\\{player_name}", MinecraftClient.getInstance().player.getEntityName()).replaceAll("\\{item_name}", identifier.getPath()).replaceAll("\\{item_identifier}", identifier.toString()).replaceAll("\\{nbt}", tagMessage).replaceAll("\\{count}", String.valueOf(cheatedStack.getAmount()));
             if (madeUpCommand.length() > 256) {
                 madeUpCommand = og.replaceAll("\\{player_name}", MinecraftClient.getInstance().player.getEntityName()).replaceAll("\\{item_name}", identifier.getPath()).replaceAll("\\{item_identifier}", identifier.toString()).replaceAll("\\{nbt}", "").replaceAll("\\{count}", String.valueOf(cheatedStack.getAmount()));

+ 1 - 1
src/main/java/me/shedaniel/rei/client/ConfigObject.java

@@ -25,7 +25,7 @@ public class ConfigObject {
     public boolean sideSearchField = false;
     
     @Comment("The command used in servers to cheat items")
-    public String giveCommand = "/give {player_name} {item_identifier}{nbt} {count}";
+    public String giveCommand = "/minecraft:give {player_name} {item_identifier}{nbt} {count}";
     
     @Comment("The command used to change gamemode") public String gamemodeCommand = "/gamemode {gamemode}";
     

+ 7 - 9
src/main/java/me/shedaniel/rei/client/RecipeHelperImpl.java

@@ -15,8 +15,8 @@ import net.minecraft.recipe.RecipeManager;
 import net.minecraft.util.Identifier;
 
 import java.awt.*;
-import java.util.*;
 import java.util.List;
+import java.util.*;
 import java.util.concurrent.atomic.AtomicInteger;
 import java.util.stream.Collectors;
 
@@ -257,15 +257,13 @@ public class RecipeHelperImpl implements RecipeHelper {
     @Override
     public Map<RecipeCategory, List<RecipeDisplay>> getAllRecipes() {
         Map<RecipeCategory, List<RecipeDisplay>> map = Maps.newLinkedHashMap();
-        Map<Identifier, List<RecipeDisplay>> tempMap = Maps.newLinkedHashMap();
-        recipeCategoryListMap.forEach((identifier, recipeDisplays) -> tempMap.put(identifier, new LinkedList<>(recipeDisplays)));
-        categories.forEach(category -> {
-            if (tempMap.containsKey(category.getIdentifier()))
-                map.put(category, tempMap.get(category.getIdentifier()).stream().filter(display -> isDisplayVisible(display, true)).collect(Collectors.toList()));
+        categories.forEach(recipeCategory -> {
+            if (recipeCategoryListMap.containsKey(recipeCategory.getIdentifier())) {
+                List<RecipeDisplay> list = recipeCategoryListMap.get(recipeCategory.getIdentifier()).stream().filter(display -> isDisplayVisible(display, true)).collect(Collectors.toList());
+                if (!list.isEmpty())
+                    map.put(recipeCategory, list);
+            }
         });
-        for(RecipeCategory category : map.keySet())
-            if (map.get(category).isEmpty())
-                map.remove(category);
         return map;
     }
     

+ 2 - 2
src/main/java/me/shedaniel/rei/gui/widget/ItemListOverlay.java

@@ -256,11 +256,11 @@ public class ItemListOverlay extends Widget {
         return lastSearchArgument;
     }
     
-    public boolean filterItem(ItemStack itemStack, List<SearchArgument[]> arguments) {
+    public static boolean filterItem(ItemStack itemStack, List<SearchArgument[]> arguments) {
         if (arguments.isEmpty())
             return true;
         String mod = ClientHelper.getInstance().getModFromItem(itemStack.getItem()).toLowerCase();
-        String tooltips = tryGetItemStackToolTip(itemStack, false).stream().skip(1).collect(Collectors.joining("")).replace(SPACE, EMPTY).toLowerCase();
+        String tooltips = tryGetItemStackToolTip(itemStack, true).stream().skip(1).collect(Collectors.joining("")).replace(SPACE, EMPTY).toLowerCase();
         String name = tryGetItemStackName(itemStack).replace(SPACE, EMPTY).toLowerCase();
         for(SearchArgument[] arguments1 : arguments) {
             boolean b = true;