Search in sources :

Example 1 with BlockChestMP

use of stevekung.mods.moreplanets.util.blocks.BlockChestMP in project MorePlanets by SteveKunG.

the class TileEntityChestRendererMP method render.

@Override
public void render(TileEntityChestMP tile, double x, double y, double z, float partialTicks, int destroyStage, float alpha) {
    int meta;
    if (!tile.hasWorld()) {
        meta = 0;
    } else {
        Block block = tile.getBlockType();
        meta = tile.getBlockMetadata();
        if (block instanceof BlockChestMP && meta == 0) {
            ((BlockChestMP) block).checkForSurroundingChests(tile.getWorld(), tile.getPos(), tile.getWorld().getBlockState(tile.getPos()));
            meta = tile.getBlockMetadata();
        }
        tile.checkForAdjacentChests();
    }
    if (tile.adjacentChestZNeg == null && tile.adjacentChestXNeg == null) {
        ModelChest modelchest;
        if (tile.adjacentChestXPos == null && tile.adjacentChestZPos == null) {
            modelchest = this.simpleChest;
            if (destroyStage >= 0) {
                this.bindTexture(DESTROY_STAGES[destroyStage]);
                GlStateManager.matrixMode(5890);
                GlStateManager.pushMatrix();
                GlStateManager.scale(4.0F, 4.0F, 1.0F);
                GlStateManager.translate(0.0625F, 0.0625F, 0.0625F);
                GlStateManager.matrixMode(5888);
            } else if (CalendarHelper.isChristmasDay()) {
                this.bindTexture(this.textureChristmas);
            } else if (CalendarHelper.isMorePlanetsBirthDay()) {
                this.bindTexture(this.morePlanetsChestNormal);
            } else {
                this.bindTexture(this.textureNormal);
            }
        } else {
            modelchest = this.largeChest;
            if (destroyStage >= 0) {
                this.bindTexture(DESTROY_STAGES[destroyStage]);
                GlStateManager.matrixMode(5890);
                GlStateManager.pushMatrix();
                GlStateManager.scale(8.0F, 4.0F, 1.0F);
                GlStateManager.translate(0.0625F, 0.0625F, 0.0625F);
                GlStateManager.matrixMode(5888);
            } else if (CalendarHelper.isChristmasDay()) {
                this.bindTexture(this.textureChristmasDouble);
            } else if (CalendarHelper.isMorePlanetsBirthDay()) {
                this.bindTexture(this.morePlanetsLargeChestNormal);
            } else {
                this.bindTexture(this.textureNormalDouble);
            }
        }
        GlStateManager.pushMatrix();
        GlStateManager.enableRescaleNormal();
        if (destroyStage < 0) {
            GlStateManager.color(1.0F, 1.0F, 1.0F, 1.0F);
        }
        GlStateManager.translate((float) x, (float) y + 1.0F, (float) z + 1.0F);
        GlStateManager.scale(1.0F, -1.0F, -1.0F);
        GlStateManager.translate(0.5F, 0.5F, 0.5F);
        short short1 = 0;
        if (meta == 2) {
            short1 = 180;
        }
        if (meta == 3) {
            short1 = 0;
        }
        if (meta == 4) {
            short1 = 90;
        }
        if (meta == 5) {
            short1 = -90;
        }
        if (meta == 2 && tile.adjacentChestXPos != null) {
            GlStateManager.translate(1.0F, 0.0F, 0.0F);
        }
        if (meta == 5 && tile.adjacentChestZPos != null) {
            GlStateManager.translate(0.0F, 0.0F, -1.0F);
        }
        GlStateManager.rotate(short1, 0.0F, 1.0F, 0.0F);
        GlStateManager.translate(-0.5F, -0.5F, -0.5F);
        float f1 = tile.prevLidAngle + (tile.lidAngle - tile.prevLidAngle) * partialTicks;
        float f2;
        if (tile.adjacentChestZNeg != null) {
            f2 = tile.adjacentChestZNeg.prevLidAngle + (tile.adjacentChestZNeg.lidAngle - tile.adjacentChestZNeg.prevLidAngle) * partialTicks;
            if (f2 > f1) {
                f1 = f2;
            }
        }
        if (tile.adjacentChestXNeg != null) {
            f2 = tile.adjacentChestXNeg.prevLidAngle + (tile.adjacentChestXNeg.lidAngle - tile.adjacentChestXNeg.prevLidAngle) * partialTicks;
            if (f2 > f1) {
                f1 = f2;
            }
        }
        f1 = 1.0F - f1;
        f1 = 1.0F - f1 * f1 * f1;
        modelchest.chestLid.rotateAngleX = -(f1 * (float) Math.PI / 2.0F);
        modelchest.renderAll();
        GlStateManager.disableRescaleNormal();
        GlStateManager.popMatrix();
        GlStateManager.color(1.0F, 1.0F, 1.0F, 1.0F);
        if (destroyStage >= 0) {
            GlStateManager.matrixMode(5890);
            GlStateManager.popMatrix();
            GlStateManager.matrixMode(5888);
        }
    }
}
Also used : ModelChest(net.minecraft.client.model.ModelChest) BlockChestMP(stevekung.mods.moreplanets.util.blocks.BlockChestMP) Block(net.minecraft.block.Block)

Aggregations

Block (net.minecraft.block.Block)1 ModelChest (net.minecraft.client.model.ModelChest)1 BlockChestMP (stevekung.mods.moreplanets.util.blocks.BlockChestMP)1