diff --git a/src/main/scala/li/cil/oc/integration/vanilla/ConverterWorld.scala b/src/main/scala/li/cil/oc/integration/vanilla/ConverterWorld.scala new file mode 100644 index 000000000..5b231d167 --- /dev/null +++ b/src/main/scala/li/cil/oc/integration/vanilla/ConverterWorld.scala @@ -0,0 +1,17 @@ +package li.cil.oc.integration.vanilla + +import java.util + +import li.cil.oc.api +import net.minecraft.world + +import scala.collection.convert.WrapAsScala._ + +object ConverterWorld extends api.driver.Converter { + override def convert(value: AnyRef, output: util.Map[AnyRef, AnyRef]) = + value match { + case world: world.World => + output += "oc:flatten" -> world.provider + case _ => + } +} diff --git a/src/main/scala/li/cil/oc/integration/vanilla/ConverterWorldProvider.scala b/src/main/scala/li/cil/oc/integration/vanilla/ConverterWorldProvider.scala new file mode 100644 index 000000000..90e354a12 --- /dev/null +++ b/src/main/scala/li/cil/oc/integration/vanilla/ConverterWorldProvider.scala @@ -0,0 +1,26 @@ +package li.cil.oc.integration.vanilla + +import java.nio.ByteBuffer +import java.security.MessageDigest +import java.util +import java.util.UUID + +import li.cil.oc.api +import net.minecraft.world + +import scala.collection.convert.WrapAsScala._ + +object ConverterWorldProvider extends api.driver.Converter { + override def convert(value: AnyRef, output: util.Map[AnyRef, AnyRef]) = + value match { + case provider: world.WorldProvider => + val digest = MessageDigest.getInstance("MD5") + + digest.update(ByteBuffer.allocate(8).putLong(provider.getSeed).array) + digest.update(ByteBuffer.allocate(4).putInt(provider.dimensionId).array) + + output += "id" -> UUID.nameUUIDFromBytes(digest.digest()).toString + output += "name" -> provider.getDimensionName + case _ => + } +} 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 f525cc064..d428dc3a1 100644 --- a/src/main/scala/li/cil/oc/integration/vanilla/ModVanilla.scala +++ b/src/main/scala/li/cil/oc/integration/vanilla/ModVanilla.scala @@ -32,5 +32,7 @@ object ModVanilla extends ModProxy { Driver.add(ConverterFluidTankInfo) Driver.add(ConverterItemStack) Driver.add(ConverterNBT) + Driver.add(ConverterWorld) + Driver.add(ConverterWorldProvider) } }