Как создать блок с разными тектурами?

Версия Minecraft
1.7.10

Den

17
0
Ребят, столкнулся с проблемой, как создать блок с разными текстурами, помогите, а то на вики не очень понятно
 
Решение
Нет. В setBlockTextureName мы указываем основное название (с modid'ом) текстуры (или даже можно без неё). Но главное зарегистрировать текстуры в ir.registerIcon(...) с нужным именем.
Т.е. можно было написать так:
Код:
public class BlockTest extends Block {

public BlockTest() {
super(Material.wood);
}

IIcon[] icons = new IIcon[6];

@SideOnly(Side.CLIENT)
@Override
public IIcon getIcon(int side, int meta) {
return icons[side];
}

@SideOnly(Side.CLIENT)
@Override
public void registerBlockIcons(IIconRegister ir) {
for (int i = 0; i < icons.length; ++i)
icons[i] = ir.registerIcon("modid:texture_" + i);
}

}

timaxa007

Модератор
5,831
409
672
Код:
public class BlockTest extends Block {

	public BlockTest() {
		super(Material.wood);
		setBlockTextureName("modid:texture");
	}

	IIcon[] icons = new IIcon[6];

	@SideOnly(Side.CLIENT)
	@Override
	public IIcon getIcon(int side, int meta) {
		return icons[side];
	}

	@SideOnly(Side.CLIENT)
	@Override
	public void registerBlockIcons(IIconRegister ir) {
		for (int i = 0; i < icons.length; ++i)
			icons[i] = ir.registerIcon(getTextureName() + "_" + i);
	}

}


modid:texture_0
modid:texture_1
modid:texture_2
modid:texture_3
modid:texture_4
modid:texture_5
 

Den

17
0
timaxa007 написал(а):
Код:
public class BlockTest extends Block {

 public BlockTest() {
 super(Material.wood);
 setBlockTextureName("modid:texture");
 }

 IIcon[] icons = new IIcon[6];

 @SideOnly(Side.CLIENT)
 @Override
 public IIcon getIcon(int side, int meta) {
 return icons[side];
 }

 @SideOnly(Side.CLIENT)
 @Override
 public void registerBlockIcons(IIconRegister ir) {
 for (int i = 0; i < icons.length; ++i)
 icons[i] = ir.registerIcon(getTextureName() + "_" + i);
 }

}


modid:texture_0
modid:texture_1
modid:texture_2
modid:texture_3
modid:texture_4
modid:texture_5


спасибо, где modid:texture_0 и тд куда вписывать?
 

timaxa007

Модератор
5,831
409
672

Den

17
0
timaxa007 написал(а):
Den написал(а):
Пожалуйста.

Den написал(а):
где modid:texture_0 и тд куда вписывать?
Ни куда это ты чтобы понял, что у тебя для мода modid будут текстуры texture_n.png, где n это число от 0 до 5.
получается, мне нужно 6 раз прописать this.setBlockTextureName("modid:имя_текстуры); ?
 

timaxa007

Модератор
5,831
409
672
Нет. В setBlockTextureName мы указываем основное название (с modid'ом) текстуры (или даже можно без неё). Но главное зарегистрировать текстуры в ir.registerIcon(...) с нужным именем.
Т.е. можно было написать так:
Код:
public class BlockTest extends Block {

public BlockTest() {
super(Material.wood);
}

IIcon[] icons = new IIcon[6];

@SideOnly(Side.CLIENT)
@Override
public IIcon getIcon(int side, int meta) {
return icons[side];
}

@SideOnly(Side.CLIENT)
@Override
public void registerBlockIcons(IIconRegister ir) {
for (int i = 0; i < icons.length; ++i)
icons[i] = ir.registerIcon("modid:texture_" + i);
}

}
 

Den

17
0
timaxa007 написал(а):
Нет. В setBlockTextureName мы указываем основное название (с modid'ом) текстуры (или даже можно без неё). Но главное зарегистрировать текстуры в ir.registerIcon(...) с нужным именем.
Т.е. можно было написать так:
Код:
public class BlockTest extends Block {

public BlockTest() {
super(Material.wood);
}

IIcon[] icons = new IIcon[6];

@SideOnly(Side.CLIENT)
@Override
public IIcon getIcon(int side, int meta) {
return icons[side];
}

@SideOnly(Side.CLIENT)
@Override
public void registerBlockIcons(IIconRegister ir) {
for (int i = 0; i < icons.length; ++i)
icons[i] = ir.registerIcon("modid:texture_" + i);
}

}
БоЛлЛшШуУщЩЕеЕ
 Спасибо
 
Сверху