Просмотр исходного кода

Merge branch '1.14-dev' into 1.14

Daniel She 6 лет назад
Родитель
Сommit
f8d736b864
97 измененных файлов с 960 добавлено и 50 удалено
  1. 3 0
      CHANGELOG.md
  2. 12 12
      build.gradle
  3. 6 6
      gradle.properties
  4. 14 0
      src/main/java/com/zeitheron/hammercore/client/utils/Scissors.java
  5. 5 0
      src/main/java/me/shedaniel/rei/REIModMenuEntryPoint.java
  6. 5 0
      src/main/java/me/shedaniel/rei/RoughlyEnoughItemsCore.java
  7. 5 0
      src/main/java/me/shedaniel/rei/RoughlyEnoughItemsNetwork.java
  8. 5 0
      src/main/java/me/shedaniel/rei/api/BaseBoundsHandler.java
  9. 16 0
      src/main/java/me/shedaniel/rei/api/ButtonAreaSupplier.java
  10. 83 2
      src/main/java/me/shedaniel/rei/api/ClientHelper.java
  11. 39 0
      src/main/java/me/shedaniel/rei/api/ConfigManager.java
  12. 91 0
      src/main/java/me/shedaniel/rei/api/DisplayHelper.java
  13. 27 0
      src/main/java/me/shedaniel/rei/api/DisplaySettings.java
  14. 5 0
      src/main/java/me/shedaniel/rei/api/DisplayVisibility.java
  15. 21 0
      src/main/java/me/shedaniel/rei/api/DisplayVisibilityHandler.java
  16. 5 0
      src/main/java/me/shedaniel/rei/api/ItemCheatingMode.java
  17. 28 0
      src/main/java/me/shedaniel/rei/api/ItemRegistry.java
  18. 5 0
      src/main/java/me/shedaniel/rei/api/PluginDisabler.java
  19. 5 0
      src/main/java/me/shedaniel/rei/api/PluginFunction.java
  20. 10 0
      src/main/java/me/shedaniel/rei/api/REIPlugin.java
  21. 54 0
      src/main/java/me/shedaniel/rei/api/REIPluginEntry.java
  22. 80 1
      src/main/java/me/shedaniel/rei/api/RecipeCategory.java
  23. 5 0
      src/main/java/me/shedaniel/rei/api/RecipeDisplay.java
  24. 28 0
      src/main/java/me/shedaniel/rei/api/RecipeHelper.java
  25. 5 0
      src/main/java/me/shedaniel/rei/api/RelativePoint.java
  26. 8 0
      src/main/java/me/shedaniel/rei/api/Renderable.java
  27. 5 0
      src/main/java/me/shedaniel/rei/api/Renderer.java
  28. 5 0
      src/main/java/me/shedaniel/rei/api/SpeedCraftFunctional.java
  29. 5 0
      src/main/java/me/shedaniel/rei/client/BaseBoundsHandlerImpl.java
  30. 10 4
      src/main/java/me/shedaniel/rei/client/ClientHelperImpl.java
  31. 5 0
      src/main/java/me/shedaniel/rei/client/ConfigManagerImpl.java
  32. 5 3
      src/main/java/me/shedaniel/rei/client/ConfigObject.java
  33. 6 1
      src/main/java/me/shedaniel/rei/client/DisplayHelperImpl.java
  34. 5 0
      src/main/java/me/shedaniel/rei/client/ItemListOrdering.java
  35. 5 0
      src/main/java/me/shedaniel/rei/client/ItemRegistryImpl.java
  36. 5 0
      src/main/java/me/shedaniel/rei/client/PluginDisablerImpl.java
  37. 6 5
      src/main/java/me/shedaniel/rei/client/RecipeHelperImpl.java
  38. 5 0
      src/main/java/me/shedaniel/rei/client/RecipeScreenType.java
  39. 5 0
      src/main/java/me/shedaniel/rei/client/ScreenHelper.java
  40. 5 0
      src/main/java/me/shedaniel/rei/client/SearchArgument.java
  41. 5 0
      src/main/java/me/shedaniel/rei/client/Weather.java
  42. 5 0
      src/main/java/me/shedaniel/rei/gui/ContainerScreenOverlay.java
  43. 5 0
      src/main/java/me/shedaniel/rei/gui/PreRecipeViewingScreen.java
  44. 6 2
      src/main/java/me/shedaniel/rei/gui/RecipeViewingScreen.java
  45. 11 0
      src/main/java/me/shedaniel/rei/gui/VillagerRecipeViewingScreen.java
  46. 5 0
      src/main/java/me/shedaniel/rei/gui/config/ItemListOrderingConfig.java
  47. 5 0
      src/main/java/me/shedaniel/rei/gui/credits/CreditsEntryListWidget.java
  48. 5 0
      src/main/java/me/shedaniel/rei/gui/credits/CreditsScreen.java
  49. 5 0
      src/main/java/me/shedaniel/rei/gui/renderables/EmptyRenderer.java
  50. 5 0
      src/main/java/me/shedaniel/rei/gui/renderables/ItemStackRenderer.java
  51. 5 0
      src/main/java/me/shedaniel/rei/gui/renderables/RecipeRenderer.java
  52. 5 0
      src/main/java/me/shedaniel/rei/gui/renderables/SimpleRecipeRenderer.java
  53. 19 12
      src/main/java/me/shedaniel/rei/gui/widget/ButtonWidget.java
  54. 5 0
      src/main/java/me/shedaniel/rei/gui/widget/CategoryBaseWidget.java
  55. 5 0
      src/main/java/me/shedaniel/rei/gui/widget/ClickableLabelWidget.java
  56. 5 0
      src/main/java/me/shedaniel/rei/gui/widget/CraftableToggleButtonWidget.java
  57. 5 0
      src/main/java/me/shedaniel/rei/gui/widget/DetailedButtonWidget.java
  58. 5 0
      src/main/java/me/shedaniel/rei/gui/widget/DraggableWidget.java
  59. 5 0
      src/main/java/me/shedaniel/rei/gui/widget/HighlightableWidget.java
  60. 5 0
      src/main/java/me/shedaniel/rei/gui/widget/ItemListOverlay.java
  61. 5 0
      src/main/java/me/shedaniel/rei/gui/widget/ItemSlotWidget.java
  62. 5 0
      src/main/java/me/shedaniel/rei/gui/widget/LabelWidget.java
  63. 5 0
      src/main/java/me/shedaniel/rei/gui/widget/QueuedTooltip.java
  64. 5 0
      src/main/java/me/shedaniel/rei/gui/widget/RecipeBaseWidget.java
  65. 5 0
      src/main/java/me/shedaniel/rei/gui/widget/RecipeChoosePageWidget.java
  66. 6 2
      src/main/java/me/shedaniel/rei/gui/widget/SearchFieldWidget.java
  67. 5 0
      src/main/java/me/shedaniel/rei/gui/widget/SlotBaseWidget.java
  68. 5 0
      src/main/java/me/shedaniel/rei/gui/widget/SlotWidget.java
  69. 5 0
      src/main/java/me/shedaniel/rei/gui/widget/SpeedCraftingButtonWidget.java
  70. 5 0
      src/main/java/me/shedaniel/rei/gui/widget/TabWidget.java
  71. 5 0
      src/main/java/me/shedaniel/rei/gui/widget/TextFieldWidget.java
  72. 16 0
      src/main/java/me/shedaniel/rei/gui/widget/Widget.java
  73. 5 0
      src/main/java/me/shedaniel/rei/listeners/ContainerScreenHooks.java
  74. 5 0
      src/main/java/me/shedaniel/rei/listeners/CreativePlayerInventoryScreenHooks.java
  75. 5 0
      src/main/java/me/shedaniel/rei/listeners/RecipeBookGuiHooks.java
  76. 5 0
      src/main/java/me/shedaniel/rei/mixin/MixinBrewingRecipeRegistry.java
  77. 5 0
      src/main/java/me/shedaniel/rei/plugin/BrewingRecipe.java
  78. 5 0
      src/main/java/me/shedaniel/rei/plugin/DefaultBlastingCategory.java
  79. 5 0
      src/main/java/me/shedaniel/rei/plugin/DefaultBlastingDisplay.java
  80. 5 0
      src/main/java/me/shedaniel/rei/plugin/DefaultBrewingCategory.java
  81. 5 0
      src/main/java/me/shedaniel/rei/plugin/DefaultBrewingDisplay.java
  82. 5 0
      src/main/java/me/shedaniel/rei/plugin/DefaultCampfireCategory.java
  83. 5 0
      src/main/java/me/shedaniel/rei/plugin/DefaultCampfireDisplay.java
  84. 5 0
      src/main/java/me/shedaniel/rei/plugin/DefaultCraftingCategory.java
  85. 5 0
      src/main/java/me/shedaniel/rei/plugin/DefaultCraftingDisplay.java
  86. 5 0
      src/main/java/me/shedaniel/rei/plugin/DefaultCustomDisplay.java
  87. 5 0
      src/main/java/me/shedaniel/rei/plugin/DefaultPlugin.java
  88. 5 0
      src/main/java/me/shedaniel/rei/plugin/DefaultShapedDisplay.java
  89. 5 0
      src/main/java/me/shedaniel/rei/plugin/DefaultShapelessDisplay.java
  90. 5 0
      src/main/java/me/shedaniel/rei/plugin/DefaultSmeltingCategory.java
  91. 5 0
      src/main/java/me/shedaniel/rei/plugin/DefaultSmeltingDisplay.java
  92. 5 0
      src/main/java/me/shedaniel/rei/plugin/DefaultSmokingCategory.java
  93. 5 0
      src/main/java/me/shedaniel/rei/plugin/DefaultSmokingDisplay.java
  94. 5 0
      src/main/java/me/shedaniel/rei/plugin/DefaultStoneCuttingCategory.java
  95. 5 0
      src/main/java/me/shedaniel/rei/plugin/DefaultStoneCuttingDisplay.java
  96. 5 0
      src/main/java/me/shedaniel/rei/utils/ClothScreenRegistry.java
  97. BIN
      src/main/resources/assets/roughlyenoughitems/textures/gui/button.png

+ 3 - 0
CHANGELOG.md

@@ -1,4 +1,7 @@
 View full changelog [here](https://github.com/shedaniel/RoughlyEnoughItems/blob/1.14/CHANGELOG.md).
+## v2.9-beta+build.109 (BETA)
+- Fixed [#92](https://github.com/shedaniel/RoughlyEnoughItems/issues/92): Make REI Buttons use an extra sheet
+- Adds: Support for `{item_name}` in cheating items for getting the path of the item identifier
 ## v2.9-beta+build.108 (BETA)
 - Fixed [#88](https://github.com/shedaniel/RoughlyEnoughItems/issues/88): Stupid Item Search
 ## v2.9-beta+build.107 (BETA)

+ 12 - 12
build.gradle

@@ -50,21 +50,21 @@ dependencies {
     minecraft "com.mojang:minecraft:${project.minecraft_version}"
     mappings "net.fabricmc:yarn:${project.yarn_version}"
     modCompile "net.fabricmc:fabric-loader:${project.fabricloader_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:${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 "cloth:ClothEvents:${cloth_events_version}"
     modCompile "cloth-config:ClothConfig:${cloth_config_version}"
     if (includeDep) {
-        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:${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 "cloth:ClothEvents:${cloth_events_version}"
         include "cloth-config:ClothConfig:${cloth_config_version}"
     }

+ 6 - 6
gradle.properties

@@ -1,4 +1,4 @@
-mod_version=2.9-beta+build.108
+mod_version=2.9-beta+build.109
 minecraft_version=1.14
 yarn_version=1.14+build.5
 fabricloader_version=0.4.6+build.141
@@ -8,8 +8,8 @@ cloth_config_version=0.2.1.14
 modmenu_version=1.4.0-71
 fabric_version=0.2.7+build.127
 
-fabric_keybindings=0.1.0
-fabric_lib=0.1.0
-fabric_networking=0.1.0
-fabric_events_lifecycle=0.1.0
-fabric_resource_loader=0.1.0
+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

+ 14 - 0
src/main/java/com/zeitheron/hammercore/client/utils/Scissors.java

@@ -11,10 +11,21 @@ import org.lwjgl.opengl.GL11;
  * @author Zeitheron
  */
 public class Scissors {
+    /**
+     * Starts the scissor test
+     */
     public static void begin() {
         GL11.glEnable(GL11.GL_SCISSOR_TEST);
     }
     
+    /**
+     * Setup the scissor bounds
+     *
+     * @param x      the top left x coordinates
+     * @param y      the top left y coordinates
+     * @param width  the width of the bounds
+     * @param height the height of the bounds
+     */
     public static void scissor(int x, int y, int width, int height) {
         Window window = MinecraftClient.getInstance().window;
         
@@ -32,6 +43,9 @@ public class Scissors {
         GL11.glScissor(x, sh - height - y, width, height);
     }
     
+    /**
+     * Stops the scissor test
+     */
     public static void end() {
         GL11.glDisable(GL11.GL_SCISSOR_TEST);
     }

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

@@ -1,3 +1,8 @@
+/*
+ * Roughly Enough Items by Danielshe.
+ * Licensed under the MIT License.
+ */
+
 package me.shedaniel.rei;
 
 import io.github.prospector.modmenu.api.ModMenuApi;

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

@@ -1,3 +1,8 @@
+/*
+ * Roughly Enough Items by Danielshe.
+ * Licensed under the MIT License.
+ */
+
 package me.shedaniel.rei;
 
 import com.google.common.collect.Lists;

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

@@ -1,3 +1,8 @@
+/*
+ * Roughly Enough Items by Danielshe.
+ * Licensed under the MIT License.
+ */
+
 package me.shedaniel.rei;
 
 import me.shedaniel.rei.gui.widget.ItemListOverlay;

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

@@ -1,3 +1,8 @@
+/*
+ * Roughly Enough Items by Danielshe.
+ * Licensed under the MIT License.
+ */
+
 package me.shedaniel.rei.api;
 
 import net.minecraft.client.gui.Screen;

+ 16 - 0
src/main/java/me/shedaniel/rei/api/ButtonAreaSupplier.java

@@ -1,11 +1,27 @@
+/*
+ * Roughly Enough Items by Danielshe.
+ * Licensed under the MIT License.
+ */
+
 package me.shedaniel.rei.api;
 
 import java.awt.*;
 
 public interface ButtonAreaSupplier {
     
+    /**
+     * Declares the button bounds
+     *
+     * @param bounds the bounds of the recipe display
+     * @return the bounds of the button
+     */
     Rectangle get(Rectangle bounds);
     
+    /**
+     * Declares the button text
+     *
+     * @return the text of the button
+     */
     default String getButtonText() {
         return "+";
     }

+ 83 - 2
src/main/java/me/shedaniel/rei/api/ClientHelper.java

@@ -1,7 +1,11 @@
+/*
+ * Roughly Enough Items by Danielshe.
+ * Licensed under the MIT License.
+ */
+
 package me.shedaniel.rei.api;
 
 import me.shedaniel.rei.client.ClientHelperImpl;
-import net.fabricmc.api.ClientModInitializer;
 import net.fabricmc.fabric.api.client.keybinding.FabricKeyBinding;
 import net.minecraft.item.Item;
 import net.minecraft.item.ItemStack;
@@ -10,35 +14,107 @@ import net.minecraft.util.Identifier;
 import java.util.List;
 import java.util.Map;
 
-public interface ClientHelper extends ClientModInitializer {
+public interface ClientHelper {
+    /**
+     * @return the api instance of {@link ClientHelperImpl}
+     */
     static ClientHelper getInstance() {
         return ClientHelperImpl.instance;
     }
     
+    /**
+     * Checks if cheating is enabled
+     *
+     * @return whether cheating is enabled
+     */
     boolean isCheating();
     
+    /**
+     * Sets current cheating mode
+     * Should save the config in {@link ConfigManager}.
+     *
+     * @param cheating the new cheating mode
+     */
     void setCheating(boolean cheating);
     
     List<ItemStack> getInventoryItemsTypes();
     
+    /**
+     * Opens a recipe viewing screen:
+     * {@link me.shedaniel.rei.gui.PreRecipeViewingScreen} if not set
+     * {@link me.shedaniel.rei.gui.RecipeViewingScreen} if set to default
+     * {@link me.shedaniel.rei.gui.VillagerRecipeViewingScreen} if set to villager
+     *
+     * @param map the map of recipes
+     */
     void openRecipeViewingScreen(Map<RecipeCategory, List<RecipeDisplay>> map);
     
+    /**
+     * Registers REI's keybinds using Fabric API.
+     */
     void registerFabricKeyBinds();
     
+    /**
+     * Tries to cheat items using either packets or commands.
+     *
+     * @param stack the stack to cheat in
+     * @return whether it failed
+     */
     boolean tryCheatingStack(ItemStack stack);
     
+    /**
+     * Finds recipe for the item and opens the recipe screen.
+     *
+     * @param stack the stack to find recipe for
+     * @return whether the stack has any recipes to show
+     */
     boolean executeRecipeKeyBind(ItemStack stack);
     
+    /**
+     * Finds usage for the item and opens the recipe screen.
+     *
+     * @param stack the stack to find usage for
+     * @return whether the stack has any usages to show
+     */
     boolean executeUsageKeyBind(ItemStack stack);
     
+    /**
+     * Gets the mod from an item
+     *
+     * @param item
+     * @return the mod name
+     */
     String getModFromItem(Item item);
     
+    /**
+     * Tries to delete the player's cursor item
+     *
+     * @return whether it failed
+     */
     void sendDeletePacket();
     
+    /**
+     * Gets the formatted mod from an item
+     *
+     * @param item
+     * @return the mod name with blue and italic formatting
+     */
     String getFormattedModFromItem(Item item);
     
+    /**
+     * Gets the formatted mod from an identifier
+     *
+     * @param identifier
+     * @return the mod name with blue and italic formatting
+     */
     String getFormattedModFromIdentifier(Identifier identifier);
     
+    /**
+     * Gets the mod from an identifier
+     *
+     * @param identifier
+     * @return the mod name
+     */
     String getModFromIdentifier(Identifier identifier);
     
     FabricKeyBinding getRecipeKeyBinding();
@@ -51,5 +127,10 @@ public interface ClientHelper extends ClientModInitializer {
     
     FabricKeyBinding getNextPageKeyBinding();
     
+    /**
+     * Finds all recipes and open them in a recipe screen.
+     *
+     * @return whether there are any recipes to show
+     */
     boolean executeViewAllRecipesKeyBind();
 }

+ 39 - 0
src/main/java/me/shedaniel/rei/api/ConfigManager.java

@@ -1,3 +1,8 @@
+/*
+ * Roughly Enough Items by Danielshe.
+ * Licensed under the MIT License.
+ */
+
 package me.shedaniel.rei.api;
 
 import me.shedaniel.rei.client.ConfigObject;
@@ -7,18 +12,52 @@ import java.io.IOException;
 
 public interface ConfigManager {
     
+    /**
+     * Saves the config.
+     *
+     * @throws IOException
+     */
     void saveConfig() throws IOException;
     
+    /**
+     * Loads the config from the json file, creates the file if not found.
+     *
+     * @throws IOException
+     */
     void loadConfig() throws IOException;
     
+    /**
+     * Gets the config instance
+     *
+     * @return the config instance
+     */
     ConfigObject getConfig();
     
+    /**
+     * Gets if craftable only filter is enabled
+     *
+     * @return whether craftable only filter is enabled
+     */
     boolean isCraftableOnlyEnabled();
     
+    /**
+     * Toggles the craftable only filter
+     */
     void toggleCraftableOnly();
     
+    /**
+     * Opens the config screen
+     *
+     * @param parent the screen shown before
+     */
     void openConfigScreen(Screen parent);
     
+    /**
+     * Gets the config screen
+     *
+     * @param parent the screen shown before
+     * @return the config screen
+     */
     Screen getConfigScreen(Screen parent);
     
 }

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

@@ -1,3 +1,8 @@
+/*
+ * Roughly Enough Items by Danielshe.
+ * Licensed under the MIT License.
+ */
+
 package me.shedaniel.rei.api;
 
 import me.shedaniel.rei.RoughlyEnoughItemsCore;
@@ -10,41 +15,127 @@ import static net.minecraft.util.ActionResult.PASS;
 
 public interface DisplayHelper {
     
+    /**
+     * Gets the sorted version of all responsible bounds handlers
+     *
+     * @param screenClass the class for checking responsible bounds handlers
+     * @return the sorted list of responsible bounds handlers
+     * @see DisplayHelper#getResponsibleBoundsHandler(Class) for the unsorted version
+     */
     List<DisplayBoundsHandler> getSortedBoundsHandlers(Class screenClass);
     
+    /**
+     * Gets all registered bounds handlers
+     *
+     * @return the list of registered bounds handlers
+     */
     List<DisplayBoundsHandler> getAllBoundsHandlers();
     
+    /**
+     * Gets all responsible bounds handlers
+     *
+     * @param screenClass the class for checking responsible bounds handlers
+     * @return the the list of responsible bounds handlers
+     * @see DisplayHelper#getSortedBoundsHandlers(Class) for the sorted version
+     */
     DisplayBoundsHandler getResponsibleBoundsHandler(Class screenClass);
     
+    /**
+     * Registers a bounds handler
+     *
+     * @param handler the handler to register
+     */
     void registerBoundsHandler(DisplayBoundsHandler handler);
     
+    /**
+     * Gets the base bounds handler api for exclusion zones
+     *
+     * @return the base bounds handler
+     */
     BaseBoundsHandler getBaseBoundsHandler();
     
     public static interface DisplayBoundsHandler<T> {
+        /**
+         * An empty rectangle
+         */
         public static final Rectangle EMPTY = new Rectangle();
         
+        /**
+         * Gets the base supported class for the bounds handler
+         *
+         * @return
+         */
         Class getBaseSupportedClass();
         
+        /**
+         * Gets the left bounds of the overlay
+         *
+         * @param screen the current screen
+         * @return the left bounds
+         */
         Rectangle getLeftBounds(T screen);
         
+        /**
+         * Gets the right bounds of the overlay
+         *
+         * @param screen the current screen
+         * @return the right bounds
+         */
         Rectangle getRightBounds(T screen);
         
+        /**
+         * Checks if item slot can fit the screen
+         *
+         * @param isOnRightSide whether the user has set the overlay to the right
+         * @param left          the left x coordinates of the stack
+         * @param top           the top y coordinates for the stack
+         * @param screen        the current screen
+         * @param fullBounds    the current bounds
+         * @return whether the item slot can fit
+         * @see BaseBoundsHandler#registerExclusionZones(Class, BaseBoundsHandler.ExclusionZoneSupplier) for easier api
+         */
         default ActionResult canItemSlotWidgetFit(boolean isOnRightSide, int left, int top, T screen, Rectangle fullBounds) {
             return PASS;
         }
         
+        /**
+         * Checks if mouse is inside the overlay
+         *
+         * @param isOnRightSide whether the user has set the overlay to the right
+         * @param mouseX        mouse's x coordinates
+         * @param mouseY        mouse's y coordinates
+         * @return whether mouse is inside the overlay
+         */
         default ActionResult isInZone(boolean isOnRightSide, double mouseX, double mouseY) {
             return PASS;
         }
         
+        /**
+         * Gets the item list bounds by the overlay bounds
+         *
+         * @param rectangle the overlay bounds
+         * @return the item list bounds
+         */
         default Rectangle getItemListArea(Rectangle rectangle) {
             return new Rectangle(rectangle.x + 2, rectangle.y + 24, rectangle.width - 4, rectangle.height - (RoughlyEnoughItemsCore.getConfigManager().getConfig().sideSearchField ? 27 + 22 : 27));
         }
         
+        /**
+         * Checks if REI should recalculate the overlay bounds
+         *
+         * @param isOnRightSide whether the user has set the overlay to the right
+         * @param rectangle     the current overlay bounds
+         * @return whether REI should recalculate the overlay bounds
+         */
         default boolean shouldRecalculateArea(boolean isOnRightSide, Rectangle rectangle) {
             return false;
         }
         
+        /**
+         * Gets the priority of the handler, the higher it is, the earlier it is called.
+         *
+         * @return the priority in float
+         */
         default float getPriority() {
             return 0f;
         }

+ 27 - 0
src/main/java/me/shedaniel/rei/api/DisplaySettings.java

@@ -1,13 +1,40 @@
+/*
+ * Roughly Enough Items by Danielshe.
+ * Licensed under the MIT License.
+ */
+
 package me.shedaniel.rei.api;
 
 public interface DisplaySettings<T extends RecipeDisplay> {
     
+    /**
+     * Gets the recipe display height
+     *
+     * @param category the category of the display
+     * @return the height
+     */
     int getDisplayHeight(RecipeCategory category);
     
+    /**
+     * Gets the recipe display width
+     *
+     * @param category the category of the display
+     * @param display  the display of the recipe
+     * @return the width
+     */
     int getDisplayWidth(RecipeCategory category, T display);
     
+    /**
+     * Gets the maximum amount of recipe displays of the category displayed at the same time.
+     * @param category the category of the displays
+     * @return the maximum amount
+     */
     int getMaximumRecipePerPage(RecipeCategory category);
     
+    /**
+     * Gets the fixed amount of recipes per page.
+     * @return the amount of recipes, returns -1 if not fixed
+     */
     default int getFixedRecipesPerPage() {
         return -1;
     }

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

@@ -1,3 +1,8 @@
+/*
+ * Roughly Enough Items by Danielshe.
+ * Licensed under the MIT License.
+ */
+
 package me.shedaniel.rei.api;
 
 public enum DisplayVisibility {

+ 21 - 0
src/main/java/me/shedaniel/rei/api/DisplayVisibilityHandler.java

@@ -1,11 +1,32 @@
+/*
+ * Roughly Enough Items by Danielshe.
+ * Licensed under the MIT License.
+ */
+
 package me.shedaniel.rei.api;
 
 public interface DisplayVisibilityHandler {
     
+    /**
+     * Gets the priority of the handler
+     *
+     * @return the priority
+     */
     default float getPriority() {
         return 0f;
     }
     
+    /**
+     * Handles the visibility of the display.
+     * {@link DisplayVisibility.PASS} to pass the handling to another handler
+     * {@link DisplayVisibility.ALWAYS_VISIBLE} to always display it
+     * {@link DisplayVisibility.CONFIG_OPTIONAL} to allow user to configure the visibility
+     * {@link DisplayVisibility.NEVER_VISIBLE} to never display it
+     *
+     * @param category the category of the display
+     * @param display  the display of the recipe
+     * @return the visibility
+     */
     DisplayVisibility handleDisplay(RecipeCategory category, RecipeDisplay display);
     
 }

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

@@ -1,3 +1,8 @@
+/*
+ * Roughly Enough Items by Danielshe.
+ * Licensed under the MIT License.
+ */
+
 package me.shedaniel.rei.api;
 
 public enum ItemCheatingMode {

+ 28 - 0
src/main/java/me/shedaniel/rei/api/ItemRegistry.java

@@ -1,3 +1,8 @@
+/*
+ * Roughly Enough Items by Danielshe.
+ * Licensed under the MIT License.
+ */
+
 package me.shedaniel.rei.api;
 
 import net.minecraft.item.Item;
@@ -7,12 +12,29 @@ import java.util.List;
 
 public interface ItemRegistry {
     
+    /**
+     * Gets the current unmodifiable item list
+     *
+     * @return an unmodifiable item list
+     */
     List<ItemStack> getItemList();
     
+    /**
+     * Gets the current modifiable item list
+     *
+     * @return an modifiable item list
+     */
+    @Deprecated
     List<ItemStack> getModifiableItemList();
     
     ItemStack[] getAllStacksFromItem(Item item);
     
+    /**
+     * Registers an new stack to the item list
+     *
+     * @param afterItem
+     * @param stack     the stack to register
+     */
     void registerItemStack(Item afterItem, ItemStack stack);
     
     default void registerItemStack(Item afterItem, ItemStack... stacks) {
@@ -27,6 +49,12 @@ public interface ItemRegistry {
                 registerItemStack(null, stack);
     }
     
+    /**
+     * Checks if a stack is already registered
+     *
+     * @param stack the stack to check
+     * @return whether the stack has been registered
+     */
     default boolean alreadyContain(ItemStack stack) {
         return getItemList().stream().anyMatch(stack1 -> ItemStack.areEqual(stack, stack1));
     }

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

@@ -1,3 +1,8 @@
+/*
+ * Roughly Enough Items by Danielshe.
+ * Licensed under the MIT License.
+ */
+
 package me.shedaniel.rei.api;
 
 import net.minecraft.util.Identifier;

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

@@ -1,3 +1,8 @@
+/*
+ * Roughly Enough Items by Danielshe.
+ * Licensed under the MIT License.
+ */
+
 package me.shedaniel.rei.api;
 
 public enum PluginFunction {

+ 10 - 0
src/main/java/me/shedaniel/rei/api/REIPlugin.java

@@ -1,8 +1,18 @@
+/*
+ * Roughly Enough Items by Danielshe.
+ * Licensed under the MIT License.
+ */
+
 package me.shedaniel.rei.api;
 
 import me.shedaniel.rei.RoughlyEnoughItemsCore;
 import net.minecraft.util.Identifier;
 
+/**
+ * Get base class of a REI plugin.
+ * This class has been replaced by {@link REIPluginEntry}
+ */
+@Deprecated
 public interface REIPlugin extends REIPluginEntry {
     @Override
     default Identifier getPluginIdentifier() {

+ 54 - 0
src/main/java/me/shedaniel/rei/api/REIPluginEntry.java

@@ -1,28 +1,82 @@
+/*
+ * Roughly Enough Items by Danielshe.
+ * Licensed under the MIT License.
+ */
+
 package me.shedaniel.rei.api;
 
 import net.minecraft.util.Identifier;
 
+/**
+ * Get base class of a REI plugin.
+ */
 public interface REIPluginEntry {
     
+    /**
+     * On register of the plugin
+     *
+     * @param pluginDisabler the helper class to disable other plugins
+     */
     default void onFirstLoad(PluginDisabler pluginDisabler) {}
     
+    /**
+     * Registers items on the item panel
+     *
+     * @param itemRegistry the helper class
+     */
     default void registerItems(ItemRegistry itemRegistry) {}
     
+    /**
+     * Registers categories
+     *
+     * @param recipeHelper the helper class
+     */
     default void registerPluginCategories(RecipeHelper recipeHelper) {}
     
+    /**
+     * Registers displays for categories
+     *
+     * @param recipeHelper the helper class
+     */
     default void registerRecipeDisplays(RecipeHelper recipeHelper) {}
     
+    /**
+     * Not called anymore!
+     *
+     * @param recipeHelper
+     * @see REIPluginEntry#registerOthers(RecipeHelper)
+     */
     @Deprecated
     default void registerSpeedCraft(RecipeHelper recipeHelper) {}
     
+    /**
+     * Registers bounds handlers
+     *
+     * @param displayHelper the helper class
+     */
     default void registerBounds(DisplayHelper displayHelper) {}
     
+    /**
+     * Register other stuff
+     *
+     * @param recipeHelper the helper class
+     */
     default void registerOthers(RecipeHelper recipeHelper) {}
     
+    /**
+     * Gets the priority of the plugin.
+     *
+     * @return the priority
+     */
     default int getPriority() {
         return 0;
     }
     
+    /**
+     * Get the identifier of the plugin
+     *
+     * @return the identifier
+     */
     Identifier getPluginIdentifier();
     
 }

+ 80 - 1
src/main/java/me/shedaniel/rei/api/RecipeCategory.java

@@ -1,3 +1,8 @@
+/*
+ * Roughly Enough Items by Danielshe.
+ * Licensed under the MIT License.
+ */
+
 package me.shedaniel.rei.api;
 
 import me.shedaniel.rei.gui.RecipeViewingScreen;
@@ -17,30 +22,80 @@ import java.util.function.Supplier;
 
 public interface RecipeCategory<T extends RecipeDisplay> {
     
+    /**
+     * Gets the identifier of the category, must be unique
+     *
+     * @return the unique identifier of the category
+     */
     Identifier getIdentifier();
     
-    ItemStack getCategoryIcon();
+    /**
+     * Gets the stack to render for the icon
+     *
+     * @return the stack to render
+     * @deprecated use {@link RecipeCategory#getIcon()} instead
+     */
+    @Deprecated
+    default ItemStack getCategoryIcon() {
+        return ItemStack.EMPTY;
+    }
     
+    /**
+     * Gets the renderer of the icon, allowing developers to render things other than items
+     *
+     * @return the renderer of the icon
+     */
     default Renderer getIcon() {
         return Renderable.fromItemStackSupplier(this::getCategoryIcon);
     }
     
+    /**
+     * Gets the category name
+     *
+     * @return the name
+     */
     String getCategoryName();
     
+    /**
+     * Gets the recipe renderer for the category, used in {@link me.shedaniel.rei.gui.VillagerRecipeViewingScreen} for rendering simple recipes
+     *
+     * @param recipe the recipe to render
+     * @return the recipe renderer
+     */
     default RecipeRenderer getSimpleRenderer(T recipe) {
         return Renderable.fromRecipe(recipe::getInput, recipe::getOutput);
     }
     
+    /**
+     * Setup the widgets for displaying the recipe
+     *
+     * @param recipeDisplaySupplier the supplier for getting the recipe
+     * @param bounds                the bounds of the display, configurable with overriding {@link RecipeCategory#getDisplaySettings()}
+     * @return the list of widgets
+     */
     default List<Widget> setupDisplay(Supplier<T> recipeDisplaySupplier, Rectangle bounds) {
         return Collections.singletonList(new RecipeBaseWidget(bounds));
     }
     
+    /**
+     * Draws the category background, used in {@link RecipeViewingScreen}
+     *
+     * @param bounds the bounds of the whole recipe viewing screen
+     * @param mouseX the x coordinates for the mouse
+     * @param mouseY the y coordinates for the mouse
+     * @param delta  the delta
+     */
     default void drawCategoryBackground(Rectangle bounds, int mouseX, int mouseY, float delta) {
         new CategoryBaseWidget(bounds).render();
         DrawableHelper.fill(bounds.x + 17, bounds.y + 5, bounds.x + bounds.width - 17, bounds.y + 17, RecipeViewingScreen.SUB_COLOR.getRGB());
         DrawableHelper.fill(bounds.x + 17, bounds.y + 21, bounds.x + bounds.width - 17, bounds.y + 33, RecipeViewingScreen.SUB_COLOR.getRGB());
     }
     
+    /**
+     * Gets the display settings for the category, used for getting the bounds for the display
+     *
+     * @return the display settings
+     */
     default DisplaySettings getDisplaySettings() {
         return new DisplaySettings<T>() {
             @Override
@@ -60,18 +115,42 @@ public interface RecipeCategory<T extends RecipeDisplay> {
         };
     }
     
+    /**
+     * Gets the recipe display height
+     *
+     * @return the recipe display height
+     * @apiNote Please do not override this, use {@link RecipeCategory#getDisplaySettings()} instead
+     */
     default int getDisplayHeight() {
         return RecipeHelper.getInstance().getCachedCategorySettings(getIdentifier()).map(settings -> settings.getDisplayHeight(this)).orElse(0);
     }
     
+    /**
+     * Gets the recipe display width
+     *
+     * @param display the recipe display
+     * @return the recipe display width
+     * @apiNote Please do not override this, use {@link RecipeCategory#getDisplaySettings()} instead
+     */
     default int getDisplayWidth(T display) {
         return RecipeHelper.getInstance().getCachedCategorySettings(getIdentifier()).map(settings -> settings.getDisplayWidth(this, display)).orElse(0);
     }
     
+    /**
+     * Gets the maximum recipe per page
+     *
+     * @return the maximum amount of recipes for page
+     * @apiNote Please do not override this, use {@link RecipeCategory#getDisplaySettings()} instead
+     */
     default int getMaximumRecipePerPage() {
         return RecipeHelper.getInstance().getCachedCategorySettings(getIdentifier()).map(settings -> settings.getMaximumRecipePerPage(this)).orElse(0);
     }
     
+    /**
+     * Gets whether the category will check tags, useful for potions
+     *
+     * @return whether the category will check tags
+     */
     default boolean checkTags() {
         return false;
     }

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

@@ -1,3 +1,8 @@
+/*
+ * Roughly Enough Items by Danielshe.
+ * Licensed under the MIT License.
+ */
+
 package me.shedaniel.rei.api;
 
 import com.google.common.collect.Lists;

+ 28 - 0
src/main/java/me/shedaniel/rei/api/RecipeHelper.java

@@ -1,3 +1,8 @@
+/*
+ * Roughly Enough Items by Danielshe.
+ * Licensed under the MIT License.
+ */
+
 package me.shedaniel.rei.api;
 
 import me.shedaniel.rei.RoughlyEnoughItemsCore;
@@ -12,6 +17,9 @@ import java.util.Optional;
 
 public interface RecipeHelper {
     
+    /**
+     * @return the api instance of {@link me.shedaniel.rei.client.RecipeHelperImpl}
+     */
     static RecipeHelper getInstance() {
         return RoughlyEnoughItemsCore.getRecipeHelper();
     }
@@ -22,14 +30,34 @@ public interface RecipeHelper {
     
     List<ItemStack> findCraftableByItems(List<ItemStack> inventoryItems);
     
+    /**
+     * Registers a category
+     *
+     * @param category the category to register
+     */
     void registerCategory(RecipeCategory category);
     
+    /**
+     * Registers a recipe display
+     *
+     * @param categoryIdentifier the category to display in
+     * @param display            the recipe display
+     */
     void registerDisplay(Identifier categoryIdentifier, RecipeDisplay display);
     
     Map<RecipeCategory, List<RecipeDisplay>> getRecipesFor(ItemStack stack);
     
+    /**
+     * Gets the vanilla recipe manager
+     *
+     * @return the recipe manager
+     */
     RecipeManager getRecipeManager();
     
+    /**
+     * Gets all registered categories
+     * @return the list of categories
+     */
     List<RecipeCategory> getAllCategories();
     
     Map<RecipeCategory, List<RecipeDisplay>> getUsagesFor(ItemStack stack);

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

@@ -1,3 +1,8 @@
+/*
+ * Roughly Enough Items by Danielshe.
+ * Licensed under the MIT License.
+ */
+
 package me.shedaniel.rei.api;
 
 public class RelativePoint {

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

@@ -1,3 +1,8 @@
+/*
+ * Roughly Enough Items by Danielshe.
+ * Licensed under the MIT License.
+ */
+
 package me.shedaniel.rei.api;
 
 import me.shedaniel.rei.gui.renderables.EmptyRenderer;
@@ -9,6 +14,9 @@ import net.minecraft.util.math.MathHelper;
 import java.util.List;
 import java.util.function.Supplier;
 
+/**
+ * The base class for renderables
+ */
 public interface Renderable {
     
     static ItemStackRenderer fromItemStackSupplier(Supplier<ItemStack> supplier) {

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

@@ -1,3 +1,8 @@
+/*
+ * Roughly Enough Items by Danielshe.
+ * Licensed under the MIT License.
+ */
+
 package me.shedaniel.rei.api;
 
 import net.minecraft.client.gui.DrawableHelper;

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

@@ -1,3 +1,8 @@
+/*
+ * Roughly Enough Items by Danielshe.
+ * Licensed under the MIT License.
+ */
+
 package me.shedaniel.rei.api;
 
 import net.minecraft.client.gui.Screen;

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

@@ -1,3 +1,8 @@
+/*
+ * Roughly Enough Items by Danielshe.
+ * Licensed under the MIT License.
+ */
+
 package me.shedaniel.rei.client;
 
 import com.google.common.collect.Lists;

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

@@ -1,3 +1,8 @@
+/*
+ * Roughly Enough Items by Danielshe.
+ * Licensed under the MIT License.
+ */
+
 package me.shedaniel.rei.client;
 
 import com.google.common.collect.ImmutableList;
@@ -12,6 +17,7 @@ import me.shedaniel.rei.api.RecipeHelper;
 import me.shedaniel.rei.gui.PreRecipeViewingScreen;
 import me.shedaniel.rei.gui.RecipeViewingScreen;
 import me.shedaniel.rei.gui.VillagerRecipeViewingScreen;
+import net.fabricmc.api.ClientModInitializer;
 import net.fabricmc.fabric.api.client.keybinding.FabricKeyBinding;
 import net.fabricmc.fabric.api.network.ClientSidePacketRegistry;
 import net.fabricmc.fabric.impl.client.keybinding.KeyBindingRegistryImpl;
@@ -36,7 +42,7 @@ import java.util.List;
 import java.util.Map;
 import java.util.Optional;
 
-public class ClientHelperImpl implements ClientHelper {
+public class ClientHelperImpl implements ClientHelper, ClientModInitializer {
     
     public static ClientHelperImpl instance;
     private final Identifier recipeKeybind = new Identifier("roughlyenoughitems", "recipe_keybind");
@@ -145,10 +151,10 @@ public class ClientHelperImpl implements ClientHelper {
             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 madeUpCommand = og.replaceAll("\\{player_name}", MinecraftClient.getInstance().player.getEntityName()).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) {
-                madeUpCommand = og.replaceAll("\\{player_name}", MinecraftClient.getInstance().player.getEntityName()).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);
+                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.sendChatMessage(madeUpCommand);
             return true;

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

@@ -1,3 +1,8 @@
+/*
+ * Roughly Enough Items by Danielshe.
+ * Licensed under the MIT License.
+ */
+
 package me.shedaniel.rei.client;
 
 import blue.endless.jankson.Jankson;

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

@@ -1,3 +1,8 @@
+/*
+ * Roughly Enough Items by Danielshe.
+ * Licensed under the MIT License.
+ */
+
 package me.shedaniel.rei.client;
 
 import blue.endless.jankson.Comment;
@@ -39,9 +44,6 @@ public class ConfigObject {
     
     public boolean preferVisibleRecipes = false;
     
-    //    @Comment("Enable support for old REI plugins which uses registerSpeedCraft")
-    //    public boolean enableLegacySpeedCraftSupport = false;
-    
     @Comment("Force enable 2019 REI April Fools' joke") public boolean aprilFoolsFish2019 = false;
     
     public ItemCheatingMode itemCheatingMode = ItemCheatingMode.REI_LIKE;

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

@@ -1,3 +1,8 @@
+/*
+ * Roughly Enough Items by Danielshe.
+ * Licensed under the MIT License.
+ */
+
 package me.shedaniel.rei.client;
 
 import com.google.common.collect.Lists;
@@ -18,7 +23,7 @@ public class DisplayHelperImpl implements DisplayHelper {
     private static final DisplayBoundsHandler EMPTY = new DisplayBoundsHandler() {
         @Override
         public Class getBaseSupportedClass() {
-            return Object.class;
+            return null;
         }
         
         @Override

+ 5 - 0
src/main/java/me/shedaniel/rei/client/ItemListOrdering.java

@@ -1,3 +1,8 @@
+/*
+ * Roughly Enough Items by Danielshe.
+ * Licensed under the MIT License.
+ */
+
 package me.shedaniel.rei.client;
 
 public enum ItemListOrdering {

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

@@ -1,3 +1,8 @@
+/*
+ * Roughly Enough Items by Danielshe.
+ * Licensed under the MIT License.
+ */
+
 package me.shedaniel.rei.client;
 
 import com.google.common.collect.Lists;

+ 5 - 0
src/main/java/me/shedaniel/rei/client/PluginDisablerImpl.java

@@ -1,3 +1,8 @@
+/*
+ * Roughly Enough Items by Danielshe.
+ * Licensed under the MIT License.
+ */
+
 package me.shedaniel.rei.client;
 
 import com.google.common.collect.Lists;

+ 6 - 5
src/main/java/me/shedaniel/rei/client/RecipeHelperImpl.java

@@ -1,3 +1,8 @@
+/*
+ * Roughly Enough Items by Danielshe.
+ * Licensed under the MIT License.
+ */
+
 package me.shedaniel.rei.client;
 
 import com.google.common.collect.Lists;
@@ -30,7 +35,6 @@ public class RecipeHelperImpl implements RecipeHelper {
         VISIBILITY_HANDLER_COMPARATOR = comparator.reversed();
     }
     
-    private final List<Recipe> sortedRecipes = new ArrayList<>();
     private final AtomicInteger recipeCount = new AtomicInteger();
     private final Map<Identifier, List<RecipeDisplay>> recipeCategoryListMap = Maps.newHashMap();
     private final Map<Identifier, DisplaySettings> categoryDisplaySettingsMap = Maps.newHashMap();
@@ -194,7 +198,6 @@ public class RecipeHelperImpl implements RecipeHelper {
         this.speedCraftFunctionalMap.clear();
         this.categoryDisplaySettingsMap.clear();
         this.displayVisibilityHandlers.clear();
-        this.sortedRecipes.clear();
         ((DisplayHelperImpl) RoughlyEnoughItemsCore.getDisplayHelper()).resetCache();
         BaseBoundsHandler baseBoundsHandler = new BaseBoundsHandlerImpl();
         RoughlyEnoughItemsCore.getDisplayHelper().registerBoundsHandler(baseBoundsHandler);
@@ -248,9 +251,7 @@ public class RecipeHelperImpl implements RecipeHelper {
     
     @Override
     public List<Recipe> getVanillaSortedRecipes() {
-        if (sortedRecipes.isEmpty())
-            sortedRecipes.addAll(getRecipeManager().values().stream().sorted(RECIPE_COMPARATOR).collect(Collectors.toSet()));
-        return sortedRecipes;
+        return getRecipeManager().values().stream().sorted(RECIPE_COMPARATOR).collect(Collectors.toList());
     }
     
     @Override

+ 5 - 0
src/main/java/me/shedaniel/rei/client/RecipeScreenType.java

@@ -1,3 +1,8 @@
+/*
+ * Roughly Enough Items by Danielshe.
+ * Licensed under the MIT License.
+ */
+
 package me.shedaniel.rei.client;
 
 import net.minecraft.client.resource.language.I18n;

+ 5 - 0
src/main/java/me/shedaniel/rei/client/ScreenHelper.java

@@ -1,3 +1,8 @@
+/*
+ * Roughly Enough Items by Danielshe.
+ * Licensed under the MIT License.
+ */
+
 package me.shedaniel.rei.client;
 
 import com.google.common.collect.Lists;

+ 5 - 0
src/main/java/me/shedaniel/rei/client/SearchArgument.java

@@ -1,3 +1,8 @@
+/*
+ * Roughly Enough Items by Danielshe.
+ * Licensed under the MIT License.
+ */
+
 package me.shedaniel.rei.client;
 
 import java.util.function.Function;

+ 5 - 0
src/main/java/me/shedaniel/rei/client/Weather.java

@@ -1,3 +1,8 @@
+/*
+ * Roughly Enough Items by Danielshe.
+ * Licensed under the MIT License.
+ */
+
 package me.shedaniel.rei.client;
 
 public enum Weather {

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

@@ -1,3 +1,8 @@
+/*
+ * Roughly Enough Items by Danielshe.
+ * Licensed under the MIT License.
+ */
+
 package me.shedaniel.rei.gui;
 
 import com.google.common.collect.Lists;

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

@@ -1,3 +1,8 @@
+/*
+ * Roughly Enough Items by Danielshe.
+ * Licensed under the MIT License.
+ */
+
 package me.shedaniel.rei.gui;
 
 import com.google.common.collect.Lists;

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

@@ -1,3 +1,8 @@
+/*
+ * Roughly Enough Items by Danielshe.
+ * Licensed under the MIT License.
+ */
+
 package me.shedaniel.rei.gui;
 
 import com.google.common.collect.Lists;
@@ -30,9 +35,8 @@ import java.util.function.Supplier;
 
 public class RecipeViewingScreen extends Screen {
     
-    public static final Identifier CHEST_GUI_TEXTURE = new Identifier("roughlyenoughitems", "textures/gui" + "/recipecontainer.png");
+    public static final Identifier CHEST_GUI_TEXTURE = new Identifier("roughlyenoughitems", "textures/gui/recipecontainer.png");
     public static final Color SUB_COLOR = new Color(159, 159, 159);
-    private static final Identifier CREATIVE_INVENTORY_TABS = new Identifier("textures/gui/container" + "/creative_inventory/tabs.png");
     private final List<Widget> widgets;
     private final List<TabWidget> tabs;
     private final Map<RecipeCategory, List<RecipeDisplay>> categoriesMap;

+ 11 - 0
src/main/java/me/shedaniel/rei/gui/VillagerRecipeViewingScreen.java

@@ -1,3 +1,8 @@
+/*
+ * Roughly Enough Items by Danielshe.
+ * Licensed under the MIT License.
+ */
+
 package me.shedaniel.rei.gui;
 
 import com.google.common.collect.Lists;
@@ -102,6 +107,12 @@ public class VillagerRecipeViewingScreen extends Screen {
                     selectedRecipeIndex = finalIndex;
                     VillagerRecipeViewingScreen.this.init();
                 }
+                
+                @Override
+                protected int getTextureId(boolean boolean_1) {
+                    enabled = selectedRecipeIndex != finalIndex;
+                    return super.getTextureId(boolean_1);
+                }
             });
             index++;
         }

+ 5 - 0
src/main/java/me/shedaniel/rei/gui/config/ItemListOrderingConfig.java

@@ -1,3 +1,8 @@
+/*
+ * Roughly Enough Items by Danielshe.
+ * Licensed under the MIT License.
+ */
+
 package me.shedaniel.rei.gui.config;
 
 import me.shedaniel.rei.client.ItemListOrdering;

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

@@ -1,3 +1,8 @@
+/*
+ * Roughly Enough Items by Danielshe.
+ * Licensed under the MIT License.
+ */
+
 package me.shedaniel.rei.gui.credits;
 
 import net.minecraft.client.MinecraftClient;

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

@@ -1,3 +1,8 @@
+/*
+ * Roughly Enough Items by Danielshe.
+ * Licensed under the MIT License.
+ */
+
 package me.shedaniel.rei.gui.credits;
 
 import me.shedaniel.rei.client.ScreenHelper;

+ 5 - 0
src/main/java/me/shedaniel/rei/gui/renderables/EmptyRenderer.java

@@ -1,3 +1,8 @@
+/*
+ * Roughly Enough Items by Danielshe.
+ * Licensed under the MIT License.
+ */
+
 package me.shedaniel.rei.gui.renderables;
 
 import me.shedaniel.rei.api.Renderer;

+ 5 - 0
src/main/java/me/shedaniel/rei/gui/renderables/ItemStackRenderer.java

@@ -1,3 +1,8 @@
+/*
+ * Roughly Enough Items by Danielshe.
+ * Licensed under the MIT License.
+ */
+
 package me.shedaniel.rei.gui.renderables;
 
 import com.google.common.collect.Lists;

+ 5 - 0
src/main/java/me/shedaniel/rei/gui/renderables/RecipeRenderer.java

@@ -1,3 +1,8 @@
+/*
+ * Roughly Enough Items by Danielshe.
+ * Licensed under the MIT License.
+ */
+
 package me.shedaniel.rei.gui.renderables;
 
 import me.shedaniel.rei.api.Renderer;

+ 5 - 0
src/main/java/me/shedaniel/rei/gui/renderables/SimpleRecipeRenderer.java

@@ -1,3 +1,8 @@
+/*
+ * Roughly Enough Items by Danielshe.
+ * Licensed under the MIT License.
+ */
+
 package me.shedaniel.rei.gui.renderables;
 
 import com.google.common.collect.Lists;

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

@@ -1,12 +1,17 @@
+/*
+ * Roughly Enough Items by Danielshe.
+ * Licensed under the MIT License.
+ */
+
 package me.shedaniel.rei.gui.widget;
 
 import com.mojang.blaze3d.platform.GlStateManager;
 import me.shedaniel.rei.client.ScreenHelper;
 import net.minecraft.client.audio.PositionedSoundInstance;
 import net.minecraft.client.gui.Element;
-import net.minecraft.client.gui.widget.AbstractButtonWidget;
 import net.minecraft.sound.SoundEvents;
 import net.minecraft.text.TextComponent;
+import net.minecraft.util.Identifier;
 import net.minecraft.util.math.MathHelper;
 
 import java.awt.*;
@@ -16,6 +21,7 @@ import java.util.Optional;
 
 public abstract class ButtonWidget extends HighlightableWidget {
     
+    public static final Identifier BUTTON_LOCATION = new Identifier("roughlyenoughitems", "textures/gui/button.png");
     public String text;
     public boolean enabled;
     public boolean focused;
@@ -57,25 +63,26 @@ public abstract class ButtonWidget extends HighlightableWidget {
     @Override
     public void render(int mouseX, int mouseY, float delta) {
         int x = bounds.x, y = bounds.y, width = bounds.width, height = bounds.height;
-        minecraft.getTextureManager().bindTexture(AbstractButtonWidget.WIDGETS_LOCATION);
+        minecraft.getTextureManager().bindTexture(BUTTON_LOCATION);
         GlStateManager.color4f(1.0F, 1.0F, 1.0F, 1.0F);
         int textureOffset = this.getTextureId(isHovered(mouseX, mouseY));
         GlStateManager.enableBlend();
         GlStateManager.blendFuncSeparate(GlStateManager.SourceFactor.SRC_ALPHA, GlStateManager.DestFactor.ONE_MINUS_SRC_ALPHA, GlStateManager.SourceFactor.ONE, GlStateManager.DestFactor.ZERO);
         GlStateManager.blendFunc(GlStateManager.SourceFactor.SRC_ALPHA, GlStateManager.DestFactor.ONE_MINUS_SRC_ALPHA);
         //Four Corners
-        this.blit(x, y, 0, 46 + textureOffset * 20, 4, 4);
-        this.blit(x + width - 4, y, 196, 46 + textureOffset * 20, 4, 4);
-        this.blit(x, y + height - 4, 0, 62 + textureOffset * 20, 4, 4);
-        this.blit(x + width - 4, y + height - 4, 196, 62 + textureOffset * 20, 4, 4);
+        blit(x, y, 0, textureOffset * 80, 4, 4);
+        blit(x + width - 4, y, 252, textureOffset * 80, 4, 4);
+        blit(x, y + height - 4, 0, textureOffset * 80 + 76, 4, 4);
+        blit(x + width - 4, y + height - 4, 252, textureOffset * 80 + 76, 4, 4);
         
         //Sides
-        this.blit(x + 4, y, 4, 46 + textureOffset * 20, width - 8, 4);
-        this.blit(x + 4, y + height - 4, 4, 62 + textureOffset * 20, width - 8, 4);
-        
-        for(int i = y + 4; i < y + height - 4; i += 4) {
-            this.blit(x, i, 0, 50 + textureOffset * 20, MathHelper.ceil(width / 2f), MathHelper.clamp(y + height - 4 - i, 0, 4));
-            this.blit(x + MathHelper.ceil(width / 2f), i, 200 - MathHelper.floor(width / 2f), 50 + textureOffset * 20, MathHelper.floor(width / 2f), MathHelper.clamp(y + height - 4 - i, 0, 4));
+        blit(x + 4, y, 4, textureOffset * 80, MathHelper.ceil((width - 8) / 2f), 4);
+        blit(x + 4, y + height - 4, 4, textureOffset * 80 + 76, MathHelper.ceil((width - 8) / 2f), 4);
+        blit(x + 4 + MathHelper.ceil((width - 8) / 2f), y + height - 4, 252 - MathHelper.floor((width - 8) / 2f), textureOffset * 80 + 76, MathHelper.floor((width - 8) / 2f), 4);
+        blit(x + 4 + MathHelper.ceil((width - 8) / 2f), y, 252 - MathHelper.floor((width - 8) / 2f), textureOffset * 80, MathHelper.floor((width - 8) / 2f), 4);
+        for(int i = y + 4; i < y + height - 4; i += 76) {
+            blit(x, i, 0, 4 + textureOffset * 80, MathHelper.ceil(width / 2f), MathHelper.clamp(y + height - 4 - i, 0, 76));
+            blit(x + MathHelper.ceil(width / 2f), i, 256 - MathHelper.floor(width / 2f), 4 + textureOffset * 80, MathHelper.floor(width / 2f), MathHelper.clamp(y + height - 4 - i, 0, 76));
         }
         
         int colour = 14737632;

+ 5 - 0
src/main/java/me/shedaniel/rei/gui/widget/CategoryBaseWidget.java

@@ -1,3 +1,8 @@
+/*
+ * Roughly Enough Items by Danielshe.
+ * Licensed under the MIT License.
+ */
+
 package me.shedaniel.rei.gui.widget;
 
 import java.awt.*;

+ 5 - 0
src/main/java/me/shedaniel/rei/gui/widget/ClickableLabelWidget.java

@@ -1,3 +1,8 @@
+/*
+ * Roughly Enough Items by Danielshe.
+ * Licensed under the MIT License.
+ */
+
 package me.shedaniel.rei.gui.widget;
 
 import me.shedaniel.rei.client.ScreenHelper;

+ 5 - 0
src/main/java/me/shedaniel/rei/gui/widget/CraftableToggleButtonWidget.java

@@ -1,3 +1,8 @@
+/*
+ * Roughly Enough Items by Danielshe.
+ * Licensed under the MIT License.
+ */
+
 package me.shedaniel.rei.gui.widget;
 
 import com.mojang.blaze3d.platform.GlStateManager;

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

@@ -1,3 +1,8 @@
+/*
+ * Roughly Enough Items by Danielshe.
+ * Licensed under the MIT License.
+ */
+
 package me.shedaniel.rei.gui.widget;
 
 import net.minecraft.text.TextComponent;

+ 5 - 0
src/main/java/me/shedaniel/rei/gui/widget/DraggableWidget.java

@@ -1,3 +1,8 @@
+/*
+ * Roughly Enough Items by Danielshe.
+ * Licensed under the MIT License.
+ */
+
 package me.shedaniel.rei.gui.widget;
 
 import me.shedaniel.cloth.api.ClientUtils;

+ 5 - 0
src/main/java/me/shedaniel/rei/gui/widget/HighlightableWidget.java

@@ -1,3 +1,8 @@
+/*
+ * Roughly Enough Items by Danielshe.
+ * Licensed under the MIT License.
+ */
+
 package me.shedaniel.rei.gui.widget;
 
 import java.awt.*;

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

@@ -1,3 +1,8 @@
+/*
+ * Roughly Enough Items by Danielshe.
+ * Licensed under the MIT License.
+ */
+
 package me.shedaniel.rei.gui.widget;
 
 import com.google.common.collect.Lists;

+ 5 - 0
src/main/java/me/shedaniel/rei/gui/widget/ItemSlotWidget.java

@@ -1,3 +1,8 @@
+/*
+ * Roughly Enough Items by Danielshe.
+ * Licensed under the MIT License.
+ */
+
 package me.shedaniel.rei.gui.widget;
 
 import me.shedaniel.rei.api.Renderer;

+ 5 - 0
src/main/java/me/shedaniel/rei/gui/widget/LabelWidget.java

@@ -1,3 +1,8 @@
+/*
+ * Roughly Enough Items by Danielshe.
+ * Licensed under the MIT License.
+ */
+
 package me.shedaniel.rei.gui.widget;
 
 import net.minecraft.client.gui.Element;

+ 5 - 0
src/main/java/me/shedaniel/rei/gui/widget/QueuedTooltip.java

@@ -1,3 +1,8 @@
+/*
+ * Roughly Enough Items by Danielshe.
+ * Licensed under the MIT License.
+ */
+
 package me.shedaniel.rei.gui.widget;
 
 

+ 5 - 0
src/main/java/me/shedaniel/rei/gui/widget/RecipeBaseWidget.java

@@ -1,3 +1,8 @@
+/*
+ * Roughly Enough Items by Danielshe.
+ * Licensed under the MIT License.
+ */
+
 package me.shedaniel.rei.gui.widget;
 
 import com.mojang.blaze3d.platform.GlStateManager;

+ 5 - 0
src/main/java/me/shedaniel/rei/gui/widget/RecipeChoosePageWidget.java

@@ -1,3 +1,8 @@
+/*
+ * Roughly Enough Items by Danielshe.
+ * Licensed under the MIT License.
+ */
+
 package me.shedaniel.rei.gui.widget;
 
 import com.google.common.collect.Lists;

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

@@ -1,10 +1,14 @@
+/*
+ * Roughly Enough Items by Danielshe.
+ * Licensed under the MIT License.
+ */
+
 package me.shedaniel.rei.gui.widget;
 
 import com.mojang.blaze3d.platform.GlStateManager;
 import net.minecraft.client.audio.PositionedSoundInstance;
 import net.minecraft.client.render.GuiLighting;
 import net.minecraft.sound.SoundEvents;
-import org.lwjgl.glfw.GLFW;
 
 public class SearchFieldWidget extends TextFieldWidget {
     
@@ -54,7 +58,7 @@ public class SearchFieldWidget extends TextFieldWidget {
     @Override
     public boolean keyPressed(int int_1, int int_2, int int_3) {
         if (this.isVisible() && this.isFocused())
-            if (int_1 == GLFW.GLFW_KEY_ENTER || int_1 == GLFW.GLFW_KEY_KP_ENTER) {
+            if (int_1 == 257 || int_1 == 335) {
                 setFocused(false);
                 return true;
             }

+ 5 - 0
src/main/java/me/shedaniel/rei/gui/widget/SlotBaseWidget.java

@@ -1,3 +1,8 @@
+/*
+ * Roughly Enough Items by Danielshe.
+ * Licensed under the MIT License.
+ */
+
 package me.shedaniel.rei.gui.widget;
 
 import java.awt.*;

+ 5 - 0
src/main/java/me/shedaniel/rei/gui/widget/SlotWidget.java

@@ -1,3 +1,8 @@
+/*
+ * Roughly Enough Items by Danielshe.
+ * Licensed under the MIT License.
+ */
+
 package me.shedaniel.rei.gui.widget;
 
 import com.google.common.collect.Lists;

+ 5 - 0
src/main/java/me/shedaniel/rei/gui/widget/SpeedCraftingButtonWidget.java

@@ -1,3 +1,8 @@
+/*
+ * Roughly Enough Items by Danielshe.
+ * Licensed under the MIT License.
+ */
+
 package me.shedaniel.rei.gui.widget;
 
 import me.shedaniel.rei.api.RecipeDisplay;

+ 5 - 0
src/main/java/me/shedaniel/rei/gui/widget/TabWidget.java

@@ -1,3 +1,8 @@
+/*
+ * Roughly Enough Items by Danielshe.
+ * Licensed under the MIT License.
+ */
+
 package me.shedaniel.rei.gui.widget;
 
 import com.mojang.blaze3d.platform.GlStateManager;

+ 5 - 0
src/main/java/me/shedaniel/rei/gui/widget/TextFieldWidget.java

@@ -1,3 +1,8 @@
+/*
+ * Roughly Enough Items by Danielshe.
+ * Licensed under the MIT License.
+ */
+
 package me.shedaniel.rei.gui.widget;
 
 import com.google.common.base.Predicates;

+ 16 - 0
src/main/java/me/shedaniel/rei/gui/widget/Widget.java

@@ -1,3 +1,8 @@
+/*
+ * Roughly Enough Items by Danielshe.
+ * Licensed under the MIT License.
+ */
+
 package me.shedaniel.rei.gui.widget;
 
 import net.minecraft.client.MinecraftClient;
@@ -5,9 +10,20 @@ import net.minecraft.client.font.TextRenderer;
 import net.minecraft.client.gui.AbstractParentElement;
 import net.minecraft.client.gui.Drawable;
 
+/**
+ * The base class for a screen widget
+ *
+ * @see HighlightableWidget for a widget with bounds
+ */
 public abstract class Widget extends AbstractParentElement implements Drawable {
     
+    /**
+     * The Minecraft Client instance
+     */
     protected final MinecraftClient minecraft = MinecraftClient.getInstance();
+    /**
+     * The font for rendering text
+     */
     protected final TextRenderer font = minecraft.textRenderer;
     
 }

+ 5 - 0
src/main/java/me/shedaniel/rei/listeners/ContainerScreenHooks.java

@@ -1,3 +1,8 @@
+/*
+ * Roughly Enough Items by Danielshe.
+ * Licensed under the MIT License.
+ */
+
 package me.shedaniel.rei.listeners;
 
 import net.minecraft.client.gui.ContainerScreen;

+ 5 - 0
src/main/java/me/shedaniel/rei/listeners/CreativePlayerInventoryScreenHooks.java

@@ -1,3 +1,8 @@
+/*
+ * Roughly Enough Items by Danielshe.
+ * Licensed under the MIT License.
+ */
+
 package me.shedaniel.rei.listeners;
 
 import net.minecraft.client.gui.ingame.CreativePlayerInventoryScreen;

+ 5 - 0
src/main/java/me/shedaniel/rei/listeners/RecipeBookGuiHooks.java

@@ -1,3 +1,8 @@
+/*
+ * Roughly Enough Items by Danielshe.
+ * Licensed under the MIT License.
+ */
+
 package me.shedaniel.rei.listeners;
 
 import net.minecraft.client.gui.recipebook.GroupButtonWidget;

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

@@ -1,3 +1,8 @@
+/*
+ * Roughly Enough Items by Danielshe.
+ * Licensed under the MIT License.
+ */
+
 package me.shedaniel.rei.mixin;
 
 import com.google.common.collect.Lists;

+ 5 - 0
src/main/java/me/shedaniel/rei/plugin/BrewingRecipe.java

@@ -1,3 +1,8 @@
+/*
+ * Roughly Enough Items by Danielshe.
+ * Licensed under the MIT License.
+ */
+
 package me.shedaniel.rei.plugin;
 
 import net.minecraft.item.Item;

+ 5 - 0
src/main/java/me/shedaniel/rei/plugin/DefaultBlastingCategory.java

@@ -1,3 +1,8 @@
+/*
+ * Roughly Enough Items by Danielshe.
+ * Licensed under the MIT License.
+ */
+
 package me.shedaniel.rei.plugin;
 
 import com.mojang.blaze3d.platform.GlStateManager;

+ 5 - 0
src/main/java/me/shedaniel/rei/plugin/DefaultBlastingDisplay.java

@@ -1,3 +1,8 @@
+/*
+ * Roughly Enough Items by Danielshe.
+ * Licensed under the MIT License.
+ */
+
 package me.shedaniel.rei.plugin;
 
 import com.google.common.collect.Lists;

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

@@ -1,3 +1,8 @@
+/*
+ * Roughly Enough Items by Danielshe.
+ * Licensed under the MIT License.
+ */
+
 package me.shedaniel.rei.plugin;
 
 import com.mojang.blaze3d.platform.GlStateManager;

+ 5 - 0
src/main/java/me/shedaniel/rei/plugin/DefaultBrewingDisplay.java

@@ -1,3 +1,8 @@
+/*
+ * Roughly Enough Items by Danielshe.
+ * Licensed under the MIT License.
+ */
+
 package me.shedaniel.rei.plugin;
 
 import com.google.common.collect.Lists;

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

@@ -1,3 +1,8 @@
+/*
+ * Roughly Enough Items by Danielshe.
+ * Licensed under the MIT License.
+ */
+
 package me.shedaniel.rei.plugin;
 
 import com.mojang.blaze3d.platform.GlStateManager;

+ 5 - 0
src/main/java/me/shedaniel/rei/plugin/DefaultCampfireDisplay.java

@@ -1,3 +1,8 @@
+/*
+ * Roughly Enough Items by Danielshe.
+ * Licensed under the MIT License.
+ */
+
 package me.shedaniel.rei.plugin;
 
 import com.google.common.collect.Lists;

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

@@ -1,3 +1,8 @@
+/*
+ * Roughly Enough Items by Danielshe.
+ * Licensed under the MIT License.
+ */
+
 package me.shedaniel.rei.plugin;
 
 import com.google.common.collect.Lists;

+ 5 - 0
src/main/java/me/shedaniel/rei/plugin/DefaultCraftingDisplay.java

@@ -1,3 +1,8 @@
+/*
+ * Roughly Enough Items by Danielshe.
+ * Licensed under the MIT License.
+ */
+
 package me.shedaniel.rei.plugin;
 
 import me.shedaniel.rei.api.RecipeDisplay;

+ 5 - 0
src/main/java/me/shedaniel/rei/plugin/DefaultCustomDisplay.java

@@ -1,3 +1,8 @@
+/*
+ * Roughly Enough Items by Danielshe.
+ * Licensed under the MIT License.
+ */
+
 package me.shedaniel.rei.plugin;
 
 import com.google.common.collect.Lists;

+ 5 - 0
src/main/java/me/shedaniel/rei/plugin/DefaultPlugin.java

@@ -1,3 +1,8 @@
+/*
+ * Roughly Enough Items by Danielshe.
+ * Licensed under the MIT License.
+ */
+
 package me.shedaniel.rei.plugin;
 
 import com.google.common.collect.Lists;

+ 5 - 0
src/main/java/me/shedaniel/rei/plugin/DefaultShapedDisplay.java

@@ -1,3 +1,8 @@
+/*
+ * Roughly Enough Items by Danielshe.
+ * Licensed under the MIT License.
+ */
+
 package me.shedaniel.rei.plugin;
 
 import com.google.common.collect.Lists;

+ 5 - 0
src/main/java/me/shedaniel/rei/plugin/DefaultShapelessDisplay.java

@@ -1,3 +1,8 @@
+/*
+ * Roughly Enough Items by Danielshe.
+ * Licensed under the MIT License.
+ */
+
 package me.shedaniel.rei.plugin;
 
 import com.google.common.collect.Lists;

+ 5 - 0
src/main/java/me/shedaniel/rei/plugin/DefaultSmeltingCategory.java

@@ -1,3 +1,8 @@
+/*
+ * Roughly Enough Items by Danielshe.
+ * Licensed under the MIT License.
+ */
+
 package me.shedaniel.rei.plugin;
 
 import com.mojang.blaze3d.platform.GlStateManager;

+ 5 - 0
src/main/java/me/shedaniel/rei/plugin/DefaultSmeltingDisplay.java

@@ -1,3 +1,8 @@
+/*
+ * Roughly Enough Items by Danielshe.
+ * Licensed under the MIT License.
+ */
+
 package me.shedaniel.rei.plugin;
 
 import com.google.common.collect.Lists;

+ 5 - 0
src/main/java/me/shedaniel/rei/plugin/DefaultSmokingCategory.java

@@ -1,3 +1,8 @@
+/*
+ * Roughly Enough Items by Danielshe.
+ * Licensed under the MIT License.
+ */
+
 package me.shedaniel.rei.plugin;
 
 import com.mojang.blaze3d.platform.GlStateManager;

+ 5 - 0
src/main/java/me/shedaniel/rei/plugin/DefaultSmokingDisplay.java

@@ -1,3 +1,8 @@
+/*
+ * Roughly Enough Items by Danielshe.
+ * Licensed under the MIT License.
+ */
+
 package me.shedaniel.rei.plugin;
 
 import com.google.common.collect.Lists;

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

@@ -1,3 +1,8 @@
+/*
+ * Roughly Enough Items by Danielshe.
+ * Licensed under the MIT License.
+ */
+
 package me.shedaniel.rei.plugin;
 
 import com.mojang.blaze3d.platform.GlStateManager;

+ 5 - 0
src/main/java/me/shedaniel/rei/plugin/DefaultStoneCuttingDisplay.java

@@ -1,3 +1,8 @@
+/*
+ * Roughly Enough Items by Danielshe.
+ * Licensed under the MIT License.
+ */
+
 package me.shedaniel.rei.plugin;
 
 import com.google.common.collect.Lists;

+ 5 - 0
src/main/java/me/shedaniel/rei/utils/ClothScreenRegistry.java

@@ -1,3 +1,8 @@
+/*
+ * Roughly Enough Items by Danielshe.
+ * Licensed under the MIT License.
+ */
+
 package me.shedaniel.rei.utils;
 
 import me.shedaniel.cloth.api.ConfigScreenBuilder;

BIN
src/main/resources/assets/roughlyenoughitems/textures/gui/button.png