瀏覽代碼

Update Mappings

Unknown 6 年之前
父節點
當前提交
5774c72471
共有 28 個文件被更改,包括 160 次插入122 次删除
  1. 11 11
      build.gradle
  2. 6 6
      gradle.properties
  3. 34 23
      src/main/java/me/shedaniel/rei/RoughlyEnoughItemsCore.java
  4. 7 7
      src/main/java/me/shedaniel/rei/RoughlyEnoughItemsNetwork.java
  5. 0 5
      src/main/java/me/shedaniel/rei/api/DisplayHelper.java
  6. 2 2
      src/main/java/me/shedaniel/rei/client/BaseBoundsHandlerImpl.java
  7. 2 2
      src/main/java/me/shedaniel/rei/client/ClientHelperImpl.java
  8. 2 2
      src/main/java/me/shedaniel/rei/client/ConfigManagerImpl.java
  9. 2 2
      src/main/java/me/shedaniel/rei/client/DisplayHelperImpl.java
  10. 1 0
      src/main/java/me/shedaniel/rei/client/ItemRegistryImpl.java
  11. 4 4
      src/main/java/me/shedaniel/rei/gui/ContainerScreenOverlay.java
  12. 3 3
      src/main/java/me/shedaniel/rei/gui/PreRecipeViewingScreen.java
  13. 8 8
      src/main/java/me/shedaniel/rei/gui/RecipeViewingScreen.java
  14. 25 6
      src/main/java/me/shedaniel/rei/gui/VillagerRecipeViewingScreen.java
  15. 2 2
      src/main/java/me/shedaniel/rei/gui/credits/CreditsEntryListWidget.java
  16. 4 4
      src/main/java/me/shedaniel/rei/gui/credits/CreditsScreen.java
  17. 4 4
      src/main/java/me/shedaniel/rei/gui/widget/ButtonWidget.java
  18. 3 3
      src/main/java/me/shedaniel/rei/gui/widget/DetailedButtonWidget.java
  19. 4 3
      src/main/java/me/shedaniel/rei/gui/widget/ItemListOverlay.java
  20. 1 1
      src/main/java/me/shedaniel/rei/gui/widget/SearchFieldWidget.java
  21. 4 4
      src/main/java/me/shedaniel/rei/mixin/MixinBrewingRecipeRegistry.java
  22. 4 3
      src/main/java/me/shedaniel/rei/plugin/DefaultBlastingCategory.java
  23. 5 3
      src/main/java/me/shedaniel/rei/plugin/DefaultBrewingCategory.java
  24. 5 3
      src/main/java/me/shedaniel/rei/plugin/DefaultCampfireCategory.java
  25. 5 3
      src/main/java/me/shedaniel/rei/plugin/DefaultCraftingCategory.java
  26. 3 2
      src/main/java/me/shedaniel/rei/plugin/DefaultSmeltingCategory.java
  27. 4 3
      src/main/java/me/shedaniel/rei/plugin/DefaultSmokingCategory.java
  28. 5 3
      src/main/java/me/shedaniel/rei/plugin/DefaultStoneCuttingCategory.java

+ 11 - 11
build.gradle

@@ -1,7 +1,7 @@
 import net.fabricmc.loom.task.RemapJar
 import net.fabricmc.loom.task.RemapJar
 
 
 plugins {
 plugins {
-    id 'fabric-loom' version '0.2.1-SNAPSHOT'
+    id 'fabric-loom' version '0.2.2-SNAPSHOT'
     id "com.github.johnrengelman.shadow" version "4.0.3"
     id "com.github.johnrengelman.shadow" version "4.0.3"
 }
 }
 
 
@@ -51,20 +51,20 @@ dependencies {
     mappings "net.fabricmc:yarn:${project.yarn_version}"
     mappings "net.fabricmc:yarn:${project.yarn_version}"
     modCompile "net.fabricmc:fabric-loader:${project.fabricloader_version}"
     modCompile "net.fabricmc:fabric-loader:${project.fabricloader_version}"
 //    modCompile "net.fabricmc:fabric:${project.fabric_version}"
 //    modCompile "net.fabricmc:fabric:${project.fabric_version}"
-    modCompile "net.fabricmc.fabric-api:fabric-keybindings:${project.fabric_keybindings}"
-    modCompile "net.fabricmc.fabric-api:fabric-lib:${project.fabric_lib}"
-    modCompile "net.fabricmc.fabric-api:fabric-networking:${project.fabric_networking}"
-    modCompile "net.fabricmc.fabric-api:fabric-events-lifecycle:${project.fabric_events_lifecycle}"
-    modCompile "net.fabricmc.fabric-api:fabric-resource-loader:${project.fabric_resource_loader}"
+    modCompile "net.fabricmc.fabric-api:fabric-keybindings-v0:${project.fabric_keybindings}"
+    modCompile "net.fabricmc.fabric-api:fabric-api-base:${project.fabric_api_base}"
+    modCompile "net.fabricmc.fabric-api:fabric-networking-v0:${project.fabric_networking}"
+    modCompile "net.fabricmc.fabric-api:fabric-events-lifecycle-v0:${project.fabric_events_lifecycle}"
+    modCompile "net.fabricmc.fabric-api:fabric-resource-loader-v0:${project.fabric_resource_loader}"
     modCompile "cloth:ClothEvents:${cloth_events_version}"
     modCompile "cloth:ClothEvents:${cloth_events_version}"
     modCompile "cloth-config:ClothConfig:${cloth_config_version}"
     modCompile "cloth-config:ClothConfig:${cloth_config_version}"
     if (includeDep) {
     if (includeDep) {
 //        include "net.fabricmc:fabric:${project.fabric_version}"
 //        include "net.fabricmc:fabric:${project.fabric_version}"
-        include "net.fabricmc.fabric-api:fabric-keybindings:${project.fabric_keybindings}"
-        include "net.fabricmc.fabric-api:fabric-lib:${project.fabric_lib}"
-        include "net.fabricmc.fabric-api:fabric-networking:${project.fabric_networking}"
-        include "net.fabricmc.fabric-api:fabric-events-lifecycle:${project.fabric_events_lifecycle}"
-        include "net.fabricmc.fabric-api:fabric-resource-loader:${project.fabric_resource_loader}"
+        include "net.fabricmc.fabric-api:fabric-keybindings-v0:${project.fabric_keybindings}"
+        include "net.fabricmc.fabric-api:fabric-api-base:${project.fabric_api_base}"
+        include "net.fabricmc.fabric-api:fabric-networking-v0:${project.fabric_networking}"
+        include "net.fabricmc.fabric-api:fabric-events-lifecycle-v0:${project.fabric_events_lifecycle}"
+        include "net.fabricmc.fabric-api:fabric-resource-loader-v0:${project.fabric_resource_loader}"
         include "cloth:ClothEvents:${cloth_events_version}"
         include "cloth:ClothEvents:${cloth_events_version}"
         include "cloth-config:ClothConfig:${cloth_config_version}"
         include "cloth-config:ClothConfig:${cloth_config_version}"
     }
     }

+ 6 - 6
gradle.properties

@@ -1,6 +1,6 @@
 mod_version=2.9-beta+build.109
 mod_version=2.9-beta+build.109
 minecraft_version=1.14
 minecraft_version=1.14
-yarn_version=1.14+build.5
+yarn_version=1.14+build.21
 fabricloader_version=0.4.6+build.141
 fabricloader_version=0.4.6+build.141
 jankson_version=1.1.0
 jankson_version=1.1.0
 cloth_events_version=0.3.1.23
 cloth_events_version=0.3.1.23
@@ -8,8 +8,8 @@ cloth_config_version=0.2.1.14
 modmenu_version=1.4.0-71
 modmenu_version=1.4.0-71
 fabric_version=0.2.7+build.127
 fabric_version=0.2.7+build.127
 
 
-fabric_keybindings=0.1.0+93af775a
-fabric_lib=0.1.0+93af775a
-fabric_networking=0.1.0+93af775a
-fabric_events_lifecycle=0.1.0+93af775a
-fabric_resource_loader=0.1.0+93af775a
+fabric_keybindings=0.1.0+f1618918
+fabric_networking=0.1.0+f1618918
+fabric_events_lifecycle=0.1.0+9232ac87
+fabric_resource_loader=0.1.0+f1618918
+fabric_api_base=0.1.0+f1618918

+ 34 - 23
src/main/java/me/shedaniel/rei/RoughlyEnoughItemsCore.java

@@ -41,7 +41,7 @@ import java.util.Optional;
 import java.util.stream.Collectors;
 import java.util.stream.Collectors;
 
 
 public class RoughlyEnoughItemsCore implements ClientModInitializer {
 public class RoughlyEnoughItemsCore implements ClientModInitializer {
-
+    
     public static final Logger LOGGER;
     public static final Logger LOGGER;
     private static final RecipeHelper RECIPE_HELPER = new RecipeHelperImpl();
     private static final RecipeHelper RECIPE_HELPER = new RecipeHelperImpl();
     private static final PluginDisabler PLUGIN_DISABLER = new PluginDisablerImpl();
     private static final PluginDisabler PLUGIN_DISABLER = new PluginDisablerImpl();
@@ -49,70 +49,80 @@ public class RoughlyEnoughItemsCore implements ClientModInitializer {
     private static final DisplayHelper DISPLAY_HELPER = new DisplayHelperImpl();
     private static final DisplayHelper DISPLAY_HELPER = new DisplayHelperImpl();
     private static final Map<Identifier, REIPluginEntry> plugins = Maps.newHashMap();
     private static final Map<Identifier, REIPluginEntry> plugins = Maps.newHashMap();
     private static ConfigManagerImpl configManager;
     private static ConfigManagerImpl configManager;
-
+    
     static {
     static {
         LOGGER = LogManager.getFormatterLogger("REI");
         LOGGER = LogManager.getFormatterLogger("REI");
     }
     }
-
+    
     public static RecipeHelper getRecipeHelper() {
     public static RecipeHelper getRecipeHelper() {
         return RECIPE_HELPER;
         return RECIPE_HELPER;
     }
     }
-
+    
     public static me.shedaniel.rei.api.ConfigManager getConfigManager() {
     public static me.shedaniel.rei.api.ConfigManager getConfigManager() {
         return configManager;
         return configManager;
     }
     }
-
+    
     public static ItemRegistry getItemRegisterer() {
     public static ItemRegistry getItemRegisterer() {
         return ITEM_REGISTRY;
         return ITEM_REGISTRY;
     }
     }
-
+    
     public static PluginDisabler getPluginDisabler() {
     public static PluginDisabler getPluginDisabler() {
         return PLUGIN_DISABLER;
         return PLUGIN_DISABLER;
     }
     }
-
+    
     public static DisplayHelper getDisplayHelper() {
     public static DisplayHelper getDisplayHelper() {
         return DISPLAY_HELPER;
         return DISPLAY_HELPER;
     }
     }
-
+    
     public static REIPluginEntry registerPlugin(Identifier identifier, REIPluginEntry plugin) {
     public static REIPluginEntry registerPlugin(Identifier identifier, REIPluginEntry plugin) {
         plugins.put(identifier, plugin);
         plugins.put(identifier, plugin);
         RoughlyEnoughItemsCore.LOGGER.info("[REI] Registered plugin %s from %s", identifier.toString(), plugin.getClass().getSimpleName());
         RoughlyEnoughItemsCore.LOGGER.info("[REI] Registered plugin %s from %s", identifier.toString(), plugin.getClass().getSimpleName());
         plugin.onFirstLoad(getPluginDisabler());
         plugin.onFirstLoad(getPluginDisabler());
         return plugin;
         return plugin;
     }
     }
-
+    
     public static List<REIPluginEntry> getPlugins() {
     public static List<REIPluginEntry> getPlugins() {
         return new LinkedList<>(plugins.values());
         return new LinkedList<>(plugins.values());
     }
     }
-
+    
     public static Optional<Identifier> getPluginIdentifier(REIPluginEntry plugin) {
     public static Optional<Identifier> getPluginIdentifier(REIPluginEntry plugin) {
         for(Identifier identifier : plugins.keySet())
         for(Identifier identifier : plugins.keySet())
             if (identifier != null && plugins.get(identifier).equals(plugin))
             if (identifier != null && plugins.get(identifier).equals(plugin))
                 return Optional.of(identifier);
                 return Optional.of(identifier);
         return Optional.empty();
         return Optional.empty();
     }
     }
-
+    
     public static boolean hasPermissionToUsePackets() {
     public static boolean hasPermissionToUsePackets() {
-        return hasOperatorPermission() && canUsePackets();
+        try {
+            MinecraftClient.getInstance().getNetworkHandler().getCommandSource().hasPermissionLevel(0);
+            return hasOperatorPermission() && canUsePackets();
+        } catch (NullPointerException e) {
+            return true;
+        }
     }
     }
-
+    
     public static boolean hasOperatorPermission() {
     public static boolean hasOperatorPermission() {
-        return MinecraftClient.getInstance().getNetworkHandler().getCommandSource().hasPermissionLevel(1);
+        try {
+            return MinecraftClient.getInstance().getNetworkHandler().getCommandSource().hasPermissionLevel(1);
+        } catch (NullPointerException e) {
+            return true;
+        }
     }
     }
-
+    
     public static boolean canUsePackets() {
     public static boolean canUsePackets() {
         return ClientSidePacketRegistry.INSTANCE.canServerReceive(RoughlyEnoughItemsNetwork.CREATE_ITEMS_PACKET) && ClientSidePacketRegistry.INSTANCE.canServerReceive(RoughlyEnoughItemsNetwork.DELETE_ITEMS_PACKET);
         return ClientSidePacketRegistry.INSTANCE.canServerReceive(RoughlyEnoughItemsNetwork.CREATE_ITEMS_PACKET) && ClientSidePacketRegistry.INSTANCE.canServerReceive(RoughlyEnoughItemsNetwork.DELETE_ITEMS_PACKET);
     }
     }
-
+    
     @Override
     @Override
     public void onInitializeClient() {
     public void onInitializeClient() {
         configManager = new ConfigManagerImpl();
         configManager = new ConfigManagerImpl();
-
+        
         registerClothEvents();
         registerClothEvents();
         discoverOldPlugins();
         discoverOldPlugins();
         discoverPluginEntries();
         discoverPluginEntries();
     }
     }
-
+    
+    @SuppressWarnings("deprecation")
     private void discoverPluginEntries() {
     private void discoverPluginEntries() {
         for(REIPluginEntry reiPlugin : FabricLoader.getInstance().getEntrypoints("rei_plugins", REIPluginEntry.class)) {
         for(REIPluginEntry reiPlugin : FabricLoader.getInstance().getEntrypoints("rei_plugins", REIPluginEntry.class)) {
             try {
             try {
@@ -125,7 +135,8 @@ public class RoughlyEnoughItemsCore implements ClientModInitializer {
             }
             }
         }
         }
     }
     }
-
+    
+    @SuppressWarnings("deprecation")
     private void discoverOldPlugins() {
     private void discoverOldPlugins() {
         List<Pair<Identifier, String>> list = Lists.newArrayList();
         List<Pair<Identifier, String>> list = Lists.newArrayList();
         for(ModMetadata metadata : FabricLoader.getInstance().getAllMods().stream().map(ModContainer::getMetadata).filter(metadata -> metadata.containsCustomElement("roughlyenoughitems:plugins")).collect(Collectors.toList())) {
         for(ModMetadata metadata : FabricLoader.getInstance().getAllMods().stream().map(ModContainer::getMetadata).filter(metadata -> metadata.containsCustomElement("roughlyenoughitems:plugins")).collect(Collectors.toList())) {
@@ -164,7 +175,7 @@ public class RoughlyEnoughItemsCore implements ClientModInitializer {
             }
             }
         }
         }
     }
     }
-
+    
     private void loadPluginFromJsonObject(List<Pair<Identifier, String>> list, ModMetadata modMetadata, JsonObject object) {
     private void loadPluginFromJsonObject(List<Pair<Identifier, String>> list, ModMetadata modMetadata, JsonObject object) {
         String namespace = modMetadata.getId();
         String namespace = modMetadata.getId();
         if (object.has("namespace"))
         if (object.has("namespace"))
@@ -173,7 +184,7 @@ public class RoughlyEnoughItemsCore implements ClientModInitializer {
         String className = object.get("class").getAsString();
         String className = object.get("class").getAsString();
         list.add(new Pair<>(new Identifier(namespace, id), className));
         list.add(new Pair<>(new Identifier(namespace, id), className));
     }
     }
-
+    
     private void registerClothEvents() {
     private void registerClothEvents() {
         ClothClientHooks.SYNC_RECIPES.register((minecraftClient, recipeManager, synchronizeRecipesS2CPacket) -> {
         ClothClientHooks.SYNC_RECIPES.register((minecraftClient, recipeManager, synchronizeRecipesS2CPacket) -> {
             ((RecipeHelperImpl) RoughlyEnoughItemsCore.getRecipeHelper()).recipesLoaded(recipeManager);
             ((RecipeHelperImpl) RoughlyEnoughItemsCore.getRecipeHelper()).recipesLoaded(recipeManager);
@@ -232,7 +243,7 @@ public class RoughlyEnoughItemsCore implements ClientModInitializer {
                 ScreenHelper.getLastOverlay().lateRender(i, i1, v);
                 ScreenHelper.getLastOverlay().lateRender(i, i1, v);
         });
         });
         ClothClientHooks.SCREEN_KEY_PRESSED.register((minecraftClient, screen, i, i1, i2) -> {
         ClothClientHooks.SCREEN_KEY_PRESSED.register((minecraftClient, screen, i, i1, i2) -> {
-            if (screen.getFocused() != null && screen.getFocused() instanceof TextFieldWidget || (screen.getFocused() instanceof RecipeBookGui && ((RecipeBookGuiHooks)screen.getFocused()).rei_getSearchField() != null && ((RecipeBookGuiHooks)screen.getFocused()).rei_getSearchField().isFocused()))
+            if (screen.getFocused() != null && screen.getFocused() instanceof TextFieldWidget || (screen.getFocused() instanceof RecipeBookGui && ((RecipeBookGuiHooks) screen.getFocused()).rei_getSearchField() != null && ((RecipeBookGuiHooks) screen.getFocused()).rei_getSearchField().isFocused()))
                 return ActionResult.PASS;
                 return ActionResult.PASS;
             if (screen instanceof ContainerScreen)
             if (screen instanceof ContainerScreen)
                 if (ScreenHelper.getLastOverlay().keyPressed(i, i1, i2))
                 if (ScreenHelper.getLastOverlay().keyPressed(i, i1, i2))
@@ -240,5 +251,5 @@ public class RoughlyEnoughItemsCore implements ClientModInitializer {
             return ActionResult.PASS;
             return ActionResult.PASS;
         });
         });
     }
     }
-
+    
 }
 }

+ 7 - 7
src/main/java/me/shedaniel/rei/RoughlyEnoughItemsNetwork.java

@@ -8,12 +8,12 @@ package me.shedaniel.rei;
 import me.shedaniel.rei.gui.widget.ItemListOverlay;
 import me.shedaniel.rei.gui.widget.ItemListOverlay;
 import net.fabricmc.api.ModInitializer;
 import net.fabricmc.api.ModInitializer;
 import net.fabricmc.fabric.api.network.ServerSidePacketRegistry;
 import net.fabricmc.fabric.api.network.ServerSidePacketRegistry;
+import net.minecraft.ChatFormat;
 import net.minecraft.client.resource.language.I18n;
 import net.minecraft.client.resource.language.I18n;
 import net.minecraft.item.ItemStack;
 import net.minecraft.item.ItemStack;
+import net.minecraft.network.chat.TextComponent;
+import net.minecraft.network.chat.TranslatableComponent;
 import net.minecraft.server.network.ServerPlayerEntity;
 import net.minecraft.server.network.ServerPlayerEntity;
-import net.minecraft.text.StringTextComponent;
-import net.minecraft.text.TextFormat;
-import net.minecraft.text.TranslatableTextComponent;
 import net.minecraft.util.Identifier;
 import net.minecraft.util.Identifier;
 
 
 public class RoughlyEnoughItemsNetwork implements ModInitializer {
 public class RoughlyEnoughItemsNetwork implements ModInitializer {
@@ -26,7 +26,7 @@ public class RoughlyEnoughItemsNetwork implements ModInitializer {
         ServerSidePacketRegistry.INSTANCE.register(DELETE_ITEMS_PACKET, (packetContext, packetByteBuf) -> {
         ServerSidePacketRegistry.INSTANCE.register(DELETE_ITEMS_PACKET, (packetContext, packetByteBuf) -> {
             ServerPlayerEntity player = (ServerPlayerEntity) packetContext.getPlayer();
             ServerPlayerEntity player = (ServerPlayerEntity) packetContext.getPlayer();
             if (player.getServer().getPermissionLevel(player.getGameProfile()) < player.getServer().getOpPermissionLevel()) {
             if (player.getServer().getPermissionLevel(player.getGameProfile()) < player.getServer().getOpPermissionLevel()) {
-                player.addChatMessage(new TranslatableTextComponent("text.rei.no_permission_cheat").applyFormat(TextFormat.RED), false);
+                player.addChatMessage(new TranslatableComponent("text.rei.no_permission_cheat").applyFormat(ChatFormat.RED), false);
                 return;
                 return;
             }
             }
             if (!player.inventory.getCursorStack().isEmpty())
             if (!player.inventory.getCursorStack().isEmpty())
@@ -35,14 +35,14 @@ public class RoughlyEnoughItemsNetwork implements ModInitializer {
         ServerSidePacketRegistry.INSTANCE.register(CREATE_ITEMS_PACKET, (packetContext, packetByteBuf) -> {
         ServerSidePacketRegistry.INSTANCE.register(CREATE_ITEMS_PACKET, (packetContext, packetByteBuf) -> {
             ServerPlayerEntity player = (ServerPlayerEntity) packetContext.getPlayer();
             ServerPlayerEntity player = (ServerPlayerEntity) packetContext.getPlayer();
             if (player.getServer().getPermissionLevel(player.getGameProfile()) < player.getServer().getOpPermissionLevel()) {
             if (player.getServer().getPermissionLevel(player.getGameProfile()) < player.getServer().getOpPermissionLevel()) {
-                player.addChatMessage(new TranslatableTextComponent("text.rei.no_permission_cheat").applyFormat(TextFormat.RED), false);
+                player.addChatMessage(new TranslatableComponent("text.rei.no_permission_cheat").applyFormat(ChatFormat.RED), false);
                 return;
                 return;
             }
             }
             ItemStack stack = packetByteBuf.readItemStack();
             ItemStack stack = packetByteBuf.readItemStack();
             if (player.inventory.insertStack(stack.copy()))
             if (player.inventory.insertStack(stack.copy()))
-                player.addChatMessage(new StringTextComponent(I18n.translate("text.rei.cheat_items").replaceAll("\\{item_name}", ItemListOverlay.tryGetItemStackName(stack.copy())).replaceAll("\\{item_count}", stack.copy().getAmount() + "").replaceAll("\\{player_name}", player.getEntityName())), false);
+                player.addChatMessage(new TextComponent(I18n.translate("text.rei.cheat_items").replaceAll("\\{item_name}", ItemListOverlay.tryGetItemStackName(stack.copy())).replaceAll("\\{item_count}", stack.copy().getAmount() + "").replaceAll("\\{player_name}", player.getEntityName())), false);
             else
             else
-                player.addChatMessage(new TranslatableTextComponent("text.rei.failed_cheat_items"), false);
+                player.addChatMessage(new TranslatableComponent("text.rei.failed_cheat_items"), false);
         });
         });
     }
     }
     
     

+ 0 - 5
src/main/java/me/shedaniel/rei/api/DisplayHelper.java

@@ -55,11 +55,6 @@ public interface DisplayHelper {
     BaseBoundsHandler getBaseBoundsHandler();
     BaseBoundsHandler getBaseBoundsHandler();
     
     
     public static interface DisplayBoundsHandler<T> {
     public static interface DisplayBoundsHandler<T> {
-        /**
-         * An empty rectangle
-         */
-        public static final Rectangle EMPTY = new Rectangle();
-        
         /**
         /**
          * Gets the base supported class for the bounds handler
          * Gets the base supported class for the bounds handler
          *
          *

+ 2 - 2
src/main/java/me/shedaniel/rei/client/BaseBoundsHandlerImpl.java

@@ -43,12 +43,12 @@ public class BaseBoundsHandlerImpl implements BaseBoundsHandler {
     
     
     @Override
     @Override
     public Rectangle getLeftBounds(Screen screen) {
     public Rectangle getLeftBounds(Screen screen) {
-        return DisplayHelper.DisplayBoundsHandler.EMPTY;
+        return new Rectangle();
     }
     }
     
     
     @Override
     @Override
     public Rectangle getRightBounds(Screen screen) {
     public Rectangle getRightBounds(Screen screen) {
-        return DisplayHelper.DisplayBoundsHandler.EMPTY;
+        return new Rectangle();
     }
     }
     
     
     @Override
     @Override

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

@@ -30,7 +30,7 @@ import net.minecraft.client.util.InputUtil;
 import net.minecraft.item.Item;
 import net.minecraft.item.Item;
 import net.minecraft.item.ItemStack;
 import net.minecraft.item.ItemStack;
 import net.minecraft.item.Items;
 import net.minecraft.item.Items;
-import net.minecraft.text.TranslatableTextComponent;
+import net.minecraft.network.chat.TranslatableComponent;
 import net.minecraft.util.DefaultedList;
 import net.minecraft.util.DefaultedList;
 import net.minecraft.util.Identifier;
 import net.minecraft.util.Identifier;
 import net.minecraft.util.PacketByteBuf;
 import net.minecraft.util.PacketByteBuf;
@@ -154,7 +154,7 @@ public class ClientHelperImpl implements ClientHelper, ClientModInitializer {
             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()));
             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) {
             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()));
                 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()));
-                MinecraftClient.getInstance().player.addChatMessage(new TranslatableTextComponent("text.rei.too_long_nbt"), false);
+                MinecraftClient.getInstance().player.addChatMessage(new TranslatableComponent("text.rei.too_long_nbt"), false);
             }
             }
             MinecraftClient.getInstance().player.sendChatMessage(madeUpCommand);
             MinecraftClient.getInstance().player.sendChatMessage(madeUpCommand);
             return true;
             return true;

+ 2 - 2
src/main/java/me/shedaniel/rei/client/ConfigManagerImpl.java

@@ -15,7 +15,7 @@ import net.fabricmc.loader.api.FabricLoader;
 import net.minecraft.client.MinecraftClient;
 import net.minecraft.client.MinecraftClient;
 import net.minecraft.client.gui.Screen;
 import net.minecraft.client.gui.Screen;
 import net.minecraft.client.resource.language.I18n;
 import net.minecraft.client.resource.language.I18n;
-import net.minecraft.text.StringTextComponent;
+import net.minecraft.network.chat.TextComponent;
 
 
 import java.io.File;
 import java.io.File;
 import java.io.FileOutputStream;
 import java.io.FileOutputStream;
@@ -143,7 +143,7 @@ public class ConfigManagerImpl implements ConfigManager {
                 e.printStackTrace();
                 e.printStackTrace();
             }
             }
         }
         }
-        return new Screen(new StringTextComponent("")) {
+        return new Screen(new TextComponent("")) {
             @Override
             @Override
             public void render(int int_1, int int_2, float float_1) {
             public void render(int int_1, int int_2, float float_1) {
                 renderDirtBackground(0);
                 renderDirtBackground(0);

+ 2 - 2
src/main/java/me/shedaniel/rei/client/DisplayHelperImpl.java

@@ -28,12 +28,12 @@ public class DisplayHelperImpl implements DisplayHelper {
         
         
         @Override
         @Override
         public Rectangle getLeftBounds(Object screen) {
         public Rectangle getLeftBounds(Object screen) {
-            return DisplayBoundsHandler.EMPTY;
+            return new Rectangle();
         }
         }
         
         
         @Override
         @Override
         public Rectangle getRightBounds(Object screen) {
         public Rectangle getRightBounds(Object screen) {
-            return DisplayBoundsHandler.EMPTY;
+            return new Rectangle();
         }
         }
         
         
         @Override
         @Override

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

@@ -26,6 +26,7 @@ public class ItemRegistryImpl implements ItemRegistry {
         return Collections.unmodifiableList(itemList);
         return Collections.unmodifiableList(itemList);
     }
     }
     
     
+    @SuppressWarnings("deprecation")
     @Override
     @Override
     public List<ItemStack> getModifiableItemList() {
     public List<ItemStack> getModifiableItemList() {
         return itemList;
         return itemList;

+ 4 - 4
src/main/java/me/shedaniel/rei/gui/ContainerScreenOverlay.java

@@ -16,17 +16,17 @@ import me.shedaniel.rei.client.Weather;
 import me.shedaniel.rei.gui.widget.*;
 import me.shedaniel.rei.gui.widget.*;
 import me.shedaniel.rei.listeners.ContainerScreenHooks;
 import me.shedaniel.rei.listeners.ContainerScreenHooks;
 import net.minecraft.client.MinecraftClient;
 import net.minecraft.client.MinecraftClient;
-import net.minecraft.client.audio.PositionedSoundInstance;
 import net.minecraft.client.font.TextRenderer;
 import net.minecraft.client.font.TextRenderer;
 import net.minecraft.client.gui.*;
 import net.minecraft.client.gui.*;
 import net.minecraft.client.render.GuiLighting;
 import net.minecraft.client.render.GuiLighting;
 import net.minecraft.client.resource.language.I18n;
 import net.minecraft.client.resource.language.I18n;
+import net.minecraft.client.sound.PositionedSoundInstance;
 import net.minecraft.client.util.Window;
 import net.minecraft.client.util.Window;
 import net.minecraft.client.world.ClientWorld;
 import net.minecraft.client.world.ClientWorld;
 import net.minecraft.container.Slot;
 import net.minecraft.container.Slot;
 import net.minecraft.item.ItemStack;
 import net.minecraft.item.ItemStack;
+import net.minecraft.network.chat.TranslatableComponent;
 import net.minecraft.sound.SoundEvents;
 import net.minecraft.sound.SoundEvents;
-import net.minecraft.text.TranslatableTextComponent;
 import net.minecraft.util.ActionResult;
 import net.minecraft.util.ActionResult;
 import net.minecraft.util.Identifier;
 import net.minecraft.util.Identifier;
 import net.minecraft.util.math.MathHelper;
 import net.minecraft.util.math.MathHelper;
@@ -69,7 +69,7 @@ public class ContainerScreenOverlay extends AbstractParentElement implements Dra
         widgets.add(itemListOverlay = new ItemListOverlay(page));
         widgets.add(itemListOverlay = new ItemListOverlay(page));
         itemListOverlay.updateList(boundsHandler, boundsHandler.getItemListArea(rectangle), page, searchTerm, false);
         itemListOverlay.updateList(boundsHandler, boundsHandler.getItemListArea(rectangle), page, searchTerm, false);
         
         
-        widgets.add(buttonLeft = new ButtonWidget(rectangle.x, rectangle.y + 5, 16, 16, new TranslatableTextComponent("text.rei.left_arrow")) {
+        widgets.add(buttonLeft = new ButtonWidget(rectangle.x, rectangle.y + 5, 16, 16, new TranslatableComponent("text.rei.left_arrow")) {
             @Override
             @Override
             public void onPressed() {
             public void onPressed() {
                 page--;
                 page--;
@@ -88,7 +88,7 @@ public class ContainerScreenOverlay extends AbstractParentElement implements Dra
                 return false;
                 return false;
             }
             }
         });
         });
-        widgets.add(buttonRight = new ButtonWidget(rectangle.x + rectangle.width - 18, rectangle.y + 5, 16, 16, new TranslatableTextComponent("text.rei.right_arrow")) {
+        widgets.add(buttonRight = new ButtonWidget(rectangle.x + rectangle.width - 18, rectangle.y + 5, 16, 16, new TranslatableComponent("text.rei.right_arrow")) {
             @Override
             @Override
             public void onPressed() {
             public void onPressed() {
                 page++;
                 page++;

+ 3 - 3
src/main/java/me/shedaniel/rei/gui/PreRecipeViewingScreen.java

@@ -16,13 +16,13 @@ import me.shedaniel.rei.gui.widget.ButtonWidget;
 import me.shedaniel.rei.gui.widget.HighlightableWidget;
 import me.shedaniel.rei.gui.widget.HighlightableWidget;
 import me.shedaniel.rei.gui.widget.Widget;
 import me.shedaniel.rei.gui.widget.Widget;
 import net.minecraft.client.MinecraftClient;
 import net.minecraft.client.MinecraftClient;
-import net.minecraft.client.audio.PositionedSoundInstance;
 import net.minecraft.client.gui.Element;
 import net.minecraft.client.gui.Element;
 import net.minecraft.client.gui.Screen;
 import net.minecraft.client.gui.Screen;
 import net.minecraft.client.render.GuiLighting;
 import net.minecraft.client.render.GuiLighting;
 import net.minecraft.client.resource.language.I18n;
 import net.minecraft.client.resource.language.I18n;
+import net.minecraft.client.sound.PositionedSoundInstance;
+import net.minecraft.network.chat.TextComponent;
 import net.minecraft.sound.SoundEvents;
 import net.minecraft.sound.SoundEvents;
-import net.minecraft.text.TranslatableTextComponent;
 import net.minecraft.util.Identifier;
 import net.minecraft.util.Identifier;
 
 
 import java.awt.*;
 import java.awt.*;
@@ -39,7 +39,7 @@ public class PreRecipeViewingScreen extends Screen {
     private Map<RecipeCategory, List<RecipeDisplay>> map;
     private Map<RecipeCategory, List<RecipeDisplay>> map;
     
     
     public PreRecipeViewingScreen(Map<RecipeCategory, List<RecipeDisplay>> map) {
     public PreRecipeViewingScreen(Map<RecipeCategory, List<RecipeDisplay>> map) {
-        super(new TranslatableTextComponent("text.rei.recipe_screen_type.selection"));
+        super(new TextComponent("text.rei.recipe_screen_type.selection"));
         this.widgets = Lists.newArrayList();
         this.widgets = Lists.newArrayList();
         this.original = true;
         this.original = true;
         this.map = map;
         this.map = map;

+ 8 - 8
src/main/java/me/shedaniel/rei/gui/RecipeViewingScreen.java

@@ -13,16 +13,16 @@ import me.shedaniel.rei.api.*;
 import me.shedaniel.rei.client.ScreenHelper;
 import me.shedaniel.rei.client.ScreenHelper;
 import me.shedaniel.rei.gui.widget.*;
 import me.shedaniel.rei.gui.widget.*;
 import net.minecraft.client.MinecraftClient;
 import net.minecraft.client.MinecraftClient;
-import net.minecraft.client.audio.PositionedSoundInstance;
 import net.minecraft.client.gui.ContainerScreen;
 import net.minecraft.client.gui.ContainerScreen;
 import net.minecraft.client.gui.Element;
 import net.minecraft.client.gui.Element;
 import net.minecraft.client.gui.Screen;
 import net.minecraft.client.gui.Screen;
 import net.minecraft.client.render.GuiLighting;
 import net.minecraft.client.render.GuiLighting;
 import net.minecraft.client.resource.language.I18n;
 import net.minecraft.client.resource.language.I18n;
+import net.minecraft.client.sound.PositionedSoundInstance;
 import net.minecraft.client.util.Window;
 import net.minecraft.client.util.Window;
+import net.minecraft.network.chat.TextComponent;
+import net.minecraft.network.chat.TranslatableComponent;
 import net.minecraft.sound.SoundEvents;
 import net.minecraft.sound.SoundEvents;
-import net.minecraft.text.StringTextComponent;
-import net.minecraft.text.TranslatableTextComponent;
 import net.minecraft.util.Identifier;
 import net.minecraft.util.Identifier;
 import net.minecraft.util.math.MathHelper;
 import net.minecraft.util.math.MathHelper;
 
 
@@ -52,7 +52,7 @@ public class RecipeViewingScreen extends Screen {
     private ButtonWidget recipeBack, recipeNext, categoryBack, categoryNext;
     private ButtonWidget recipeBack, recipeNext, categoryBack, categoryNext;
     
     
     public RecipeViewingScreen(Map<RecipeCategory, List<RecipeDisplay>> categoriesMap) {
     public RecipeViewingScreen(Map<RecipeCategory, List<RecipeDisplay>> categoriesMap) {
-        super(new StringTextComponent(""));
+        super(new TextComponent(""));
         this.categoryPages = 0;
         this.categoryPages = 0;
         this.widgets = Lists.newArrayList();
         this.widgets = Lists.newArrayList();
         Window window = MinecraftClient.getInstance().window;
         Window window = MinecraftClient.getInstance().window;
@@ -129,7 +129,7 @@ public class RecipeViewingScreen extends Screen {
         this.bounds = new Rectangle(width / 2 - guiWidth / 2, height / 2 - guiHeight / 2, guiWidth, guiHeight);
         this.bounds = new Rectangle(width / 2 - guiWidth / 2, height / 2 - guiHeight / 2, guiWidth, guiHeight);
         this.page = MathHelper.clamp(page, 0, getTotalPages(selectedCategory) - 1);
         this.page = MathHelper.clamp(page, 0, getTotalPages(selectedCategory) - 1);
         
         
-        widgets.add(categoryBack = new ButtonWidget((int) bounds.getX() + 5, (int) bounds.getY() + 5, 12, 12, new TranslatableTextComponent("text.rei.left_arrow")) {
+        widgets.add(categoryBack = new ButtonWidget((int) bounds.getX() + 5, (int) bounds.getY() + 5, 12, 12, new TranslatableComponent("text.rei.left_arrow")) {
             @Override
             @Override
             public void onPressed() {
             public void onPressed() {
                 int currentCategoryIndex = categories.indexOf(selectedCategory);
                 int currentCategoryIndex = categories.indexOf(selectedCategory);
@@ -165,7 +165,7 @@ public class RecipeViewingScreen extends Screen {
                 ClientHelper.getInstance().executeViewAllRecipesKeyBind();
                 ClientHelper.getInstance().executeViewAllRecipesKeyBind();
             }
             }
         });
         });
-        widgets.add(categoryNext = new ButtonWidget((int) bounds.getMaxX() - 17, (int) bounds.getY() + 5, 12, 12, new TranslatableTextComponent("text.rei.right_arrow")) {
+        widgets.add(categoryNext = new ButtonWidget((int) bounds.getMaxX() - 17, (int) bounds.getY() + 5, 12, 12, new TranslatableComponent("text.rei.right_arrow")) {
             @Override
             @Override
             public void onPressed() {
             public void onPressed() {
                 int currentCategoryIndex = categories.indexOf(selectedCategory);
                 int currentCategoryIndex = categories.indexOf(selectedCategory);
@@ -186,7 +186,7 @@ public class RecipeViewingScreen extends Screen {
         categoryBack.enabled = categories.size() > 1;
         categoryBack.enabled = categories.size() > 1;
         categoryNext.enabled = categories.size() > 1;
         categoryNext.enabled = categories.size() > 1;
         
         
-        widgets.add(recipeBack = new ButtonWidget((int) bounds.getX() + 5, (int) bounds.getY() + 21, 12, 12, new TranslatableTextComponent("text.rei.left_arrow")) {
+        widgets.add(recipeBack = new ButtonWidget((int) bounds.getX() + 5, (int) bounds.getY() + 21, 12, 12, new TranslatableComponent("text.rei.left_arrow")) {
             @Override
             @Override
             public void onPressed() {
             public void onPressed() {
                 page--;
                 page--;
@@ -219,7 +219,7 @@ public class RecipeViewingScreen extends Screen {
                 RecipeViewingScreen.this.init();
                 RecipeViewingScreen.this.init();
             }
             }
         });
         });
-        widgets.add(recipeNext = new ButtonWidget((int) bounds.getMaxX() - 17, (int) bounds.getY() + 21, 12, 12, new TranslatableTextComponent("text.rei.right_arrow")) {
+        widgets.add(recipeNext = new ButtonWidget((int) bounds.getMaxX() - 17, (int) bounds.getY() + 21, 12, 12, new TranslatableComponent("text.rei.right_arrow")) {
             @Override
             @Override
             public void onPressed() {
             public void onPressed() {
                 page++;
                 page++;

+ 25 - 6
src/main/java/me/shedaniel/rei/gui/VillagerRecipeViewingScreen.java

@@ -9,19 +9,20 @@ import com.google.common.collect.Lists;
 import com.google.common.collect.Maps;
 import com.google.common.collect.Maps;
 import com.mojang.blaze3d.platform.GlStateManager;
 import com.mojang.blaze3d.platform.GlStateManager;
 import com.zeitheron.hammercore.client.utils.Scissors;
 import com.zeitheron.hammercore.client.utils.Scissors;
+import me.shedaniel.cloth.api.ClientUtils;
 import me.shedaniel.rei.api.*;
 import me.shedaniel.rei.api.*;
 import me.shedaniel.rei.client.ScreenHelper;
 import me.shedaniel.rei.client.ScreenHelper;
 import me.shedaniel.rei.gui.renderables.RecipeRenderer;
 import me.shedaniel.rei.gui.renderables.RecipeRenderer;
 import me.shedaniel.rei.gui.widget.*;
 import me.shedaniel.rei.gui.widget.*;
 import net.minecraft.client.MinecraftClient;
 import net.minecraft.client.MinecraftClient;
-import net.minecraft.client.audio.PositionedSoundInstance;
 import net.minecraft.client.gui.Element;
 import net.minecraft.client.gui.Element;
 import net.minecraft.client.gui.Screen;
 import net.minecraft.client.gui.Screen;
 import net.minecraft.client.render.GuiLighting;
 import net.minecraft.client.render.GuiLighting;
 import net.minecraft.client.resource.language.I18n;
 import net.minecraft.client.resource.language.I18n;
+import net.minecraft.client.sound.PositionedSoundInstance;
+import net.minecraft.network.chat.TextComponent;
+import net.minecraft.network.chat.TranslatableComponent;
 import net.minecraft.sound.SoundEvents;
 import net.minecraft.sound.SoundEvents;
-import net.minecraft.text.StringTextComponent;
-import net.minecraft.text.TranslatableTextComponent;
 import net.minecraft.util.math.MathHelper;
 import net.minecraft.util.math.MathHelper;
 import org.lwjgl.BufferUtils;
 import org.lwjgl.BufferUtils;
 import org.lwjgl.glfw.GLFW;
 import org.lwjgl.glfw.GLFW;
@@ -51,7 +52,7 @@ public class VillagerRecipeViewingScreen extends Screen {
     private int tabsPage;
     private int tabsPage;
     
     
     public VillagerRecipeViewingScreen(Map<RecipeCategory, List<RecipeDisplay>> map) {
     public VillagerRecipeViewingScreen(Map<RecipeCategory, List<RecipeDisplay>> map) {
-        super(new StringTextComponent(""));
+        super(new TextComponent(""));
         this.widgets = Lists.newArrayList();
         this.widgets = Lists.newArrayList();
         this.categoryMap = Maps.newLinkedHashMap();
         this.categoryMap = Maps.newLinkedHashMap();
         this.selectedCategoryIndex = 0;
         this.selectedCategoryIndex = 0;
@@ -140,7 +141,7 @@ public class VillagerRecipeViewingScreen extends Screen {
             }
             }
         }
         }
         ButtonWidget w, w2;
         ButtonWidget w, w2;
-        this.widgets.add(w = new ButtonWidget(bounds.x + 2, bounds.y - 16, 10, 10, new TranslatableTextComponent("text.rei.left_arrow")) {
+        this.widgets.add(w = new ButtonWidget(bounds.x + 2, bounds.y - 16, 10, 10, new TranslatableComponent("text.rei.left_arrow")) {
             @Override
             @Override
             public void onPressed() {
             public void onPressed() {
                 tabsPage--;
                 tabsPage--;
@@ -149,7 +150,7 @@ public class VillagerRecipeViewingScreen extends Screen {
                 VillagerRecipeViewingScreen.this.init();
                 VillagerRecipeViewingScreen.this.init();
             }
             }
         });
         });
-        this.widgets.add(w2 = new ButtonWidget(bounds.x + bounds.width - 12, bounds.y - 16, 10, 10, new TranslatableTextComponent("text.rei.right_arrow")) {
+        this.widgets.add(w2 = new ButtonWidget(bounds.x + bounds.width - 12, bounds.y - 16, 10, 10, new TranslatableComponent("text.rei.right_arrow")) {
             @Override
             @Override
             public void onPressed() {
             public void onPressed() {
                 tabsPage++;
                 tabsPage++;
@@ -206,6 +207,24 @@ public class VillagerRecipeViewingScreen extends Screen {
             scroll = MathHelper.clamp(scroll, 0, height - scrollListBounds.height + 2);
             scroll = MathHelper.clamp(scroll, 0, height - scrollListBounds.height + 2);
             return true;
             return true;
         }
         }
+        for(Element listener : children())
+            if (listener.mouseScrolled(double_1, double_2, double_3))
+                return true;
+        if (bounds.contains(ClientUtils.getMouseLocation())) {
+            if (double_3 < 0 && categoryMap.get(categories.get(selectedCategoryIndex)).size() > 1) {
+                selectedCategoryIndex++;
+                if (selectedCategoryIndex >= categoryMap.get(categories.get(selectedCategoryIndex)).size())
+                    selectedCategoryIndex = 0;
+                init();
+                return true;
+            } else if (categoryMap.get(categories.get(selectedCategoryIndex)).size() > 1) {
+                selectedCategoryIndex--;
+                if (selectedCategoryIndex < 0)
+                    selectedCategoryIndex = categoryMap.get(categories.get(selectedCategoryIndex)).size() - 1;
+                init();
+                return true;
+            }
+        }
         return super.mouseScrolled(double_1, double_2, double_3);
         return super.mouseScrolled(double_1, double_2, double_3);
     }
     }
     
     

+ 2 - 2
src/main/java/me/shedaniel/rei/gui/credits/CreditsEntryListWidget.java

@@ -7,7 +7,7 @@ package me.shedaniel.rei.gui.credits;
 
 
 import net.minecraft.client.MinecraftClient;
 import net.minecraft.client.MinecraftClient;
 import net.minecraft.client.gui.menu.AlwaysSelectedEntryListWidget;
 import net.minecraft.client.gui.menu.AlwaysSelectedEntryListWidget;
-import net.minecraft.text.TextComponent;
+import net.minecraft.network.chat.Component;
 
 
 public class CreditsEntryListWidget extends AlwaysSelectedEntryListWidget<CreditsEntryListWidget.CreditsItem> {
 public class CreditsEntryListWidget extends AlwaysSelectedEntryListWidget<CreditsEntryListWidget.CreditsItem> {
     
     
@@ -40,7 +40,7 @@ public class CreditsEntryListWidget extends AlwaysSelectedEntryListWidget<Credit
     public static class CreditsItem extends AlwaysSelectedEntryListWidget.Entry<CreditsItem> {
     public static class CreditsItem extends AlwaysSelectedEntryListWidget.Entry<CreditsItem> {
         private String text;
         private String text;
         
         
-        public CreditsItem(TextComponent textComponent) {
+        public CreditsItem(Component textComponent) {
             this(textComponent.getFormattedText());
             this(textComponent.getFormattedText());
         }
         }
         
         

+ 4 - 4
src/main/java/me/shedaniel/rei/gui/credits/CreditsScreen.java

@@ -11,7 +11,7 @@ import me.shedaniel.rei.gui.widget.ButtonWidget;
 import net.minecraft.client.gui.ContainerScreen;
 import net.minecraft.client.gui.ContainerScreen;
 import net.minecraft.client.gui.Screen;
 import net.minecraft.client.gui.Screen;
 import net.minecraft.client.resource.language.I18n;
 import net.minecraft.client.resource.language.I18n;
-import net.minecraft.text.StringTextComponent;
+import net.minecraft.network.chat.TextComponent;
 
 
 public class CreditsScreen extends Screen {
 public class CreditsScreen extends Screen {
     
     
@@ -20,7 +20,7 @@ public class CreditsScreen extends Screen {
     private CreditsEntryListWidget entryListWidget;
     private CreditsEntryListWidget entryListWidget;
     
     
     public CreditsScreen(Screen parent) {
     public CreditsScreen(Screen parent) {
-        super(new StringTextComponent(""));
+        super(new TextComponent(""));
         this.parent = parent;
         this.parent = parent;
     }
     }
     
     
@@ -40,8 +40,8 @@ public class CreditsScreen extends Screen {
         children.add(entryListWidget = new CreditsEntryListWidget(minecraft, width, height, 32, height - 32, 12));
         children.add(entryListWidget = new CreditsEntryListWidget(minecraft, width, height, 32, height - 32, 12));
         entryListWidget.creditsClearEntries();
         entryListWidget.creditsClearEntries();
         for(String line : I18n.translate("text.rei.credit.text").split("\n"))
         for(String line : I18n.translate("text.rei.credit.text").split("\n"))
-            entryListWidget.creditsAddEntry(new CreditsItem(new StringTextComponent(line)));
-        entryListWidget.creditsAddEntry(new CreditsItem(new StringTextComponent("")));
+            entryListWidget.creditsAddEntry(new CreditsItem(new TextComponent(line)));
+        entryListWidget.creditsAddEntry(new CreditsItem(new TextComponent("")));
         children.add(buttonDone = new ButtonWidget(width / 2 - 100, height - 26, 200, 20, I18n.translate("gui.done")) {
         children.add(buttonDone = new ButtonWidget(width / 2 - 100, height - 26, 200, 20, I18n.translate("gui.done")) {
             @Override
             @Override
             public void onPressed() {
             public void onPressed() {

+ 4 - 4
src/main/java/me/shedaniel/rei/gui/widget/ButtonWidget.java

@@ -7,10 +7,10 @@ package me.shedaniel.rei.gui.widget;
 
 
 import com.mojang.blaze3d.platform.GlStateManager;
 import com.mojang.blaze3d.platform.GlStateManager;
 import me.shedaniel.rei.client.ScreenHelper;
 import me.shedaniel.rei.client.ScreenHelper;
-import net.minecraft.client.audio.PositionedSoundInstance;
 import net.minecraft.client.gui.Element;
 import net.minecraft.client.gui.Element;
+import net.minecraft.client.sound.PositionedSoundInstance;
+import net.minecraft.network.chat.Component;
 import net.minecraft.sound.SoundEvents;
 import net.minecraft.sound.SoundEvents;
-import net.minecraft.text.TextComponent;
 import net.minecraft.util.Identifier;
 import net.minecraft.util.Identifier;
 import net.minecraft.util.math.MathHelper;
 import net.minecraft.util.math.MathHelper;
 
 
@@ -27,7 +27,7 @@ public abstract class ButtonWidget extends HighlightableWidget {
     public boolean focused;
     public boolean focused;
     private Rectangle bounds;
     private Rectangle bounds;
     
     
-    public ButtonWidget(Rectangle rectangle, TextComponent text) {
+    public ButtonWidget(Rectangle rectangle, Component text) {
         this(rectangle, text.getFormattedText());
         this(rectangle, text.getFormattedText());
     }
     }
     
     
@@ -41,7 +41,7 @@ public abstract class ButtonWidget extends HighlightableWidget {
         this(new Rectangle(x, y, width, height), text);
         this(new Rectangle(x, y, width, height), text);
     }
     }
     
     
-    public ButtonWidget(int x, int y, int width, int height, TextComponent text) {
+    public ButtonWidget(int x, int y, int width, int height, Component text) {
         this(new Rectangle(x, y, width, height), text);
         this(new Rectangle(x, y, width, height), text);
     }
     }
     
     

+ 3 - 3
src/main/java/me/shedaniel/rei/gui/widget/DetailedButtonWidget.java

@@ -5,7 +5,7 @@
 
 
 package me.shedaniel.rei.gui.widget;
 package me.shedaniel.rei.gui.widget;
 
 
-import net.minecraft.text.TextComponent;
+import net.minecraft.network.chat.Component;
 
 
 import java.awt.*;
 import java.awt.*;
 
 
@@ -13,7 +13,7 @@ public class DetailedButtonWidget extends ButtonWidget {
     
     
     private DetailedButtonWidget.PressAction pressAction;
     private DetailedButtonWidget.PressAction pressAction;
     
     
-    public DetailedButtonWidget(Rectangle rectangle, TextComponent text, PressAction pressAction) {
+    public DetailedButtonWidget(Rectangle rectangle, Component text, PressAction pressAction) {
         super(rectangle, text);
         super(rectangle, text);
         this.pressAction = pressAction;
         this.pressAction = pressAction;
     }
     }
@@ -28,7 +28,7 @@ public class DetailedButtonWidget extends ButtonWidget {
         this.pressAction = pressAction;
         this.pressAction = pressAction;
     }
     }
     
     
-    public DetailedButtonWidget(int x, int y, int width, int height, TextComponent text, PressAction pressAction) {
+    public DetailedButtonWidget(int x, int y, int width, int height, Component text, PressAction pressAction) {
         super(x, y, width, height, text);
         super(x, y, width, height, text);
         this.pressAction = pressAction;
         this.pressAction = pressAction;
     }
     }

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

@@ -23,7 +23,7 @@ import net.minecraft.client.resource.language.I18n;
 import net.minecraft.item.Item;
 import net.minecraft.item.Item;
 import net.minecraft.item.ItemGroup;
 import net.minecraft.item.ItemGroup;
 import net.minecraft.item.ItemStack;
 import net.minecraft.item.ItemStack;
-import net.minecraft.text.TextComponent;
+import net.minecraft.network.chat.Component;
 import net.minecraft.util.ActionResult;
 import net.minecraft.util.ActionResult;
 import net.minecraft.util.math.MathHelper;
 import net.minecraft.util.math.MathHelper;
 import net.minecraft.util.registry.Registry;
 import net.minecraft.util.registry.Registry;
@@ -73,7 +73,7 @@ public class ItemListOverlay extends Widget {
     public static List<String> tryGetItemStackToolTip(ItemStack itemStack, boolean careAboutAdvanced) {
     public static List<String> tryGetItemStackToolTip(ItemStack itemStack, boolean careAboutAdvanced) {
         if (!searchBlacklisted.contains(itemStack.getItem()))
         if (!searchBlacklisted.contains(itemStack.getItem()))
             try {
             try {
-                return itemStack.getTooltipText(MinecraftClient.getInstance().player, MinecraftClient.getInstance().options.advancedItemTooltips && careAboutAdvanced ? TooltipContext.Default.ADVANCED : TooltipContext.Default.NORMAL).stream().map(TextComponent::getFormattedText).collect(Collectors.toList());
+                return itemStack.getTooltipText(MinecraftClient.getInstance().player, MinecraftClient.getInstance().options.advancedItemTooltips && careAboutAdvanced ? TooltipContext.Default.ADVANCED : TooltipContext.Default.NORMAL).stream().map(Component::getFormattedText).collect(Collectors.toList());
             } catch (Throwable e) {
             } catch (Throwable e) {
                 e.printStackTrace();
                 e.printStackTrace();
                 searchBlacklisted.add(itemStack.getItem());
                 searchBlacklisted.add(itemStack.getItem());
@@ -238,7 +238,8 @@ public class ItemListOverlay extends Widget {
             }
             }
             if (arguments.length > 0)
             if (arguments.length > 0)
                 lastSearchArgument.add(arguments);
                 lastSearchArgument.add(arguments);
-            else lastSearchArgument.add(new SearchArgument[]{SearchArgument.ALWAYS});
+            else
+                lastSearchArgument.add(new SearchArgument[]{SearchArgument.ALWAYS});
         });
         });
         os.stream().filter(itemStack -> filterItem(itemStack, lastSearchArgument)).forEachOrdered(stacks::add);
         os.stream().filter(itemStack -> filterItem(itemStack, lastSearchArgument)).forEachOrdered(stacks::add);
         List<ItemStack> workingItems = RoughlyEnoughItemsCore.getConfigManager().isCraftableOnlyEnabled() && !stacks.isEmpty() && !inventoryItems.isEmpty() ? Lists.newArrayList() : Lists.newArrayList(ol);
         List<ItemStack> workingItems = RoughlyEnoughItemsCore.getConfigManager().isCraftableOnlyEnabled() && !stacks.isEmpty() && !inventoryItems.isEmpty() ? Lists.newArrayList() : Lists.newArrayList(ol);

+ 1 - 1
src/main/java/me/shedaniel/rei/gui/widget/SearchFieldWidget.java

@@ -6,8 +6,8 @@
 package me.shedaniel.rei.gui.widget;
 package me.shedaniel.rei.gui.widget;
 
 
 import com.mojang.blaze3d.platform.GlStateManager;
 import com.mojang.blaze3d.platform.GlStateManager;
-import net.minecraft.client.audio.PositionedSoundInstance;
 import net.minecraft.client.render.GuiLighting;
 import net.minecraft.client.render.GuiLighting;
+import net.minecraft.client.sound.PositionedSoundInstance;
 import net.minecraft.sound.SoundEvents;
 import net.minecraft.sound.SoundEvents;
 
 
 public class SearchFieldWidget extends TextFieldWidget {
 public class SearchFieldWidget extends TextFieldWidget {

+ 4 - 4
src/main/java/me/shedaniel/rei/mixin/MixinBrewingRecipeRegistry.java

@@ -10,7 +10,7 @@ import me.shedaniel.rei.plugin.BrewingRecipe;
 import me.shedaniel.rei.plugin.DefaultBrewingDisplay;
 import me.shedaniel.rei.plugin.DefaultBrewingDisplay;
 import me.shedaniel.rei.plugin.DefaultPlugin;
 import me.shedaniel.rei.plugin.DefaultPlugin;
 import net.minecraft.item.Item;
 import net.minecraft.item.Item;
-import net.minecraft.item.ItemProvider;
+import net.minecraft.item.ItemConvertible;
 import net.minecraft.item.PotionItem;
 import net.minecraft.item.PotionItem;
 import net.minecraft.potion.Potion;
 import net.minecraft.potion.Potion;
 import net.minecraft.potion.PotionUtil;
 import net.minecraft.potion.PotionUtil;
@@ -34,13 +34,13 @@ public class MixinBrewingRecipeRegistry {
     @Inject(method = "registerPotionType", at = @At("RETURN"))
     @Inject(method = "registerPotionType", at = @At("RETURN"))
     private static void method_8080(Item item_1, CallbackInfo ci) {
     private static void method_8080(Item item_1, CallbackInfo ci) {
         if (item_1 instanceof PotionItem)
         if (item_1 instanceof PotionItem)
-            SELF_POTION_TYPES.add(Ingredient.ofItems(new ItemProvider[]{item_1}));
+            SELF_POTION_TYPES.add(Ingredient.ofItems(new ItemConvertible[]{item_1}));
     }
     }
     
     
     @Inject(method = "registerItemRecipe", at = @At("RETURN"))
     @Inject(method = "registerItemRecipe", at = @At("RETURN"))
     private static void method_8071(Item item_1, Item item_2, Item item_3, CallbackInfo ci) {
     private static void method_8071(Item item_1, Item item_2, Item item_3, CallbackInfo ci) {
         if (item_1 instanceof PotionItem && item_3 instanceof PotionItem)
         if (item_1 instanceof PotionItem && item_3 instanceof PotionItem)
-            SELF_ITEM_RECIPES.add(new BrewingRecipe(item_1, Ingredient.ofItems(new ItemProvider[]{item_2}), item_3));
+            SELF_ITEM_RECIPES.add(new BrewingRecipe(item_1, Ingredient.ofItems(new ItemConvertible[]{item_2}), item_3));
     }
     }
     
     
     @Inject(method = "registerPotionRecipe", at = @At("RETURN"))
     @Inject(method = "registerPotionRecipe", at = @At("RETURN"))
@@ -50,7 +50,7 @@ public class MixinBrewingRecipeRegistry {
         if (!REGISTERED_POTION_TYPES.contains(potion_2))
         if (!REGISTERED_POTION_TYPES.contains(potion_2))
             rei_registerPotionType(potion_2);
             rei_registerPotionType(potion_2);
         SELF_POTION_TYPES.stream().map(Ingredient::getStackArray).forEach(itemStacks -> Arrays.stream(itemStacks).forEach(stack -> {
         SELF_POTION_TYPES.stream().map(Ingredient::getStackArray).forEach(itemStacks -> Arrays.stream(itemStacks).forEach(stack -> {
-            DefaultPlugin.registerBrewingDisplay(new DefaultBrewingDisplay(PotionUtil.setPotion(stack.copy(), potion_1), Ingredient.ofItems(new ItemProvider[]{item_1}), PotionUtil.setPotion(stack.copy(), potion_2)));
+            DefaultPlugin.registerBrewingDisplay(new DefaultBrewingDisplay(PotionUtil.setPotion(stack.copy(), potion_1), Ingredient.ofItems(new ItemConvertible[]{item_1}), PotionUtil.setPotion(stack.copy(), potion_2)));
         }));
         }));
     }
     }
     
     

+ 4 - 3
src/main/java/me/shedaniel/rei/plugin/DefaultBlastingCategory.java

@@ -8,9 +8,10 @@ package me.shedaniel.rei.plugin;
 import com.mojang.blaze3d.platform.GlStateManager;
 import com.mojang.blaze3d.platform.GlStateManager;
 import me.shedaniel.rei.api.RecipeCategory;
 import me.shedaniel.rei.api.RecipeCategory;
 import me.shedaniel.rei.api.Renderable;
 import me.shedaniel.rei.api.Renderable;
+import me.shedaniel.rei.api.Renderer;
 import me.shedaniel.rei.gui.renderables.RecipeRenderer;
 import me.shedaniel.rei.gui.renderables.RecipeRenderer;
-import me.shedaniel.rei.gui.widget.SlotWidget;
 import me.shedaniel.rei.gui.widget.RecipeBaseWidget;
 import me.shedaniel.rei.gui.widget.RecipeBaseWidget;
+import me.shedaniel.rei.gui.widget.SlotWidget;
 import me.shedaniel.rei.gui.widget.Widget;
 import me.shedaniel.rei.gui.widget.Widget;
 import net.minecraft.block.Blocks;
 import net.minecraft.block.Blocks;
 import net.minecraft.client.MinecraftClient;
 import net.minecraft.client.MinecraftClient;
@@ -36,8 +37,8 @@ public class DefaultBlastingCategory implements RecipeCategory<DefaultBlastingDi
     }
     }
     
     
     @Override
     @Override
-    public ItemStack getCategoryIcon() {
-        return new ItemStack(Blocks.BLAST_FURNACE.getItem());
+    public Renderer getIcon() {
+        return Renderable.fromItemStack(new ItemStack(Blocks.BLAST_FURNACE));
     }
     }
     
     
     @Override
     @Override

+ 5 - 3
src/main/java/me/shedaniel/rei/plugin/DefaultBrewingCategory.java

@@ -7,8 +7,10 @@ package me.shedaniel.rei.plugin;
 
 
 import com.mojang.blaze3d.platform.GlStateManager;
 import com.mojang.blaze3d.platform.GlStateManager;
 import me.shedaniel.rei.api.RecipeCategory;
 import me.shedaniel.rei.api.RecipeCategory;
-import me.shedaniel.rei.gui.widget.SlotWidget;
+import me.shedaniel.rei.api.Renderable;
+import me.shedaniel.rei.api.Renderer;
 import me.shedaniel.rei.gui.widget.RecipeBaseWidget;
 import me.shedaniel.rei.gui.widget.RecipeBaseWidget;
+import me.shedaniel.rei.gui.widget.SlotWidget;
 import me.shedaniel.rei.gui.widget.Widget;
 import me.shedaniel.rei.gui.widget.Widget;
 import net.minecraft.block.Blocks;
 import net.minecraft.block.Blocks;
 import net.minecraft.client.MinecraftClient;
 import net.minecraft.client.MinecraftClient;
@@ -35,8 +37,8 @@ public class DefaultBrewingCategory implements RecipeCategory<DefaultBrewingDisp
     }
     }
     
     
     @Override
     @Override
-    public ItemStack getCategoryIcon() {
-        return new ItemStack(Blocks.BREWING_STAND);
+    public Renderer getIcon() {
+        return Renderable.fromItemStack(new ItemStack(Blocks.BREWING_STAND));
     }
     }
     
     
     @Override
     @Override

+ 5 - 3
src/main/java/me/shedaniel/rei/plugin/DefaultCampfireCategory.java

@@ -7,8 +7,10 @@ package me.shedaniel.rei.plugin;
 
 
 import com.mojang.blaze3d.platform.GlStateManager;
 import com.mojang.blaze3d.platform.GlStateManager;
 import me.shedaniel.rei.api.RecipeCategory;
 import me.shedaniel.rei.api.RecipeCategory;
-import me.shedaniel.rei.gui.widget.SlotWidget;
+import me.shedaniel.rei.api.Renderable;
+import me.shedaniel.rei.api.Renderer;
 import me.shedaniel.rei.gui.widget.RecipeBaseWidget;
 import me.shedaniel.rei.gui.widget.RecipeBaseWidget;
+import me.shedaniel.rei.gui.widget.SlotWidget;
 import me.shedaniel.rei.gui.widget.Widget;
 import me.shedaniel.rei.gui.widget.Widget;
 import net.minecraft.block.Blocks;
 import net.minecraft.block.Blocks;
 import net.minecraft.client.MinecraftClient;
 import net.minecraft.client.MinecraftClient;
@@ -34,8 +36,8 @@ public class DefaultCampfireCategory implements RecipeCategory<DefaultCampfireDi
     }
     }
     
     
     @Override
     @Override
-    public ItemStack getCategoryIcon() {
-        return new ItemStack(Blocks.CAMPFIRE);
+    public Renderer getIcon() {
+        return Renderable.fromItemStack(new ItemStack(Blocks.CAMPFIRE));
     }
     }
     
     
     @Override
     @Override

+ 5 - 3
src/main/java/me/shedaniel/rei/plugin/DefaultCraftingCategory.java

@@ -8,8 +8,10 @@ package me.shedaniel.rei.plugin;
 import com.google.common.collect.Lists;
 import com.google.common.collect.Lists;
 import com.mojang.blaze3d.platform.GlStateManager;
 import com.mojang.blaze3d.platform.GlStateManager;
 import me.shedaniel.rei.api.RecipeCategory;
 import me.shedaniel.rei.api.RecipeCategory;
-import me.shedaniel.rei.gui.widget.SlotWidget;
+import me.shedaniel.rei.api.Renderable;
+import me.shedaniel.rei.api.Renderer;
 import me.shedaniel.rei.gui.widget.RecipeBaseWidget;
 import me.shedaniel.rei.gui.widget.RecipeBaseWidget;
+import me.shedaniel.rei.gui.widget.SlotWidget;
 import me.shedaniel.rei.gui.widget.Widget;
 import me.shedaniel.rei.gui.widget.Widget;
 import net.minecraft.block.Blocks;
 import net.minecraft.block.Blocks;
 import net.minecraft.client.MinecraftClient;
 import net.minecraft.client.MinecraftClient;
@@ -34,8 +36,8 @@ public class DefaultCraftingCategory implements RecipeCategory<DefaultCraftingDi
     }
     }
     
     
     @Override
     @Override
-    public ItemStack getCategoryIcon() {
-        return new ItemStack(Blocks.CRAFTING_TABLE.getItem());
+    public Renderer getIcon() {
+        return Renderable.fromItemStack(new ItemStack(Blocks.CRAFTING_TABLE));
     }
     }
     
     
     @Override
     @Override

+ 3 - 2
src/main/java/me/shedaniel/rei/plugin/DefaultSmeltingCategory.java

@@ -8,6 +8,7 @@ package me.shedaniel.rei.plugin;
 import com.mojang.blaze3d.platform.GlStateManager;
 import com.mojang.blaze3d.platform.GlStateManager;
 import me.shedaniel.rei.api.RecipeCategory;
 import me.shedaniel.rei.api.RecipeCategory;
 import me.shedaniel.rei.api.Renderable;
 import me.shedaniel.rei.api.Renderable;
+import me.shedaniel.rei.api.Renderer;
 import me.shedaniel.rei.gui.renderables.RecipeRenderer;
 import me.shedaniel.rei.gui.renderables.RecipeRenderer;
 import me.shedaniel.rei.gui.widget.SlotWidget;
 import me.shedaniel.rei.gui.widget.SlotWidget;
 import me.shedaniel.rei.gui.widget.RecipeBaseWidget;
 import me.shedaniel.rei.gui.widget.RecipeBaseWidget;
@@ -36,8 +37,8 @@ public class DefaultSmeltingCategory implements RecipeCategory<DefaultSmeltingDi
     }
     }
     
     
     @Override
     @Override
-    public ItemStack getCategoryIcon() {
-        return new ItemStack(Blocks.FURNACE.getItem());
+    public Renderer getIcon() {
+        return Renderable.fromItemStack(new ItemStack(Blocks.FURNACE));
     }
     }
     
     
     @Override
     @Override

+ 4 - 3
src/main/java/me/shedaniel/rei/plugin/DefaultSmokingCategory.java

@@ -8,9 +8,10 @@ package me.shedaniel.rei.plugin;
 import com.mojang.blaze3d.platform.GlStateManager;
 import com.mojang.blaze3d.platform.GlStateManager;
 import me.shedaniel.rei.api.RecipeCategory;
 import me.shedaniel.rei.api.RecipeCategory;
 import me.shedaniel.rei.api.Renderable;
 import me.shedaniel.rei.api.Renderable;
+import me.shedaniel.rei.api.Renderer;
 import me.shedaniel.rei.gui.renderables.RecipeRenderer;
 import me.shedaniel.rei.gui.renderables.RecipeRenderer;
-import me.shedaniel.rei.gui.widget.SlotWidget;
 import me.shedaniel.rei.gui.widget.RecipeBaseWidget;
 import me.shedaniel.rei.gui.widget.RecipeBaseWidget;
+import me.shedaniel.rei.gui.widget.SlotWidget;
 import me.shedaniel.rei.gui.widget.Widget;
 import me.shedaniel.rei.gui.widget.Widget;
 import net.minecraft.block.Blocks;
 import net.minecraft.block.Blocks;
 import net.minecraft.client.MinecraftClient;
 import net.minecraft.client.MinecraftClient;
@@ -36,8 +37,8 @@ public class DefaultSmokingCategory implements RecipeCategory<DefaultSmokingDisp
     }
     }
     
     
     @Override
     @Override
-    public ItemStack getCategoryIcon() {
-        return new ItemStack(Blocks.SMOKER.getItem());
+    public Renderer getIcon() {
+        return Renderable.fromItemStack(new ItemStack(Blocks.SMOKER));
     }
     }
     
     
     @Override
     @Override

+ 5 - 3
src/main/java/me/shedaniel/rei/plugin/DefaultStoneCuttingCategory.java

@@ -8,8 +8,10 @@ package me.shedaniel.rei.plugin;
 import com.mojang.blaze3d.platform.GlStateManager;
 import com.mojang.blaze3d.platform.GlStateManager;
 import me.shedaniel.rei.api.DisplaySettings;
 import me.shedaniel.rei.api.DisplaySettings;
 import me.shedaniel.rei.api.RecipeCategory;
 import me.shedaniel.rei.api.RecipeCategory;
-import me.shedaniel.rei.gui.widget.SlotWidget;
+import me.shedaniel.rei.api.Renderable;
+import me.shedaniel.rei.api.Renderer;
 import me.shedaniel.rei.gui.widget.RecipeBaseWidget;
 import me.shedaniel.rei.gui.widget.RecipeBaseWidget;
+import me.shedaniel.rei.gui.widget.SlotWidget;
 import me.shedaniel.rei.gui.widget.Widget;
 import me.shedaniel.rei.gui.widget.Widget;
 import net.minecraft.block.Blocks;
 import net.minecraft.block.Blocks;
 import net.minecraft.client.MinecraftClient;
 import net.minecraft.client.MinecraftClient;
@@ -34,8 +36,8 @@ public class DefaultStoneCuttingCategory implements RecipeCategory<DefaultStoneC
     }
     }
     
     
     @Override
     @Override
-    public ItemStack getCategoryIcon() {
-        return new ItemStack(Blocks.STONECUTTER);
+    public Renderer getIcon() {
+        return Renderable.fromItemStack(new ItemStack(Blocks.STONECUTTER));
     }
     }
     
     
     @Override
     @Override