add fluid container item, close #3533

This commit is contained in:
Adrian Siekierka 2023-06-03 20:13:11 +02:00
parent 365e096592
commit 93740773cc
3 changed files with 32 additions and 1 deletions

View File

@ -1,5 +1,6 @@
## Fixes/improvements
* [#3533] Added support for observing the contents of fluid container items.
* [#3620] Fixed OC 1.8.0+ regression involving API arguments and numbers.
* [#3013] Fixed rare server-side deadlock when sending disk activity update packets.
@ -10,4 +11,4 @@
## List of contributors
asie, ds84182, Possseidon
asie, ds84182, Possseidon, repo-alt

View File

@ -0,0 +1,29 @@
package li.cil.oc.integration.vanilla
import li.cil.oc.server.driver.Registry
import li.cil.oc.{Settings, api}
import net.minecraft.item.ItemStack
import net.minecraftforge.fluids.IFluidContainerItem
import java.util
import scala.collection.convert.WrapAsScala._
object ConverterFluidContainerItem extends api.driver.Converter {
override def convert(value: scala.Any, output: util.Map[AnyRef, AnyRef]) =
value match {
case stack: ItemStack => stack.getItem match {
case fc: IFluidContainerItem =>
output += "capacity" -> Int.box(fc.getCapacity(stack))
val fluidStack = fc.getFluid(stack)
if (fluidStack != null) {
output += "fluid" -> Registry.convert(Array[AnyRef](fluidStack))(0)
} else {
val fluidMap = new util.HashMap[AnyRef, AnyRef]()
fluidMap += "amount" -> Int.box(0)
output += "fluid" -> fluidMap
}
case _ =>
}
case _ =>
}
}

View File

@ -43,6 +43,7 @@ object ModVanilla extends ModProxy with RedstoneProvider {
Driver.add(DriverCommandBlock)
}
Driver.add(ConverterFluidContainerItem)
Driver.add(ConverterFluidStack)
Driver.add(ConverterFluidTankInfo)
Driver.add(ConverterItemStack)