electrodynamics/src/main/scala/edx/core/prefab/node/TMultipartNode.scala

50 lines
953 B
Scala
Raw Normal View History

2015-01-14 12:06:03 +01:00
package edx.core.prefab.node
2014-07-14 23:29:24 +02:00
import codechicken.multipart.TMultiPart
import net.minecraft.tileentity.TileEntity
import net.minecraft.world.World
2015-01-26 12:40:32 +01:00
import resonantengine.lib.grid.core.NodeConnector
2014-07-14 23:29:24 +02:00
/**
2014-09-21 10:15:20 +02:00
* A trait that allows nodes to works with Forge Multipart. This trait MUST be mixed in.
2014-07-14 23:29:24 +02:00
* @author Calclavia
*/
2014-11-05 04:27:44 +01:00
trait TMultipartNode[A <: AnyRef] extends NodeConnector[A]
2014-07-14 23:29:24 +02:00
{
override def world: World =
{
2015-01-07 03:59:50 +01:00
return parent match
2014-09-07 05:50:03 +02:00
{
2015-01-07 03:59:50 +01:00
case p: TMultiPart => p.world
case p: TileEntity => p.getWorldObj
}
2014-07-14 23:29:24 +02:00
}
2014-08-14 13:22:49 +02:00
override def x: Double =
2014-07-14 23:29:24 +02:00
{
2015-01-07 03:59:50 +01:00
return parent match
2014-09-07 05:50:03 +02:00
{
2015-01-07 03:59:50 +01:00
case p: TMultiPart => p.x
case p: TileEntity => p.xCoord
}
2014-08-14 13:22:49 +02:00
}
override def y: Double =
{
2015-01-07 03:59:50 +01:00
return parent match
2014-09-07 05:50:03 +02:00
{
2015-01-07 03:59:50 +01:00
case p: TMultiPart => p.y
case p: TileEntity => p.yCoord
}
2014-08-14 13:22:49 +02:00
}
override def z: Double =
{
2015-01-07 03:59:50 +01:00
return parent match
2014-09-07 05:50:03 +02:00
{
2015-01-07 03:59:50 +01:00
case p: TMultiPart => p.z
case p: TileEntity => p.zCoord
}
2014-07-14 23:29:24 +02:00
}
}