Advertisement
Guest User

Untitled

a guest
Feb 1st, 2018
110
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Scala 3.31 KB | None | 0 0
  1. abstract class IItemRenderer{
  2.  
  3.  
  4.  
  5.   val mc: Minecraft = Minecraft.getMinecraft
  6.  
  7.   val textureManager: TextureManager= mc.getTextureManager
  8.  
  9.  
  10.  
  11.   def render(cameraTransformType: TransformType,itemStack: ItemStack,entity: EntityLivingBase): Unit
  12.  
  13. }
  14.  
  15.  
  16.  
  17. class ItemRendererManager {
  18.  
  19.  
  20.  
  21.   val itemRendererIndex = new mutable.OpenHashMap[String,IItemRenderer]
  22.  
  23.   private val itemModelResourceLocation = new ModelResourceLocation(advancedAuromancyModId+":empty", "inventory")
  24.  
  25.  
  26.  
  27.   def registerItemRenderer(item: Item, itemRender: IItemRenderer): Unit = {
  28.  
  29.     println("test1",item.delegate.name().toString)
  30.  
  31.     itemRendererIndex += getItemName(item)->itemRender
  32.  
  33.     Minecraft.getMinecraft.getRenderItem.getItemModelMesher.register(item, 0, itemModelResourceLocation)
  34.  
  35.   }
  36.  
  37.  
  38.  
  39.   @SubscribeEvent def bakeModel(event: ModelBakeEvent): Unit = {
  40.  
  41.     println("test",itemRendererIndex.size)
  42.  
  43.       event.getModelRegistry.putObject(itemModelResourceLocation, new WrappedModel(itemRendererIndex))
  44.  
  45.   }
  46.  
  47.  
  48.  
  49.   class WrappedModel(itemRendererIndex: mutable.OpenHashMap[String, IItemRenderer]) extends IBakedModel  with IPerspectiveAwareModel{
  50.  
  51.     var _entity:EntityLivingBase = null
  52.  
  53.     var _itemStack:ItemStack = null
  54.  
  55.  
  56.  
  57.     override def handlePerspective(cameraTransformType: TransformType): tuple.Pair[_ <: IBakedModel, Matrix4f] = {
  58.  
  59.  
  60.  
  61.       import net.minecraftforge.common.model.TRSRTransformation
  62.  
  63.       val itemCameraTransforms = getItemCameraTransforms
  64.  
  65.       val itemTransformVec3f = itemCameraTransforms.getTransform(cameraTransformType)
  66.  
  67.       val tr = new TRSRTransformation(itemTransformVec3f)
  68.  
  69.       val mat = tr.getMatrix
  70.  
  71.  
  72.  
  73.       GlStateManager.pushMatrix()
  74.  
  75.       GlStateManager.translate(0.5F, 0.5F, 0.5F)
  76.  
  77.       GlStateManager.scale(1.0F, 1.0F, 1.0F)
  78.  
  79.  
  80.  
  81.       itemRendererIndex.get(getItemName(_itemStack)).foreach(_.render(cameraTransformType,_itemStack,_entity))
  82.  
  83.       _itemStack=null
  84.  
  85.       _entity=null
  86.  
  87.  
  88.  
  89.       GlStateManager.popMatrix()
  90.  
  91.  
  92.  
  93.  
  94.  
  95.       org.apache.commons.lang3.tuple.Pair.of(this, mat)
  96.  
  97.     }
  98.  
  99.  
  100.  
  101.     object ItemStackCollectorItemOverrideList extends ItemOverrideList(Collections.emptyList()) {
  102.  
  103.       override def handleItemState(originalModel: IBakedModel, stack: ItemStack, world: World, entity: EntityLivingBase): IBakedModel = {
  104.  
  105.         _itemStack=stack
  106.  
  107.         _entity=entity
  108.  
  109.         super.handleItemState(originalModel,stack,world,entity)
  110.  
  111.       }
  112.  
  113.     }
  114.  
  115.     val mc: Minecraft = Minecraft.getMinecraft
  116.  
  117.     val textureManager: TextureManager= mc.getTextureManager
  118.  
  119.  
  120.  
  121.     override def isAmbientOcclusion = true
  122.  
  123.  
  124.  
  125.     override def getQuads(state: IBlockState, side: EnumFacing, rand: Long): util.List[BakedQuad] = Collections.emptyList()
  126.  
  127.  
  128.  
  129.     override def isBuiltInRenderer: Boolean = false
  130.  
  131.  
  132.  
  133.     override def getParticleTexture: TextureAtlasSprite = mc.getTextureMapBlocks.getMissingSprite
  134.  
  135.  
  136.  
  137.     override def isGui3d: Boolean = true
  138.  
  139.  
  140.  
  141.     override def getOverrides: ItemOverrideList = ItemStackCollectorItemOverrideList
  142.  
  143.  
  144.  
  145.     override def getItemCameraTransforms: ItemCameraTransforms = ItemCameraTransforms.DEFAULT
  146.  
  147.   }
  148.  
  149.   @inline private def getItemName(item: Item):String = item.delegate.name().toString
  150.  
  151.   @inline private def getItemName(itemStack: ItemStack):String = getItemName(itemStack.getItem)
  152.  
  153. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement