electrodynamics/src/main/scala/resonantinduction/mechanical/MicroblockHighlightHandler.scala

37 lines
1.3 KiB
Scala

package resonantinduction.mechanical
import codechicken.lib.render.RenderUtils
import codechicken.lib.vec.Vector3
import codechicken.microblock.{CornerPlacementGrid, FacePlacementGrid}
import cpw.mods.fml.common.eventhandler.SubscribeEvent
import cpw.mods.fml.relauncher.{Side, SideOnly}
import net.minecraft.util.MovingObjectPosition
import net.minecraftforge.client.event.DrawBlockHighlightEvent
import org.lwjgl.opengl.GL11
import resonantinduction.core.prefab.part.IHighlight
object MicroblockHighlightHandler
{
@SubscribeEvent
@SideOnly(Side.CLIENT)
def drawBlockHighlight(event: DrawBlockHighlightEvent)
{
if (event.currentItem != null && event.currentItem.getItem.isInstanceOf[IHighlight] && event.target != null && event.target.typeOfHit == MovingObjectPosition.MovingObjectType.BLOCK)
{
GL11.glPushMatrix()
RenderUtils.translateToWorldCoords(event.player, event.partialTicks)
val hit: Vector3 = new Vector3(event.target.hitVec)
val t = event.currentItem.getItem.asInstanceOf[IHighlight].getHighlightType
if (t == 0)
{
FacePlacementGrid.render(hit, event.target.sideHit)
}
if (t == 1)
{
CornerPlacementGrid.render(hit, event.target.sideHit)
}
event.setCanceled(true)
GL11.glPopMatrix()
}
}
}