Advertisement
Guest User

Untitled

a guest
Mar 26th, 2017
101
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 3.37 KB | None | 0 0
  1. package io.themastergabriel.wardedstructures.client.model;
  2.  
  3. /* a whole bunch of imports */
  4.  
  5. public class BlockWardedBlockModel implements IPerspectiveAwareModel
  6. {
  7.     public static final List<BakedQuad> INVISIBLE_QUADS = Collections.<BakedQuad>emptyList();
  8.     private IBlockState cachedBlockState;
  9.     private IBakedModel cachedBlockModel;
  10.    
  11.     public BlockWardedBlockModel(IBakedModel oldModel)
  12.     {
  13.         this.cachedBlockModel = oldModel;
  14.         this.cachedBlockState = Blocks.AIR.getDefaultState();
  15.     }
  16.  
  17.     @Override
  18.     public List<BakedQuad> getQuads(IBlockState state, EnumFacing side, long rand)
  19.     {
  20.         if(state instanceof IExtendedBlockState)
  21.         {
  22.             IExtendedBlockState state2 = (IExtendedBlockState)state;
  23.             IBlockState copiedState = state2.getValue(BlockWardedBlock.MIMICKING_BLOCK);
  24.  
  25.             if(copiedState == null || copiedState.getRenderType() == EnumBlockRenderType.ENTITYBLOCK_ANIMATED || copiedState.getRenderType() == EnumBlockRenderType.INVISIBLE)
  26.             {
  27.                 return INVISIBLE_QUADS;
  28.             }
  29.             else if(copiedState.getRenderType() == EnumBlockRenderType.LIQUID)
  30.             {
  31.                 ModelFluid model = null;
  32.                 if(copiedState.getMaterial() == Material.WATER) model = ModelFluid.WATER;
  33.                 else if(copiedState.getMaterial() == Material.LAVA) model = ModelFluid.LAVA;
  34.                
  35.                 if(model != null && copiedState != this.cachedBlockState)
  36.                 {
  37.                     this.cachedBlockState = copiedState;
  38.                     this.cachedBlockModel = model.bake(model.getDefaultState(), DefaultVertexFormats.BLOCK, ModelLoader.defaultTextureGetter());
  39.                 }
  40.             }
  41.             else if(copiedState != this.cachedBlockState)
  42.             {
  43.                 Minecraft mc = Minecraft.getMinecraft();
  44.                 BlockRendererDispatcher dispatcher = mc.getBlockRendererDispatcher();
  45.                 BlockModelShapes shapes = dispatcher.getBlockModelShapes();
  46.                 this.cachedBlockState = copiedState;
  47.                 this.cachedBlockModel = shapes.getModelForState(copiedState);
  48.             }
  49.            
  50.             return this.cachedBlockModel.getQuads(copiedState, side, rand);
  51.         }
  52.        
  53.         return INVISIBLE_QUADS;
  54.     }
  55.  
  56.     @Override
  57.     public boolean isAmbientOcclusion()
  58.     {
  59.         return this.cachedBlockModel.isAmbientOcclusion();
  60.     }
  61.  
  62.     @Override
  63.     public boolean isGui3d()
  64.     {
  65.         return this.cachedBlockModel.isGui3d();
  66.     }
  67.  
  68.     @Override
  69.     public boolean isBuiltInRenderer()
  70.     {
  71.         return this.cachedBlockModel.isBuiltInRenderer();
  72.     }
  73.  
  74.     @Override
  75.     public TextureAtlasSprite getParticleTexture()
  76.     {
  77.         return this.cachedBlockModel.getParticleTexture();
  78.     }
  79.  
  80.     @Override
  81.     public ItemCameraTransforms getItemCameraTransforms()
  82.     {
  83.         return this.cachedBlockModel.getItemCameraTransforms();
  84.     }
  85.  
  86.     @Override
  87.     public ItemOverrideList getOverrides()
  88.     {
  89.         return this.cachedBlockModel.getOverrides();
  90.     }
  91.  
  92.     @Override
  93.     public Pair<? extends IBakedModel, Matrix4f> handlePerspective(ItemCameraTransforms.TransformType cameraTransformType)
  94.     {
  95.         if(this.cachedBlockModel instanceof IPerspectiveAwareModel)
  96.         {
  97.             Matrix4f matrix4f = ((IPerspectiveAwareModel)this.cachedBlockModel).handlePerspective(cameraTransformType).getRight();
  98.             return Pair.of(this, matrix4f);
  99.         }
  100.         else
  101.         {
  102.             ItemCameraTransforms itemCameraTransforms = this.cachedBlockModel.getItemCameraTransforms();
  103.             ItemTransformVec3f itemTransformVec3f = itemCameraTransforms.getTransform(cameraTransformType);
  104.             TRSRTransformation tr = new TRSRTransformation(itemTransformVec3f);
  105.             Matrix4f mat = tr != null ? mat = tr.getMatrix() : null;
  106.             return Pair.of(this, mat);
  107.         }
  108.     }
  109. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement