From b6da9a2adb8d738064a127bc0e27d14c83e4a6cb Mon Sep 17 00:00:00 2001 From: luomolhx <2932965369@qq.com> Date: Thu, 27 Feb 2025 18:32:17 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E5=A4=8D=E4=BB=8ENEI=E5=AF=BC?= =?UTF-8?q?=E5=85=A5=E9=85=8D=E6=96=B9=E6=97=B6=E8=BE=93=E5=85=A5=E7=89=A9?= =?UTF-8?q?=E5=93=81=E4=B8=AD=E7=9A=84specialItem=20=E6=8C=87=E6=95=B0?= =?UTF-8?q?=E6=8D=AE=E9=97=AA=E5=AD=98=20=E9=97=AA=E5=AD=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../boxplusplus/util/BoxRoutings.java | 35 ++++++++++++++++--- 1 file changed, 30 insertions(+), 5 deletions(-) diff --git a/src/main/java/com/silvermoon/boxplusplus/util/BoxRoutings.java b/src/main/java/com/silvermoon/boxplusplus/util/BoxRoutings.java index 6c9b5eb..28b6eb8 100644 --- a/src/main/java/com/silvermoon/boxplusplus/util/BoxRoutings.java +++ b/src/main/java/com/silvermoon/boxplusplus/util/BoxRoutings.java @@ -17,6 +17,7 @@ import net.minecraft.item.crafting.CraftingManager; import net.minecraft.item.crafting.FurnaceRecipes; import net.minecraft.nbt.NBTTagCompound; +import net.minecraftforge.common.util.Constants; import net.minecraftforge.fluids.FluidRegistry; import net.minecraftforge.fluids.FluidStack; @@ -683,22 +684,46 @@ public static List convertToItemStackList(List posit if (positionedStacks == null || positionedStacks.isEmpty()) return itemStacks; for (PositionedStack positionedStack : positionedStacks) { if (positionedStack == null) continue; - if (!isFluid(positionedStack.item)) { + if (!isNormalItem(positionedStack.item)) { itemStacks.add(positionedStack.item.copy()); } } return itemStacks; } - // 判断流体 - private static boolean isFluid(ItemStack stack) { + public static boolean isValidResearchItem(ItemStack stack) { + if (stack == null || !stack.hasTagCompound()) return false; + + NBTTagCompound root = stack.getTagCompound(); + + if (!root.hasKey("display", Constants.NBT.TAG_COMPOUND)) { + return false; + } + + NBTTagCompound displayTag = root.getCompoundTag("display"); + + if (!displayTag.hasKey("Name", Constants.NBT.TAG_STRING)) { + return false; + } + + String nameValue = displayTag.getString("Name"); + return "Reads Research result".equals(nameValue); + } + + // 判断流体 和 特殊物品 + private static boolean isNormalItem(ItemStack stack) { if (stack == null || stack.getItem() == null) return false; - if (stack.getItem() != ItemList.Display_Fluid.getItem()) return false; NBTTagCompound nbt = stack.getTagCompound(); if (nbt == null) return false; - return nbt.hasKey("mFluidDisplayAmount") && nbt.hasKey("mFluidDisplayHeat") + + boolean isFluidItem = (stack.getItem() == ItemList.Display_Fluid.getItem()) && nbt.hasKey("mFluidDisplayAmount") + && nbt.hasKey("mFluidDisplayHeat") && nbt.hasKey("mFluidState") && nbt.hasKey("mHideStackSize"); + + boolean isDataItem = (nbt.hasKey("mDataTitle") && nbt.hasKey("mData")); + + return isFluidItem || isDataItem || isValidResearchItem(stack); } public static void makeRouting(GTNEIDefaultHandler recipe, int recipeIndex, EntityPlayer player) {