diff options
| author | Danielshe <shekwancheung0528@gmail.com> | 2019-09-02 17:24:25 +0800 |
|---|---|---|
| committer | Danielshe <shekwancheung0528@gmail.com> | 2019-09-02 17:24:25 +0800 |
| commit | 187c0ad5b558ce1c562f248441d0209212afa47d (patch) | |
| tree | 15aba457aeaf9df41adc807dbfd4fac7f4846a8b /src | |
| parent | 51c72210419e12ce36c308d262c1971d37fd1623 (diff) | |
| download | RoughlyEnoughItems-187c0ad5b558ce1c562f248441d0209212afa47d.tar.gz RoughlyEnoughItems-187c0ad5b558ce1c562f248441d0209212afa47d.tar.bz2 RoughlyEnoughItems-187c0ad5b558ce1c562f248441d0209212afa47d.zip | |
Fix bugs
Fix #149
Fix #155
Diffstat (limited to 'src')
3 files changed, 14 insertions, 22 deletions
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<DefaultCraftingDisplay> { + @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<DefaultCr for (int i = 0; i < input.size(); i++) { if (recipeDisplaySupplier.get() instanceof DefaultShapedDisplay) { if (!input.get(i).isEmpty()) - slots.get(getSlotWithSize(recipeDisplaySupplier.get(), i)).setItemList(input.get(i)); + slots.get(getSlotWithSize(recipeDisplaySupplier.get(), i, 3)).setItemList(input.get(i)); } else if (!input.get(i).isEmpty()) slots.get(i).setItemList(input.get(i)); } @@ -102,7 +92,7 @@ public class DefaultCraftingCategory implements TransferRecipeCategory<DefaultCr Point startPoint = new Point(bounds.getCenterX() - 58, bounds.getCenterY() - 27); RenderHelper.translatef(0, 0, 400); for (Integer slot : redSlots) { - int i = getSlotWithSize(display, slot); + int i = getSlotWithSize(display, slot, 3); 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, 822018048); diff --git a/src/main/java/me/shedaniel/rei/plugin/crafting/DefaultCraftingDisplay.java b/src/main/java/me/shedaniel/rei/plugin/crafting/DefaultCraftingDisplay.java index 7a0bbba84..48601433c 100644 --- a/src/main/java/me/shedaniel/rei/plugin/crafting/DefaultCraftingDisplay.java +++ b/src/main/java/me/shedaniel/rei/plugin/crafting/DefaultCraftingDisplay.java @@ -44,7 +44,7 @@ public interface DefaultCraftingDisplay extends TransferRecipeDisplay { } for (int i = 0; i < getInput().size(); i++) { List<ItemStack> 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<C extends Inventory> implements RecipeGridAligner<Integer> { @@ -54,7 +56,7 @@ public class InputSlotCrafter<C extends Inventory> implements RecipeGridAligner< this.containerInfo.populateRecipeFinder(craftingContainer, recipeFinder); DefaultedList<Ingredient> 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); |
