From c80adbb23cbcefb4ae2463cff7bf15c0d1c0cf4d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Florian=20N=C3=BCcke?= Date: Thu, 26 Mar 2015 13:57:50 +0100 Subject: [PATCH] Made block detection for agents more detailed, checking for "passable" blocks (ones without collision bounds). Closes #972. --- .../scala/li/cil/oc/server/component/traits/WorldAware.scala | 3 +++ src/main/scala/li/cil/oc/util/ExtendedBlock.scala | 2 ++ 2 files changed, 5 insertions(+) diff --git a/src/main/scala/li/cil/oc/server/component/traits/WorldAware.scala b/src/main/scala/li/cil/oc/server/component/traits/WorldAware.scala index 56bc16711..cca1a7e61 100644 --- a/src/main/scala/li/cil/oc/server/component/traits/WorldAware.scala +++ b/src/main/scala/li/cil/oc/server/component/traits/WorldAware.scala @@ -79,6 +79,9 @@ trait WorldAware { MinecraftForge.EVENT_BUS.post(event) (event.isCanceled, "replaceable") } + else if (block.getCollisionBoundingBoxFromPool(blockPos) == null) { + (true, "passable") + } else { (true, "solid") } diff --git a/src/main/scala/li/cil/oc/util/ExtendedBlock.scala b/src/main/scala/li/cil/oc/util/ExtendedBlock.scala index 2053d0fd4..6cfabdd76 100644 --- a/src/main/scala/li/cil/oc/util/ExtendedBlock.scala +++ b/src/main/scala/li/cil/oc/util/ExtendedBlock.scala @@ -16,6 +16,8 @@ object ExtendedBlock { def setBlockBoundsBasedOnState(position: BlockPosition) = block.setBlockBoundsBasedOnState(position.world.get, position.x, position.y, position.z) def getSelectedBoundingBoxFromPool(position: BlockPosition) = block.getSelectedBoundingBoxFromPool(position.world.get, position.x, position.y, position.z) + + def getCollisionBoundingBoxFromPool(position: BlockPosition) = block.getCollisionBoundingBoxFromPool(position.world.get, position.x, position.y, position.z) } }