Jump to content
View in the app

A better way to browse. Learn more.

Forge Forums

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

Featured Replies

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.

Important Information

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

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.