electrodynamics/src/main/scala/edx/mechanical/mech/gear/ItemGear.scala
2015-01-26 19:40:54 +08:00

56 lines
1.8 KiB
Scala

package edx.mechanical.mech.gear
import java.util.List
import codechicken.lib.vec.{BlockCoord, Vector3}
import codechicken.microblock.FacePlacementGrid
import codechicken.multipart.{JItemMultiPart, PartMap, TMultiPart, TileMultipart}
import edx.core.ResonantPartFactory
import edx.core.prefab.part.IHighlight
import edx.mechanical.mech.gearshaft.PartGearShaft
import net.minecraft.creativetab.CreativeTabs
import net.minecraft.entity.player.EntityPlayer
import net.minecraft.item.{Item, ItemStack}
import net.minecraft.tileentity.TileEntity
import net.minecraft.world.World
import resonantengine.lib.wrapper.CollectionWrapper._
class ItemGear extends JItemMultiPart with IHighlight
{
setHasSubtypes(true)
override def getUnlocalizedName(itemStack: ItemStack): String =
{
return super.getUnlocalizedName(itemStack) + "." + itemStack.getItemDamage
}
override def newPart(itemStack: ItemStack, player: EntityPlayer, world: World, pos: BlockCoord, s: Int, hit: Vector3): TMultiPart =
{
val part: PartGear = ResonantPartFactory.create(classOf[PartGear])
var side: Int = FacePlacementGrid.getHitSlot(hit, s)
val tile: TileEntity = world.getTileEntity(pos.x, pos.y, pos.z)
if (tile.isInstanceOf[TileMultipart])
{
val occupyingPart: TMultiPart = (tile.asInstanceOf[TileMultipart]).partMap(side)
val centerPart: TMultiPart = (tile.asInstanceOf[TileMultipart]).partMap(PartMap.CENTER.ordinal)
val clickedCenter: Boolean = hit.mag < 0.4
if ((clickedCenter && centerPart.isInstanceOf[PartGearShaft]))
{
side ^= 1
}
}
part.preparePlacement(side, itemStack.getItemDamage)
return part
}
override def getSubItems(itemID: Item, tab: CreativeTabs, listToAddTo: List[_])
{
for (i <- 0 to 2)
{
listToAddTo.add(new ItemStack(itemID, 1, i))
}
}
def getHighlightType: Int = 0
}