Jump to content

[SOLVED] [1.7.2] Custom Furnace won't render in inventory.


Mattkx10

Recommended Posts

Alright so the problem that I'm having is that when inside the player inventory my custom furnace won't render properly. Instead it will show the top texture instead of the front.

 

I've searched for a while now, but haven't found anything! ANY help is appreciated! Thanks in Advance!

 

SRC CODE

Main Class File:

 

package com.volt.dev.morefurnaces.main;

import net.minecraft.block.Block;
import net.minecraft.creativetab.CreativeTabs;
import net.minecraft.init.Blocks;
import net.minecraft.init.Items;
import net.minecraft.item.Item;
import net.minecraft.item.ItemStack;

import com.volt.dev.core.CommonProxy;
import com.volt.dev.morefurnaces.creativetab.FurnaceTab;
import com.volt.dev.morefurnaces.creativetab.placeholder.FurnaceTabPH;
import com.volt.dev.morefurnaces.diamondfurnace.DiamondOven;
import com.volt.dev.morefurnaces.diamondfurnace.RenderDiamondOven;
import com.volt.dev.morefurnaces.diamondfurnace.TileEntityDiamondOven;
import com.volt.dev.morefurnaces.goldfurnace.GoldOven;
import com.volt.dev.morefurnaces.goldfurnace.RenderGoldOven;
import com.volt.dev.morefurnaces.goldfurnace.TileEntityGoldOven;
import com.volt.dev.morefurnaces.ironfurnace.IronOven;
import com.volt.dev.morefurnaces.ironfurnace.RenderIronOven;
import com.volt.dev.morefurnaces.ironfurnace.TileEntityIronOven;

import cpw.mods.fml.client.registry.RenderingRegistry;
import cpw.mods.fml.common.Mod;
import cpw.mods.fml.common.Mod.EventHandler;
import cpw.mods.fml.common.Mod.Instance;
import cpw.mods.fml.common.SidedProxy;
import cpw.mods.fml.common.event.FMLInitializationEvent;
import cpw.mods.fml.common.event.FMLPostInitializationEvent;
import cpw.mods.fml.common.network.NetworkRegistry;
import cpw.mods.fml.common.registry.GameRegistry;

@Mod(modid = "MoreFurnaces", name = "Mo' Furnaces", version = "1.1.2")
public class MoreFurnaces {
@SidedProxy(clientSide = "com.volt.dev.core.client.ClientProxy", serverSide = "com.volt.dev.core.CommonProxy")
public static CommonProxy proxy;
@Instance("MoreFurnaces")
public static MoreFurnaces instance;

// Creative Tab
public static CreativeTabs furnaceTab;
public static Item furnaceTabPH;

// Iron Furnace
public static Block ironOven;
public static Block ironOvenActive;

// Gold Furnace
public static Block goldOven;
public static Block goldOvenActive;

// Diamond Furnace
public static Block diamondOven;
public static Block diamondOvenActive;

@EventHandler
public void load(FMLInitializationEvent event) {
	// Creative Tab
	furnaceTab = new FurnaceTab(CreativeTabs.getNextID(), "FurnaceTab");
	furnaceTabPH = new FurnaceTabPH(3006).setUnlocalizedName("FurnaceTabPH").setTextureName("MoreFurnaces:FurnaceTabPH");

	GameRegistry.registerItem(furnaceTabPH, "FurnaceTabPH");

	// Iron Furnace
	ironOven = new IronOven(3000, false).setHardness(4.0F).setResistance(15.0F).setBlockName("ironOven").setCreativeTab(furnaceTab);
	ironOvenActive = new IronOven(3001, true).setHardness(4.0F).setResistance(15.0F).setBlockName("ironOvenActive");

	GameRegistry.registerBlock(ironOven, "ironOven");
	GameRegistry.registerBlock(ironOvenActive, "ironOvenActive");

	GameRegistry.registerTileEntity(TileEntityIronOven.class, "tileEntityIronOven");
	GameRegistry.addRecipe(new ItemStack(ironOven, 1), new Object[] {
		"AAA",
		"A A",
		"AAA",
		'A', Items.iron_ingot
	});
	GameRegistry.addRecipe(new ItemStack(ironOven, 1), new Object[] {
		"AAA",
		"ABA",
		"AAA",
		'A', Items.iron_ingot, 'B', Blocks.furnace
	});

	RenderingRegistry.registerBlockHandler(2105, RenderIronOven.INSTANCE);

	//Gold Furnace
	goldOven = new GoldOven(3002, false).setHardness(2.0F).setResistance(5.0F).setBlockName("goldOven").setCreativeTab(furnaceTab);
	goldOvenActive = new GoldOven(3003, true).setHardness(2.0F).setResistance(5.0F).setBlockName("goldOvenActive");

	GameRegistry.registerBlock(goldOven, "goldOven");
	GameRegistry.registerBlock(goldOvenActive, "goldOvenActive");

	GameRegistry.registerTileEntity(TileEntityGoldOven.class, "tileEntityGoldOven");
	GameRegistry.addRecipe(new ItemStack(goldOven, 1), new Object[] {
		"AAA",
		"A A",
		"AAA",
		'A', Items.gold_ingot
	});
	GameRegistry.addRecipe(new ItemStack(goldOven, 1), new Object[] {
		"AAA",
		"ABA",
		"AAA",
		'A', Items.gold_ingot, 'B', Blocks.furnace
	});

	RenderingRegistry.registerBlockHandler(2106, RenderGoldOven.INSTANCE);

	// Diamond Furnace
	diamondOven = new DiamondOven(3004, false).setHardness(6.0F).setResistance(20.0F).setBlockName("diamondOven").setCreativeTab(furnaceTab);
	diamondOvenActive = new DiamondOven(3005, true).setHardness(6.0F).setResistance(20.0F).setBlockName("diamondOvenActive");

	GameRegistry.registerBlock(diamondOven, "diamondOven");
	GameRegistry.registerBlock(diamondOvenActive, "diamondOvenActive");

	GameRegistry.registerTileEntity(TileEntityDiamondOven.class, "tileEntityDiamondOven");
	GameRegistry.addRecipe(new ItemStack(diamondOven, 1), new Object[] {
		"AAA",
		"A A",
		"AAA",
		'A', Items.diamond
	});
	GameRegistry.addRecipe(new ItemStack(diamondOven, 1), new Object[] {
		"AAA",
		"ABA",
		"AAA",
		'A', Items.diamond, 'B', Blocks.furnace
	});

	RenderingRegistry.registerBlockHandler(2107, RenderDiamondOven.INSTANCE);
	NetworkRegistry.INSTANCE.registerGuiHandler(instance, new GuiHandlerFurnace());
}

@EventHandler
public void PostInit(FMLPostInitializationEvent event)
{

}
}

 

 

IronOven Block Class:

 

package com.volt.dev.morefurnaces.ironfurnace;

import java.util.Random;

import net.minecraft.block.Block;
import net.minecraft.block.BlockContainer;
import net.minecraft.block.material.Material;
import net.minecraft.client.renderer.Tessellator;
import net.minecraft.client.renderer.texture.IIconRegister;
import net.minecraft.entity.EntityLivingBase;
import net.minecraft.entity.item.EntityItem;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.init.Blocks;
import net.minecraft.inventory.Container;
import net.minecraft.inventory.IInventory;
import net.minecraft.item.Item;
import net.minecraft.item.ItemStack;
import net.minecraft.nbt.NBTTagCompound;
import net.minecraft.tileentity.TileEntity;
import net.minecraft.util.IIcon;
import net.minecraft.util.MathHelper;
import net.minecraft.world.World;

import com.volt.dev.morefurnaces.main.MoreFurnaces;

import cpw.mods.fml.relauncher.Side;
import cpw.mods.fml.relauncher.SideOnly;

public class IronOven extends BlockContainer
{
    private final Random field_149933_a = new Random();
    private final boolean field_149932_b;
    private static boolean field_149934_M;
    @SideOnly(Side.CLIENT)
    private IIcon field_149935_N;
    @SideOnly(Side.CLIENT)
    private IIcon field_149936_O;
    private static final String __OBFID = "CL_00000248";

    public IronOven(int i, boolean p_i45407_1_)
    {
        super(Material.rock);
        this.field_149932_b = p_i45407_1_;
    }

    public Item getItemDropped(int p_149650_1_, Random p_149650_2_, int p_149650_3_)
    {
        return Item.getItemFromBlock(MoreFurnaces.ironOven);
    }

    /**
     * Called whenever the block is added into the world. Args: world, x, y, z
     */
    public void onBlockAdded(World p_149726_1_, int p_149726_2_, int p_149726_3_, int p_149726_4_)
    {
        super.onBlockAdded(p_149726_1_, p_149726_2_, p_149726_3_, p_149726_4_);
        this.func_149930_e(p_149726_1_, p_149726_2_, p_149726_3_, p_149726_4_);
    }

    private void func_149930_e(World p_149930_1_, int p_149930_2_, int p_149930_3_, int p_149930_4_)
    {
        if (!p_149930_1_.isRemote)
        {
            Block block = p_149930_1_.getBlock(p_149930_2_, p_149930_3_, p_149930_4_ - 1);
            Block block1 = p_149930_1_.getBlock(p_149930_2_, p_149930_3_, p_149930_4_ + 1);
            Block block2 = p_149930_1_.getBlock(p_149930_2_ - 1, p_149930_3_, p_149930_4_);
            Block block3 = p_149930_1_.getBlock(p_149930_2_ + 1, p_149930_3_, p_149930_4_);
            byte b0 = 3;

            if (block.func_149730_j() && !block1.func_149730_j())
            {
                b0 = 3;
            }

            if (block1.func_149730_j() && !block.func_149730_j())
            {
                b0 = 2;
            }

            if (block2.func_149730_j() && !block3.func_149730_j())
            {
                b0 = 5;
            }

            if (block3.func_149730_j() && !block2.func_149730_j())
            {
                b0 = 4;
            }

            p_149930_1_.setBlockMetadataWithNotify(p_149930_2_, p_149930_3_, p_149930_4_, b0, 2);
        }
    }

    /**
     * Gets the block's texture. Args: side, meta
     */
    @SideOnly(Side.CLIENT)
    public IIcon getIcon(int p_149691_1_, int p_149691_2_)
    {
        return p_149691_1_ == 1 ? this.field_149935_N : (p_149691_1_ == 0 ? this.field_149935_N : (p_149691_1_ != p_149691_2_ ? this.blockIcon : this.field_149936_O));
    }

    @SideOnly(Side.CLIENT)
    public void registerBlockIcons(IIconRegister p_149651_1_)
    {
        this.blockIcon = p_149651_1_.registerIcon("MoreFurnaces:IronFurnace_side");
        this.field_149936_O = p_149651_1_.registerIcon(this.field_149932_b ? "MoreFurnaces:IronFurnace_front_active" : "MoreFurnaces:IronFurnace_front_idle");
        this.field_149935_N = p_149651_1_.registerIcon("MoreFurnaces:IronFurnace_side");
    }

    /**
     * Called upon block activation (right click on the block.)
     */
    /*public boolean onBlockActivated(World p_149727_1_, int p_149727_2_, int p_149727_3_, int p_149727_4_, EntityPlayer p_149727_5_, int p_149727_6_, float p_149727_7_, float p_149727_8_, float p_149727_9_)
    {
        if (p_149727_1_.isRemote)
        {
            return true;
        }
        else
        {
            TileEntityIronOvenIdle tileentityfurnace = (TileEntityIronOvenIdle)p_149727_1_.getTileEntity(p_149727_2_, p_149727_3_, p_149727_4_);

            if (tileentityfurnace != null)
            {
                p_149727_5_.func_146101_a(tileentityfurnace);
            }

            return true;
        }
    }*/
    
    public boolean onBlockActivated(World par1World, int par2, int par3, int par4, EntityPlayer par5EntityPlayer, int par6, float par7, float par8, float par9)
    {
    	if (par1World.isRemote)
    	{
    		return true;
    	}
    	else if (!par5EntityPlayer.isSneaking())
    	{
    		TileEntityIronOven var10 = (TileEntityIronOven) par1World.getTileEntity(par2, par3, par4);
    		if (var10 != null)
    		{
    			par5EntityPlayer.openGui(MoreFurnaces.instance, 0, par1World, par2, par3, par4);
    		}
    		return true;
    	}
    	else
    	{
    		return false;
    	}
    }

    /**
     * Update which block the furnace is using depending on whether or not it is burning
     */
    public static void updateFurnaceBlockState(boolean p_149931_0_, World p_149931_1_, int p_149931_2_, int p_149931_3_, int p_149931_4_)
    {
        int l = p_149931_1_.getBlockMetadata(p_149931_2_, p_149931_3_, p_149931_4_);
        TileEntity tileentity = p_149931_1_.getTileEntity(p_149931_2_, p_149931_3_, p_149931_4_);
        field_149934_M = true;

        if (p_149931_0_)
        {
            p_149931_1_.setBlock(p_149931_2_, p_149931_3_, p_149931_4_, MoreFurnaces.ironOvenActive);
        }
        else
        {
            p_149931_1_.setBlock(p_149931_2_, p_149931_3_, p_149931_4_, MoreFurnaces.ironOven);
        }

        field_149934_M = false;
        p_149931_1_.setBlockMetadataWithNotify(p_149931_2_, p_149931_3_, p_149931_4_, l, 2);

        if (tileentity != null)
        {
            tileentity.validate();
            p_149931_1_.setTileEntity(p_149931_2_, p_149931_3_, p_149931_4_, tileentity);
        }
    }

    /**
     * Returns a new instance of a block's tile entity class. Called on placing the block.
     */
    public TileEntity createNewTileEntity(World p_149915_1_, int p_149915_2_)
    {
        return new TileEntityIronOven();
    }

    /**
     * Called when the block is placed in the world.
     */
    public void onBlockPlacedBy(World p_149689_1_, int p_149689_2_, int p_149689_3_, int p_149689_4_, EntityLivingBase p_149689_5_, ItemStack p_149689_6_)
    {
        int l = MathHelper.floor_double((double)(p_149689_5_.rotationYaw * 4.0F / 360.0F) + 0.5D) & 3;

        if (l == 0)
        {
            p_149689_1_.setBlockMetadataWithNotify(p_149689_2_, p_149689_3_, p_149689_4_, 2, 2);
        }

        if (l == 1)
        {
            p_149689_1_.setBlockMetadataWithNotify(p_149689_2_, p_149689_3_, p_149689_4_, 5, 2);
        }

        if (l == 2)
        {
            p_149689_1_.setBlockMetadataWithNotify(p_149689_2_, p_149689_3_, p_149689_4_, 3, 2);
        }

        if (l == 3)
        {
            p_149689_1_.setBlockMetadataWithNotify(p_149689_2_, p_149689_3_, p_149689_4_, 4, 2);
        }

        if (p_149689_6_.hasDisplayName())
        {
            ((TileEntityIronOven)p_149689_1_.getTileEntity(p_149689_2_, p_149689_3_, p_149689_4_)).func_145951_a(p_149689_6_.getDisplayName());
        }
    }

    public void breakBlock(World p_149749_1_, int p_149749_2_, int p_149749_3_, int p_149749_4_, Block p_149749_5_, int p_149749_6_)
    {
        if (!field_149934_M)
        {
            TileEntityIronOven tileentityironovenidle = (TileEntityIronOven)p_149749_1_.getTileEntity(p_149749_2_, p_149749_3_, p_149749_4_);

            if (tileentityironovenidle != null)
            {
                for (int i1 = 0; i1 < tileentityironovenidle.getSizeInventory(); ++i1)
                {
                    ItemStack itemstack = tileentityironovenidle.getStackInSlot(i1);

                    if (itemstack != null)
                    {
                        float f = this.field_149933_a.nextFloat() * 0.8F + 0.1F;
                        float f1 = this.field_149933_a.nextFloat() * 0.8F + 0.1F;
                        float f2 = this.field_149933_a.nextFloat() * 0.8F + 0.1F;

                        while (itemstack.stackSize > 0)
                        {
                            int j1 = this.field_149933_a.nextInt(21) + 10;

                            if (j1 > itemstack.stackSize)
                            {
                                j1 = itemstack.stackSize;
                            }

                            itemstack.stackSize -= j1;
                            EntityItem entityitem = new EntityItem(p_149749_1_, (double)((float)p_149749_2_ + f), (double)((float)p_149749_3_ + f1), (double)((float)p_149749_4_ + f2), new ItemStack(itemstack.getItem(), j1, itemstack.getItemDamage()));

                            if (itemstack.hasTagCompound())
                            {
                                entityitem.getEntityItem().setTagCompound((NBTTagCompound)itemstack.getTagCompound().copy());
                            }

                            float f3 = 0.05F;
                            entityitem.motionX = (double)((float)this.field_149933_a.nextGaussian() * f3);
                            entityitem.motionY = (double)((float)this.field_149933_a.nextGaussian() * f3 + 0.2F);
                            entityitem.motionZ = (double)((float)this.field_149933_a.nextGaussian() * f3);
                            p_149749_1_.spawnEntityInWorld(entityitem);
                        }
                    }
                }

                p_149749_1_.func_147453_f(p_149749_2_, p_149749_3_, p_149749_4_, p_149749_5_);
            }
        }

        super.breakBlock(p_149749_1_, p_149749_2_, p_149749_3_, p_149749_4_, p_149749_5_, p_149749_6_);
    }

    /**
     * A randomly called display update to be able to add particles or other items for display
     */
    @SideOnly(Side.CLIENT)
    public void randomDisplayTick(World p_149734_1_, int p_149734_2_, int p_149734_3_, int p_149734_4_, Random p_149734_5_)
    {
        if (this.field_149932_b)
        {
            int l = p_149734_1_.getBlockMetadata(p_149734_2_, p_149734_3_, p_149734_4_);
            float f = (float)p_149734_2_ + 0.5F;
            float f1 = (float)p_149734_3_ + 0.0F + p_149734_5_.nextFloat() * 6.0F / 16.0F;
            float f2 = (float)p_149734_4_ + 0.5F;
            float f3 = 0.52F;
            float f4 = p_149734_5_.nextFloat() * 0.6F - 0.3F;

            if (l == 4)
            {
                p_149734_1_.spawnParticle("smoke", (double)(f - f3), (double)f1, (double)(f2 + f4), 0.0D, 0.0D, 0.0D);
                p_149734_1_.spawnParticle("flame", (double)(f - f3), (double)f1, (double)(f2 + f4), 0.0D, 0.0D, 0.0D);
            }
            else if (l == 5)
            {
                p_149734_1_.spawnParticle("smoke", (double)(f + f3), (double)f1, (double)(f2 + f4), 0.0D, 0.0D, 0.0D);
                p_149734_1_.spawnParticle("flame", (double)(f + f3), (double)f1, (double)(f2 + f4), 0.0D, 0.0D, 0.0D);
            }
            else if (l == 2)
            {
                p_149734_1_.spawnParticle("smoke", (double)(f + f4), (double)f1, (double)(f2 - f3), 0.0D, 0.0D, 0.0D);
                p_149734_1_.spawnParticle("flame", (double)(f + f4), (double)f1, (double)(f2 - f3), 0.0D, 0.0D, 0.0D);
            }
            else if (l == 3)
            {
                p_149734_1_.spawnParticle("smoke", (double)(f + f4), (double)f1, (double)(f2 + f3), 0.0D, 0.0D, 0.0D);
                p_149734_1_.spawnParticle("flame", (double)(f + f4), (double)f1, (double)(f2 + f3), 0.0D, 0.0D, 0.0D);
            }
        }
    }

    /**
     * If this returns true, then comparators facing away from this block will use the value from
     * getComparatorInputOverride instead of the actual redstone signal strength.
     */
    public boolean hasComparatorInputOverride()
    {
        return true;
    }

    /**
     * If hasComparatorInputOverride returns true, the return value from this is used instead of the redstone signal
     * strength when this block inputs to a comparator.
     */
    public int getComparatorInputOverride(World p_149736_1_, int p_149736_2_, int p_149736_3_, int p_149736_4_, int p_149736_5_)
    {
        return Container.calcRedstoneFromInventory((IInventory)p_149736_1_.getTileEntity(p_149736_2_, p_149736_3_, p_149736_4_));
    }

    /**
     * Gets an item for the block being called on. Args: world, x, y, z
     */
    @SideOnly(Side.CLIENT)
    public Item getItem(World p_149694_1_, int p_149694_2_, int p_149694_3_, int p_149694_4_)
    {
        return Item.getItemFromBlock(MoreFurnaces.ironOven);
    }
}

 

 

RenderIronOven Class:

 

package com.volt.dev.morefurnaces.ironfurnace;

import net.minecraft.block.Block;
import net.minecraft.client.renderer.RenderBlocks;
import net.minecraft.client.renderer.Tessellator;
import net.minecraft.world.IBlockAccess;

import org.lwjgl.opengl.GL11;

import com.volt.dev.morefurnaces.main.MoreFurnaces;

import cpw.mods.fml.client.registry.ISimpleBlockRenderingHandler;

public class RenderIronOven implements ISimpleBlockRenderingHandler
{
public static final RenderIronOven INSTANCE = new RenderIronOven();
	@Override
	public void renderInventoryBlock(Block block, int metadata, int modelID, RenderBlocks renderer)
	{
		int meta=3;
		if (block.getIdFromBlock(block) == MoreFurnaces.diamondOvenActive.getIdFromBlock(MoreFurnaces.diamondOvenActive))meta=1;
		Tessellator tessellator = Tessellator.instance;
		block.setBlockBoundsForItemRender();
		renderer.setRenderBoundsFromBlock(block);
		GL11.glRotatef(90.0F, 0.0F, 1.0F, 0.0F);
		GL11.glTranslatef(-0.5F, -0.5F, -0.5F);
		tessellator.startDrawingQuads();
		tessellator.setNormal(0.0F, -1.0F, 0.0F);
		renderer.renderFaceYNeg(block, 0.0D, 0.0D, 0.0D, renderer.getBlockIconFromSideAndMetadata(block, 0, meta));
		tessellator.draw();
		tessellator.startDrawingQuads();
		tessellator.setNormal(0.0F, 1.0F, 0.0F);
		renderer.renderFaceYPos(block, 0.0D, 0.0D, 0.0D, renderer.getBlockIconFromSideAndMetadata(block, 1, meta));
		tessellator.draw();
		tessellator.startDrawingQuads();
		tessellator.setNormal(0.0F, 0.0F, -1.0F);
		renderer.renderFaceZNeg(block, 0.0D, 0.0D, 0.0D, renderer.getBlockIconFromSideAndMetadata(block, 2, meta));
		tessellator.draw();
		tessellator.startDrawingQuads();
		tessellator.setNormal(0.0F, 0.0F, 1.0F);
		renderer.renderFaceZPos(block, 0.0D, 0.0D, 0.0D, renderer.getBlockIconFromSideAndMetadata(block, 3, meta));
		tessellator.draw();
		tessellator.startDrawingQuads();
		tessellator.setNormal(-1.0F, 0.0F, 0.0F);
		renderer.renderFaceXNeg(block, 0.0D, 0.0D, 0.0D, renderer.getBlockIconFromSideAndMetadata(block, 4, meta));
		tessellator.draw();
		tessellator.startDrawingQuads();
		tessellator.setNormal(1.0F, 0.0F, 0.0F);
		renderer.renderFaceXPos(block, 0.0D, 0.0D, 0.0D, renderer.getBlockIconFromSideAndMetadata(block, 5, meta));
		tessellator.draw();
		GL11.glTranslatef(0.5F, 0.5F, 0.5F);
	}
	@Override
	public boolean renderWorldBlock(IBlockAccess world, int x, int y, int z, Block block, int modelId, RenderBlocks renderer)
	{
		int direction = renderer.blockAccess.getBlockMetadata(x, y, z) & 3;
		if (direction > 0)
		{
			renderer.uvRotateTop = direction - 1;
		}
		else
		{
			renderer.uvRotateTop = 3;
		}
		boolean flag = renderer.renderStandardBlock(block, x, y, z);
		renderer.uvRotateTop = 0;
		return flag;
	}

	@Override
	public int getRenderId()
	{
		return 2105;
	}
	@Override
	public boolean shouldRender3DInInventory(int modelId) {
		return true;
	}
}

 

Check out my website at:

 

http://mattkx4.github.io/

Link to comment
Share on other sites

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



×
×
  • Create New...

Important Information

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