From 187c0ad5b558ce1c562f248441d0209212afa47d Mon Sep 17 00:00:00 2001 From: Danielshe Date: Mon, 2 Sep 2019 17:24:25 +0800 Subject: Fix bugs Fix #149 Fix #155 --- .../plugin/crafting/DefaultCraftingCategory.java | 30 ++++++++-------------- .../plugin/crafting/DefaultCraftingDisplay.java | 2 +- .../me/shedaniel/rei/server/InputSlotCrafter.java | 4 ++- 3 files changed, 14 insertions(+), 22 deletions(-) (limited to 'src/main/java/me') diff --git a/src/main/java/me/shedaniel/rei/plugin/crafting/DefaultCraftingCategory.java b/src/main/java/me/shedaniel/rei/plugin/crafting/DefaultCraftingCategory.java index 5a8bfae76..6769a7054 100644 --- a/src/main/java/me/shedaniel/rei/plugin/crafting/DefaultCraftingCategory.java +++ b/src/main/java/me/shedaniel/rei/plugin/crafting/DefaultCraftingCategory.java @@ -31,25 +31,15 @@ import java.util.function.Supplier; public class DefaultCraftingCategory implements TransferRecipeCategory { + @Deprecated public static int getSlotWithSize(DefaultCraftingDisplay recipeDisplay, int num) { - if (recipeDisplay.getWidth() == 1) { - if (num == 1) - return 3; - if (num == 2) - return 6; - } - - if (recipeDisplay.getWidth() == 2) { - if (num == 2) - return 3; - if (num == 3) - return 4; - if (num == 4) - return 6; - if (num == 5) - return 7; - } - return num; + return getSlotWithSize(recipeDisplay, num, 3); + } + + public static int getSlotWithSize(DefaultCraftingDisplay recipeDisplay, int num, int craftingGridWidth) { + int x = num % recipeDisplay.getWidth(); + int y = (num - x) / recipeDisplay.getWidth(); + return craftingGridWidth * y + x; } @Override @@ -88,7 +78,7 @@ public class DefaultCraftingCategory implements TransferRecipeCategory stacks = getInput().get(i); - list.set(DefaultCraftingCategory.getSlotWithSize(this, i), stacks); + list.set(DefaultCraftingCategory.getSlotWithSize(this, i, containerInfo.getCraftingWidth(container)), stacks); } return list; } diff --git a/src/main/java/me/shedaniel/rei/server/InputSlotCrafter.java b/src/main/java/me/shedaniel/rei/server/InputSlotCrafter.java index c049a19d2..c84f43388 100644 --- a/src/main/java/me/shedaniel/rei/server/InputSlotCrafter.java +++ b/src/main/java/me/shedaniel/rei/server/InputSlotCrafter.java @@ -13,6 +13,7 @@ import net.minecraft.container.Container; import net.minecraft.container.Slot; import net.minecraft.entity.player.PlayerInventory; import net.minecraft.inventory.Inventory; +import net.minecraft.item.Item; import net.minecraft.item.ItemStack; import net.minecraft.recipe.Ingredient; import net.minecraft.server.network.ServerPlayerEntity; @@ -23,6 +24,7 @@ import java.util.Comparator; import java.util.Iterator; import java.util.List; import java.util.Map; +import java.util.stream.Collectors; public class InputSlotCrafter implements RecipeGridAligner { @@ -54,7 +56,7 @@ public class InputSlotCrafter implements RecipeGridAligner< this.containerInfo.populateRecipeFinder(craftingContainer, recipeFinder); DefaultedList ingredients = DefaultedList.of(); map.entrySet().stream().sorted(Comparator.comparingInt(Map.Entry::getKey)).forEach(entry -> { - ingredients.add(Ingredient.ofStacks(entry.getValue().toArray(new ItemStack[0]))); + ingredients.add(Ingredient.ofItems(entry.getValue().stream().map(ItemStack::getItem).collect(Collectors.toList()).toArray(new Item[0]))); }); if (recipeFinder.findRecipe(ingredients, (IntList) null)) { this.fillInputSlots(recipeFinder, ingredients, hasShift); -- cgit