#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_
из них является частной.