From 70417f41613ae30582cd48708fe43ce9a3e6ae86 Mon Sep 17 00:00:00 2001 From: Unknown Date: Tue, 6 Aug 2019 22:35:12 +0800 Subject: These days are great days to completely scrap an api --- .../me/shedaniel/rei/server/RecipeGridAligner.java | 61 ++++++++++++++++++++++ 1 file changed, 61 insertions(+) create mode 100644 src/main/java/me/shedaniel/rei/server/RecipeGridAligner.java (limited to 'src/main/java/me/shedaniel/rei/server/RecipeGridAligner.java') diff --git a/src/main/java/me/shedaniel/rei/server/RecipeGridAligner.java b/src/main/java/me/shedaniel/rei/server/RecipeGridAligner.java new file mode 100644 index 000000000..5ac9bbab8 --- /dev/null +++ b/src/main/java/me/shedaniel/rei/server/RecipeGridAligner.java @@ -0,0 +1,61 @@ +package me.shedaniel.rei.server; + +import net.minecraft.recipe.Recipe; +import net.minecraft.recipe.ShapedRecipe; +import net.minecraft.util.math.MathHelper; + +import java.util.Iterator; + +public interface RecipeGridAligner { + default void alignRecipeToGrid(int craftingGridWidth, int craftingGridHeight, int resultSlotIndex, Recipe recipe, Iterator iterator_1, int int_4) { + int recipeWidth = craftingGridWidth; + int recipeHeight = craftingGridHeight; + if (recipe instanceof ShapedRecipe) { + ShapedRecipe shapedRecipe = (ShapedRecipe) recipe; + recipeWidth = shapedRecipe.getWidth(); + recipeHeight = shapedRecipe.getHeight(); + } + + int slotId = 0; + + for (int int_8 = 0; int_8 < craftingGridHeight; ++int_8) { + if (slotId == resultSlotIndex) { + ++slotId; + } + + boolean boolean_1 = (float) recipeHeight < (float) craftingGridHeight / 2.0F; + int int_9 = MathHelper.floor((float) craftingGridHeight / 2.0F - (float) recipeHeight / 2.0F); + if (boolean_1 && int_9 > int_8) { + slotId += craftingGridWidth; + ++int_8; + } + + for (int int_10 = 0; int_10 < craftingGridWidth; ++int_10) { + if (!iterator_1.hasNext()) { + return; + } + + boolean_1 = (float) recipeWidth < (float) craftingGridWidth / 2.0F; + int_9 = MathHelper.floor((float) craftingGridWidth / 2.0F - (float) recipeWidth / 2.0F); + int int_11 = recipeWidth; + boolean boolean_2 = int_10 < recipeWidth; + if (boolean_1) { + int_11 = int_9 + recipeWidth; + boolean_2 = int_9 <= int_10 && int_10 < int_9 + recipeWidth; + } + + if (boolean_2) { + this.acceptAlignedInput(iterator_1, slotId, int_4, int_8, int_10); + } else if (int_11 == int_10) { + slotId += craftingGridWidth - int_10; + break; + } + + ++slotId; + } + } + + } + + void acceptAlignedInput(Iterator var1, int var2, int var3, int var4, int var5); +} \ No newline at end of file -- cgit