hello people,
I'm trying to code a new flower pot since i want to have my own flowers in it.
but i stumbled upon an issue, the texture of the flower rendering inside of the pot is rendered more than 1 time.
http://spenk.bplaced.net/images/2013-08-21_01.35.40.png[/img]
(default pot left, my pot right)
here is my render code.
package net.bplaced.spenk.drugmod.generator;
import net.bplaced.spenk.drugmod.ClientProxy;
import net.bplaced.spenk.drugmod.DrugsMod;
import net.minecraft.block.Block;
import net.minecraft.block.BlockAnvil;
import net.minecraft.block.BlockBeacon;
import net.minecraft.block.BlockBrewingStand;
import net.minecraft.block.BlockCauldron;
import net.minecraft.block.BlockCocoa;
import net.minecraft.block.BlockComparator;
import net.minecraft.block.BlockDragonEgg;
import net.minecraft.block.BlockEndPortalFrame;
import net.minecraft.block.BlockFence;
import net.minecraft.block.BlockFenceGate;
import net.minecraft.block.BlockFire;
import net.minecraft.block.BlockFlower;
import net.minecraft.block.BlockFlowerPot;
import net.minecraft.block.BlockHopper;
import net.minecraft.block.BlockPane;
import net.minecraft.block.BlockRailBase;
import net.minecraft.block.BlockRedstoneLogic;
import net.minecraft.block.BlockRedstoneRepeater;
import net.minecraft.block.BlockStairs;
import net.minecraft.block.BlockWall;
import net.minecraft.client.renderer.EntityRenderer;
import net.minecraft.client.renderer.RenderBlocks;
import net.minecraft.client.renderer.Tessellator;
import net.minecraft.src.FMLRenderAccessLibrary;
import net.minecraft.util.Icon;
import net.minecraft.world.IBlockAccess;
import cpw.mods.fml.client.registry.ISimpleBlockRenderingHandler;
public class BlockSeedpotRender implements ISimpleBlockRenderingHandler {
@Override
public void renderInventoryBlock(Block block, int metadata, int modelID, RenderBlocks renderer) {
}
@Override
public boolean renderWorldBlock(IBlockAccess world, int x, int y, int z, Block block, int modelId, RenderBlocks renderer) {
renderBlockSeedpot(block, renderer, world, x, y, z);
return true;
}
public boolean renderBlockSeedpot(Block block, RenderBlocks renderer, IBlockAccess world, int par2, int par3, int par4) {
renderer.renderStandardBlock(block, par2, par3, par4);
Tessellator tessellator = Tessellator.instance;
tessellator.setBrightness(block.getMixedBrightnessForBlock(world, par2, par3, par4));
float f = 1.0F;
int l = block.colorMultiplier(world, par2, par3, par4);
Icon icon = renderer.getBlockIconFromSide(block, 0);
float f1 = (float)(l >> 16 & 255) / 255.0F;
float f2 = (float)(l >> 8 & 255) / 255.0F;
float f3 = (float)(l & 255) / 255.0F;
float f4;
float f5;
if (EntityRenderer.anaglyphEnable)
{
f4 = (f1 * 30.0F + f2 * 59.0F + f3 * 11.0F) / 100.0F;
float f6 = (f1 * 30.0F + f2 * 70.0F) / 100.0F;
f5 = (f1 * 30.0F + f3 * 70.0F) / 100.0F;
f1 = f4;
f2 = f6;
f3 = f5;
}
tessellator.setColorOpaque_F(f * f1, f * f2, f * f3);
f4 = 0.1865F;
renderer.renderFaceXPos(block, (double)((float)par2 - 0.5F + f4), (double)par3, (double)par4, icon);
renderer.renderFaceXNeg(block, (double)((float)par2 + 0.5F - f4), (double)par3, (double)par4, icon);
renderer.renderFaceZPos(block, (double)par2, (double)par3, (double)((float)par4 - 0.5F + f4), icon);
renderer.renderFaceZNeg(block, (double)par2, (double)par3, (double)((float)par4 + 0.5F - f4), icon);
renderer.renderFaceYPos(block, (double)par2, (double)((float)par3 - 0.5F + f4 + 0.1875F), (double)par4, renderer.getBlockIcon(Block.tilledField));
int i1 = world.getBlockMetadata(par2, par3, par4);
if (i1 != 0)
{
f5 = 0.0F;
float f7 = 4.0F;
float f8 = 0.0F;
BlockFlower blockflower = null;
switch (i1)
{
case 1:
blockflower = Block.plantRed;
break;
case 2:
blockflower = Block.plantYellow;
case 3:
case 4:
case 5:
case 6:
default:
break;
case 7:
blockflower = Block.mushroomRed;
break;
case 8:
blockflower = Block.mushroomBrown;
}
tessellator.addTranslation(f5 / 16.0F, f7 / 16.0F, f8 / 16.0F);
if (blockflower != null)
{
renderer.renderBlockByRenderType(blockflower, par2, par3, par4);
}
else if (i1 == 9)
{
renderer.renderAllFaces = true;
float f9 = 0.125F;
renderer.setRenderBounds((double)(0.5F - f9), 0.0D, (double)(0.5F - f9), (double)(0.5F + f9), 0.25D, (double)(0.5F + f9));
renderer.renderStandardBlock(Block.cactus, par2, par3, par4);
renderer.setRenderBounds((double)(0.5F - f9), 0.25D, (double)(0.5F - f9), (double)(0.5F + f9), 0.5D, (double)(0.5F + f9));
renderer.renderStandardBlock(Block.cactus, par2, par3, par4);
renderer.setRenderBounds((double)(0.5F - f9), 0.5D, (double)(0.5F - f9), (double)(0.5F + f9), 0.75D, (double)(0.5F + f9));
renderer.renderStandardBlock(Block.cactus, par2, par3, par4);
renderer.renderAllFaces = false;
renderer.setRenderBounds(0.0D, 0.0D, 0.0D, 1.0D, 1.0D, 1.0D);
}
else if (i1 == 3)
{
renderer.drawCrossedSquares(Block.sapling, 0, (double)par2, (double)par3, (double)par4, 0.75F);
}
else if (i1 == 5)
{
renderer.drawCrossedSquares(Block.sapling, 2, (double)par2, (double)par3, (double)par4, 0.75F);
}
else if (i1 == 4)
{
renderer.drawCrossedSquares(Block.sapling, 1, (double)par2, (double)par3, (double)par4, 0.75F);
}
else if (i1 == 6)
{
renderer.drawCrossedSquares(Block.sapling, 3, (double)par2, (double)par3, (double)par4, 0.75F);
}
else if (i1 == 11)
{
l = Block.tallGrass.colorMultiplier(world, par2, par3, par4);
f1 = (float)(l >> 16 & 255) / 255.0F;
f2 = (float)(l >> 8 & 255) / 255.0F;
f3 = (float)(l & 255) / 255.0F;
tessellator.setColorOpaque_F(f * f1, f * f2, f * f3);
renderer.drawCrossedSquares(Block.tallGrass, 2, (double)par2, (double)par3, (double)par4, 0.75F);
}
else if (i1 == 10)
{
renderer.drawCrossedSquares(Block.deadBush, 2, (double)par2, (double)par3, (double)par4, 0.75F);
}
tessellator.addTranslation(-f5 / 16.0F, -f7 / 16.0F, -f8 / 16.0F);
}
return true;
}
@Override
public boolean shouldRender3DInInventory() {
return false;
}
@Override
public int getRenderId() {
return 0;
}
}
and here is my block code.
package net.bplaced.spenk.drugmod.Blocks;
import java.util.Random;
import cpw.mods.fml.relauncher.Side;
import cpw.mods.fml.relauncher.SideOnly;
import net.bplaced.spenk.drugmod.ClientProxy;
import net.bplaced.spenk.drugmod.DrugsMod;
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.item.ItemStack;
import net.minecraft.util.AxisAlignedBB;
import net.minecraft.util.Icon;
import net.minecraft.world.World;
import net.minecraftforge.common.EnumPlantType;
import net.minecraftforge.common.ForgeDirection;
import net.minecraftforge.common.IPlantable;
public class BlockSeedpot extends Block {
public BlockSeedpot(int i) {
super(i, Material.circuits);
setBlockConfigurations();
setBlockBoundsForItemRender();
}
private void setBlockConfigurations() {
setUnlocalizedName("BlockSeedPot");
func_111022_d("drugsmod:drugs_pot_template");
setStepSound(Block.soundPowderFootstep);
setHardness(0F).setResistance(0.1F);
}
public void setBlockBoundsForItemRender()
{
float f = 0.375F;
float f1 = f / 2.0F;
this.setBlockBounds(0.5F - f1, 0.0F, 0.5F - f1, 0.5F + f1, f, 0.5F + f1);
}
public boolean renderAsNormalBlock() {
return false;
}
public int getRenderType() {
return ClientProxy.seedPotRender;
}
/*
public void registerIcons(IconRegister icon) {
this.blockIcon = icon.registerIcon("drugsmod:drugs_pot");
}*/
public boolean isOpaqueCube() {
return false;
}
public int getRenderBlockPass() {
return 1;
}
/**
* Called upon block activation (right click on the block.)
*/
public boolean onBlockActivated(World par1World, int par2, int par3, int par4, EntityPlayer par5EntityPlayer, int par6, float par7, float par8, float par9)
{
ItemStack itemstack = par5EntityPlayer.inventory.getCurrentItem();
if (itemstack == null)
{
return false;
}
else if (par1World.getBlockMetadata(par2, par3, par4) != 0)
{
return false;
}
else
{
int i1 = getMetaForPlant(itemstack);
if (i1 > 0)
{
par1World.setBlockMetadataWithNotify(par2, par3, par4, i1, 2);
if (!par5EntityPlayer.capabilities.isCreativeMode && --itemstack.stackSize <= 0)
{
par5EntityPlayer.inventory.setInventorySlotContents(par5EntityPlayer.inventory.currentItem, (ItemStack)null);
}
return true;
}
else
{
return false;
}
}
}
@SideOnly(Side.CLIENT)
public int idPicked(World par1World, int par2, int par3, int par4)
{
ItemStack itemstack = getPlantForMeta(par1World.getBlockMetadata(par2, par3, par4));
return itemstack == null ? DrugsMod.itemSeedpot.itemID : itemstack.itemID;
}
public int getDamageValue(World par1World, int par2, int par3, int par4)
{
ItemStack itemstack = getPlantForMeta(par1World.getBlockMetadata(par2, par3, par4));
return itemstack == null ? DrugsMod.itemSeedpot.itemID : itemstack.getItemDamage();
}
@SideOnly(Side.CLIENT)
public boolean isFlowerPot()
{
return true;
}
public boolean canPlaceBlockAt(World par1World, int par2, int par3, int par4)
{
return super.canPlaceBlockAt(par1World, par2, par3, par4) && par1World.doesBlockHaveSolidTopSurface(par2, par3 - 1, par4);
}
public void onNeighborBlockChange(World par1World, int par2, int par3, int par4, int par5)
{
if (!par1World.doesBlockHaveSolidTopSurface(par2, par3 - 1, par4))
{
this.dropBlockAsItem(par1World, par2, par3, par4, par1World.getBlockMetadata(par2, par3, par4), 0);
par1World.setBlockToAir(par2, par3, par4);
}
}
public void dropBlockAsItemWithChance(World par1World, int par2, int par3, int par4, int par5, float par6, int par7)
{
super.dropBlockAsItemWithChance(par1World, par2, par3, par4, par5, par6, par7);
if (par5 > 0)
{
ItemStack itemstack = getPlantForMeta(par5);
if (itemstack != null)
{
this.dropBlockAsItem_do(par1World, par2, par3, par4, itemstack);
}
}
}
public int idDropped(int par1, Random par2Random, int par3)
{
return Item.flowerPot.itemID;
}
public static ItemStack getPlantForMeta(int par0)
{
switch (par0)
{
case 1:
return new ItemStack(Block.plantRed);
case 2:
return new ItemStack(Block.plantYellow);
case 3:
return new ItemStack(Block.sapling, 1, 0);
case 4:
return new ItemStack(Block.sapling, 1, 1);
case 5:
return new ItemStack(Block.sapling, 1, 2);
case 6:
return new ItemStack(Block.sapling, 1, 3);
case 7:
return new ItemStack(Block.mushroomRed);
case 8:
return new ItemStack(Block.mushroomBrown);
case 9:
return new ItemStack(Block.cactus);
case 10:
return new ItemStack(Block.deadBush);
case 11:
return new ItemStack(Block.tallGrass, 1, 2);
default:
return null;
}
}
public static int getMetaForPlant(ItemStack par0ItemStack)
{
int i = par0ItemStack.getItem().itemID;
if (i == Block.plantRed.blockID)
{
return 1;
}
else if (i == Block.plantYellow.blockID)
{
return 2;
}
else if (i == Block.cactus.blockID)
{
return 9;
}
else if (i == Block.mushroomBrown.blockID)
{
return 8;
}
else if (i == Block.mushroomRed.blockID)
{
return 7;
}
else if (i == Block.deadBush.blockID)
{
return 10;
}
else
{
if (i == Block.sapling.blockID)
{
switch (par0ItemStack.getItemDamage())
{
case 0:
return 3;
case 1:
return 4;
case 2:
return 5;
case 3:
return 6;
}
}
if (i == Block.tallGrass.blockID)
{
switch (par0ItemStack.getItemDamage())
{
case 2:
return 11;
}
}
return 0;
}
}
}
the same happens with saplings.
i hope you guys can help me with a fix, this issue has been delaying me for 3 days already.
thanks in advance.