Вообщем нашёл два способа создать блок с разносторонней текстурой. Но какой лучше и чем?
1 С вики:
2 Нашёл на форуме. Что то вроде этого
1 С вики:
2 Нашёл на форуме. Что то вроде этого
Код:
package taogunner.taomod.block;
import net.minecraft.block.Block;
import net.minecraft.block.material.Material;
import net.minecraft.client.renderer.texture.IIconRegister;
import net.minecraft.creativetab.CreativeTabs;
import net.minecraft.entity.EntityLivingBase;
import net.minecraft.item.ItemStack;
import net.minecraft.util.IIcon;
import net.minecraft.util.MathHelper;
import net.minecraft.world.World;
import taogunner.taomod.TaoModMain;
import cpw.mods.fml.relauncher.Side;
import cpw.mods.fml.relauncher.SideOnly;
public class BlockTest extends Block
{
@SideOnly(Side.CLIENT)
// Объявляем текстуры для сторон
protected IIcon BlockIconFront;
protected IIcon BlockIconSide;
protected IIcon BlockIconTop;
// Конструктор класса
public BlockTest(Material material)
{
super(material);
// Указываем вкладку креатива, в которой будет наш блок (вкладка Блоки, можно указать любую)
this.setCreativeTab(CreativeTabs.tabBlock);
// Указываем имя для блока (понадобится для локализации)
this.setBlockName(TaoModMain.MODID + "." + "testblock");
}
@SideOnly(Side.CLIENT)
@Override
public void registerBlockIcons(IIconRegister par1IconRegister)
{
// Регистрируем путь до png-текстур для разных сторон блока
BlockIconFront = par1IconRegister.registerIcon(TaoModMain.MODID + ":" + "testblock_front");
BlockIconSide = par1IconRegister.registerIcon(TaoModMain.MODID + ":" + "testblock_side");
BlockIconTop = par1IconRegister.registerIcon(TaoModMain.MODID + ":" + "testblock_top");
}
@SideOnly(Side.CLIENT)
@Override
public IIcon getIcon(int par1int, int par2int)
{
// par1int - это номер стороны от 0 до 5
// 0 - низ; 1- верх; 2,3,4,5 - стороны
// par2int - это метадата стороны
if (par1int == 0 || par1int == 1) { return BlockIconTop; }
else if (par1int != par2int) { return BlockIconSide; }
else { return BlockIconFront; }
}
// Этот метод вызывается когда блок ставится кем-то
@Override
public void onBlockPlacedBy(World par1World, int par2int, int par3int, int par4int, EntityLivingBase par5EntityLivingBase, ItemStack par6ItemStack)
{
// Это - хитрая функция, которая определяет куда смотрел игрок, когда ставил
int i = MathHelper.floor_double((double)(par5EntityLivingBase.rotationYaw * 4.0F / 360.0F) + 0.5D) & 3;
// Тут мы меняем метадату нужной стороны, чтобы getIcon() потом покрасил эту сторону по-другому
// setBlockMetadataWithNotify(x, y, z, номер стороны, 2 - хз оно так в оригинале);
switch (i)
{
case 0: par1World.setBlockMetadataWithNotify(par2int, par3int, par4int, 2, 2); break;
case 1: par1World.setBlockMetadataWithNotify(par2int, par3int, par4int, 5, 2); break;
case 2: par1World.setBlockMetadataWithNotify(par2int, par3int, par4int, 3, 2); break;
case 3: par1World.setBlockMetadataWithNotify(par2int, par3int, par4int, 4, 2); break;
}
}
}