diff --git a/src/main/java/li/cil/oc/api/event/RobotRenderEvent.java b/src/main/java/li/cil/oc/api/event/RobotRenderEvent.java index e3fcc1a57..3eb48ce78 100644 --- a/src/main/java/li/cil/oc/api/event/RobotRenderEvent.java +++ b/src/main/java/li/cil/oc/api/event/RobotRenderEvent.java @@ -1,10 +1,15 @@ package li.cil.oc.api.event; import cpw.mods.fml.common.eventhandler.Cancelable; +import li.cil.oc.api.driver.item.UpgradeRenderer; import li.cil.oc.api.internal.Agent; +import li.cil.oc.api.internal.Robot; +import net.minecraft.item.ItemStack; import org.lwjgl.util.vector.Vector3f; import org.lwjgl.util.vector.Vector4f; +import java.util.Set; + /** * Fired directly before the robot's chassis is rendered. *
@@ -57,5 +62,20 @@ public class RobotRenderEvent extends RobotEvent { * Note that the rotation is applied before the translation. */ public final Vector4f rotation = new Vector4f(0, 0, 0, 0); + + /** + * The mount point's reference name. + * + * This is what's used in {@link UpgradeRenderer#computePreferredMountPoint(ItemStack, Robot, Set)}. + */ + public final String name; + + public MountPoint() { + name = null; + } + + public MountPoint(String name) { + this.name = name; + } } } diff --git a/src/main/scala/li/cil/oc/client/renderer/tileentity/RobotRenderer.scala b/src/main/scala/li/cil/oc/client/renderer/tileentity/RobotRenderer.scala index 12431e3c0..c1346658c 100644 --- a/src/main/scala/li/cil/oc/client/renderer/tileentity/RobotRenderer.scala +++ b/src/main/scala/li/cil/oc/client/renderer/tileentity/RobotRenderer.scala @@ -38,7 +38,7 @@ import scala.collection.mutable object RobotRenderer extends TileEntitySpecialRenderer { private val displayList = GLAllocation.generateDisplayLists(2) - private val mountPoints = Array.fill(7)(new RobotRenderEvent.MountPoint()) + private val mountPoints = new Array[RobotRenderEvent.MountPoint](7) private val slotNameMapping = Map( UpgradeRenderer.MountPointName.TopLeft -> 0, @@ -50,6 +50,10 @@ object RobotRenderer extends TileEntitySpecialRenderer { UpgradeRenderer.MountPointName.BottomFront -> 6 ) + for ((name, index) <- slotNameMapping) { + mountPoints(index) = new RobotRenderEvent.MountPoint(name) + } + private val gap = 1.0f / 28.0f private val gt = 0.5f + gap private val gb = 0.5f - gap diff --git a/src/main/scala/li/cil/oc/common/template/AssemblerTemplates.scala b/src/main/scala/li/cil/oc/common/template/AssemblerTemplates.scala index f264b32c4..336b3b4dc 100644 --- a/src/main/scala/li/cil/oc/common/template/AssemblerTemplates.scala +++ b/src/main/scala/li/cil/oc/common/template/AssemblerTemplates.scala @@ -64,7 +64,7 @@ object AssemblerTemplates { } def assemble(inventory: IInventory) = IMC.tryInvokeStatic(assembler, inventory)(null: Array[AnyRef]) match { - case Array(stack: ItemStack, energy: java.lang.Double) => (stack, energy: Double) + case Array(stack: ItemStack, energy: java.lang.Number) => (stack, energy.doubleValue(): Double) case Array(stack: ItemStack) => (stack, 0.0) case _ => (null, 0.0) }