Jump to content

Recommended Posts

Posted

I'm trying to make a new version of the lever, and like the lever it doesn't need a tile entity. So I need a way to custom render (like the lever) without making a TileEntity. I figured out that the lever is rendered by this code

public boolean renderBlockLever(Block p_147790_1_, int p_147790_2_, int p_147790_3_, int p_147790_4_)
    {
        int var5 = this.blockAccess.getBlockMetadata(p_147790_2_, p_147790_3_, p_147790_4_);
        int var6 = var5 & 7;
        boolean var7 = (var5 &  > 0;
        Tessellator var8 = Tessellator.instance;
        boolean var9 = this.hasOverrideBlockTexture();

        if (!var9)
        {
            this.setOverrideBlockTexture(this.getBlockIcon(Blocks.cobblestone));
        }

        float var10 = 0.25F;
        float var11 = 0.1875F;
        float var12 = 0.1875F;

        if (var6 == 5)
        {
            this.setRenderBounds((double)(0.5F - var11), 0.0D, (double)(0.5F - var10), (double)(0.5F + var11), (double)var12, (double)(0.5F + var10));
        }
        else if (var6 == 6)
        {
            this.setRenderBounds((double)(0.5F - var10), 0.0D, (double)(0.5F - var11), (double)(0.5F + var10), (double)var12, (double)(0.5F + var11));
        }
        else if (var6 == 4)
        {
            this.setRenderBounds((double)(0.5F - var11), (double)(0.5F - var10), (double)(1.0F - var12), (double)(0.5F + var11), (double)(0.5F + var10), 1.0D);
        }
        else if (var6 == 3)
        {
            this.setRenderBounds((double)(0.5F - var11), (double)(0.5F - var10), 0.0D, (double)(0.5F + var11), (double)(0.5F + var10), (double)var12);
        }
        else if (var6 == 2)
        {
            this.setRenderBounds((double)(1.0F - var12), (double)(0.5F - var10), (double)(0.5F - var11), 1.0D, (double)(0.5F + var10), (double)(0.5F + var11));
        }
        else if (var6 == 1)
        {
            this.setRenderBounds(0.0D, (double)(0.5F - var10), (double)(0.5F - var11), (double)var12, (double)(0.5F + var10), (double)(0.5F + var11));
        }
        else if (var6 == 0)
        {
            this.setRenderBounds((double)(0.5F - var10), (double)(1.0F - var12), (double)(0.5F - var11), (double)(0.5F + var10), 1.0D, (double)(0.5F + var11));
        }
        else if (var6 == 7)
        {
            this.setRenderBounds((double)(0.5F - var11), (double)(1.0F - var12), (double)(0.5F - var10), (double)(0.5F + var11), 1.0D, (double)(0.5F + var10));
        }

        this.renderStandardBlock(p_147790_1_, p_147790_2_, p_147790_3_, p_147790_4_);

        if (!var9)
        {
            this.clearOverrideBlockTexture();
        }

        var8.setBrightness(p_147790_1_.getBlockBrightness(this.blockAccess, p_147790_2_, p_147790_3_, p_147790_4_));
        var8.setColorOpaque_F(1.0F, 1.0F, 1.0F);
        IIcon var13 = this.getBlockIconFromSide(p_147790_1_, 0);

        if (this.hasOverrideBlockTexture())
        {
            var13 = this.overrideBlockTexture;
        }

        double var14 = (double)var13.getMinU();
        double var16 = (double)var13.getMinV();
        double var18 = (double)var13.getMaxU();
        double var20 = (double)var13.getMaxV();
        Vec3[] var22 = new Vec3[8];
        float var23 = 0.0625F;
        float var24 = 0.0625F;
        float var25 = 0.625F;
        var22[0] = this.blockAccess.getWorldVec3Pool().getVecFromPool((double)(-var23), 0.0D, (double)(-var24));
        var22[1] = this.blockAccess.getWorldVec3Pool().getVecFromPool((double)var23, 0.0D, (double)(-var24));
        var22[2] = this.blockAccess.getWorldVec3Pool().getVecFromPool((double)var23, 0.0D, (double)var24);
        var22[3] = this.blockAccess.getWorldVec3Pool().getVecFromPool((double)(-var23), 0.0D, (double)var24);
        var22[4] = this.blockAccess.getWorldVec3Pool().getVecFromPool((double)(-var23), (double)var25, (double)(-var24));
        var22[5] = this.blockAccess.getWorldVec3Pool().getVecFromPool((double)var23, (double)var25, (double)(-var24));
        var22[6] = this.blockAccess.getWorldVec3Pool().getVecFromPool((double)var23, (double)var25, (double)var24);
        var22[7] = this.blockAccess.getWorldVec3Pool().getVecFromPool((double)(-var23), (double)var25, (double)var24);

        for (int var26 = 0; var26 < 8; ++var26)
        {
            if (var7)
            {
                var22[var26].zCoord -= 0.0625D;
                var22[var26].rotateAroundX(((float)Math.PI * 2F / 9F));
            }
            else
            {
                var22[var26].zCoord += 0.0625D;
                var22[var26].rotateAroundX(-((float)Math.PI * 2F / 9F));
            }

            if (var6 == 0 || var6 == 7)
            {
                var22[var26].rotateAroundZ((float)Math.PI);
            }

            if (var6 == 6 || var6 == 0)
            {
                var22[var26].rotateAroundY(((float)Math.PI / 2F));
            }

            if (var6 > 0 && var6 < 5)
            {
                var22[var26].yCoord -= 0.375D;
                var22[var26].rotateAroundX(((float)Math.PI / 2F));

                if (var6 == 4)
                {
                    var22[var26].rotateAroundY(0.0F);
                }

                if (var6 == 3)
                {
                    var22[var26].rotateAroundY((float)Math.PI);
                }

                if (var6 == 2)
                {
                    var22[var26].rotateAroundY(((float)Math.PI / 2F));
                }

                if (var6 == 1)
                {
                    var22[var26].rotateAroundY(-((float)Math.PI / 2F));
                }

                var22[var26].xCoord += (double)p_147790_2_ + 0.5D;
                var22[var26].yCoord += (double)((float)p_147790_3_ + 0.5F);
                var22[var26].zCoord += (double)p_147790_4_ + 0.5D;
            }
            else if (var6 != 0 && var6 != 7)
            {
                var22[var26].xCoord += (double)p_147790_2_ + 0.5D;
                var22[var26].yCoord += (double)((float)p_147790_3_ + 0.125F);
                var22[var26].zCoord += (double)p_147790_4_ + 0.5D;
            }
            else
            {
                var22[var26].xCoord += (double)p_147790_2_ + 0.5D;
                var22[var26].yCoord += (double)((float)p_147790_3_ + 0.875F);
                var22[var26].zCoord += (double)p_147790_4_ + 0.5D;
            }
        }

        Vec3 var31 = null;
        Vec3 var27 = null;
        Vec3 var28 = null;
        Vec3 var29 = null;

        for (int var30 = 0; var30 < 6; ++var30)
        {
            if (var30 == 0)
            {
                var14 = (double)var13.getInterpolatedU(7.0D);
                var16 = (double)var13.getInterpolatedV(6.0D);
                var18 = (double)var13.getInterpolatedU(9.0D);
                var20 = (double)var13.getInterpolatedV(8.0D);
            }
            else if (var30 == 2)
            {
                var14 = (double)var13.getInterpolatedU(7.0D);
                var16 = (double)var13.getInterpolatedV(6.0D);
                var18 = (double)var13.getInterpolatedU(9.0D);
                var20 = (double)var13.getMaxV();
            }

            if (var30 == 0)
            {
                var31 = var22[0];
                var27 = var22[1];
                var28 = var22[2];
                var29 = var22[3];
            }
            else if (var30 == 1)
            {
                var31 = var22[7];
                var27 = var22[6];
                var28 = var22[5];
                var29 = var22[4];
            }
            else if (var30 == 2)
            {
                var31 = var22[1];
                var27 = var22[0];
                var28 = var22[4];
                var29 = var22[5];
            }
            else if (var30 == 3)
            {
                var31 = var22[2];
                var27 = var22[1];
                var28 = var22[5];
                var29 = var22[6];
            }
            else if (var30 == 4)
            {
                var31 = var22[3];
                var27 = var22[2];
                var28 = var22[6];
                var29 = var22[7];
            }
            else if (var30 == 5)
            {
                var31 = var22[0];
                var27 = var22[3];
                var28 = var22[7];
                var29 = var22[4];
            }

            var8.addVertexWithUV(var31.xCoord, var31.yCoord, var31.zCoord, var14, var20);
            var8.addVertexWithUV(var27.xCoord, var27.yCoord, var27.zCoord, var18, var20);
            var8.addVertexWithUV(var28.xCoord, var28.yCoord, var28.zCoord, var18, var16);
            var8.addVertexWithUV(var29.xCoord, var29.yCoord, var29.zCoord, var14, var16);
        }

        return true;
    }

in RenderBlocks.java, because render type 12 is specified in BlockLever.java. I have not been able to figure out how to add a new RenderBlocks type dealio and I also have not been able to figure out where it says returning 12 in func_149645_b (I'm in 1.7.2) makes it render the lever as that code up there. Any help with understanding how this works would help, but if anyone with experience doing something like I am trying to do, that would be even more helpful.

Guest
This topic is now closed to further replies.

Announcements



×
×
  • Create New...

Important Information

By using this site, you agree to our Terms of Use.