From 3b7fe503b42fb08e44925040a0ae5123e374d300 Mon Sep 17 00:00:00 2001 From: Ben Blank Date: Sun, 8 Feb 2015 11:44:56 -0800 Subject: [PATCH 1/2] add converters for World and WorldProvider objects --- .../integration/vanilla/ConverterWorld.scala | 17 +++++++++++++++++ .../vanilla/ConverterWorldProvider.scala | 18 ++++++++++++++++++ .../oc/integration/vanilla/ModVanilla.scala | 2 ++ 3 files changed, 37 insertions(+) create mode 100644 src/main/scala/li/cil/oc/integration/vanilla/ConverterWorld.scala create mode 100644 src/main/scala/li/cil/oc/integration/vanilla/ConverterWorldProvider.scala 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..c5299b8ec --- /dev/null +++ b/src/main/scala/li/cil/oc/integration/vanilla/ConverterWorldProvider.scala @@ -0,0 +1,18 @@ +package li.cil.oc.integration.vanilla + +import java.util + +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 => + output += "id" -> Int.box(provider.dimensionId) + 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) } } From 162940191681aa516c11c62bcc824e714ff23467 Mon Sep 17 00:00:00 2001 From: Ben Blank Date: Tue, 10 Feb 2015 17:12:03 -0800 Subject: [PATCH 2/2] hash dimension ID with world seed to obscure it --- .../integration/vanilla/ConverterWorldProvider.scala | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/src/main/scala/li/cil/oc/integration/vanilla/ConverterWorldProvider.scala b/src/main/scala/li/cil/oc/integration/vanilla/ConverterWorldProvider.scala index c5299b8ec..90e354a12 100644 --- a/src/main/scala/li/cil/oc/integration/vanilla/ConverterWorldProvider.scala +++ b/src/main/scala/li/cil/oc/integration/vanilla/ConverterWorldProvider.scala @@ -1,6 +1,9 @@ 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 @@ -11,7 +14,12 @@ object ConverterWorldProvider extends api.driver.Converter { override def convert(value: AnyRef, output: util.Map[AnyRef, AnyRef]) = value match { case provider: world.WorldProvider => - output += "id" -> Int.box(provider.dimensionId) + 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 _ => }