Search in sources :

Example 36 with BakedQuad

use of net.minecraft.client.renderer.block.model.BakedQuad in project BuildCraft by BuildCraft.

the class ItemRenderUtil method renderItemStack.

/**
 * Used to render a lot of items in sequential order. Assumes that you don't change the glstate inbetween calls.
 * You must call {@link #endItemBatch()} after your have rendered all of the items.
 */
public static void renderItemStack(double x, double y, double z, ItemStack stack, int lightc, EnumFacing dir, BufferBuilder bb) {
    if (stack.isEmpty()) {
        return;
    }
    if (dir == null) {
        dir = EnumFacing.EAST;
    }
    dir = BCLibConfig.rotateTravelingItems.changeFacing(dir);
    IBakedModel model = Minecraft.getMinecraft().getRenderItem().getItemModelMesher().getItemModel(stack);
    model = model.getOverrides().handleItemState(model, stack, null, null);
    boolean requireGl = stack.hasEffect() || model.isBuiltInRenderer();
    if (bb != null && !requireGl) {
        bb.setTranslation(x, y, z);
        float scale = 0.30f;
        MutableQuad q = new MutableQuad(-1, null);
        for (EnumPipePart part : EnumPipePart.VALUES) {
            for (BakedQuad quad : model.getQuads(null, part.face, 0)) {
                q.fromBakedItem(quad);
                q.translated(-0.5, -0.5, -0.5);
                q.scaled(scale);
                q.rotate(EnumFacing.SOUTH, dir, 0, 0, 0);
                if (quad.hasTintIndex()) {
                    int colour = Minecraft.getMinecraft().getItemColors().colorMultiplier(stack, quad.getTintIndex());
                    if (EntityRenderer.anaglyphEnable) {
                        colour = TextureUtil.anaglyphColor(colour);
                    }
                    q.multColouri(colour, colour >> 8, colour >> 16, 0xFF);
                }
                q.lighti(lightc);
                Vector3f normal = q.getCalculatedNormal();
                q.normalvf(normal);
                q.multShade();
                q.render(bb);
            }
        }
        bb.setTranslation(0, 0, 0);
        return;
    }
    if (!inBatch) {
        inBatch = true;
        Minecraft.getMinecraft().renderEngine.bindTexture(TextureMap.LOCATION_BLOCKS_TEXTURE);
        GL11.glPushMatrix();
        GL11.glTranslated(x, y, z);
        GL11.glScaled(0.3, 0.3, 0.3);
        RenderHelper.disableStandardItemLighting();
    }
    OpenGlHelper.setLightmapTextureCoords(OpenGlHelper.lightmapTexUnit, lightc % (float) 0x1_00_00, lightc / (float) 0x1_00_00);
    Minecraft.getMinecraft().getRenderItem().renderItem(stack, model);
}
Also used : BakedQuad(net.minecraft.client.renderer.block.model.BakedQuad) Vector3f(javax.vecmath.Vector3f) EnumPipePart(buildcraft.api.core.EnumPipePart) IBakedModel(net.minecraft.client.renderer.block.model.IBakedModel) MutableQuad(buildcraft.lib.client.model.MutableQuad)

Example 37 with BakedQuad

use of net.minecraft.client.renderer.block.model.BakedQuad in project BuildCraft by BuildCraft.

the class RobotStationModel method createItemModel.

public PerspAwareModelBase createItemModel() {
    ImmutableList.Builder<BakedQuad> quads = ImmutableList.builder();
    VertexFormat format = DefaultVertexFormats.ITEM;
    quads.addAll(INSTANCE.bakeCutout(EnumRobotStationState.Available, EnumFacing.SOUTH, format));
    return new PerspAwareModelBase(format, quads.build(), baseSprite, getPluggableTransforms());
}
Also used : BakedQuad(net.minecraft.client.renderer.block.model.BakedQuad) ImmutableList(com.google.common.collect.ImmutableList) PerspAwareModelBase(buildcraft.core.lib.client.model.PerspAwareModelBase) VertexFormat(net.minecraft.client.renderer.vertex.VertexFormat)

Example 38 with BakedQuad

use of net.minecraft.client.renderer.block.model.BakedQuad in project BuildCraft by BuildCraft.

the class RobotStationModel method bakeCutout.

private List<BakedQuad> bakeCutout(EnumRobotStationState state, EnumFacing face, VertexFormat format) {
    IModel base = modelBase();
    List<MutableQuad> stateQuads = this.stateQuads.get(state);
    List<BakedQuad> quads = Lists.newArrayList();
    if (base != null) {
        Matrix4f matrix = MatrixUtil.rotateTowardsFace(face);
        for (MutableQuad mutable : baseQuads()) {
            mutable = new MutableQuad(mutable);
            mutable.transform(matrix);
            Vector3f normal = mutable.getCalculatedNormal();
            mutable.normalv(normal);
            float diffuse = MutableQuad.diffuseLight(normal);
            mutable.colourf(diffuse, diffuse, diffuse, 1);
            ModelUtil.appendBakeQuads(quads, format, mutable);
        }
        if (stateQuads != null) {
            for (MutableQuad mutable : stateQuads) {
                mutable = new MutableQuad(mutable);
                mutable.transform(matrix);
                Vector3f normal = mutable.getCalculatedNormal();
                mutable.normalv(normal);
                float diffuse = MutableQuad.diffuseLight(normal);
                mutable.colourf(diffuse, diffuse, diffuse, 1);
                ModelUtil.appendBakeQuads(quads, format, mutable);
            }
        }
    }
    return quads;
}
Also used : BakedQuad(net.minecraft.client.renderer.block.model.BakedQuad) IModel(net.minecraftforge.client.model.IModel) Matrix4f(javax.vecmath.Matrix4f) Vector3f(javax.vecmath.Vector3f) MutableQuad(buildcraft.lib.client.model.MutableQuad)

Example 39 with BakedQuad

use of net.minecraft.client.renderer.block.model.BakedQuad in project Adventurers-Toolbox by the-realest-stu.

the class AxeModel method bake.

@Override
public IBakedModel bake(IModelState state, VertexFormat format, java.util.function.Function<ResourceLocation, TextureAtlasSprite> bakedTextureGetter) {
    ImmutableMap<TransformType, TRSRTransformation> transformMap = PerspectiveMapWrapper.getTransforms(state);
    TRSRTransformation transform = (TRSRTransformation.identity());
    ImmutableList.Builder<BakedQuad> builder = ImmutableList.builder();
    if (headTexture != null && haftTexture != null && handleTexture != null) {
        ImmutableList.Builder<ResourceLocation> texBuilder = ImmutableList.builder();
        if (haftTexture != null) {
            texBuilder.add(haftTexture);
        }
        if (headTexture != null) {
            texBuilder.add(headTexture);
        }
        if (handleTexture != null) {
            texBuilder.add(handleTexture);
        }
        if (adornmentTexture != null) {
            texBuilder.add(adornmentTexture);
        }
        ImmutableList<ResourceLocation> textures = texBuilder.build();
        IBakedModel model = (new ItemLayerModel(textures)).bake(state, format, bakedTextureGetter);
        builder.addAll(model.getQuads(null, null, 0));
    }
    return new BakedAxeModel(this, builder.build(), format, Maps.immutableEnumMap(transformMap), Maps.<String, IBakedModel>newHashMap());
}
Also used : TRSRTransformation(net.minecraftforge.common.model.TRSRTransformation) BakedQuad(net.minecraft.client.renderer.block.model.BakedQuad) ImmutableList(com.google.common.collect.ImmutableList) ModelResourceLocation(net.minecraft.client.renderer.block.model.ModelResourceLocation) ResourceLocation(net.minecraft.util.ResourceLocation) ItemLayerModel(net.minecraftforge.client.model.ItemLayerModel) IBakedModel(net.minecraft.client.renderer.block.model.IBakedModel) TransformType(net.minecraft.client.renderer.block.model.ItemCameraTransforms.TransformType) ItemOverride(net.minecraft.client.renderer.block.model.ItemOverride)

Example 40 with BakedQuad

use of net.minecraft.client.renderer.block.model.BakedQuad in project Adventurers-Toolbox by the-realest-stu.

the class HandpickModel method bake.

@Override
public IBakedModel bake(IModelState state, VertexFormat format, java.util.function.Function<ResourceLocation, TextureAtlasSprite> bakedTextureGetter) {
    ImmutableMap<TransformType, TRSRTransformation> transformMap = PerspectiveMapWrapper.getTransforms(state);
    TRSRTransformation transform = (TRSRTransformation.identity());
    ImmutableList.Builder<BakedQuad> builder = ImmutableList.builder();
    if (headTexture != null && haftTexture != null && handleTexture != null) {
        ImmutableList.Builder<ResourceLocation> texBuilder = ImmutableList.builder();
        if (haftTexture != null) {
            texBuilder.add(haftTexture);
        }
        if (headTexture != null) {
            texBuilder.add(headTexture);
        }
        if (handleTexture != null) {
            texBuilder.add(handleTexture);
        }
        if (adornmentTexture != null) {
            texBuilder.add(adornmentTexture);
        }
        ImmutableList<ResourceLocation> textures = texBuilder.build();
        IBakedModel model = (new ItemLayerModel(textures)).bake(state, format, bakedTextureGetter);
        builder.addAll(model.getQuads(null, null, 0));
    }
    return new BakedHandpickModel(this, builder.build(), format, Maps.immutableEnumMap(transformMap), Maps.<String, IBakedModel>newHashMap());
}
Also used : TRSRTransformation(net.minecraftforge.common.model.TRSRTransformation) BakedQuad(net.minecraft.client.renderer.block.model.BakedQuad) ImmutableList(com.google.common.collect.ImmutableList) ModelResourceLocation(net.minecraft.client.renderer.block.model.ModelResourceLocation) ResourceLocation(net.minecraft.util.ResourceLocation) ItemLayerModel(net.minecraftforge.client.model.ItemLayerModel) IBakedModel(net.minecraft.client.renderer.block.model.IBakedModel) TransformType(net.minecraft.client.renderer.block.model.ItemCameraTransforms.TransformType) ItemOverride(net.minecraft.client.renderer.block.model.ItemOverride)

Aggregations

BakedQuad (net.minecraft.client.renderer.block.model.BakedQuad)137 IBakedModel (net.minecraft.client.renderer.block.model.IBakedModel)43 EnumFacing (net.minecraft.util.EnumFacing)40 TextureAtlasSprite (net.minecraft.client.renderer.texture.TextureAtlasSprite)36 ArrayList (java.util.ArrayList)29 IBlockState (net.minecraft.block.state.IBlockState)24 ResourceLocation (net.minecraft.util.ResourceLocation)23 ImmutableList (com.google.common.collect.ImmutableList)22 MutableQuad (buildcraft.lib.client.model.MutableQuad)19 UnpackedBakedQuad (net.minecraftforge.client.model.pipeline.UnpackedBakedQuad)17 TRSRTransformation (net.minecraftforge.common.model.TRSRTransformation)16 ModelResourceLocation (net.minecraft.client.renderer.block.model.ModelResourceLocation)15 IExtendedBlockState (net.minecraftforge.common.property.IExtendedBlockState)15 Tessellator (net.minecraft.client.renderer.Tessellator)14 TransformType (net.minecraft.client.renderer.block.model.ItemCameraTransforms.TransformType)14 List (java.util.List)13 IModel (net.minecraftforge.client.model.IModel)13 SideOnly (net.minecraftforge.fml.relauncher.SideOnly)13 Matrix4f (javax.vecmath.Matrix4f)12 ItemLayerModel (net.minecraftforge.client.model.ItemLayerModel)12