From b1bf2d983f636d6e631fcd6af08c81436b069a96 Mon Sep 17 00:00:00 2001 From: z5882852 <86944419+z5882852@users.noreply.github.com> Date: Wed, 26 Feb 2025 13:37:47 +0800 Subject: [PATCH 1/4] fix: remove avaritia neutronium compressor handling logic and add GT neutronium compressor to Liquid Level Regulator --- .../boxplusplus/common/BoxModule.java | 5 +---- .../boxplusplus/util/BoxRoutings.java | 21 ------------------- 2 files changed, 1 insertion(+), 25 deletions(-) diff --git a/src/main/java/com/silvermoon/boxplusplus/common/BoxModule.java b/src/main/java/com/silvermoon/boxplusplus/common/BoxModule.java index 14d7cb0..20dba14 100644 --- a/src/main/java/com/silvermoon/boxplusplus/common/BoxModule.java +++ b/src/main/java/com/silvermoon/boxplusplus/common/BoxModule.java @@ -113,9 +113,6 @@ public static int[] transMachinesToModule(BoxRoutings routing) { case "tile.dire_crafting" -> { return new int[] { 1, 1 }; } - case "tile.neutronium_compressor" -> { - return new int[] { 5, 0 }; - } default -> { return switch (routing.RoutingMachine.getUnlocalizedName() .substring(17)) { @@ -126,7 +123,7 @@ public static int[] transMachinesToModule(BoxRoutings routing) { case "multimachine.multifurnace", "industrialthermalcentrifuge.controller.tier.single", "industrialarcfurnace.controller.tier.single", "industrialalloysmelter.controller.tier.single" -> new int[] { 3, 0 }; case "industrialmultimachine.controller.tier.single" -> new int[] { 4, 0 }; - case "industrialrockcrusher.controller.tier.single", "industrialfluidheater.controller.tier.single" -> new int[] { + case "industrialrockcrusher.controller.tier.single", "industrialfluidheater.controller.tier.single", "multimachine.neutroniumcompressor" -> new int[] { 5, 0 }; case "industrialcuttingmachine.controller.tier.01", "industrialmacerator.controller.tier.single", "industrialbender.controller.tier.single", "industrialextruder.controller.tier.single", "industrialwiremill.controller.tier.single", "industrialhammer.controller.tier.single" -> new int[] { 6, 0 }; diff --git a/src/main/java/com/silvermoon/boxplusplus/util/BoxRoutings.java b/src/main/java/com/silvermoon/boxplusplus/util/BoxRoutings.java index 4ff7c40..579aca3 100644 --- a/src/main/java/com/silvermoon/boxplusplus/util/BoxRoutings.java +++ b/src/main/java/com/silvermoon/boxplusplus/util/BoxRoutings.java @@ -268,27 +268,6 @@ public static void checkRouting(GTMachineBox box) { } return; } - // Really? You add neutronium compressor? - if (inputBus.getStackInSlot(i) - .getUnlocalizedName() - .equals("tile.neutronium_compressor")) { - for (ItemStack item : allInputItems) { - ItemStack out = fox.spiteful.avaritia.crafting.CompressorManager.getOutput(item); - if (out != null) { - ItemStack in = item.copy(); - in.stackSize = fox.spiteful.avaritia.crafting.CompressorManager.getCost(item); - ItemStack machine = inputBus.getStackInSlot(i) - .copy(); - machine.stackSize = 1; - box.routingMap - .add(new BoxRoutings(in, out, machine, TierEU.RECIPE_ZPM, TickTime.MINUTE)); - box.routingStatus = 0; - return; - } - } - box.routingStatus = 3; - return; - } // Extreme Craft Table if (inputBus.getStackInSlot(i) .getUnlocalizedName() From d527260006744b15c3d6dec2878840f56f18efea Mon Sep 17 00:00:00 2001 From: luomolhx <2932965369@qq.com> Date: Wed, 26 Feb 2025 23:49:04 +0800 Subject: [PATCH 2/4] =?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=E8=BE=93?= =?UTF-8?q?=E5=87=BA=E7=89=A9=E5=93=81=E4=B8=AD=E5=A4=9A=E4=BD=99=E7=9A=84?= =?UTF-8?q?=E6=B5=81=E4=BD=93?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../boxplusplus/util/BoxRoutings.java | 22 ++++++++++++++----- 1 file changed, 17 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 4ff7c40..6c9b5eb 100644 --- a/src/main/java/com/silvermoon/boxplusplus/util/BoxRoutings.java +++ b/src/main/java/com/silvermoon/boxplusplus/util/BoxRoutings.java @@ -679,16 +679,28 @@ public static void checkRouting(GTMachineBox box) { public static List convertToItemStackList(List positionedStacks) { List itemStacks = new ArrayList<>(); - if (positionedStacks != null) { - for (PositionedStack positionedStack : positionedStacks) { - if (positionedStack != null) { - itemStacks.add(positionedStack.item); // PositionedStack 继承自 ItemStack,直接访问 item 属性 - } + + if (positionedStacks == null || positionedStacks.isEmpty()) return itemStacks; + for (PositionedStack positionedStack : positionedStacks) { + if (positionedStack == null) continue; + if (!isFluid(positionedStack.item)) { + itemStacks.add(positionedStack.item.copy()); } } return itemStacks; } + // 判断流体 + private static boolean isFluid(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") + && nbt.hasKey("mFluidState") + && nbt.hasKey("mHideStackSize"); + } + public static void makeRouting(GTNEIDefaultHandler recipe, int recipeIndex, EntityPlayer player) { List machineListWithPos = RecipeCatalysts.getRecipeCatalysts(recipe); List machineList = machineListWithPos.stream() From ac5f7c8f29b7f5752aea1249d69d434819455384 Mon Sep 17 00:00:00 2001 From: z5882852 <86944419+z5882852@users.noreply.github.com> Date: Thu, 27 Feb 2025 03:36:51 +0800 Subject: [PATCH 3/4] =?UTF-8?q?feat:=20update=20AMD=20Wafer=20Fab=20?= =?UTF-8?q?=E2=80=93=20Replace=20Nine-in-One=20with=20Multi-Block?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../boxplusplus/common/BoxModule.java | 90 +++++++++---------- 1 file changed, 43 insertions(+), 47 deletions(-) diff --git a/src/main/java/com/silvermoon/boxplusplus/common/BoxModule.java b/src/main/java/com/silvermoon/boxplusplus/common/BoxModule.java index 20dba14..1f6054d 100644 --- a/src/main/java/com/silvermoon/boxplusplus/common/BoxModule.java +++ b/src/main/java/com/silvermoon/boxplusplus/common/BoxModule.java @@ -103,61 +103,57 @@ public static BoxModule getModuleByIndex(int index) { } public static int[] transMachinesToModule(BoxRoutings routing) { + String unlocalizedName = routing.RoutingMachine.getUnlocalizedName(); if (routing.special != 0) { if (routing.special > 5402) { return new int[] { 8, 1 }; } return new int[] { 8, 0 }; } - switch (routing.RoutingMachine.getUnlocalizedName()) { - case "tile.dire_crafting" -> { - return new int[] { 1, 1 }; - } + if ("tile.dire_crafting".equals(unlocalizedName)) { + return new int[] { 1, 1 }; + } + return switch (unlocalizedName.substring(17)) { + case "industrialmixer.controller.tier.single", "multimachine.chemicalreactor" -> new int[] { 0, 0 }; + case "gtplusplus.autocrafter.multi", "mxrandomlargemolecularassembler" -> new int[] { 1, 0 }; + case "multimachine.cracker", "megadistillationtower", "multimachine.adv.distillationtower", "megaoilcracker", "multimachine.distillationtower" -> new int[] { + 2, 0 }; + case "multimachine.multifurnace", "industrialthermalcentrifuge.controller.tier.single", "industrialarcfurnace.controller.tier.single", "industrialalloysmelter.controller.tier.single" -> new int[] { + 3, 0 }; + case "industrialmultimachine.controller.tier.single", "multimachine.basiccompressor", "multimachine.lathe", "multimachine.electromagneticseparator", "multimachine.extractor", "multimachine.fluidextractor", "multimachine.engraver", "multimachine.autoclave", "multimachine.solidifier" -> new int[] { + 4, 0 }; + case "industrialrockcrusher.controller.tier.single", "industrialfluidheater.controller.tier.single", "multimachine.neutroniumcompressor" -> new int[] { + 5, 0 }; + case "industrialcuttingmachine.controller.tier.01", "industrialmacerator.controller.tier.single", "industrialbender.controller.tier.single", "industrialextruder.controller.tier.single", "industrialwiremill.controller.tier.single", "industrialhammer.controller.tier.single" -> new int[] { + 6, 0 }; + case "industrialwashplant.controller.tier.single", "industrialsifter.controller.tier.single", "industrialcentrifuge.controller.tier.single", "industrialelectrolyzer.controller.tier.single", "digester", "basicmachine.electromagneticseparator.tier.06" -> new int[] { + 7, 0 }; + case "industrialcokeoven.controller.tier.single", "multimachine.pyro", "multimachine.vacuumfreezer", "multimachine.adv.industrialfreezer" -> new int[] { + 8, 0 }; + case "multimachine.assemblyline" -> new int[] { 9, 0 }; + case "industrialsalloyamelter.controller.tier.single" -> new int[] { 10, 0 }; + case "moleculartransformer.controller.tier.single", "gtpp.multimachine.replicator" -> new int[] { 0, 1 }; + case "preciseassembler" -> new int[] { 1, 1 }; + case "chemicalplant.controller.tier.single" -> new int[] { 2, 1 }; + case "cyclotron.tier.single" -> new int[] { 3, 1 }; + case "multimachine.pcbfactory", "circuitassemblyline" -> new int[] { 4, 1 }; + case "largefusioncomputer5" -> new int[] { 5, 1 }; + case "dissolution_tank", "bw.biovat" -> new int[] { 7, 1 }; + case "electricimplosioncompressor", "componentassemblyline", "projectmoduleassemblert3" -> new int[] { 9, + 1 }; + case "multimachine.plasma forge", "multimachine.transcendentplasmamixer", "multimachine.nanoforge" -> new int[] { + 8, 1 }; + case "quantumforcetransformer.controller.tier.single", "frf", "industrialmassfab.controller.tier.single" -> new int[] { + 10, 1 }; default -> { - return switch (routing.RoutingMachine.getUnlocalizedName() - .substring(17)) { - case "industrialmixer.controller.tier.single", "multimachine.chemicalreactor" -> new int[] { 0, 0 }; - case "gtplusplus.autocrafter.multi", "mxrandomlargemolecularassembler" -> new int[] { 1, 0 }; - case "multimachine.cracker", "megadistillationtower", "multimachine.adv.distillationtower", "megaoilcracker", "multimachine.distillationtower" -> new int[] { - 2, 0 }; - case "multimachine.multifurnace", "industrialthermalcentrifuge.controller.tier.single", "industrialarcfurnace.controller.tier.single", "industrialalloysmelter.controller.tier.single" -> new int[] { - 3, 0 }; - case "industrialmultimachine.controller.tier.single" -> new int[] { 4, 0 }; - case "industrialrockcrusher.controller.tier.single", "industrialfluidheater.controller.tier.single", "multimachine.neutroniumcompressor" -> new int[] { - 5, 0 }; - case "industrialcuttingmachine.controller.tier.01", "industrialmacerator.controller.tier.single", "industrialbender.controller.tier.single", "industrialextruder.controller.tier.single", "industrialwiremill.controller.tier.single", "industrialhammer.controller.tier.single" -> new int[] { - 6, 0 }; - case "industrialwashplant.controller.tier.single", "industrialsifter.controller.tier.single", "industrialcentrifuge.controller.tier.single", "industrialelectrolyzer.controller.tier.single", "digester", "basicmachine.electromagneticseparator.tier.06" -> new int[] { - 7, 0 }; - case "industrialcokeoven.controller.tier.single", "multimachine.pyro", "multimachine.vacuumfreezer", "multimachine.adv.industrialfreezer" -> new int[] { - 8, 0 }; - case "multimachine.assemblyline" -> new int[] { 9, 0 }; - case "industrialsalloyamelter.controller.tier.single" -> new int[] { 10, 0 }; - case "moleculartransformer.controller.tier.single", "gtpp.multimachine.replicator" -> new int[] { 0, - 1 }; - case "preciseassembler" -> new int[] { 1, 1 }; - case "chemicalplant.controller.tier.single" -> new int[] { 2, 1 }; - case "cyclotron.tier.single" -> new int[] { 3, 1 }; - case "multimachine.pcbfactory", "circuitassemblyline" -> new int[] { 4, 1 }; - case "largefusioncomputer5" -> new int[] { 5, 1 }; - case "dissolution_tank", "bw.biovat" -> new int[] { 7, 1 }; - case "electricimplosioncompressor", "componentassemblyline", "projectmoduleassemblert3" -> new int[] { - 9, 1 }; - case "multimachine.plasmaforge", "multimachine.transcendentplasmamixer", "multimachine.nanoforge" -> new int[] { - 8, 1 }; - case "quantumforcetransformer.controller.tier.single", "frf", "industrialmassfab.controller.tier.single" -> new int[] { - 10, 1 }; - default -> { - for (MTEMultiBlockBase machine : customerMachineList) { - if (GTUtility.areStacksEqual(machine.getStackForm(1), routing.RoutingMachine, true)) { - yield new int[] { ((IBoxable) machine).getModuleIDSafely(), - ((IBoxable) machine).isUpdateModule() ? 1 : 0 }; - } - } - yield new int[] { 14, 0 }; + for (MTEMultiBlockBase machine : customerMachineList) { + if (GTUtility.areStacksEqual(machine.getStackForm(1), routing.RoutingMachine, true)) { + yield new int[] { ((IBoxable) machine).getModuleIDSafely(), + ((IBoxable) machine).isUpdateModule() ? 1 : 0 }; } - }; + } + yield new int[] { 14, 0 }; } - } + }; } } 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 4/4] =?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) {