Jump to content

Recommended Posts

Posted

I'm making a "grass cover" block, which is meant to mimic the behavior of snow (except melting) but look like grass.  So far I have the snow behavior working perfectly, but the grass shading has problem to be a bit challenging.  The top of the block uses the correct color, but the sides are all completely gray!  What am I doing wrong?  Here's the source code for the block:

 

package hvh.mod.coverblocks;

import java.util.Random;

import net.minecraft.block.Block;
import net.minecraft.block.material.Material;
import net.minecraft.client.renderer.texture.IconRegister;
import net.minecraft.creativetab.CreativeTabs;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.item.Item;
import net.minecraft.util.AxisAlignedBB;
import net.minecraft.util.Icon;
import net.minecraft.world.ColorizerFoliage;
import net.minecraft.world.ColorizerGrass;
import net.minecraft.world.EnumSkyBlock;
import net.minecraft.world.IBlockAccess;
import net.minecraft.world.World;
import cpw.mods.fml.relauncher.Side;
import cpw.mods.fml.relauncher.SideOnly;

public class BlockGrassCover extends Block
{
    public BlockGrassCover(int id)
    {
	super(id, Material.grass);
	setHardness(0.3f);
	setStepSound(soundGrassFootstep);
	setCreativeTab(CreativeTabs.tabDecorations);
}

/**
     * When this method is called, your block should register all the icons it needs with the given IconRegister. This
     * is the only chance you get to register icons.
     */
@SideOnly(Side.CLIENT)
    public void registerIcons(IconRegister par1IconRegister)
    {
        this.blockIcon = par1IconRegister.registerIcon("grass_top");
    }


/**
     * Returns a bounding box from the pool of bounding boxes (this means this box can change after the pool has been
     * cleared to be reused)
     */
    public AxisAlignedBB getCollisionBoundingBoxFromPool(World par1World, int par2, int par3, int par4)
    {
        int l = par1World.getBlockMetadata(par2, par3, par4) & 7;
        float f = 0.125F;
        return AxisAlignedBB.getAABBPool().getAABB((double)par2 + this.minX, (double)par3 + this.minY, (double)par4 + this.minZ, (double)par2 + this.maxX, (double)((float)par3 + (float)l * f), (double)par4 + this.maxZ);
    }

    /**
     * Is this block (a) opaque and (b) a full 1m cube?  This determines whether or not to render the shared face of two
     * adjacent blocks and also whether the player can attach torches, redstone wire, etc to this block.
     */
    public boolean isOpaqueCube()
    {
        return false;
    }

    /**
     * If this block doesn't render as an ordinary block it will return False (examples: signs, buttons, stairs, etc)
     */
    public boolean renderAsNormalBlock()
    {
        return false;
    }

    /**
     * Sets the block's bounds for rendering it as an item
     */
    public void setBlockBoundsForItemRender()
    {
        this.setBlockBoundsForSnowDepth(0);
    }

    /**
     * Updates the blocks bounds based on its current state. Args: world, x, y, z
     */
    public void setBlockBoundsBasedOnState(IBlockAccess par1IBlockAccess, int par2, int par3, int par4)
    {
        this.setBlockBoundsForSnowDepth(par1IBlockAccess.getBlockMetadata(par2, par3, par4));
    }

    /**
     * calls setBlockBounds based on the depth of the snow. Int is any values 0x0-0x7, usually this blocks metadata.
     */
    protected void setBlockBoundsForSnowDepth(int par1)
    {
        int j = par1 & 7;
        float f = (float)(2 * (1 + j)) / 16.0F;
        this.setBlockBounds(0.0F, 0.0F, 0.0F, 1.0F, f, 1.0F);
    }

    /**
     * Checks to see if its valid to put this block at the specified coordinates. Args: world, x, y, z
     */
    public boolean canPlaceBlockAt(World par1World, int par2, int par3, int par4)
    {
        int l = par1World.getBlockId(par2, par3 - 1, par4);        
        Block block = Block.blocksList[l];
        if (block == null) return false;
        if (block == this) return true;
        if (block == this && (par1World.getBlockMetadata(par2, par3 - 1, par4) & 7) == 7) return true;
        if (!block.isLeaves(par1World, par2, par3 - 1, par4) && !Block.blocksList[l].isOpaqueCube()) return false;
        return par1World.getBlockMaterial(par2, par3 - 1, par4).blocksMovement();
    }

    /**
     * Lets the block know when one of its neighbor changes. Doesn't know which neighbor changed (coordinates passed are
     * their own) Args: x, y, z, neighbor blockID
     */
    public void onNeighborBlockChange(World par1World, int par2, int par3, int par4, int par5)
    {
        this.canSnowStay(par1World, par2, par3, par4);
    }

    /**
     * Checks if this snow block can stay at this location.
     */
    private boolean canSnowStay(World par1World, int par2, int par3, int par4)
    {
        if (!this.canPlaceBlockAt(par1World, par2, par3, par4))
        {
            par1World.setBlockToAir(par2, par3, par4);
            return false;
        }
        else
        {
            return true;
        }
    }

    /**
     * Called when the player destroys a block with an item that can harvest it. (i, j, k) are the coordinates of the
     * block and l is the block's subtype/damage.
     */
    public void harvestBlock(World par1World, EntityPlayer par2EntityPlayer, int par3, int par4, int par5, int par6)
    {
        super.harvestBlock(par1World, par2EntityPlayer, par3, par4, par5, par6);
        par1World.setBlockToAir(par3, par4, par5);
    }

    /**
     * Returns the quantity of items to drop on block destruction.
     */
    public int quantityDropped(Random par1Random)
    {
        return 0;
    }

    @Override
    public int quantityDropped(int meta, int fortune, Random random)
    {
        return 0;
    }
    
    @SideOnly(Side.CLIENT)
    public int getBlockColor()
    {
        double d0 = 0.5D;
        double d1 = 1.0D;
        return ColorizerGrass.getGrassColor(d0, d1);
    }

    @SideOnly(Side.CLIENT)

    /**
     * Returns the color this block should be rendered. Used by leaves.
     */
    public int getRenderColor(int par1)
    {
        return this.getBlockColor();
    }

/**
 * Returns a integer with hex for 0xrrggbb with this color multiplied against the blocks color. Note only called
 * when first determining what to render.
*/
@SideOnly(Side.CLIENT)
public int colorMultiplier(IBlockAccess par1IBlockAccess, int par2, int par3, int par4)
    {
        int i1 = 0;
        int j1 = 0;
        int k1 = 0;

        for (int l1 = -1; l1 <= 1; ++l1)
        {
            for (int i2 = -1; i2 <= 1; ++i2)
            {
                int j2 = par1IBlockAccess.getBiomeGenForCoords(par2 + i2, par4 + l1).getBiomeGrassColor();
                i1 += (j2 & 16711680) >> 16;
                j1 += (j2 & 65280) >> 8;
                k1 += j2 & 255;
            }
        }

        return (i1 / 9 & 255) << 16 | (j1 / 9 & 255) << 8 | k1 / 9 & 255;
    }
    
    @SideOnly(Side.CLIENT)
    public static Icon getIconSideOverlay()
    {
        return CoverBlocksMod.grassCover.getIcon(0, 0);
    }
}

 

Any advice?  Thanks in advance.

Posted

This is because the grass block is a specially rendered block because of the overlay textures.  If you look in the RenderBlocks minecraft class you can see how its done.  They however do a check to make sure its a vanilla grass block before they render the side texture properly.  You can copy most of the code they use to do the grass block and do your own custom render.  It depends how far down the modding rabbit hole you want to go really.

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Unfortunately, your content contains terms that we do not allow. Please edit your content to remove the highlighted words below.
Reply to this topic...

×   Pasted as rich text.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Announcements



  • Recently Browsing

    • No registered users viewing this page.
  • Posts

    • New users at Temu receive a $100 discount on orders over $100 Use the code [aci789589] during checkout to get Temu Coupon Code $100 off For New Users. Yes, Temu offers $100 off coupon code “aci789589” for first-time users. Temu 100% Off coupon code "aci789589" will save you $100 on your order. To get a discount, click on the item to purchase and enter the code. Yes, Temu offers $100 off coupon code “aci789589” for first-time users. You can get a$100 bonus plus 30% off any purchase at Temu with the$100 Coupon Bundle at Temu if you sign up with the referral code [aci789589] and make a first purchase of$50 or more. The Temu $100 Off coupon code (aci789589) will save you $100 on your order. To get a discount, click on the item to purchase and enter the code. Yes Temu offers $100 Off Coupon Code “aci789589” for First Time Users. Yes, Temu offers $100 off coupon code {aci789589} for first-time users. You can get a $100 bonus plus 100% off any purchase at Temu with the $100 Coupon Bundle if you sign up with the referral code [aci789589] and make a first purchase of $100 or more. If you are who wish to join Temu, then you should use this exclusive Temu coupon code $100 off (aci789589) and get $100 off on your purchase with Temu. You can get a $100 discount with Temu coupon code {aci789589}. This exclusive offer is for existing customers and can be used for a $100 reduction on your total purchase. Enter coupon code {aci789589} at checkout to avail of the discount. You can use the code {aci789589} to get a $100 off Temu coupon as a new customer. Apply this Temu coupon code $100 off (aci789589) to get a $100 discount on your shopping with Temu. If you’re a first-time user and looking for a Temu coupon code $100 first time user(aci789589) then using this code will give you a flat $100 Off and a 90% discount on your Temu shopping. Temu $100% Off Coupon Code "aci789589" will save you $100 on your order. To get a discount, click on the item to purchase and enter the code. Temu coupon code$100off-{aci789589} Temu coupon code -{aci789589} Temu coupon code$50 off-{aci789589} Temu Coupon code [aci789589] for existing users can get up to 50% discount on product during checkout. Temu Coupon Codes for Existing Customers-aci789589 Temu values its loyal customers and offers various promo codes, including the Legit Temu Coupon Code (aci789589]) or (aci789589), which existing users can use. This ensures that repeat shoppers can also benefit from significant discounts on their purchases. Keep an eye out for special promotions and offers that are periodically available to enhance your shopping experience.
    • New users at Temu receive a $100 discount on orders over $100 Use the code [aci789589] during checkout to get Temu Coupon Code $100 off For New Users. Yes, Temu offers $100 off coupon code “aci789589” for first-time users. Temu 100% Off coupon code "aci789589" will save you $100 on your order. To get a discount, click on the item to purchase and enter the code. Yes, Temu offers $100 off coupon code “aci789589” for first-time users. You can get a$100 bonus plus 30% off any purchase at Temu with the$100 Coupon Bundle at Temu if you sign up with the referral code [aci789589] and make a first purchase of$50 or more. The Temu $100 Off coupon code (aci789589) will save you $100 on your order. To get a discount, click on the item to purchase and enter the code. Yes Temu offers $100 Off Coupon Code “aci789589” for First Time Users. Yes, Temu offers $100 off coupon code {aci789589} for first-time users. You can get a $100 bonus plus 100% off any purchase at Temu with the $100 Coupon Bundle if you sign up with the referral code [aci789589] and make a first purchase of $100 or more. If you are who wish to join Temu, then you should use this exclusive Temu coupon code $100 off (aci789589) and get $100 off on your purchase with Temu. You can get a $100 discount with Temu coupon code {aci789589}. This exclusive offer is for existing customers and can be used for a $100 reduction on your total purchase. Enter coupon code {aci789589} at checkout to avail of the discount. You can use the code {aci789589} to get a $100 off Temu coupon as a new customer. Apply this Temu coupon code $100 off (aci789589) to get a $100 discount on your shopping with Temu. If you’re a first-time user and looking for a Temu coupon code $100 first time user(aci789589) then using this code will give you a flat $100 Off and a 90% discount on your Temu shopping. Temu $100% Off Coupon Code "aci789589" will save you $100 on your order. To get a discount, click on the item to purchase and enter the code. Temu coupon code$100off-{aci789589} Temu coupon code -{aci789589} Temu coupon code$50 off-{aci789589} Temu Coupon code [aci789589] for existing users can get up to 50% discount on product during checkout. Temu Coupon Codes for Existing Customers-aci789589 Temu values its loyal customers and offers various promo codes, including the Legit Temu Coupon Code (aci789589]) or (aci789589), which existing users can use. This ensures that repeat shoppers can also benefit from significant discounts on their purchases. Keep an eye out for special promotions and offers that are periodically available to enhance your shopping experience.
    • When i try to start minecraft forge 1.20.1 an error appears an the launcher shows the error 1, i don't know what's that :   "failed to initialize graphics window with current settings" "Timed out trying to setup the Game Window"
    • Also add the client log after trying to join  
    • We’ve got a fantastic deal for new users—just use the acw696499 Temu coupon code to unlock massive savings across Temu’s global marketplace. This code offers maximum benefits to shoppers in the USA, Canada, and major European countries. With the Temu coupon $100 off and Temu 100 off coupon code, you can enjoy generous discounts and exclusive offers. It’s your key to smart shopping without compromising on quality. What Is The Coupon Code For Temu $100 Off? Everyone loves a great deal, and Temu makes it even better with this limited-time offer. Whether you're a new or existing customer, the Temu coupon $100 off or $100 off Temu coupon is the real deal to watch. acw696499: Flat $100 off on your first purchase as a welcome bonus. acw696499: Access a $100 coupon pack with multiple-use options. acw696499: Exclusive $100 flat discount for new customers on sign-up. acw696499: Extra $100 promo code for existing customers. acw696499: Valid for all users in the USA and Canada for a $100 off coupon experience. Temu Coupon Code $100 Off For New Users In 2025 If you're just starting out with Temu, this deal is tailor-made for you. The Temu coupon $100 off and Temu coupon code $100 off are designed specifically to give new users an exceptional start. acw696499: Flat $100 discount for all new users. acw696499: Get a $100 coupon bundle instantly after registering. acw696499: Up to $100 coupon bundle usable over multiple orders. acw696499: Free shipping to 68 countries, making your first purchase even sweeter. acw696499: Enjoy an extra 30% off on any product as a first-time user. How To Redeem The Temu Coupon $100 Off For New Customers? Using the Temu $100 coupon and Temu $100 off coupon code for new users is easy: Download the Temu app or visit the Temu website. Register as a new user with your email or phone number. Go to the coupon section and enter code acw696499. Browse and add your favorite items to the cart. Apply the coupon at checkout to redeem your discount. Temu Coupon $100 Off For Existing Customers Temu doesn’t just stop at new users. Even returning shoppers can make the most of the Temu $100 coupon codes for existing users and Temu coupon $100 off for existing customers free shipping benefits. acw696499: $100 extra discount for existing Temu users. acw696499: Unlock a $100 coupon bundle for multiple purchases. acw696499: Get a free gift with express shipping throughout the USA and Canada. acw696499: Enjoy an extra 30% off on top of existing discounts. acw696499: Free shipping to 68 countries with no strings attached. How To Use The Temu Coupon Code $100 Off For Existing Customers? To use the Temu coupon code $100 off and Temu coupon $100 off code as an existing user: Log into your Temu account via app or website. Go to the ‘Coupons & Promotions’ section. Enter acw696499 in the coupon code box. Shop for your desired products. Apply the code during checkout to enjoy the savings. Latest Temu Coupon $100 Off First Order Your first order with Temu just got a whole lot more exciting. When you use the Temu coupon code $100 off first order, Temu coupon code first order, or Temu coupon code $100 off first time user, big savings await. acw696499: Flat $100 discount on your first order. acw696499: Activate your $100 Temu coupon code with ease. acw696499: Receive up to $100 worth of coupons for multiple purchases. acw696499: Enjoy free shipping across 68 countries. acw696499: Add 30% off on your first purchase. How To Find The Temu Coupon Code $100 Off? If you're searching for a Temu coupon $100 off or even a verified Temu coupon $100 off Reddit code, we’ve got you covered. Simply sign up for the Temu newsletter to get exclusive coupons straight to your inbox. You can also follow Temu’s official pages on Instagram, Facebook, or Twitter for surprise promo codes. For guaranteed and working coupons, visit any trusted coupon site—you’ll always find the best deals like acw696499 there. Is Temu $100 Off Coupon Legit? Yes, the Temu $100 Off Coupon Legit offer is 100% real. Our Temu 100 off coupon legit code—acw696499—has been tested and verified by thousands of users. You can safely use this code for $100 off on your first order and enjoy discounts on recurring purchases too. There’s no expiry date, and the code is valid globally. How Does Temu $100 Off Coupon Work? The Temu coupon code $100 off first-time user and Temu coupon codes 100 off offers work by instantly applying discounts to your cart. Once you sign up and apply the coupon code, Temu automatically adjusts the pricing to reflect your savings. Whether it’s a flat $100 off or a bundle, the discounts will apply across eligible items at checkout. How To Earn Temu $100 Coupons As A New Customer? To earn the Temu coupon code $100 off or 100 off Temu coupon code as a new customer, simply sign up on the Temu app or website. Enter the code acw696499 during registration or at checkout, and you’ll instantly unlock $100 worth of coupons. These can be applied over multiple orders, maximizing your benefits as a newcomer. What Are The Advantages Of Using The Temu Coupon $100 Off? The Temu coupon code 100 off and Temu coupon code $100 off offers bring many great benefits: $100 discount on the first order. $100 coupon bundle for multiple uses. Up to 70% discount on trending items. Extra 30% off for existing customers. Up to 90% off on selected categories. Free gift for new users. Free delivery to 68 countries. Temu $100 Discount Code And Free Gift For New And Existing Customers Using the Temu $100 off coupon code or $100 off Temu coupon code gives you unmatched savings and perks. Whether you’re a new or returning customer, you’ll love the benefits. acw696499: Enjoy a $100 discount on your very first order. acw696499: Get an extra 30% off on all purchases. acw696499: Free gift exclusively for new Temu users. acw696499: Up to 70% off across all product categories. acw696499: Free gift and free shipping in 68 countries, including the USA and UK. Pros And Cons Of Using The Temu Coupon Code $100 Off This Month Take advantage of the Temu coupon $100 off code and Temu 100 off coupon deals with these pros and cons: Pros: Massive $100 discount on eligible purchases. Works for both new and existing users. Stackable with other Temu offers. Valid in 68 countries worldwide. Comes with free shipping and gifts. Cons: Only valid through the app or website. May not apply to some sale items. Terms And Conditions Of Using The Temu Coupon $100 Off In 2025 Please read these Temu coupon code $100 off free shipping and latest Temu coupon code $100 off terms: Our coupon code acw696499 does not have an expiration date. The code is valid for both new and existing users. No minimum purchase is required to use this code. It applies across 68 countries worldwide. Free shipping and gifts are included. Final Note: Use The Latest Temu Coupon Code $100 Off Unlock unbeatable value with the Temu coupon code $100 off today. Whether you're new or returning, the savings are just one click away. Enjoy great deals, exclusive bundles, and premium products with our Temu coupon $100 off. Shop smart and save more every time. FAQs Of Temu $100 Off Coupon  Is the Temu $100 off coupon available to everyone? Yes, both new and existing users in supported countries can access the $100 off offer using code acw696499.  How can I ensure my Temu coupon works? Use a trusted and verified code like acw696499 and follow the redemption steps properly at checkout. Does the Temu $100 coupon expire? No, our exclusive code acw696499 has no expiration date and can be used anytime.  Can I combine the $100 coupon with other discounts? Yes, Temu allows coupon stacking, so you can combine acw696499 with other ongoing deals.  Is the Temu $100 off coupon valid worldwide? Absolutely. The acw696499 code is valid in 68 countries, including the USA, Canada, and Europe.
  • Topics

×
×
  • Create New...

Important Information

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