diff --git a/src/main/java/com/raoulvdberge/refinedstorage/apiimpl/network/node/NetworkNodeCrafter.java b/src/main/java/com/raoulvdberge/refinedstorage/apiimpl/network/node/NetworkNodeCrafter.java index b3378e855..9c6a2881c 100755 --- a/src/main/java/com/raoulvdberge/refinedstorage/apiimpl/network/node/NetworkNodeCrafter.java +++ b/src/main/java/com/raoulvdberge/refinedstorage/apiimpl/network/node/NetworkNodeCrafter.java @@ -33,7 +33,7 @@ public class NetworkNodeCrafter extends NetworkNode implements ICraftingPatternC private static final String NBT_BLOCKED = "Blocked"; private static final String NBT_DISPLAY_NAME = "DisplayName"; - private ItemHandlerBase patterns = new ItemHandlerBase(9, new ItemHandlerListenerNetworkNode(this), s -> s.getItem() instanceof ICraftingPatternProvider && ((ICraftingPatternProvider) s.getItem()).create(world, s, this).isValid()) { + private ItemHandlerBase patterns = new ItemHandlerBase(9, new ItemHandlerListenerNetworkNode(this), s -> isValidPatternInSlot(world, s)) { @Override protected void onContentsChanged(int slot) { super.onContentsChanged(slot); @@ -53,6 +53,10 @@ public class NetworkNodeCrafter extends NetworkNode implements ICraftingPatternC } }; + public static boolean isValidPatternInSlot(World world, ItemStack stack) { + return stack.getItem() instanceof ICraftingPatternProvider && ((ICraftingPatternProvider) stack.getItem()).create(world, stack, null).isValid(); + } + private List actualPatterns = new ArrayList<>(); private ItemHandlerUpgrade upgrades = new ItemHandlerUpgrade(4, new ItemHandlerListenerNetworkNode(this), ItemUpgrade.TYPE_SPEED); @@ -179,6 +183,10 @@ public class NetworkNodeCrafter extends NetworkNode implements ICraftingPatternC return ((IWorldNameable) facing).getName(); } + if (facing != null) { + return world.getBlockState(pos.offset(getDirection())).getBlock().getUnlocalizedName() + ".name"; + } + return DEFAULT_NAME; } diff --git a/src/main/java/com/raoulvdberge/refinedstorage/container/ContainerCrafterManager.java b/src/main/java/com/raoulvdberge/refinedstorage/container/ContainerCrafterManager.java index e3b4399f3..79e357bed 100644 --- a/src/main/java/com/raoulvdberge/refinedstorage/container/ContainerCrafterManager.java +++ b/src/main/java/com/raoulvdberge/refinedstorage/container/ContainerCrafterManager.java @@ -1,6 +1,7 @@ package com.raoulvdberge.refinedstorage.container; import com.raoulvdberge.refinedstorage.apiimpl.autocrafting.CraftingPattern; +import com.raoulvdberge.refinedstorage.apiimpl.network.node.NetworkNodeCrafter; import com.raoulvdberge.refinedstorage.apiimpl.network.node.NetworkNodeCrafterManager; import com.raoulvdberge.refinedstorage.container.slot.SlotCrafterManager; import com.raoulvdberge.refinedstorage.gui.IResizableDisplay; @@ -20,6 +21,7 @@ import net.minecraft.item.ItemStack; import net.minecraft.util.NonNullList; import net.minecraftforge.items.IItemHandlerModifiable; +import javax.annotation.Nonnull; import javax.annotation.Nullable; import java.util.Collections; import java.util.HashMap; @@ -141,6 +143,16 @@ public class ContainerCrafterManager extends ContainerBase { public int getSlotLimit(int slot) { return 1; } + + @Nonnull + @Override + public ItemStack insertItem(int slot, @Nonnull ItemStack stack, boolean simulate) { + if (NetworkNodeCrafter.isValidPatternInSlot(getPlayer().getEntityWorld(), stack)) { + return super.insertItem(slot, stack, simulate); + } + + return stack; + } }); }