Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- package io.themastergabriel.wardedstructures.client.model;
- /* a whole bunch of imports */
- public class BlockWardedBlockModel implements IPerspectiveAwareModel
- {
- public static final List<BakedQuad> INVISIBLE_QUADS = Collections.<BakedQuad>emptyList();
- private IBlockState cachedBlockState;
- private IBakedModel cachedBlockModel;
- public BlockWardedBlockModel(IBakedModel oldModel)
- {
- this.cachedBlockModel = oldModel;
- this.cachedBlockState = Blocks.AIR.getDefaultState();
- }
- @Override
- public List<BakedQuad> getQuads(IBlockState state, EnumFacing side, long rand)
- {
- if(state instanceof IExtendedBlockState)
- {
- IExtendedBlockState state2 = (IExtendedBlockState)state;
- IBlockState copiedState = state2.getValue(BlockWardedBlock.MIMICKING_BLOCK);
- if(copiedState == null || copiedState.getRenderType() == EnumBlockRenderType.ENTITYBLOCK_ANIMATED || copiedState.getRenderType() == EnumBlockRenderType.INVISIBLE)
- {
- return INVISIBLE_QUADS;
- }
- else if(copiedState.getRenderType() == EnumBlockRenderType.LIQUID)
- {
- ModelFluid model = null;
- if(copiedState.getMaterial() == Material.WATER) model = ModelFluid.WATER;
- else if(copiedState.getMaterial() == Material.LAVA) model = ModelFluid.LAVA;
- if(model != null && copiedState != this.cachedBlockState)
- {
- this.cachedBlockState = copiedState;
- this.cachedBlockModel = model.bake(model.getDefaultState(), DefaultVertexFormats.BLOCK, ModelLoader.defaultTextureGetter());
- }
- }
- else if(copiedState != this.cachedBlockState)
- {
- Minecraft mc = Minecraft.getMinecraft();
- BlockRendererDispatcher dispatcher = mc.getBlockRendererDispatcher();
- BlockModelShapes shapes = dispatcher.getBlockModelShapes();
- this.cachedBlockState = copiedState;
- this.cachedBlockModel = shapes.getModelForState(copiedState);
- }
- return this.cachedBlockModel.getQuads(copiedState, side, rand);
- }
- return INVISIBLE_QUADS;
- }
- @Override
- public boolean isAmbientOcclusion()
- {
- return this.cachedBlockModel.isAmbientOcclusion();
- }
- @Override
- public boolean isGui3d()
- {
- return this.cachedBlockModel.isGui3d();
- }
- @Override
- public boolean isBuiltInRenderer()
- {
- return this.cachedBlockModel.isBuiltInRenderer();
- }
- @Override
- public TextureAtlasSprite getParticleTexture()
- {
- return this.cachedBlockModel.getParticleTexture();
- }
- @Override
- public ItemCameraTransforms getItemCameraTransforms()
- {
- return this.cachedBlockModel.getItemCameraTransforms();
- }
- @Override
- public ItemOverrideList getOverrides()
- {
- return this.cachedBlockModel.getOverrides();
- }
- @Override
- public Pair<? extends IBakedModel, Matrix4f> handlePerspective(ItemCameraTransforms.TransformType cameraTransformType)
- {
- if(this.cachedBlockModel instanceof IPerspectiveAwareModel)
- {
- Matrix4f matrix4f = ((IPerspectiveAwareModel)this.cachedBlockModel).handlePerspective(cameraTransformType).getRight();
- return Pair.of(this, matrix4f);
- }
- else
- {
- ItemCameraTransforms itemCameraTransforms = this.cachedBlockModel.getItemCameraTransforms();
- ItemTransformVec3f itemTransformVec3f = itemCameraTransforms.getTransform(cameraTransformType);
- TRSRTransformation tr = new TRSRTransformation(itemTransformVec3f);
- Matrix4f mat = tr != null ? mat = tr.getMatrix() : null;
- return Pair.of(this, mat);
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement