Преглед на файлове

I guess this is quite good

Unknown преди 5 години
родител
ревизия
e018f88b89
променени са 32 файла, в които са добавени 142 реда и са изтрити 44 реда
  1. 1 1
      src/main/java/me/shedaniel/rei/RoughlyEnoughItemsCore.java
  2. 0 3
      src/main/java/me/shedaniel/rei/RoughlyEnoughItemsNetwork.java
  3. 7 0
      src/main/java/me/shedaniel/rei/api/AutoTransferHandler.java
  4. 1 1
      src/main/java/me/shedaniel/rei/api/RecipeCategory.java
  5. 1 0
      src/main/java/me/shedaniel/rei/api/Renderer.java
  6. 16 0
      src/main/java/me/shedaniel/rei/api/TransferRecipeCategory.java
  7. 5 0
      src/main/java/me/shedaniel/rei/api/TransferRecipeDisplay.java
  8. 1 1
      src/main/java/me/shedaniel/rei/gui/PreRecipeViewingScreen.java
  9. 2 2
      src/main/java/me/shedaniel/rei/gui/RecipeViewingScreen.java
  10. 2 2
      src/main/java/me/shedaniel/rei/gui/VillagerRecipeViewingScreen.java
  11. 1 1
      src/main/java/me/shedaniel/rei/gui/credits/CreditsScreen.java
  12. 1 1
      src/main/java/me/shedaniel/rei/gui/renderers/ItemStackRenderer.java
  13. 18 8
      src/main/java/me/shedaniel/rei/gui/widget/AutoCraftingButtonWidget.java
  14. 1 1
      src/main/java/me/shedaniel/rei/gui/widget/RecipeBaseWidget.java
  15. 1 1
      src/main/java/me/shedaniel/rei/gui/widget/RecipeChoosePageWidget.java
  16. 1 1
      src/main/java/me/shedaniel/rei/gui/widget/SlotWidget.java
  17. 1 1
      src/main/java/me/shedaniel/rei/plugin/DefaultAutoCraftingPlugin.java
  18. 1 1
      src/main/java/me/shedaniel/rei/plugin/DefaultPlugin.java
  19. 5 0
      src/main/java/me/shedaniel/rei/plugin/DefaultServerContainerPlugin.java
  20. 0 1
      src/main/java/me/shedaniel/rei/plugin/autocrafting/DefaultCategoryHandler.java
  21. 14 2
      src/main/java/me/shedaniel/rei/plugin/blasting/DefaultBlastingCategory.java
  22. 0 1
      src/main/java/me/shedaniel/rei/plugin/blasting/DefaultBlastingDisplay.java
  23. 1 1
      src/main/java/me/shedaniel/rei/plugin/campfire/DefaultCampfireCategory.java
  24. 5 0
      src/main/java/me/shedaniel/rei/plugin/containers/CraftingContainerInfoWrapper.java
  25. 16 2
      src/main/java/me/shedaniel/rei/plugin/crafting/DefaultCraftingCategory.java
  26. 14 2
      src/main/java/me/shedaniel/rei/plugin/smelting/DefaultSmeltingCategory.java
  27. 14 2
      src/main/java/me/shedaniel/rei/plugin/smoking/DefaultSmokingCategory.java
  28. 0 1
      src/main/java/me/shedaniel/rei/plugin/smoking/DefaultSmokingDisplay.java
  29. 5 0
      src/main/java/me/shedaniel/rei/server/ContainerInfo.java
  30. 5 0
      src/main/java/me/shedaniel/rei/server/ContainerInfoHandler.java
  31. 0 6
      src/main/java/me/shedaniel/rei/server/RecipeGridAligner.java
  32. 2 1
      src/main/resources/assets/roughlyenoughitems/lang/en_us.json

+ 1 - 1
src/main/java/me/shedaniel/rei/RoughlyEnoughItemsCore.java

@@ -11,9 +11,9 @@ import me.shedaniel.cloth.api.ClientUtils;
 import me.shedaniel.cloth.hooks.ClothClientHooks;
 import me.shedaniel.rei.api.*;
 import me.shedaniel.rei.api.plugins.REIPluginV0;
-import me.shedaniel.rei.impl.*;
 import me.shedaniel.rei.gui.ContainerScreenOverlay;
 import me.shedaniel.rei.gui.widget.EntryListWidget;
+import me.shedaniel.rei.impl.*;
 import me.shedaniel.rei.listeners.RecipeBookButtonWidgetHooks;
 import me.shedaniel.rei.listeners.RecipeBookGuiHooks;
 import net.fabricmc.api.ClientModInitializer;

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

@@ -33,7 +33,6 @@ public class RoughlyEnoughItemsNetwork implements ModInitializer {
     public static final Identifier CREATE_ITEMS_MESSAGE_PACKET = new Identifier("roughlyenoughitems", "ci_msg");
     public static final Identifier MOVE_ITEMS_PACKET = new Identifier("roughlyenoughitems", "move_items");
     public static final Identifier NOT_ENOUGH_ITEMS_PACKET = new Identifier("roughlyenoughitems", "og_not_enough");
-    //    public static final UUID CRAFTING_TABLE_MOVE = UUID.fromString("190c2b2d-d1f6-4149-a4a8-62860189403e");
     
     @Override
     public void onInitialize() {
@@ -59,12 +58,10 @@ public class RoughlyEnoughItemsNetwork implements ModInitializer {
                 player.addChatMessage(new TranslatableText("text.rei.failed_cheat_items"), false);
         });
         ServerSidePacketRegistry.INSTANCE.register(MOVE_ITEMS_PACKET, (packetContext, packetByteBuf) -> {
-            //            UUID type = packetByteBuf.readUuid();
             Identifier category = packetByteBuf.readIdentifier();
             ServerPlayerEntity player = (ServerPlayerEntity) packetContext.getPlayer();
             Container container = player.container;
             PlayerContainer playerContainer = player.playerContainer;
-            //            if (type.equals(CRAFTING_TABLE_MOVE)) {
             try {
                 boolean shift = packetByteBuf.readBoolean();
                 Map<Integer, List<ItemStack>> input = Maps.newHashMap();

+ 7 - 0
src/main/java/me/shedaniel/rei/api/AutoTransferHandler.java

@@ -55,6 +55,8 @@ public interface AutoTransferHandler {
         boolean isApplicable();
         
         String getErrorKey();
+        
+        IntList getIntegers();
     }
     
     public interface Context {
@@ -125,6 +127,11 @@ public interface AutoTransferHandler {
         public String getErrorKey() {
             return errorKey;
         }
+        
+        @Override
+        public IntList getIntegers() {
+            return integers;
+        }
     }
     
     public final class ContextImpl implements Context {

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

@@ -5,12 +5,12 @@
 
 package me.shedaniel.rei.api;
 
-import me.shedaniel.rei.impl.ScreenHelper;
 import me.shedaniel.rei.gui.RecipeViewingScreen;
 import me.shedaniel.rei.gui.renderers.RecipeRenderer;
 import me.shedaniel.rei.gui.widget.CategoryBaseWidget;
 import me.shedaniel.rei.gui.widget.RecipeBaseWidget;
 import me.shedaniel.rei.gui.widget.Widget;
+import me.shedaniel.rei.impl.ScreenHelper;
 import net.minecraft.client.gui.DrawableHelper;
 import net.minecraft.util.Identifier;
 

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

@@ -62,6 +62,7 @@ public abstract class Renderer extends DrawableHelper {
     public static ItemStackRenderer fromItemStack(ItemStack stack) {
         return fromItemStackSupplier(() -> stack);
     }
+    
     public static FluidRenderer fromFluid(Fluid fluid) {
         return new FluidRenderer() {
             @Override

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

@@ -0,0 +1,16 @@
+/*
+ * Roughly Enough Items by Danielshe.
+ * Licensed under the MIT License.
+ */
+
+package me.shedaniel.rei.api;
+
+import it.unimi.dsi.fastutil.ints.IntList;
+import me.shedaniel.rei.gui.widget.Widget;
+
+import java.awt.*;
+import java.util.List;
+
+public interface TransferRecipeCategory<T extends RecipeDisplay> extends RecipeCategory<T> {
+    void renderRedSlots(List<Widget> widgets, Rectangle bounds, T display, IntList redSlots);
+}

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

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

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

@@ -10,11 +10,11 @@ import me.shedaniel.rei.RoughlyEnoughItemsCore;
 import me.shedaniel.rei.api.ClientHelper;
 import me.shedaniel.rei.api.RecipeCategory;
 import me.shedaniel.rei.api.RecipeDisplay;
-import me.shedaniel.rei.impl.ScreenHelper;
 import me.shedaniel.rei.gui.config.RecipeScreenType;
 import me.shedaniel.rei.gui.widget.ButtonWidget;
 import me.shedaniel.rei.gui.widget.Widget;
 import me.shedaniel.rei.gui.widget.WidgetWithBounds;
+import me.shedaniel.rei.impl.ScreenHelper;
 import me.zeroeightsix.fiber.exception.FiberException;
 import net.minecraft.client.MinecraftClient;
 import net.minecraft.client.gui.Element;

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

@@ -10,8 +10,8 @@ import com.mojang.blaze3d.platform.GlStateManager;
 import me.shedaniel.cloth.api.ClientUtils;
 import me.shedaniel.rei.RoughlyEnoughItemsCore;
 import me.shedaniel.rei.api.*;
-import me.shedaniel.rei.impl.ScreenHelper;
 import me.shedaniel.rei.gui.widget.*;
+import me.shedaniel.rei.impl.ScreenHelper;
 import net.minecraft.client.MinecraftClient;
 import net.minecraft.client.gui.Element;
 import net.minecraft.client.gui.screen.Screen;
@@ -281,7 +281,7 @@ public class RecipeViewingScreen extends Screen {
             List<Widget> setupDisplay = selectedCategory.setupDisplay(displaySupplier, displayBounds);
             this.widgets.addAll(setupDisplay);
             if (supplier.isPresent() && supplier.get().get(displayBounds) != null)
-                this.widgets.add(new AutoCraftingButtonWidget(supplier.get().get(displayBounds), supplier.get().getButtonText(), displaySupplier, setupDisplay));
+                this.widgets.add(new AutoCraftingButtonWidget(displayBounds, supplier.get().get(displayBounds), supplier.get().getButtonText(), displaySupplier, setupDisplay, selectedCategory));
         }
         if (choosePageActivated)
             recipeChoosePageWidget = new RecipeChoosePageWidget(this, page, getTotalPages(selectedCategory));

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

@@ -132,7 +132,7 @@ public class VillagerRecipeViewingScreen extends Screen {
         this.widgets.addAll(setupDisplay);
         Optional<ButtonAreaSupplier> supplier = RecipeHelper.getInstance().getSpeedCraftButtonArea(category);
         if (supplier.isPresent() && supplier.get().get(recipeBounds) != null)
-            this.widgets.add(new AutoCraftingButtonWidget(supplier.get().get(recipeBounds), supplier.get().getButtonText(), () -> display, setupDisplay));
+            this.widgets.add(new AutoCraftingButtonWidget(recipeBounds, supplier.get().get(recipeBounds), supplier.get().getButtonText(), () -> display, setupDisplay, category));
         
         int index = 0;
         for (RecipeDisplay recipeDisplay : categoryMap.get(category)) {
@@ -270,7 +270,7 @@ public class VillagerRecipeViewingScreen extends Screen {
             if (scrollBarAlphaFuture == 0)
                 scrollBarAlphaFuture = 1f;
             if (System.currentTimeMillis() - scrollBarAlphaFutureTime > 300f)
-            scrollBarAlphaFutureTime = System.currentTimeMillis();
+                scrollBarAlphaFutureTime = System.currentTimeMillis();
             return true;
         }
         for (Element listener : children())

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

@@ -8,8 +8,8 @@ package me.shedaniel.rei.gui.credits;
 import com.google.common.collect.Lists;
 import com.google.gson.JsonElement;
 import com.google.gson.JsonObject;
-import me.shedaniel.rei.impl.ScreenHelper;
 import me.shedaniel.rei.gui.credits.CreditsEntryListWidget.CreditsItem;
+import me.shedaniel.rei.impl.ScreenHelper;
 import net.fabricmc.loader.api.FabricLoader;
 import net.minecraft.client.gui.screen.Screen;
 import net.minecraft.client.gui.screen.ingame.AbstractContainerScreen;

+ 1 - 1
src/main/java/me/shedaniel/rei/gui/renderers/ItemStackRenderer.java

@@ -10,9 +10,9 @@ import com.mojang.blaze3d.platform.GlStateManager;
 import me.shedaniel.rei.RoughlyEnoughItemsCore;
 import me.shedaniel.rei.api.ClientHelper;
 import me.shedaniel.rei.api.Renderer;
-import me.shedaniel.rei.impl.ScreenHelper;
 import me.shedaniel.rei.gui.widget.EntryListWidget;
 import me.shedaniel.rei.gui.widget.QueuedTooltip;
+import me.shedaniel.rei.impl.ScreenHelper;
 import net.minecraft.client.MinecraftClient;
 import net.minecraft.client.render.GuiLighting;
 import net.minecraft.client.render.item.ItemRenderer;

+ 18 - 8
src/main/java/me/shedaniel/rei/gui/widget/AutoCraftingButtonWidget.java

@@ -6,9 +6,8 @@
 package me.shedaniel.rei.gui.widget;
 
 import com.mojang.blaze3d.platform.GlStateManager;
-import me.shedaniel.rei.api.AutoTransferHandler;
-import me.shedaniel.rei.api.RecipeDisplay;
-import me.shedaniel.rei.api.RecipeHelper;
+import it.unimi.dsi.fastutil.ints.IntList;
+import me.shedaniel.rei.api.*;
 import me.shedaniel.rei.impl.ScreenHelper;
 import net.minecraft.client.gui.screen.ingame.AbstractContainerScreen;
 import net.minecraft.client.resource.language.I18n;
@@ -28,15 +27,19 @@ public class AutoCraftingButtonWidget extends ButtonWidget {
     private String errorTooltip;
     private List<Widget> setupDisplay;
     private AbstractContainerScreen<?> containerScreen;
-    private  boolean visible = false;
+    private boolean visible = false;
+    private RecipeCategory<?> category;
+    private Rectangle displayBounds;
     
-    public AutoCraftingButtonWidget(Rectangle rectangle, String text, Supplier<RecipeDisplay> displaySupplier, List<Widget> setupDisplay) {
+    public AutoCraftingButtonWidget(Rectangle displayBounds, Rectangle rectangle, String text, Supplier<RecipeDisplay> displaySupplier, List<Widget> setupDisplay, RecipeCategory<?> recipeCategory) {
         super(rectangle, text);
+        this.displayBounds = displayBounds;
         this.displaySupplier = () -> displaySupplier.get();
         Optional<Identifier> recipe = displaySupplier.get().getRecipeLocation();
         extraTooltip = recipe.isPresent() ? I18n.translate("text.rei.recipe_id", Formatting.GRAY.toString(), recipe.get().toString()) : "";
         this.containerScreen = ScreenHelper.getLastContainerScreen();
         this.setupDisplay = setupDisplay;
+        this.category = recipeCategory;
     }
     
     @Override
@@ -60,6 +63,7 @@ public class AutoCraftingButtonWidget extends ButtonWidget {
         String error = null;
         int color = 0;
         visible = false;
+        IntList redSlots = null;
         AutoTransferHandler.Context context = AutoTransferHandler.Context.create(false, containerScreen, displaySupplier.get());
         for (AutoTransferHandler autoTransferHandler : RecipeHelper.getInstance().getSortedAutoCraftingHandler()) {
             try {
@@ -73,13 +77,19 @@ public class AutoCraftingButtonWidget extends ButtonWidget {
                 } else if (error == null) {
                     error = result.getErrorKey();
                     color = result.getColor();
+                    redSlots = result.getIntegers();
                 }
             } catch (Exception e) {
                 e.printStackTrace();
             }
         }
-        if (!visible)
+        if (!visible) {
             enabled = false;
+            error = "error.rei.no.handlers.applicable";
+        }
+        if (isHovered(mouseX, mouseY) && category instanceof TransferRecipeCategory && redSlots != null) {
+            ((TransferRecipeCategory<RecipeDisplay>) category).renderRedSlots(setupDisplay, displayBounds, displaySupplier.get(), redSlots);
+        }
         errorTooltip = error;
         int x = getBounds().x, y = getBounds().y, width = getBounds().width, height = getBounds().height;
         minecraft.getTextureManager().bindTexture(ScreenHelper.isDarkModeEnabled() ? BUTTON_LOCATION_DARK : BUTTON_LOCATION);
@@ -107,7 +117,7 @@ public class AutoCraftingButtonWidget extends ButtonWidget {
         int colour = 14737632;
         if (!this.visible) {
             colour = 10526880;
-        } else  if (enabled && isHovered(mouseX, mouseY)) {
+        } else if (enabled && isHovered(mouseX, mouseY)) {
             colour = 16777120;
         }
         
@@ -123,7 +133,7 @@ public class AutoCraftingButtonWidget extends ButtonWidget {
     
     @Override
     protected int getTextureId(boolean boolean_1) {
-        return !visible ? 0 :boolean_1 && enabled ? 2 : 1;
+        return !visible ? 0 : boolean_1 && enabled ? 2 : 1;
     }
     
     @Override

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

@@ -7,8 +7,8 @@ package me.shedaniel.rei.gui.widget;
 
 import com.mojang.blaze3d.platform.GlStateManager;
 import me.shedaniel.rei.RoughlyEnoughItemsCore;
-import me.shedaniel.rei.impl.ScreenHelper;
 import me.shedaniel.rei.gui.config.RecipeScreenType;
+import me.shedaniel.rei.impl.ScreenHelper;
 import net.minecraft.client.render.GuiLighting;
 import net.minecraft.util.Identifier;
 

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

@@ -9,9 +9,9 @@ import com.google.common.collect.Lists;
 import com.mojang.blaze3d.platform.GlStateManager;
 import me.shedaniel.rei.RoughlyEnoughItemsCore;
 import me.shedaniel.rei.api.ConfigManager;
+import me.shedaniel.rei.gui.RecipeViewingScreen;
 import me.shedaniel.rei.impl.ConfigObjectImpl;
 import me.shedaniel.rei.impl.ScreenHelper;
-import me.shedaniel.rei.gui.RecipeViewingScreen;
 import me.zeroeightsix.fiber.exception.FiberException;
 import net.minecraft.client.MinecraftClient;
 import net.minecraft.client.render.GuiLighting;

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

@@ -11,9 +11,9 @@ import me.shedaniel.cloth.api.ClientUtils;
 import me.shedaniel.rei.RoughlyEnoughItemsCore;
 import me.shedaniel.rei.api.ClientHelper;
 import me.shedaniel.rei.api.Renderer;
-import me.shedaniel.rei.impl.ScreenHelper;
 import me.shedaniel.rei.gui.renderers.FluidRenderer;
 import me.shedaniel.rei.gui.renderers.ItemStackRenderer;
+import me.shedaniel.rei.impl.ScreenHelper;
 import net.minecraft.client.gui.Element;
 import net.minecraft.fluid.Fluid;
 import net.minecraft.item.ItemStack;

+ 1 - 1
src/main/java/me/shedaniel/rei/plugin/DefaultAutoCraftingPlugin.java

@@ -24,7 +24,7 @@ public class DefaultAutoCraftingPlugin implements REIPluginV0 {
     
     @Override
     public SemanticVersion getMinimumVersion() throws VersionParsingException {
-        return SemanticVersion.parse("2.10");
+        return SemanticVersion.parse("2.11");
     }
     
     @Override

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

@@ -90,7 +90,7 @@ public class DefaultPlugin implements REIPluginV0 {
     
     @Override
     public SemanticVersion getMinimumVersion() throws VersionParsingException {
-        return SemanticVersion.parse("2.10");
+        return SemanticVersion.parse("2.11");
     }
     
     @Override

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

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

+ 0 - 1
src/main/java/me/shedaniel/rei/plugin/autocrafting/DefaultCategoryHandler.java

@@ -56,7 +56,6 @@ public class DefaultCategoryHandler implements AutoTransferHandler {
         if (containerScreen instanceof RecipeBookProvider)
             ((RecipeBookGuiHooks) ((RecipeBookProvider) containerScreen).getRecipeBookGui()).rei_getGhostSlots().reset();
         PacketByteBuf buf = new PacketByteBuf(Unpooled.buffer());
-        //        buf.writeUuid(RoughlyEnoughItemsNetwork.CRAFTING_TABLE_MOVE);
         buf.writeIdentifier(recipe.getRecipeCategory());
         buf.writeBoolean(Screen.hasShiftDown());
         

+ 14 - 2
src/main/java/me/shedaniel/rei/plugin/blasting/DefaultBlastingCategory.java

@@ -6,8 +6,9 @@
 package me.shedaniel.rei.plugin.blasting;
 
 import com.mojang.blaze3d.platform.GlStateManager;
-import me.shedaniel.rei.api.RecipeCategory;
+import it.unimi.dsi.fastutil.ints.IntList;
 import me.shedaniel.rei.api.Renderer;
+import me.shedaniel.rei.api.TransferRecipeCategory;
 import me.shedaniel.rei.gui.renderers.RecipeRenderer;
 import me.shedaniel.rei.gui.widget.RecipeBaseWidget;
 import me.shedaniel.rei.gui.widget.SlotWidget;
@@ -15,6 +16,7 @@ import me.shedaniel.rei.gui.widget.Widget;
 import me.shedaniel.rei.plugin.DefaultPlugin;
 import net.minecraft.block.Blocks;
 import net.minecraft.client.MinecraftClient;
+import net.minecraft.client.gui.DrawableHelper;
 import net.minecraft.client.render.GuiLighting;
 import net.minecraft.client.resource.language.I18n;
 import net.minecraft.item.ItemStack;
@@ -29,7 +31,7 @@ import java.util.LinkedList;
 import java.util.List;
 import java.util.function.Supplier;
 
-public class DefaultBlastingCategory implements RecipeCategory<DefaultBlastingDisplay> {
+public class DefaultBlastingCategory implements TransferRecipeCategory<DefaultBlastingDisplay> {
     
     @Override
     public Identifier getIdentifier() {
@@ -81,4 +83,14 @@ public class DefaultBlastingCategory implements RecipeCategory<DefaultBlastingDi
         return widgets;
     }
     
+    @Override
+    public void renderRedSlots(List<Widget> widgets, Rectangle bounds, DefaultBlastingDisplay display, IntList redSlots) {
+        Point startPoint = new Point((int) bounds.getCenterX() - 41, (int) bounds.getCenterY() - 27);
+        GlStateManager.translatef(0, 0, 400);
+        if (redSlots.contains(0)) {
+            DrawableHelper.fill(startPoint.x + 1, startPoint.y + 1, startPoint.x + 1 + 16, startPoint.y + 1 + 16, 0x30ff0000);
+        }
+        GlStateManager.translatef(0, 0, -400);
+    }
+    
 }

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

@@ -5,7 +5,6 @@
 
 package me.shedaniel.rei.plugin.blasting;
 
-import me.shedaniel.rei.api.RecipeDisplay;
 import me.shedaniel.rei.api.TransferRecipeDisplay;
 import me.shedaniel.rei.plugin.DefaultPlugin;
 import me.shedaniel.rei.server.ContainerInfo;

+ 1 - 1
src/main/java/me/shedaniel/rei/plugin/campfire/DefaultCampfireCategory.java

@@ -8,10 +8,10 @@ package me.shedaniel.rei.plugin.campfire;
 import com.mojang.blaze3d.platform.GlStateManager;
 import me.shedaniel.rei.api.RecipeCategory;
 import me.shedaniel.rei.api.Renderer;
-import me.shedaniel.rei.impl.ScreenHelper;
 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.impl.ScreenHelper;
 import me.shedaniel.rei.plugin.DefaultPlugin;
 import net.minecraft.block.Blocks;
 import net.minecraft.client.MinecraftClient;

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

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

+ 16 - 2
src/main/java/me/shedaniel/rei/plugin/crafting/DefaultCraftingCategory.java

@@ -7,14 +7,16 @@ package me.shedaniel.rei.plugin.crafting;
 
 import com.google.common.collect.Lists;
 import com.mojang.blaze3d.platform.GlStateManager;
-import me.shedaniel.rei.api.RecipeCategory;
+import it.unimi.dsi.fastutil.ints.IntList;
 import me.shedaniel.rei.api.Renderer;
+import me.shedaniel.rei.api.TransferRecipeCategory;
 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.plugin.DefaultPlugin;
 import net.minecraft.block.Blocks;
 import net.minecraft.client.MinecraftClient;
+import net.minecraft.client.gui.DrawableHelper;
 import net.minecraft.client.render.GuiLighting;
 import net.minecraft.client.resource.language.I18n;
 import net.minecraft.item.ItemStack;
@@ -26,7 +28,7 @@ import java.util.LinkedList;
 import java.util.List;
 import java.util.function.Supplier;
 
-public class DefaultCraftingCategory implements RecipeCategory<DefaultCraftingDisplay> {
+public class DefaultCraftingCategory implements TransferRecipeCategory<DefaultCraftingDisplay> {
     
     public static int getSlotWithSize(DefaultCraftingDisplay recipeDisplay, int num) {
         if (recipeDisplay.getWidth() == 1) {
@@ -94,4 +96,16 @@ public class DefaultCraftingCategory implements RecipeCategory<DefaultCraftingDi
         return widgets;
     }
     
+    @Override
+    public void renderRedSlots(List<Widget> widgets, Rectangle bounds, DefaultCraftingDisplay display, IntList redSlots) {
+        Point startPoint = new Point((int) bounds.getCenterX() - 58, (int) bounds.getCenterY() - 27);
+        GlStateManager.translatef(0, 0, 400);
+        for (Integer slot : redSlots) {
+            int i = getSlotWithSize(display, slot);
+            int x = i % 3;
+            int y = (i - x) / 3;
+            DrawableHelper.fill(startPoint.x + 1 + x * 18, startPoint.y + 1 + y * 18, startPoint.x + 1 + x * 18 + 16, startPoint.y + 1 + y * 18 + 16, 0x30ff0000);
+        }
+        GlStateManager.translatef(0, 0, -400);
+    }
 }

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

@@ -6,8 +6,9 @@
 package me.shedaniel.rei.plugin.smelting;
 
 import com.mojang.blaze3d.platform.GlStateManager;
-import me.shedaniel.rei.api.RecipeCategory;
+import it.unimi.dsi.fastutil.ints.IntList;
 import me.shedaniel.rei.api.Renderer;
+import me.shedaniel.rei.api.TransferRecipeCategory;
 import me.shedaniel.rei.gui.renderers.RecipeRenderer;
 import me.shedaniel.rei.gui.widget.RecipeBaseWidget;
 import me.shedaniel.rei.gui.widget.SlotWidget;
@@ -15,6 +16,7 @@ import me.shedaniel.rei.gui.widget.Widget;
 import me.shedaniel.rei.plugin.DefaultPlugin;
 import net.minecraft.block.Blocks;
 import net.minecraft.client.MinecraftClient;
+import net.minecraft.client.gui.DrawableHelper;
 import net.minecraft.client.render.GuiLighting;
 import net.minecraft.client.resource.language.I18n;
 import net.minecraft.item.ItemStack;
@@ -29,7 +31,7 @@ import java.util.LinkedList;
 import java.util.List;
 import java.util.function.Supplier;
 
-public class DefaultSmeltingCategory implements RecipeCategory<DefaultSmeltingDisplay> {
+public class DefaultSmeltingCategory implements TransferRecipeCategory<DefaultSmeltingDisplay> {
     
     @Override
     public Identifier getIdentifier() {
@@ -80,4 +82,14 @@ public class DefaultSmeltingCategory implements RecipeCategory<DefaultSmeltingDi
         return widgets;
     }
     
+    @Override
+    public void renderRedSlots(List<Widget> widgets, Rectangle bounds, DefaultSmeltingDisplay display, IntList redSlots) {
+        Point startPoint = new Point((int) bounds.getCenterX() - 41, (int) bounds.getCenterY() - 27);
+        GlStateManager.translatef(0, 0, 400);
+        if (redSlots.contains(0)) {
+            DrawableHelper.fill(startPoint.x + 1, startPoint.y + 1, startPoint.x + 1 + 16, startPoint.y + 1 + 16, 0x30ff0000);
+        }
+        GlStateManager.translatef(0, 0, -400);
+    }
+    
 }

+ 14 - 2
src/main/java/me/shedaniel/rei/plugin/smoking/DefaultSmokingCategory.java

@@ -6,8 +6,9 @@
 package me.shedaniel.rei.plugin.smoking;
 
 import com.mojang.blaze3d.platform.GlStateManager;
-import me.shedaniel.rei.api.RecipeCategory;
+import it.unimi.dsi.fastutil.ints.IntList;
 import me.shedaniel.rei.api.Renderer;
+import me.shedaniel.rei.api.TransferRecipeCategory;
 import me.shedaniel.rei.gui.renderers.RecipeRenderer;
 import me.shedaniel.rei.gui.widget.RecipeBaseWidget;
 import me.shedaniel.rei.gui.widget.SlotWidget;
@@ -15,6 +16,7 @@ import me.shedaniel.rei.gui.widget.Widget;
 import me.shedaniel.rei.plugin.DefaultPlugin;
 import net.minecraft.block.Blocks;
 import net.minecraft.client.MinecraftClient;
+import net.minecraft.client.gui.DrawableHelper;
 import net.minecraft.client.render.GuiLighting;
 import net.minecraft.client.resource.language.I18n;
 import net.minecraft.item.ItemStack;
@@ -29,7 +31,7 @@ import java.util.LinkedList;
 import java.util.List;
 import java.util.function.Supplier;
 
-public class DefaultSmokingCategory implements RecipeCategory<DefaultSmokingDisplay> {
+public class DefaultSmokingCategory implements TransferRecipeCategory<DefaultSmokingDisplay> {
     
     @Override
     public Identifier getIdentifier() {
@@ -80,4 +82,14 @@ public class DefaultSmokingCategory implements RecipeCategory<DefaultSmokingDisp
         return widgets;
     }
     
+    @Override
+    public void renderRedSlots(List<Widget> widgets, Rectangle bounds, DefaultSmokingDisplay display, IntList redSlots) {
+        Point startPoint = new Point((int) bounds.getCenterX() - 41, (int) bounds.getCenterY() - 27);
+        GlStateManager.translatef(0, 0, 400);
+        if (redSlots.contains(0)) {
+            DrawableHelper.fill(startPoint.x + 1, startPoint.y + 1, startPoint.x + 1 + 16, startPoint.y + 1 + 16, 0x30ff0000);
+        }
+        GlStateManager.translatef(0, 0, -400);
+    }
+    
 }

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

@@ -5,7 +5,6 @@
 
 package me.shedaniel.rei.plugin.smoking;
 
-import me.shedaniel.rei.api.RecipeDisplay;
 import me.shedaniel.rei.api.TransferRecipeDisplay;
 import me.shedaniel.rei.plugin.DefaultPlugin;
 import me.shedaniel.rei.server.ContainerInfo;

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

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

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

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

+ 0 - 6
src/main/java/me/shedaniel/rei/server/RecipeGridAligner.java

@@ -15,12 +15,6 @@ public interface RecipeGridAligner<T> {
     default void alignRecipeToGrid(int int_1, int int_2, int int_3, DefaultedList<Ingredient> recipe_1, Iterator<T> iterator_1, int int_4) {
         int int_5 = int_1;
         int int_6 = int_2;
-        //      if (recipe_1 instanceof ShapedRecipe) {
-        //         ShapedRecipe shapedRecipe_1 = (ShapedRecipe)recipe_1;
-        //         int_5 = shapedRecipe_1.getWidth();
-        //         int_6 = shapedRecipe_1.getHeight();
-        //      }
-        
         int int_7 = 0;
         
         for (int int_8 = 0; int_8 < int_2; ++int_8) {

+ 2 - 1
src/main/resources/assets/roughlyenoughitems/lang/en_us.json

@@ -40,8 +40,9 @@
   "text.auto_craft.move_items": "Move Items",
   "error.rei.transfer.too_small": "Unable to move items to a %dx%d grid.",
   "error.rei.not.on.server": "REI is not on the server.",
-  "error.rei.not.enough.materials": "Not Enough Materials.",
+  "error.rei.not.enough.materials": "Not enough materials.",
   "error.rei.internal.error": "Internal Error: %s",
+  "error.rei.no.handlers.applicable": "No handlers are applicable.",
   "rei.rei.no.slot.in.inv": "Can't find any space for item in the inventory",
   "text.rei.showing_craftable": "Showing Craftable",
   "text.rei.showing_all": "Showing All",