Переопределение setBlockTextureName

Версия Minecraft
1.7.10
Пробовал переопределить setBlockTextureName.
Пробовал через getIcon. Но похоже что-то упустил.

Но результат один - текстура как будто отсутствует (

Java:
public class BlockShadowOre extends Block {
   public BlockShadowOre() {
      super(Material.rock);
      this.setCreativeTab(TaintedMagic.tabTaintedMagic);
      //this.setBlockTextureName("taintedmagic:BlockShadowOre");
      this.setBlockName("BlockShadowOre");
      this.setHardness(5.0F);
   }
 
   @SideOnly(Side.CLIENT)
   public IIcon icon;
   @SideOnly(Side.CLIENT)
   public IIcon icon_lr;

   @SideOnly(Side.CLIENT)
   public IIcon getIcon() {
      if (Minecraft.getMinecraft().func_147104_D().serverName.contains("Hard") == true) {
          return icon_lr;
      }else {
          return icon;
      }
   }
 
   @SideOnly(Side.CLIENT)
   public void registerBlockIcons(IIconRegister ir) {
       icon = ir.registerIcon("taintedmagic:BlockShadowOre");
       icon_lr = ir.registerIcon("taintedmagic:BlockShadowOreLivingrock");
   }
 
   @SideOnly(Side.CLIENT)
   public String setBlockTextureName() {
       if (Minecraft.getMinecraft().func_147104_D().serverName.contains("Hard") == true) {
              return "taintedmagic:BlockShadowOre";
          }else {
              return "taintedmagic:BlockShadowOreLivingrock";
          }
   }
}
 
Последнее редактирование модератором:
Буду звучать банально, но..
  • текстура точно там где нужно?
  • modid верный?
  • что указано в информации об отсутствующих текстурах в логе запуска?
Текстура: taintedmagic\textures\blocks - значит должна подтягиваться
Соответственно и modid тот-же.
В логе совсем нет упоминаний этого блока. (только листва и манифест)
 

VeniVidiVici

Санта Барбарис
327
15
198
Обожди, чего ты вообще такое делаешь?

Метод setBlockTextureName должен получать только название, а не полный путь.
Java:
@SideOnly(Side.CLIENT)
   public String setBlockTextureName() {
       if (Minecraft.getMinecraft().func_147104_D().serverName.contains("Hard") == true) {
              return "BlockShadowOre";
          }else {
              return "BlockShadowOreLivingrock";
          }
   }

Да и корректней прописать всё же..
Java:
public BlockShadowOre() {
      super(Material.rock);
      this.setCreativeTab(TaintedMagic.tabTaintedMagic);
      this.setBlockTextureName(Minecraft.getMinecraft().func_147104_D().serverName.contains("Hard") ? "BlockShadowOre"
                               : "BlockShadowOreLivingrock");
      this.setBlockName("BlockShadowOre");
      this.setHardness(5.0F);
}

Ты блок то регистрируешь, да?
 
Последнее редактирование:

tox1cozZ

aka Agravaine
8,455
598
2,892
Ты все правильно делал, не слушай чела выше, дичь городит.
Что вообще происходит у тебя? Фиолетовая текстура? Или что?
Вешай всегда @Override на методы, которые переопределяешь. Я вот не помню чтобы был getIcon без аргументов.
 
Что вообще происходит у тебя? Фиолетовая текстура? Или что?
+

В аннотациях не особо разобрался (кроме sided)
Требует убрать.
The method setBlockTextureName() of type BlockShadowOre must override or implement a supertype method
 

tox1cozZ

aka Agravaine
8,455
598
2,892
@Override нужен для того чтобы понять переопределяешь ты метод или создаешь свой. Наверное, надо идти учить язык.
И да, тебе в консоль должно писать где игра пытается найти твою текстуру.
 

VeniVidiVici

Санта Барбарис
327
15
198
Ты все правильно делал, не слушай чела выше, дичь городит.
Как говорится..

1599136328309.png
Значит стоит почитать гайдов по 1.12 мне.

И да, тебе в консоль должно писать где игра пытается найти твою текстуру.
А про это я говорил
 
Сверху