From d84da8e9b5eb2b5d2f077ad5e683d9be7a3d4eb4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Florian=20N=C3=BCcke?= Date: Fri, 20 Feb 2015 01:00:47 +0100 Subject: [PATCH] More sidedness -.- Also, BlockPos.subtract is client side only? Really now? --- src/main/scala/li/cil/oc/common/Loot.scala | 28 ++++++++++--------- .../cil/oc/common/block/RobotAfterimage.scala | 5 +++- .../li/cil/oc/common/block/RobotProxy.scala | 4 ++- .../opencomputers/DriverFileSystem.scala | 3 +- .../opencomputers/DriverLootDisk.scala | 2 +- 5 files changed, 25 insertions(+), 17 deletions(-) diff --git a/src/main/scala/li/cil/oc/common/Loot.scala b/src/main/scala/li/cil/oc/common/Loot.scala index 3669f0b53..f4641049c 100644 --- a/src/main/scala/li/cil/oc/common/Loot.scala +++ b/src/main/scala/li/cil/oc/common/Loot.scala @@ -53,19 +53,21 @@ object Loot { def initForWorld(e: WorldEvent.Load) { worldDisks.clear() disks.clear() - val path = new io.File(DimensionManager.getCurrentSaveRootDirectory, Settings.savePath + "loot/") - if (path.exists && path.isDirectory) { - val listFile = new io.File(path, "loot.properties") - if (listFile.exists && listFile.isFile) { - try { - val listStream = new io.FileInputStream(listFile) - val list = new java.util.Properties() - list.load(listStream) - listStream.close() - parseLootDisks(list, worldDisks) - } - catch { - case t: Throwable => OpenComputers.log.warn("Failed opening loot descriptor file in saves folder.") + if (!e.world.isRemote) { + val path = new io.File(DimensionManager.getCurrentSaveRootDirectory, Settings.savePath + "loot/") + if (path.exists && path.isDirectory) { + val listFile = new io.File(path, "loot.properties") + if (listFile.exists && listFile.isFile) { + try { + val listStream = new io.FileInputStream(listFile) + val list = new java.util.Properties() + list.load(listStream) + listStream.close() + parseLootDisks(list, worldDisks) + } + catch { + case t: Throwable => OpenComputers.log.warn("Failed opening loot descriptor file in saves folder.") + } } } } diff --git a/src/main/scala/li/cil/oc/common/block/RobotAfterimage.scala b/src/main/scala/li/cil/oc/common/block/RobotAfterimage.scala index 717aaaf75..4fa1fa06d 100644 --- a/src/main/scala/li/cil/oc/common/block/RobotAfterimage.scala +++ b/src/main/scala/li/cil/oc/common/block/RobotAfterimage.scala @@ -75,7 +75,10 @@ class RobotAfterimage extends SimpleBlock { case Some(robot) => val block = robot.getBlockType block.setBlockBoundsBasedOnState(world, robot.getPos) - val delta = robot.moveFrom.fold(Vec3i.NULL_VECTOR)(robot.getPos.subtract(_)) + val delta = robot.moveFrom.fold(Vec3i.NULL_VECTOR)(vec => { + val blockPos = robot.getPos + new BlockPos(blockPos.getX - vec.getX, blockPos.getY - vec.getY, blockPos.getZ - vec.getZ) + }) setBlockBounds(new AxisAlignedBB( block.getBlockBoundsMinX, block.getBlockBoundsMinY, block.getBlockBoundsMinZ, block.getBlockBoundsMaxX, block.getBlockBoundsMaxY, block.getBlockBoundsMaxZ). diff --git a/src/main/scala/li/cil/oc/common/block/RobotProxy.scala b/src/main/scala/li/cil/oc/common/block/RobotProxy.scala index b185912be..d16e2262e 100644 --- a/src/main/scala/li/cil/oc/common/block/RobotProxy.scala +++ b/src/main/scala/li/cil/oc/common/block/RobotProxy.scala @@ -171,7 +171,9 @@ class RobotProxy extends RedstoneAware with traits.StateAware { val bounds = AxisAlignedBB.fromBounds(0.1, 0.1, 0.1, 0.9, 0.9, 0.9) setBlockBounds(if (robot.isAnimatingMove) { val remaining = robot.animationTicksLeft.toDouble / robot.animationTicksTotal.toDouble - val delta = robot.moveFrom.get.subtract(robot.getPos) + val blockPos = robot.moveFrom.get + val vec = robot.getPos + val delta = new BlockPos(blockPos.getX - vec.getX, blockPos.getY - vec.getY, blockPos.getZ - vec.getZ) bounds.offset(delta.getX * remaining, delta.getY * remaining, delta.getZ * remaining) } else bounds) diff --git a/src/main/scala/li/cil/oc/integration/opencomputers/DriverFileSystem.scala b/src/main/scala/li/cil/oc/integration/opencomputers/DriverFileSystem.scala index b5420214d..3ffc2cd91 100644 --- a/src/main/scala/li/cil/oc/integration/opencomputers/DriverFileSystem.scala +++ b/src/main/scala/li/cil/oc/integration/opencomputers/DriverFileSystem.scala @@ -12,6 +12,7 @@ import li.cil.oc.common.item.HardDiskDrive import li.cil.oc.server.fs.FileSystem.ItemLabel import net.minecraft.item.ItemStack import net.minecraft.nbt.NBTTagCompound +import net.minecraftforge.common.DimensionManager object DriverFileSystem extends Item { override def worksWith(stack: ItemStack) = isOneOf(stack, @@ -38,7 +39,7 @@ object DriverFileSystem extends Item { case _ => 0 } - private def createEnvironment(stack: ItemStack, capacity: Int, host: EnvironmentHost) = if (!host.world.isRemote) { + private def createEnvironment(stack: ItemStack, capacity: Int, host: EnvironmentHost) = if (DimensionManager.getWorld(0) != null) { // We have a bit of a chicken-egg problem here, because we want to use the // node's address as the folder name... so we generate the address here, // if necessary. No one will know, right? Right!? diff --git a/src/main/scala/li/cil/oc/integration/opencomputers/DriverLootDisk.scala b/src/main/scala/li/cil/oc/integration/opencomputers/DriverLootDisk.scala index 67601ef51..16156961b 100644 --- a/src/main/scala/li/cil/oc/integration/opencomputers/DriverLootDisk.scala +++ b/src/main/scala/li/cil/oc/integration/opencomputers/DriverLootDisk.scala @@ -17,7 +17,7 @@ object DriverLootDisk extends Item { (stack.hasTagCompound && stack.getTagCompound.hasKey(Settings.namespace + "lootPath")) override def createEnvironment(stack: ItemStack, host: EnvironmentHost) = - if (stack.hasTagCompound && !host.world.isRemote) { + if (stack.hasTagCompound && DimensionManager.getWorld(0) != null) { val lootPath = "loot/" + stack.getTagCompound.getString(Settings.namespace + "lootPath") val savePath = new io.File(DimensionManager.getCurrentSaveRootDirectory, Settings.savePath + lootPath) val fs =