From 1a8d2732e12a7c4573bc865aece66c1cdf2f42ca Mon Sep 17 00:00:00 2001 From: repo_alt Date: Wed, 10 Nov 2021 12:23:23 +0300 Subject: [PATCH] Add fluid container item converter (Volumetric flask, certus tank, universal cell, etc.) https://github.com/GTNewHorizons/GT-New-Horizons-Modpack/issues/8807 --- build.properties | 2 +- .../vanilla/ConverterFluidContainerItem.scala | 37 +++++++++++++++++++ .../vanilla/ConverterFluidTankInfo.scala | 2 +- .../oc/integration/vanilla/ModVanilla.scala | 1 + 4 files changed, 40 insertions(+), 2 deletions(-) create mode 100644 src/main/scala/li/cil/oc/integration/vanilla/ConverterFluidContainerItem.scala diff --git a/build.properties b/build.properties index 6f5c2b16d..c4ebf97e0 100644 --- a/build.properties +++ b/build.properties @@ -1,7 +1,7 @@ minecraft.version=1.7.10 forge.version=10.13.4.1614-1.7.10 -oc.version=1.7.5.14-GTNH +oc.version=1.7.5.15-GTNH ae2.version=rv3-beta-31 bc.version=7.0.9 diff --git a/src/main/scala/li/cil/oc/integration/vanilla/ConverterFluidContainerItem.scala b/src/main/scala/li/cil/oc/integration/vanilla/ConverterFluidContainerItem.scala new file mode 100644 index 000000000..8a66fb4b1 --- /dev/null +++ b/src/main/scala/li/cil/oc/integration/vanilla/ConverterFluidContainerItem.scala @@ -0,0 +1,37 @@ +package li.cil.oc.integration.vanilla + +import java.util + +import li.cil.oc.{Settings, api} +import net.minecraft.item +import net.minecraft.item.ItemStack +import net.minecraftforge.fluids +import net.minecraftforge.fluids.FluidStack + +import scala.collection.convert.WrapAsScala._ + +object ConverterFluidContainerItem extends api.driver.Converter { + override def convert(value: AnyRef, output: util.Map[AnyRef, AnyRef]): Unit = + value match { + case stack: item.ItemStack => stack.getItem match { + case fc: fluids.IFluidContainerItem => + output += "capacity" -> Int.box(fc.getCapacity(stack)) + val fluidStack = fc.getFluid(stack) + if (fluidStack != null && fluidStack.getFluid != null) { + val fluid = fluidStack.getFluid + if (Settings.get.insertIdsInConverters) + output += "fluid_id" -> Int.box(fluid.getID) + output += "amount" -> Int.box(fluidStack.amount) + output += "fluid_hasTag" -> Boolean.box(fluidStack.tag != null) + if (fluid != null) { + output += "fluid_name" -> fluid.getName + output += "fluid_label" -> fluid.getLocalizedName(fluidStack) + } + } + else + output += "amount" -> Int.box(0) + case _ => + } + case _ => + } +} diff --git a/src/main/scala/li/cil/oc/integration/vanilla/ConverterFluidTankInfo.scala b/src/main/scala/li/cil/oc/integration/vanilla/ConverterFluidTankInfo.scala index c0c0fb288..4de66ba64 100644 --- a/src/main/scala/li/cil/oc/integration/vanilla/ConverterFluidTankInfo.scala +++ b/src/main/scala/li/cil/oc/integration/vanilla/ConverterFluidTankInfo.scala @@ -8,7 +8,7 @@ import net.minecraftforge.fluids import scala.collection.convert.WrapAsScala._ object ConverterFluidTankInfo extends api.driver.Converter { - override def convert(value: AnyRef, output: util.Map[AnyRef, AnyRef]) = + override def convert(value: AnyRef, output: util.Map[AnyRef, AnyRef]): Unit = value match { case tankInfo: fluids.FluidTankInfo => output += "capacity" -> Int.box(tankInfo.capacity) diff --git a/src/main/scala/li/cil/oc/integration/vanilla/ModVanilla.scala b/src/main/scala/li/cil/oc/integration/vanilla/ModVanilla.scala index 6d93356f8..f6546208e 100644 --- a/src/main/scala/li/cil/oc/integration/vanilla/ModVanilla.scala +++ b/src/main/scala/li/cil/oc/integration/vanilla/ModVanilla.scala @@ -45,6 +45,7 @@ object ModVanilla extends ModProxy with RedstoneProvider { Driver.add(ConverterFluidStack) Driver.add(ConverterFluidTankInfo) + Driver.add(ConverterFluidContainerItem) Driver.add(ConverterItemStack) Driver.add(ConverterNBT) Driver.add(ConverterWorld)