From 9e027d76a877e31a948855ace498ea26cdd3a157 Mon Sep 17 00:00:00 2001 From: Sampsa Date: Wed, 9 Aug 2023 18:29:56 +0300 Subject: [PATCH 1/6] Fix modifying fluid patterns with OC --- .../integration/appeng/ConverterPattern.java | 57 +++++++++++++------ .../appeng/DriverBlockInterface.scala | 1 + 2 files changed, 41 insertions(+), 17 deletions(-) diff --git a/src/main/scala/li/cil/oc/integration/appeng/ConverterPattern.java b/src/main/scala/li/cil/oc/integration/appeng/ConverterPattern.java index ac9089bde4..8b451ad0eb 100644 --- a/src/main/scala/li/cil/oc/integration/appeng/ConverterPattern.java +++ b/src/main/scala/li/cil/oc/integration/appeng/ConverterPattern.java @@ -1,10 +1,14 @@ package li.cil.oc.integration.appeng; +import appeng.api.AEApi; import appeng.helpers.PatternHelper; +import appeng.util.Platform; import java.util.HashMap; import java.util.Map; import li.cil.oc.api.driver.Converter; import net.minecraft.item.ItemStack; +import net.minecraft.nbt.NBTTagCompound; +import net.minecraft.nbt.NBTTagList; public final class ConverterPattern implements Converter { @Override @@ -12,27 +16,46 @@ public void convert(final Object value, final Map output) { if (value instanceof ItemStack) { ItemStack is = (ItemStack) value; try { - PatternHelper p = new PatternHelper(is, null); - Map[] inputs = new Map[p.getInputs().length]; - for (int i = 0; i < p.getInputs().length; ++i) { + final NBTTagCompound encodedValue = is.getTagCompound(); + final NBTTagList inTag = encodedValue.getTagList("in", 10); + final NBTTagList outTag = encodedValue.getTagList("out", 10); + + Map[] inputs = new Map[inTag.tagCount()]; + for (int i = 0; i < inTag.tagCount(); i++) { inputs[i] = new HashMap<>(); - if (p.getInputs()[i] == null) continue; - ItemStack input = p.getInputs()[i].getItemStack(); - inputs[i].put("name", input.getItem().getItemStackDisplayName(input)); - inputs[i].put("count", input.stackSize); + final NBTTagCompound tag = inTag.getCompoundTagAt(i); + final ItemStack inputItem = Platform.loadItemStackFromNBT(tag); + if (inputItem != null) { + inputs[i].put("name", inputItem.getItem().getItemStackDisplayName(inputItem)); + if (tag.getLong("Cnt") > 0) { + inputs[i].put("count", tag.getLong("Cnt")); + } else { + inputs[i].put("count", inputItem.stackSize); + } + } } - output.put("inputs", inputs); - Map[] results = new Map[p.getOutputs().length]; - for (int i = 0; i < p.getOutputs().length; ++i) { - results[i] = new HashMap<>(); - if (p.getOutputs()[i] == null) continue; - ItemStack result = p.getOutputs()[i].getItemStack(); - results[i].put("name", result.getItem().getItemStackDisplayName(result)); - results[i].put("count", result.stackSize); + + Map[] results = new Map[outTag.tagCount()]; + for (int i = 0; i < outTag.tagCount(); i++) { + final NBTTagCompound tag = outTag.getCompoundTagAt(i); + final ItemStack outputItem = Platform.loadItemStackFromNBT(tag); + if (outputItem != null) { + results[i].put("name", outputItem.getItem().getItemStackDisplayName(outputItem)); + if (tag.getLong("Cnt") > 0) { + results[i].put("count", tag.getLong("Cnt")); + } else { + results[i].put("count", outputItem.stackSize); + } + } } - output.put("outputs", results); - output.put("isCraftable", p.isCraftable()); + output.put("inputs", inputs); + output.put("outputs", results); + + PatternHelper p = new PatternHelper(is, null); + output.put("isCraftable", p.isCraftable()); + } catch (final Throwable ignored) { + System.out.println(ignored); } } } diff --git a/src/main/scala/li/cil/oc/integration/appeng/DriverBlockInterface.scala b/src/main/scala/li/cil/oc/integration/appeng/DriverBlockInterface.scala index 05b466e898..823cdb128b 100644 --- a/src/main/scala/li/cil/oc/integration/appeng/DriverBlockInterface.scala +++ b/src/main/scala/li/cil/oc/integration/appeng/DriverBlockInterface.scala @@ -162,6 +162,7 @@ object DriverBlockInterface extends DriverSidedTileEntity { val nbt = new NBTTagCompound() stack.writeToNBT(nbt) nbt.setInteger("Count", stack.stackSize) + nbt.setLong("Cnt", stack.stackSize) inTag.func_150304_a(index, nbt) } else From d179ceb0a5516a3d0087aa1e485f059560fdd943 Mon Sep 17 00:00:00 2001 From: Sampsa Date: Wed, 9 Aug 2023 18:29:56 +0300 Subject: [PATCH 2/6] Fix modifying fluid patterns with OC --- .../integration/appeng/ConverterPattern.java | 57 +++++++++++++------ .../appeng/DriverBlockInterface.scala | 1 + 2 files changed, 41 insertions(+), 17 deletions(-) diff --git a/src/main/scala/li/cil/oc/integration/appeng/ConverterPattern.java b/src/main/scala/li/cil/oc/integration/appeng/ConverterPattern.java index ac9089bde4..8b451ad0eb 100644 --- a/src/main/scala/li/cil/oc/integration/appeng/ConverterPattern.java +++ b/src/main/scala/li/cil/oc/integration/appeng/ConverterPattern.java @@ -1,10 +1,14 @@ package li.cil.oc.integration.appeng; +import appeng.api.AEApi; import appeng.helpers.PatternHelper; +import appeng.util.Platform; import java.util.HashMap; import java.util.Map; import li.cil.oc.api.driver.Converter; import net.minecraft.item.ItemStack; +import net.minecraft.nbt.NBTTagCompound; +import net.minecraft.nbt.NBTTagList; public final class ConverterPattern implements Converter { @Override @@ -12,27 +16,46 @@ public void convert(final Object value, final Map output) { if (value instanceof ItemStack) { ItemStack is = (ItemStack) value; try { - PatternHelper p = new PatternHelper(is, null); - Map[] inputs = new Map[p.getInputs().length]; - for (int i = 0; i < p.getInputs().length; ++i) { + final NBTTagCompound encodedValue = is.getTagCompound(); + final NBTTagList inTag = encodedValue.getTagList("in", 10); + final NBTTagList outTag = encodedValue.getTagList("out", 10); + + Map[] inputs = new Map[inTag.tagCount()]; + for (int i = 0; i < inTag.tagCount(); i++) { inputs[i] = new HashMap<>(); - if (p.getInputs()[i] == null) continue; - ItemStack input = p.getInputs()[i].getItemStack(); - inputs[i].put("name", input.getItem().getItemStackDisplayName(input)); - inputs[i].put("count", input.stackSize); + final NBTTagCompound tag = inTag.getCompoundTagAt(i); + final ItemStack inputItem = Platform.loadItemStackFromNBT(tag); + if (inputItem != null) { + inputs[i].put("name", inputItem.getItem().getItemStackDisplayName(inputItem)); + if (tag.getLong("Cnt") > 0) { + inputs[i].put("count", tag.getLong("Cnt")); + } else { + inputs[i].put("count", inputItem.stackSize); + } + } } - output.put("inputs", inputs); - Map[] results = new Map[p.getOutputs().length]; - for (int i = 0; i < p.getOutputs().length; ++i) { - results[i] = new HashMap<>(); - if (p.getOutputs()[i] == null) continue; - ItemStack result = p.getOutputs()[i].getItemStack(); - results[i].put("name", result.getItem().getItemStackDisplayName(result)); - results[i].put("count", result.stackSize); + + Map[] results = new Map[outTag.tagCount()]; + for (int i = 0; i < outTag.tagCount(); i++) { + final NBTTagCompound tag = outTag.getCompoundTagAt(i); + final ItemStack outputItem = Platform.loadItemStackFromNBT(tag); + if (outputItem != null) { + results[i].put("name", outputItem.getItem().getItemStackDisplayName(outputItem)); + if (tag.getLong("Cnt") > 0) { + results[i].put("count", tag.getLong("Cnt")); + } else { + results[i].put("count", outputItem.stackSize); + } + } } - output.put("outputs", results); - output.put("isCraftable", p.isCraftable()); + output.put("inputs", inputs); + output.put("outputs", results); + + PatternHelper p = new PatternHelper(is, null); + output.put("isCraftable", p.isCraftable()); + } catch (final Throwable ignored) { + System.out.println(ignored); } } } diff --git a/src/main/scala/li/cil/oc/integration/appeng/DriverBlockInterface.scala b/src/main/scala/li/cil/oc/integration/appeng/DriverBlockInterface.scala index 05b466e898..823cdb128b 100644 --- a/src/main/scala/li/cil/oc/integration/appeng/DriverBlockInterface.scala +++ b/src/main/scala/li/cil/oc/integration/appeng/DriverBlockInterface.scala @@ -162,6 +162,7 @@ object DriverBlockInterface extends DriverSidedTileEntity { val nbt = new NBTTagCompound() stack.writeToNBT(nbt) nbt.setInteger("Count", stack.stackSize) + nbt.setLong("Cnt", stack.stackSize) inTag.func_150304_a(index, nbt) } else From a9af55cc32981cf6a4842fb0668bc4fb5e59576d Mon Sep 17 00:00:00 2001 From: Sampsa Date: Wed, 9 Aug 2023 18:58:03 +0300 Subject: [PATCH 3/6] Fix an oops --- .../scala/li/cil/oc/integration/appeng/ConverterPattern.java | 1 + 1 file changed, 1 insertion(+) diff --git a/src/main/scala/li/cil/oc/integration/appeng/ConverterPattern.java b/src/main/scala/li/cil/oc/integration/appeng/ConverterPattern.java index 8b451ad0eb..5867fbd3ce 100644 --- a/src/main/scala/li/cil/oc/integration/appeng/ConverterPattern.java +++ b/src/main/scala/li/cil/oc/integration/appeng/ConverterPattern.java @@ -37,6 +37,7 @@ public void convert(final Object value, final Map output) { Map[] results = new Map[outTag.tagCount()]; for (int i = 0; i < outTag.tagCount(); i++) { + results[i] = new HashMap<>(); final NBTTagCompound tag = outTag.getCompoundTagAt(i); final ItemStack outputItem = Platform.loadItemStackFromNBT(tag); if (outputItem != null) { From b80da3ba199c655331904266d968488e25738999 Mon Sep 17 00:00:00 2001 From: Sampsa Date: Wed, 9 Aug 2023 19:03:06 +0300 Subject: [PATCH 4/6] I wish I knew how to merge --- .../scala/li/cil/oc/integration/appeng/ConverterPattern.java | 3 --- 1 file changed, 3 deletions(-) diff --git a/src/main/scala/li/cil/oc/integration/appeng/ConverterPattern.java b/src/main/scala/li/cil/oc/integration/appeng/ConverterPattern.java index c61e03cad7..5867fbd3ce 100644 --- a/src/main/scala/li/cil/oc/integration/appeng/ConverterPattern.java +++ b/src/main/scala/li/cil/oc/integration/appeng/ConverterPattern.java @@ -37,10 +37,7 @@ public void convert(final Object value, final Map output) { Map[] results = new Map[outTag.tagCount()]; for (int i = 0; i < outTag.tagCount(); i++) { -<<<<<<< HEAD results[i] = new HashMap<>(); -======= ->>>>>>> 9e027d76a877e31a948855ace498ea26cdd3a157 final NBTTagCompound tag = outTag.getCompoundTagAt(i); final ItemStack outputItem = Platform.loadItemStackFromNBT(tag); if (outputItem != null) { From e044edf48376c054dcb1c94b89313c508aaafbe0 Mon Sep 17 00:00:00 2001 From: Sampsa Date: Thu, 10 Aug 2023 04:20:11 +0300 Subject: [PATCH 5/6] Remove the debug print. Probably a good idea. --- .../scala/li/cil/oc/integration/appeng/ConverterPattern.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/scala/li/cil/oc/integration/appeng/ConverterPattern.java b/src/main/scala/li/cil/oc/integration/appeng/ConverterPattern.java index 5867fbd3ce..e8234be9a3 100644 --- a/src/main/scala/li/cil/oc/integration/appeng/ConverterPattern.java +++ b/src/main/scala/li/cil/oc/integration/appeng/ConverterPattern.java @@ -56,7 +56,7 @@ public void convert(final Object value, final Map output) { output.put("isCraftable", p.isCraftable()); } catch (final Throwable ignored) { - System.out.println(ignored); + } } } From a3eccfb23c8566d4942372e480d69deed63ad53b Mon Sep 17 00:00:00 2001 From: Sampsa Date: Thu, 10 Aug 2023 11:33:45 +0300 Subject: [PATCH 6/6] Remove PatternHelper --- .../integration/appeng/ConverterPattern.java | 61 +++++++++---------- 1 file changed, 30 insertions(+), 31 deletions(-) diff --git a/src/main/scala/li/cil/oc/integration/appeng/ConverterPattern.java b/src/main/scala/li/cil/oc/integration/appeng/ConverterPattern.java index e8234be9a3..3bf65d95bb 100644 --- a/src/main/scala/li/cil/oc/integration/appeng/ConverterPattern.java +++ b/src/main/scala/li/cil/oc/integration/appeng/ConverterPattern.java @@ -17,44 +17,43 @@ public void convert(final Object value, final Map output) { ItemStack is = (ItemStack) value; try { final NBTTagCompound encodedValue = is.getTagCompound(); - final NBTTagList inTag = encodedValue.getTagList("in", 10); - final NBTTagList outTag = encodedValue.getTagList("out", 10); + if (encodedValue != null) { + final NBTTagList inTag = encodedValue.getTagList("in", 10); + final NBTTagList outTag = encodedValue.getTagList("out", 10); - Map[] inputs = new Map[inTag.tagCount()]; - for (int i = 0; i < inTag.tagCount(); i++) { - inputs[i] = new HashMap<>(); - final NBTTagCompound tag = inTag.getCompoundTagAt(i); - final ItemStack inputItem = Platform.loadItemStackFromNBT(tag); - if (inputItem != null) { - inputs[i].put("name", inputItem.getItem().getItemStackDisplayName(inputItem)); - if (tag.getLong("Cnt") > 0) { - inputs[i].put("count", tag.getLong("Cnt")); - } else { - inputs[i].put("count", inputItem.stackSize); + Map[] inputs = new Map[inTag.tagCount()]; + for (int i = 0; i < inTag.tagCount(); i++) { + inputs[i] = new HashMap<>(); + final NBTTagCompound tag = inTag.getCompoundTagAt(i); + final ItemStack inputItem = Platform.loadItemStackFromNBT(tag); + if (inputItem != null) { + inputs[i].put("name", inputItem.getItem().getItemStackDisplayName(inputItem)); + if (tag.getLong("Cnt") > 0) { + inputs[i].put("count", tag.getLong("Cnt")); + } else { + inputs[i].put("count", inputItem.stackSize); + } } } - } - Map[] results = new Map[outTag.tagCount()]; - for (int i = 0; i < outTag.tagCount(); i++) { - results[i] = new HashMap<>(); - final NBTTagCompound tag = outTag.getCompoundTagAt(i); - final ItemStack outputItem = Platform.loadItemStackFromNBT(tag); - if (outputItem != null) { - results[i].put("name", outputItem.getItem().getItemStackDisplayName(outputItem)); - if (tag.getLong("Cnt") > 0) { - results[i].put("count", tag.getLong("Cnt")); - } else { - results[i].put("count", outputItem.stackSize); + Map[] results = new Map[outTag.tagCount()]; + for (int i = 0; i < outTag.tagCount(); i++) { + results[i] = new HashMap<>(); + final NBTTagCompound tag = outTag.getCompoundTagAt(i); + final ItemStack outputItem = Platform.loadItemStackFromNBT(tag); + if (outputItem != null) { + results[i].put("name", outputItem.getItem().getItemStackDisplayName(outputItem)); + if (tag.getLong("Cnt") > 0) { + results[i].put("count", tag.getLong("Cnt")); + } else { + results[i].put("count", outputItem.stackSize); + } } } + output.put("inputs", inputs); + output.put("outputs", results); + output.put("isCraftable", encodedValue.getBoolean("crafting")); } - output.put("inputs", inputs); - output.put("outputs", results); - - PatternHelper p = new PatternHelper(is, null); - output.put("isCraftable", p.isCraftable()); - } catch (final Throwable ignored) { }