diff --git a/patches/minecraft/net/minecraft/util/ServerRecipeBookHelper.java.patch b/patches/minecraft/net/minecraft/util/ServerRecipeBookHelper.java.patch index 55545f2aa..612d7d1ee 100644 --- a/patches/minecraft/net/minecraft/util/ServerRecipeBookHelper.java.patch +++ b/patches/minecraft/net/minecraft/util/ServerRecipeBookHelper.java.patch @@ -1,6 +1,18 @@ --- ../src-base/minecraft/net/minecraft/util/ServerRecipeBookHelper.java +++ ../src-work/minecraft/net/minecraft/util/ServerRecipeBookHelper.java -@@ -199,11 +199,11 @@ +@@ -55,6 +55,11 @@ + this.field_194335_f = ((ContainerPlayer)container).field_75179_f; + this.field_194336_g = ((ContainerPlayer)container).field_75181_e; + } ++ else if (container instanceof net.minecraftforge.common.crafting.IRecipeContainer) ++ { ++ this.field_194335_f = ((net.minecraftforge.common.crafting.IRecipeContainer)container).getCraftResult(); ++ this.field_194336_g = ((net.minecraftforge.common.crafting.IRecipeContainer)container).getCraftMatrix(); ++ } + + if (this.field_194335_f != null && this.field_194336_g != null) + { +@@ -199,11 +204,11 @@ int i = this.field_194336_g.func_174922_i(); int j = this.field_194336_g.func_174923_h(); diff --git a/src/main/java/net/minecraftforge/common/crafting/IRecipeContainer.java b/src/main/java/net/minecraftforge/common/crafting/IRecipeContainer.java new file mode 100644 index 000000000..bdc863e7b --- /dev/null +++ b/src/main/java/net/minecraftforge/common/crafting/IRecipeContainer.java @@ -0,0 +1,47 @@ +/* + * Minecraft Forge + * Copyright (c) 2017. + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation version 2.1 + * of the License. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + */ + +package net.minecraftforge.common.crafting; + +import net.minecraft.inventory.ContainerPlayer; +import net.minecraft.inventory.ContainerWorkbench; +import net.minecraft.inventory.InventoryCraftResult; +import net.minecraft.inventory.InventoryCrafting; + +/** + * This interface is to be implemented on Container objects. + * For GUIs with recipe books, this allows their containers to have + * recipe completion and ghost recipes in their craft matrices. + */ +public interface IRecipeContainer +{ + /** + * The crafting result slot of your container, where you take out the crafted item. + * The equivalent for {@link ContainerWorkbench} is {@link ContainerWorkbench#craftResult}. + * The equivalent for {@link ContainerPlayer} is {@link ContainerPlayer#craftResult}. + */ + InventoryCraftResult getCraftResult(); + + /** + * The crafting matrix of your container, where ingredients go for crafting. + * The equivalent for {@link ContainerWorkbench} is {@link ContainerWorkbench#craftMatrix}. + * The equivalent for {@link ContainerPlayer} is {@link ContainerPlayer#craftMatrix}. + */ + InventoryCrafting getCraftMatrix(); +}