From 379c24313347fba499a0a4890ddfa2f8e67b14e5 Mon Sep 17 00:00:00 2001 From: Jared Date: Tue, 15 Feb 2022 05:01:31 +0200 Subject: [PATCH 1/2] Fixed non ShapedRecipe / ShapelessRecipe recipes not being shown in JEI. Fixes #1112 --- .../com/simibubi/create/compat/jei/CreateJEI.java | 9 +++++---- .../jei/category/MechanicalCraftingCategory.java | 5 +++-- .../content/curiosities/tools/BlueprintItem.java | 11 ++++++----- 3 files changed, 14 insertions(+), 11 deletions(-) diff --git a/src/main/java/com/simibubi/create/compat/jei/CreateJEI.java b/src/main/java/com/simibubi/create/compat/jei/CreateJEI.java index 785b233b7..fb7aedf05 100644 --- a/src/main/java/com/simibubi/create/compat/jei/CreateJEI.java +++ b/src/main/java/com/simibubi/create/compat/jei/CreateJEI.java @@ -31,6 +31,7 @@ import net.minecraft.world.item.ItemStack; import net.minecraft.world.item.Items; import net.minecraft.world.item.crafting.*; import net.minecraft.world.level.ItemLike; +import net.minecraftforge.common.crafting.IShapedRecipe; import net.minecraftforge.fml.ModList; import javax.annotation.Nonnull; @@ -94,7 +95,7 @@ public class CreateJEI implements IModPlugin { .build(), autoShapeless = register("automatic_shapeless", MixingCategory::autoShapeless) - .recipes(r -> r.getSerializer() == RecipeSerializer.SHAPELESS_RECIPE && r.getIngredients() + .recipes(r -> r instanceof CraftingRecipe && !(r instanceof IShapedRecipe) && r.getIngredients() .size() > 1 && !MechanicalPressTileEntity.canCompress(r) && !AllRecipeTypes.isManualRecipe(r), BasinRecipe::convertShapeless) .catalyst(AllBlocks.MECHANICAL_MIXER::get) @@ -173,11 +174,11 @@ public class CreateJEI implements IModPlugin { .build(), autoShaped = register("automatic_shaped", MechanicalCraftingCategory::new) - .recipes(r -> r.getSerializer() == RecipeSerializer.SHAPELESS_RECIPE && r.getIngredients() + .recipes(r -> r instanceof CraftingRecipe && !(r instanceof IShapedRecipe) && r.getIngredients() .size() == 1) .recipes(r -> (r.getType() == RecipeType.CRAFTING - && r.getType() != AllRecipeTypes.MECHANICAL_CRAFTING.getType()) && (r instanceof ShapedRecipe) - && !AllRecipeTypes.isManualRecipe(r)) + && r.getType() != AllRecipeTypes.MECHANICAL_CRAFTING.getType()) && (r instanceof IShapedRecipe) + && !AllRecipeTypes.isManualRecipe(r)) .catalyst(AllBlocks.MECHANICAL_CRAFTER::get) .enableWhen(c -> c.allowRegularCraftingInCrafter) .build(), diff --git a/src/main/java/com/simibubi/create/compat/jei/category/MechanicalCraftingCategory.java b/src/main/java/com/simibubi/create/compat/jei/category/MechanicalCraftingCategory.java index fe5b7fa48..9aafdb81b 100644 --- a/src/main/java/com/simibubi/create/compat/jei/category/MechanicalCraftingCategory.java +++ b/src/main/java/com/simibubi/create/compat/jei/category/MechanicalCraftingCategory.java @@ -28,6 +28,7 @@ import net.minecraft.world.item.TooltipFlag; import net.minecraft.world.item.crafting.CraftingRecipe; import net.minecraft.world.item.crafting.Ingredient; import net.minecraft.world.item.crafting.ShapedRecipe; +import net.minecraftforge.common.crafting.IShapedRecipe; public class MechanicalCraftingCategory extends CreateRecipeCategory { @@ -86,11 +87,11 @@ public class MechanicalCraftingCategory extends CreateRecipeCategory ? ((IShapedRecipe) recipe).getRecipeWidth() : 1; } private static int getHeight(CraftingRecipe recipe) { - return recipe instanceof ShapedRecipe ? ((ShapedRecipe) recipe).getHeight() : 1; + return recipe instanceof IShapedRecipe ? ((IShapedRecipe) recipe).getRecipeHeight() : 1; } @Override diff --git a/src/main/java/com/simibubi/create/content/curiosities/tools/BlueprintItem.java b/src/main/java/com/simibubi/create/content/curiosities/tools/BlueprintItem.java index bd5eb9ecf..f4d9d4019 100644 --- a/src/main/java/com/simibubi/create/content/curiosities/tools/BlueprintItem.java +++ b/src/main/java/com/simibubi/create/content/curiosities/tools/BlueprintItem.java @@ -28,6 +28,7 @@ import net.minecraft.world.item.crafting.Ingredient.Value; import net.minecraft.world.item.crafting.Recipe; import net.minecraft.world.item.crafting.ShapedRecipe; import net.minecraft.world.level.Level; +import net.minecraftforge.common.crafting.IShapedRecipe; import net.minecraftforge.common.crafting.MultiItemValue; import net.minecraftforge.fml.util.ObfuscationReflectionHelper; import net.minecraftforge.items.ItemStackHandler; @@ -79,12 +80,12 @@ public class BlueprintItem extends Item { inv.setStackInSlot(i, ItemStack.EMPTY); inv.setStackInSlot(9, recipe.getResultItem()); - if (recipe instanceof ShapedRecipe) { - ShapedRecipe shapedRecipe = (ShapedRecipe) recipe; - for (int row = 0; row < shapedRecipe.getHeight(); row++) - for (int col = 0; col < shapedRecipe.getWidth(); col++) + if (recipe instanceof IShapedRecipe) { + IShapedRecipe shapedRecipe = (IShapedRecipe) recipe; + for (int row = 0; row < shapedRecipe.getRecipeHeight(); row++) + for (int col = 0; col < shapedRecipe.getRecipeWidth(); col++) inv.setStackInSlot(row * 3 + col, - convertIngredientToFilter(ingredients.get(row * shapedRecipe.getWidth() + col))); + convertIngredientToFilter(ingredients.get(row * shapedRecipe.getRecipeWidth() + col))); } else { for (int i = 0; i < ingredients.size(); i++) inv.setStackInSlot(i, convertIngredientToFilter(ingredients.get(i))); From 51197d20341b5b3caf3d27e113c595e2f3f2cc96 Mon Sep 17 00:00:00 2001 From: Jared Date: Tue, 15 Feb 2022 05:17:31 +0200 Subject: [PATCH 2/2] Fix mechanical mixer not working for all non shaped recipes. Fixes #1424 --- .../components/mixer/MechanicalMixerTileEntity.java | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) diff --git a/src/main/java/com/simibubi/create/content/contraptions/components/mixer/MechanicalMixerTileEntity.java b/src/main/java/com/simibubi/create/content/contraptions/components/mixer/MechanicalMixerTileEntity.java index 53587571f..97c67f55c 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/components/mixer/MechanicalMixerTileEntity.java +++ b/src/main/java/com/simibubi/create/content/contraptions/components/mixer/MechanicalMixerTileEntity.java @@ -32,6 +32,7 @@ import net.minecraft.sounds.SoundSource; import net.minecraft.util.Mth; import net.minecraft.world.Container; import net.minecraft.world.item.ItemStack; +import net.minecraft.world.item.crafting.CraftingRecipe; import net.minecraft.world.item.crafting.Recipe; import net.minecraft.world.item.crafting.RecipeSerializer; import net.minecraft.world.level.block.entity.BlockEntityType; @@ -40,6 +41,7 @@ import net.minecraft.world.phys.AABB; import net.minecraft.world.phys.Vec3; import net.minecraftforge.api.distmarker.Dist; import net.minecraftforge.api.distmarker.OnlyIn; +import net.minecraftforge.common.crafting.IShapedRecipe; import net.minecraftforge.items.CapabilityItemHandler; import net.minecraftforge.items.IItemHandler; @@ -237,10 +239,10 @@ public class MechanicalMixerTileEntity extends BasinOperatingTileEntity { @Override protected boolean matchStaticFilters(Recipe r) { - return ((r.getSerializer() == RecipeSerializer.SHAPELESS_RECIPE - && AllConfigs.SERVER.recipes.allowShapelessInMixer.get() && r.getIngredients() + return ((r instanceof CraftingRecipe && !(r instanceof IShapedRecipe) + && AllConfigs.SERVER.recipes.allowShapelessInMixer.get() && r.getIngredients() .size() > 1 - && !MechanicalPressTileEntity.canCompress(r)) && !AllRecipeTypes.isManualRecipe(r) + && !MechanicalPressTileEntity.canCompress(r)) && !AllRecipeTypes.isManualRecipe(r) || r.getType() == AllRecipeTypes.MIXING.getType()); } @@ -289,9 +291,9 @@ public class MechanicalMixerTileEntity extends BasinOperatingTileEntity { // SoundEvents.BLOCK_STONE_BREAK boolean slow = Math.abs(getSpeed()) < 65; - if (slow && AnimationTickHolder.getTicks() % 2 == 0) + if (slow && AnimationTickHolder.getTicks() % 2 == 0) return; - if (runningTicks == 20) + if (runningTicks == 20) AllSoundEvents.MIXING.playAt(level, worldPosition, .75f, 1, true); }