Проблема с Metadata [1.5.2]

Привет всем,копался в исходниках и присмотрел код на блок дерева,чутка переписал,и решил добавить большое количество крашенных блоков,но создавать всё в отдельных класса самоубийство.Суть проблемы в том что не могу поставить название для каждого блока отдельное,если в самом скрипте мода пишу addname и указываю скрипт блока то он обоим блокам ставит одно название.Тоже самое и с крафтом.Пожалуйста,объясните как назначить название блокам по отдельности,также и припилить крафт для каждого блока отдельно.Вот скрипт сам.
Код:
package mods.nightmare.testmod;

import net.minecraft.block;
import cpw.mods.fml.relauncher.Side;
import cpw.mods.fml.relauncher.SideOnly;
import java.util.List;
import net.minecraft.block.material.Material;
import net.minecraft.client.renderer.texture.IconRegister;
import net.minecraft.creativetab.CreativeTabs;
import net.minecraft.item.ItemStack;
import net.minecraft.util.Icon;

public class BlockWood extends Block
{
    public static final String[] woodType = new String[] {"block1", "block2"};
    public static final String[] woodTextureTypes = new String[] {"block1", "block2"};
    @SideOnly(Side.CLIENT)
    private Icon[] iconArray;

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

    @SideOnly(Side.CLIENT)

    public Icon getIcon(int par1, int par2)
    {
        if (par2 < 0 || par2 >= this.iconArray.length)
        {
            par2 = 0;
        }

        return this.iconArray[par2];
    }

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

    @SideOnly(Side.CLIENT)

    public void getSubBlocks(int par1, CreativeTabs par2CreativeTabs, List par3List)
    {
        par3List.add(new ItemStack(par1, 1, 0));
        par3List.add(new ItemStack(par1, 1, 1));
    }

    @SideOnly(Side.CLIENT)

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

        for (int i = 0; i < this.iconArray.length; ++i)
        {
            this.iconArray[i] = par1IconRegister.registerIcon(woodTextureTypes[i]);
        }
    }
}
 
Про название блоков нашёл,как я понял нужно прописывать в файле с русификацие или как его там называют,en_US.
[merge_posts_bbcode]Добавлено: 08.05.2015 20:31:13[/merge_posts_bbcode]

Оказывается нет,в основном файле мода нужно это прописывать

Код:
LanguageRegistry.[i]addName[/i]([b]new[/b] ItemStack([i]tutorialBlock[/i], 1, 0), “Tutorial Block”);


LanguageRegistry.[i]addName[/i]([b]new[/b] ItemStack([i]tutorialBlock[/i], 1, 1), “Nether Tutorial Block”);

А вот насчёт крафта всё так и не могу найти.Если найду то напишу в тему...
 
1,683
1
Сделай массив с именами и циклом можешь все зарегистрировать
 
Dovakin написал(а):
Сделай массив с именами и циклом можешь все зарегистрировать
Дело в том что я еще нуб в программировании.И толком не понимаю как это сделать и где это делать.
 
Не понимаю почему эклипс ругается на строчку где указывается имя блока.Вот скрипт.

Код:
LanguageRegistry.addName(new ItemStack(testblock, 1, 0) “test block”);
Помогите пожалуйста.Эту строчку прописываю в основном файле мода.
 
124
1
запятую пропустил, и что-то я не припомню чтобы регистрировались ItemStack, вместо Block или Item
LanguageRegistry.addName( testblock, "test block");
 
Salamandr написал(а):
запятую пропустил, и что-то я не припомню чтобы регистрировались ItemStack, вместо Block или Item
LanguageRegistry.addName( testblock, "test block");
Я желаю к блоку с метадатой приписать название,на одном зарубежном сайте прочёл что именно так это делается.Если пишу строчку которую ты указал то он всем блокам из файла с метадатой выставляет одно название.
[merge_posts_bbcode]Добавлено: 10.05.2015 13:22:16[/merge_posts_bbcode]

Поставил запятую теперь он ругается на это
LanguageRegistry.addName(new ItemStack(testblock, 1, 0), “test block”);
 
124
1
у тебя вместо двойных кавычек, какая то лабуда " != “ (посмотри на них внимательно и найди отличие)
 
Dragon2488 написал(а):
>Скрипты.
Скриптов в джаве нет, херню сморозил.
Хах,верно,я понятия не имею как назвать по другому,поэтому так и написал.
[merge_posts_bbcode]Добавлено: 10.05.2015 14:46:29[/merge_posts_bbcode]

Salamandr написал(а):
у тебя вместо двойных кавычек, какая то лабуда " != “ (посмотри на них внимательно и найди отличие)
Благодарю,блин,как я мог не заметить эту простую ошибку.В следующий раз буду обращать внимание символы.
 
Теперь другое затруднение.Код не выдаёт ошибки,но в игре он опять присваивает обоим блокам одно название.
Код:
LanguageRegistry.addName(new ItemStack(testblock, 1, 1), "test block");
LanguageRegistry.addName(new ItemStack(testblock, 2, 2), "test block 2");
А дальше еще веселее,в инвентаре блок1 и блок2 имеют разные текстуры,но если их ставить они оба с одной текстурой,с текстурой блока 1.Пролистал код,почитал гайды(которые смог найти) всё кажется правильно пишу.Помогите пожалуйста.
 

timaxa007

Модератор
5,831
409
672
Возможно из-за того, что при установке блока, ты не даешь установленному блоку метадату, по этому ставиться блок с метадатой ноль.
 
timaxa007 написал(а):
При установке блока, ты не даешь установленному блоку метадату, по этому ставиться блок с метадатой ноль.
Хм,понимаю о чём ты,но вот не могу придумать как это написать,ибо мои навыки в программировании очень малы.
 

timaxa007

Модератор
5,831
409
672
Код:
@Override
public void onBlockPlacedBy(World world, int x, int y, int z, EntityLiving entity, ItemStack is) {
world.setBlockMetadataWithNotify(x, y, z, is.getItemDamage(), 3);
}
 
timaxa007 написал(а):
Код:
@Override
public void onBlockPlacedBy(World world, int x, int y, int z, EntityLiving entity, ItemStack is) {
world.setBlockMetadataWithNotify(x, y, z, is.getItemDamage(), 3);
}
Так,как я понял где стоит тройка,Я там должен указать значение моего блока,верно?
 

timaxa007

Модератор
5,831
409
672
Нет, где "3" это флаг обновления. Где "is.getItemDamage()" это метадата блока.
 
timaxa007 написал(а):
Нет, где "3" это флаг обновления. Где "is.getItemDamage()" это метадата блока.
Пожалуйста объясни по подробнее,чтото я вообще понять не могу.Если пишу туда
"1, 1"
Как это пишется тут
Код:
par3List.add(new ItemStack(par1, 1, 1));
то он начинает ругатся что совершена синтаксическая ошибка.
Чтото у меня с метадатой вообще не получается работать,или может потому что не нашёл толковых уроков/гайдов.
 
Сверху