Как назначить пользовательские текстуры Redstone?

#java #minecraft

#java #Minecraft

Вопрос:

 @SideOnly(Side.CLIENT)
public void registerBlockIcons(IIconRegister p_149651_1_)
{
    this.field_150182_M = p_149651_1_.registerIcon(this.getTextureName()   "_"   "cross");
    this.field_150183_N = p_149651_1_.registerIcon(this.getTextureName()   "_"   "line");
    this.field_150184_O = p_149651_1_.registerIcon(this.getTextureName()   "_"   "cross_overlay");
    this.field_150180_P = p_149651_1_.registerIcon(this.getTextureName()   "_"   "line_overlay");
    this.blockIcon = this.field_150182_M;
}

@SideOnly(Side.CLIENT)
public static IIcon getRedstoneWireIcon(String p_150173_0_)
{
    return p_150173_0_.equals("cross") ? ModMain.bluestoneWire.field_150182_M :  (p_150173_0_.equals("line") ? ModMain.bluestoneWire.field_150183_N : (p_150173_0_.equals("cross_overlay") ? ModMain.bluestoneWire.field_150184_O : (p_150173_0_.equals("line_overlay") ? ModMain.bluestoneWire.field_150180_P : null)));
} 
 

Я пытаюсь создать пользовательский тип redstone, но я не знаю, как назначить текстуры. Я скопировал код из исходного файла redstone, но мне трудно его понять. Я получаю ошибки в своем getRedstoneWireIcon() методе по всем field_ условиям. Это говорит о том, что оно не может быть разрешено или не является полем.

Ответ №1:

В опубликованном вами коде нет ничего плохого, вам нужно убедиться, что все ваши переменные совпадают, например:

 import cpw.mods.fml.relauncher.Side;
import cpw.mods.fml.relauncher.SideOnly;
import net.minecraft.client.renderer.texture.IIconRegister;
import net.minecraft.util.IIcon;

class ModMain
{
    public static BluestoneWire bluestoneWire = new BluestoneWire();
}

public class BluestoneWire
{
    @SideOnly(Side.CLIENT)
    private IIcon field_150182_M;
    @SideOnly(Side.CLIENT)
    private IIcon field_150183_N;
    @SideOnly(Side.CLIENT)
    private IIcon field_150184_O;
    @SideOnly(Side.CLIENT)
    private IIcon field_150180_P;
    @SideOnly(Side.CLIENT)
    private IIcon blockIcon;

    public String getTextureName()
    {
        return "bluestoneWire";
    }

    @SideOnly(Side.CLIENT)
    public void registerBlockIcons(IIconRegister p_149651_1_)
    {
        this.field_150182_M = p_149651_1_.registerIcon(this.getTextureName()   "_"   "cross");
        this.field_150183_N = p_149651_1_.registerIcon(this.getTextureName()   "_"   "line");
        this.field_150184_O = p_149651_1_.registerIcon(this.getTextureName()   "_"   "cross_overlay");
        this.field_150180_P = p_149651_1_.registerIcon(this.getTextureName()   "_"   "line_overlay");
        this.blockIcon = this.field_150182_M;
    }

    @SideOnly(Side.CLIENT)
    public static IIcon getRedstoneWireIcon(String p_150173_0_)
    {
        return p_150173_0_.equals("cross") ? ModMain.bluestoneWire.field_150182_M : (p_150173_0_.equals("line") ? ModMain.bluestoneWire.field_150183_N : (p_150173_0_.equals("cross_overlay") ? ModMain.bluestoneWire.field_150184_O : (p_150173_0_.equals("line_overlay") ? ModMain.bluestoneWire.field_150180_P : null)));
    }
}
 

Комментарии:

1. Я также скопировал их, но это все еще не работает. Появляется та же ошибка.

2. @Ved115 В том, что вы опубликовали, нет ничего плохого, просто убедитесь, что код, который вы не опубликовали, соответствует приведенному выше.

3. Это именно то, что я сделал, но он все еще выдает мне ошибку. Я попытался очистить проект, но это не сработало. Есть еще идеи?

4. поле_150182_m не может быть разрешено или не является полем, поле_150183_n не может быть разрешено или не является полем, поле_150184_o не может быть разрешено или не является полем, поле_150180_p не может быть разрешено или не является полем

Ответ №2:

Замените getRedstoneWireIcon на это:

 @SideOnly(Side.CLIENT)
public static IIcon getRedstoneWireIcon(String p_150173_0_)
{
    return p_150173_0_.equals("cross") ? field_150182_M :  (p_150173_0_.equals("line") ? field_150183_N : (p_150173_0_.equals("cross_overlay") ? field_150184_O : (p_150173_0_.equals("line_overlay") ? field_150180_P : null)));
} 
 

Вы не можете использовать ModMain.bluestoneWire.field_ , потому что каждая field_ из них является частной.