Вверх ↑
Этот топик читают: Гость
Ответов: 4557
#1: 2014-11-30 18:51:46 ЛС | профиль | цитата
  Дабы не занимать свободные ID, была введена метадата.
Метадата позволяет держать на 1 ID множество блоков/предметов.

Для начала работы создадим файл BlockMetadata.java в net/minecraft/src. Это будет обычный камень, но с метадатой. В качестве метадаты возьмем кирпичи, булыжник, треснутый замшелый кирпич.
BlockMetadata.java


package net.minecraft.src;


import java.util.Random;

public class BlockMetadata extends Block
{

public BlockMetadata(int par1)
{
super(par1, Material.rock);
this.setCreativeTab(CreativeTabs.tabBlock);
}

}

Теперь непосредственно подключаем метадату.



package net.minecraft.src;


import java.util.List;

public class BlockMetadata extends Block
{
public static final String[] blockTypes = new String[] {"stone", "brick", "cobblestone", "stonebrickscracked"};
public static final String[] blockTexture = new String[] {"stone", "brick", "cobblestone", "stonebricksmooth_cracked"};
private Icon[] field_94408_c;

public BlockStoneBrick(int par1)
{
super(par1, Material.rock);
this.setCreativeTab(CreativeTabs.tabBlock);
}

public Icon getIcon(int par1, int par2)
{
if (par2 ‹ 0 || par2 ›= blockTexture.length)
{
par2 = 0;
}

return this.field_94408_c[par2];
}

public int damageDropped(int par1)
{
return par1;
}

public void getSubBlocks(int par1, CreativeTabs par2CreativeTabs, List par3List)
{
for (int var4 = 0; var4 ‹ 4; ++var4)
{
par3List.add(new ItemStack(par1, 1, var4));
}
}

public void registerIcons(IconRegister par1IconRegister)
{
this.field_94408_c = new Icon[blockTexture.length];

for (int var2 = 0; var2 ‹ this.field_94408_c.length; ++var2)
{
this.field_94408_c[var2] = par1IconRegister.registerIcon(blockTexture[var2]);
}
}
}


Разберем:


  public static final String[] blockTypes = new String[] {"stone", "brick", "cobblestone", "stonebrickscracked"};

public static final String[] blockTexture = new String[] {"stone", "brick", "cobblestone", "stonebricksmooth_cracked"};

Типы блоков и текстуры




    public Icon getIcon(int par1, int par2)

{
if (par2 ‹ 0 || par2 ›= blockTexture.length)
{
par2 = 0;
}

return this.field_94408_c[par2];
}
Получаем текстуры блоков


  public void getSubBlocks(int par1, CreativeTabs par2CreativeTabs, List par3List)

{
for (int var4 = 0; var4 ‹ 4; ++var4)
{
par3List.add(new ItemStack(par1, 1, var4));
}
}
Метадата. Здесь 4 блока.


public void registerIcons(IconRegister par1IconRegister)

{
this.field_94408_c = new Icon[blockTexture.length];

for (int var2 = 0; var2 ‹ this.field_94408_c.length; ++var2)
{
this.field_94408_c[var2] = par1IconRegister.registerIcon(blockTexture[var2]);
}
}
Присваиваем блокам текстуры

Отправляемся в Block.java и вписываем наш блок



 public static final Block metadata = (new BlockMetadata(169)).setHardness(2.0F).setResistance(10.0F).setStepSound(soundStoneFootstep).setUnlocalizedName("metadata").setCreativeTab(CreativeTabs.tabBlock);


и внизу прописываем, что блок имеет метадату

  Item.itemsList[metadata.blockID] = (new ItemMultiTextureTile(metadata.blockID - 256, metadata, BlockMetadata.blockTypes)).setUnlocalizedName("metadata");


Готово. Теперь у нас появились 4 блока, находящиеся под 1 ID

В слудующий раз рассмотрим пример с предметами.
карма: 6
4
Голосовали:pTawka, maus23645, OTBETCTBEHHblN, SuperSs
Ответов: 815
NeverClan
Assistants
#2: 2014-11-30 23:25:56 ЛС | профиль | цитата
Как сказано, при новом релизе МК была убрана метадата. По мнению разрабов, метадата была большой ошибкой.
Убрав метаданные расширили пул блоков до 4096. Вместо 256.
карма: 44
Строил спауны еще до того как открыли Guest
0
Ответов: 4557
#3: 2014-11-30 23:32:19 ЛС | профиль | цитата
В 1.8 вроде нет айди, видел такие слова на форуме разрабов
карма: 6
0
Ответов: 815
NeverClan
Assistants
#4: 2014-11-30 23:33:31 ЛС | профиль | цитата
По поводу того что вернули, я в курсе не был. Причина известна? Возможно это временно.
карма: 44
Строил спауны еще до того как открыли Guest
0
Ответов: 4557
#5: 2014-11-30 23:34:17 ЛС | профиль | цитата
backdafackup, речь идёт о каких версиях? На 1.5.2 спокойно идёт метадата
карма: 6
0
Ответов: 815
NeverClan
Assistants
#6: 2014-12-05 13:17:01 ЛС | профиль | цитата
1.6+ на сколько я помню. Если ничего не путаю.
карма: 44
Строил спауны еще до того как открыли Guest
0
6
Сообщение
...