Метадата

509
2
Я-чайник!:getlost: Блин если с метадатой итема всё ясно и понятно, то с блоком.:mad: Мозг не хочет понимать.:(
Вот кому не лень,киньте рабочий код блока с метадатой(нет,не скопировать).:rolleyes: Ибо в видео я теряю ход кода,так сама попробую понять.:ermm:
P.S. вообщем методы почти понятны, но вот не хочет получатся,что-то я упустила,что-то важное.:wassat:
Смааааааааайлы, больше смайлов

UPDATE:
Заранее благодарю :D
 

timaxa007

Модератор
5,831
409
672
Skarlet, блок стандартно имеет метудату. Просто вопрос в другом: "Что ты хочешь от метадыты?".
 
509
2
timaxa007 написал(а):
Skarlet, блок стандартно имеет метудату. Просто вопрос в другом: "Что ты хочешь от метадыты?".
Допустим мне нужно два вида куста.
 

timaxa007

Модератор
5,831
409
672
Skarlet написал(а):
timaxa007 написал(а):
Skarlet, блок стандартно имеет метудату. Просто вопрос в другом: "Что ты хочешь от метадыты?".
Допустим мне нужно два вида куста.
Пример (на 1.5.2, так как ты не уточнила на какую версию [я только на 1.5.2 могу помочь]):

core.java
Код:
public class core {
@Instance("mod_id") public static core instance;

//public static CreativeTabs tabPlantPack=new TabPlantPack(CreativeTabs.getNextID(), "tabPlantPack");

public static Block blockShrub;
public static int blockShrubblockID;

@Init public void load(FMLInitializationEvent event) {
blockShrub=new BlockShrub(blockShrubblockID);
GameRegistry.registerBlock(blockShrub, ItemBlockShrub.class, "BlockShrub");
}

@PreInit public void preLoad(FMLPreInitializationEvent event) {
Configuration cfg=new Configuration(event.getSuggestedConfigurationFile());
cfg.load();
blockShrubblockID=cfg.getBlock("shrub",2300).getInt();
cfg.save();
}

}

BlockShrub.java
Код:
public class BlockShrub extends Block implements IShearable {

@SideOnly(Side.CLIENT)
private Icon[] iconArray;

public static final String[] shrubTypes=new String[] {
"1",
"2"
};

public BlockShrub(int id) {
super(id, Material.leaves);
this.setStepSound(soundGrassFootstep);
//this.setCreativeTab(core.tabPlantPack);
this.setHardness(0.01F);
this.setResistance(0.0F);
this.setUnlocalizedName("shrub");
}

public boolean isOpaqueCube() {
   return false;
}

public boolean renderAsNormalBlock() {
   return false;
}

public AxisAlignedBB getCollisionBoundingBoxFromPool(World wrd, int x, int y, int z) {
   return null;
}

@SideOnly(Side.CLIENT)
public Icon getIcon(int par1, int par2) {
   return this.iconArray[par2 % this.iconArray.length];
}

public int quantityDropped(Random rdm) {
   return 0;
}

public int idDropped(int par1,Random rdm,int par3) {
   return par1;
}

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

@SideOnly(Side.CLIENT)
public void getSubBlocks(int id, CreativeTabs table, List list) {
for(int j=0; j < shrubTypes.length; ++j) {
   list.add(new ItemStack(id, 1, j));
}
}

@Override 
public ArrayList<ItemStack> getBlockDropped(World wrd, int x, int y, int z, int metadata, int fortune) {
ArrayList<ItemStack> ret=super.getBlockDropped(wrd,x,y,z,metadata,fortune);
ret.add(new ItemStack(core.blockShrub.blockID, 1, metadata));
return ret;
}

@Override
public boolean isShearable(ItemStack is, World wrd, int x, int y, int z) {
   return true;
}

@Override
public ArrayList<ItemStack> onSheared(ItemStack is, World wrd, int x, int y, int z, int fortune) {
ArrayList<ItemStack> ret=new ArrayList<ItemStack>();
   ret.add(new ItemStack(this, 1, wrd.getBlockMetadata(x, y, z) & 15));
return ret;
}

@SideOnly(Side.CLIENT)
public void registerIcons(IconRegister ir) {
this.iconArray=new Icon[shrubTypes.length];
   for(int i=0; i < this.iconArray.length; ++i){
      this.iconArray[i]=ir.registerIcon("mod_id:shrub"+shrubTypes[i]);
   }
}

}
ItemBlockShrub.java
Код:
public class ItemBlockShrub extends ItemMultiTextureTile {
public ItemBlockShrub(int id){
super(id, core.blockShrub, BlockShrub.shrubTypes);
}
 

timaxa007

Модератор
5,831
409
672
Код:
public AxisAlignedBB getCollisionBoundingBoxFromPool(World wrd, int x, int y, int z) {
   return null;
}
Позволяет проходить через кустарник (не могу изменить предыдущий пост, так как теряется при редактирования поста конечная часть).
 
509
2
timaxa007 написал(а):
Код:
public AxisAlignedBB getCollisionBoundingBoxFromPool(World wrd, int x, int y, int z) {
   return null;
}
Позволяет проходить через кустарник (не могу изменить пост, так как теряется при редактирования поста конечная часть).
Спасибо
 
509
2
Кстати вот проверила консоль:
Код:
Found anonymous item of class net.minecraft.item.ItemBlock with ID 3001 owned by mod mymod, this item will NOT survive a 1.7 upgrade!
2014-03-26 18:06:49 [SEVERE] [ForgeModLoader] Found anonymous item of class net.minecraft.item.ItemBlock with ID 3003 owned by mod mymod, this item will NOT survive a 1.7 upgrade!
2014-03-26 18:06:49 [SEVERE] [ForgeModLoader] Found anonymous item of class assets.mymod.src.items.item with ID 3258 owned by mod mymod, this item will NOT survive a 1.7 upgrade!
меня напрягали эти строчки, это вообще что?
 

timaxa007

Модератор
5,831
409
672
Я отвечал для 1.5.2 версии Minecraft, а вот как должно выглядит в 1.7, я не знаю.
 
509
2
timaxa007 написал(а):
Я отвечал для 1.5.2 версии Minecraft, а вот как должно выглядит в 1.7, я не знаю.
но у меня 1.6.4
 
2,955
12
не обращай на это внимание. Тут говориться что твои итемы не выживут в апдейте 1.7, но тебе это не важно (ведь ты на 1.6.4 как я).
 
509
2
Dragon2488 написал(а):
не обращай на это внимание. Тут говориться что твои итемы не выживут в апдейте 1.7, но тебе это не важно (ведь ты на 1.6.4 как я).
А что случится если файл импортировать в 1.7.2?
 
509
2
Dimansel написал(а):
Видимо у твоего итема нет уникального имени, только id, а в 1.7.2 нету id.
Да, да. Вот у меня сейчас беда-проблема. Не локализованное  имя не хочет подразделяться, вот ищу ошибки.
[merge_posts_bbcode]Добавлено: 26.03.2014 21:03:44[/merge_posts_bbcode]

Из-за чего может не вытаскиваться не локализированное имя классом ItemMultiTextureTile?
 

timaxa007

Модератор
5,831
409
672
Код:
tile.shrub.1.name=name1
tile.shrub.2.name=name2
 
509
2
timaxa007 написал(а):
Код:
tile.shrub.1.name=name1
tile.shrub.2.name=name2
а смысл, ведь нелокализованное 1 получилось
tile.shrub.name - вот такое
 

timaxa007

Модератор
5,831
409
672
Skarlet написал(а):
timaxa007 написал(а):
Код:
tile.shrub.1.name=name1
tile.shrub.2.name=name2
а смысл, ведь нелокализованное 1 получилось
tile.shrub.name - вот такое

public static final String[] shrubTypes=new String[] {
"1",
"2"
};

+

this.setUnlocalizedName("shrub");

=

tile.shrub.1.name=name1
tile.shrub.2.name=name2

Так понятнее, почему там "1" (и "2")?
 
509
2
timaxa007 написал(а):
Skarlet написал(а):
timaxa007 написал(а):
Код:
tile.shrub.1.name=name1
tile.shrub.2.name=name2
а смысл, ведь нелокализованное 1 получилось
tile.shrub.name - вот такое

public static final String[] shrubTypes=new String[] {
"1",
"2"
};

+

this.setUnlocalizedName("shrub");

=

tile.shrub.1.name=name1
tile.shrub.2.name=name2

Так понятнее, почему там "1" (и "2")?
Это я знаю.
Я всмысле сделала, но проблема, метадату вроде сделала по уроку,а в майне ни текстуры не различаются, ни не локализированные имена.
Да и вообще стакаются, кароче метадаты нет =(
 
509
2
Сверху