From a5a9976a8ccd805303fe892b3a47ec4ca272839b Mon Sep 17 00:00:00 2001 From: repo_alt Date: Sun, 7 Jun 2020 00:38:20 +0300 Subject: [PATCH] GT Assembly line recipe reading --- .../gregtech/ConverterDataStick.scala | 26 +++++++++++++++++-- 1 file changed, 24 insertions(+), 2 deletions(-) diff --git a/src/main/scala/li/cil/oc/integration/gregtech/ConverterDataStick.scala b/src/main/scala/li/cil/oc/integration/gregtech/ConverterDataStick.scala index a022ecc7b..d1ce3c8ec 100644 --- a/src/main/scala/li/cil/oc/integration/gregtech/ConverterDataStick.scala +++ b/src/main/scala/li/cil/oc/integration/gregtech/ConverterDataStick.scala @@ -4,11 +4,13 @@ import java.util import li.cil.oc.api.driver.Converter import net.minecraft.item.ItemStack -import net.minecraft.nbt.{NBTTagCompound, NBTTagList, NBTTagString} +import net.minecraft.nbt.{NBTTagCompound, NBTTagString} import li.cil.oc.util.ExtendedNBT._ import net.minecraftforge.common.util.Constants.NBT +import net.minecraftforge.fluids.FluidStack import scala.collection.convert.WrapAsScala._ +import scala.collection.mutable.ArrayBuffer class ConverterDataStick extends Converter { override def convert(value: Any, output: util.Map[AnyRef, AnyRef]): Unit = if (value.isInstanceOf[ItemStack]) { @@ -25,6 +27,26 @@ class ConverterDataStick extends Converter { } case _ => } + else if (nbt.hasKey("author") && nbt.getString("author") == "Assembling Line Recipe Generator" && nbt.hasKey("output")) { + val outputItem = ItemStack.loadItemStackFromNBT(nbt.getCompoundTag("output")) + output += "output" -> outputItem.getDisplayName + output += "time" -> nbt.getInteger("time").toString + output += "eu" -> nbt.getInteger("eu").toString + val inputs = new ArrayBuffer[ItemStack]() + var index = 0 + while (nbt.hasKey(index.toString)) { + inputs += ItemStack.loadItemStackFromNBT(nbt.getCompoundTag(index.toString)) + index += 1 + } + output += "inputItems" -> inputs.map((s:ItemStack) => s.getDisplayName -> s.stackSize) + index = 0 + val inputFluids = new ArrayBuffer[FluidStack]() + while (nbt.hasKey("f" + index)) { + inputFluids += FluidStack.loadFluidStackFromNBT(nbt.getCompoundTag("f" + index)) + index += 1 + } + output += "inputFluids" -> inputFluids.map((s:FluidStack) => s.getLocalizedName -> s.amount) + } } def getRawProspectionData(output: util.Map[AnyRef, AnyRef], nbt: NBTTagCompound) = output += "Raw Prospection Data" -> Map( @@ -33,6 +55,6 @@ class ConverterDataStick extends Converter { "prospection_ores" -> nbt.getString("prospection_ores").split('|'), "prospection_oils" -> nbt.getString("prospection_oils").split('|'), "prospection_oils_pos" -> nbt.getString("prospection_oils_pos"), - "prospection_radius" -> Integer.parseInt(nbt.getString("prospection_radius")) + "prospection_radius" -> nbt.getString("prospection_radius") ) }