PhenomenaRenderer.java 文件源码

java
阅读 18 收藏 0 点赞 0 评论 0

项目:Solar 作者:
@Override
public void renderTileEntityFast(@Nonnull TilePhenomena phenomena, double x, double y, double z, float partialTick, int breakStage, float partial, @Nullable BufferBuilder renderer) {
    if(blockRenderer == null) blockRenderer = Minecraft.getMinecraft().getBlockRendererDispatcher();

    BlockPos pos = phenomena.getPos();
    IBlockAccess world = MinecraftForgeClient.getRegionRenderCache(phenomena.getWorld(), pos);
    IBlockState state = getState(phenomena, world, pos);

    if(state instanceof IExtendedBlockState) {
        IExtendedBlockState extendedState = (IExtendedBlockState) state;
        if(extendedState.getUnlistedNames().contains(Properties.AnimationProperty)) {
            float time = ((20 - phenomena.timer)) / 20F; // Using tile timer instead of world time.
            IAnimationStateMachine capability = phenomena.getCapability(CapabilityAnimation.ANIMATION_CAPABILITY, null);
            if(capability != null) {
                Pair<IModelState, Iterable<Event>> pair = capability.apply(time);

                extendedState = extendedState.withProperty(Properties.AnimationProperty, pair.getLeft());
                IBakedModel model = getModel(state);

                assert renderer != null;
                renderer.setTranslation(x - pos.getX(), y - pos.getY(), z - pos.getZ());

                blockRenderer.getBlockModelRenderer().renderModel(world, model, extendedState, pos, renderer, false);
            }
        }
    }
}
评论列表
文章目录


问题


面经


文章

微信
公众号

扫码关注公众号