[1.7.2]Почему-то перестали работать текстурки...

771
5
Текстура лежит здесь: C:\Modding\Forge 1.7.2\src\main\resources\assets\modid\textures\items\icon.png
Вот что говорит консоль: Using missing texture, unable to load modid:textures/items/icon.png
 
905
5
Если версия особо новая, пошарь багтрекер фтопки. И, кстати, где используешь? Потому как регистратор предметов и блоков такое не ест, там надо просто modid:icon.
 
329
13
Код бы увидеть...

Энтити
Код:
private static final ResourceLocation rocketTextures = new ResourceLocation(MyMod.MODID + ":" + "textures/entity/Rocket.png");

Предмет
Код:
public class Item_Ammo_2mmEC extends Item
{
    public Item_Ammo_2mmEC()
    {
        super();
        this.setUnlocalizedName("Ammo_2mmEC");
        this.setTextureName(MyMod.MODID + ":" + "Ammo_2mmEC");
        this.setCreativeTab(CommonProxy.tabAmmo);
        this.setMaxStackSize(64);
    }
}
 
771
5
Та версию не менял, вчера пахало норм.
setTextureName("modid:icon.png");
Код:
Код:
public class ItemBase extends Item{

    public ItemBase(String unlocalizedName){
        super();
        setUnlocalizedName(unlocalizedName.substring(unlocalizedName.indexOf(":") + 1));
        setTextureName(unlocalizedName);
        GameRegistry.registerItem(this, getUnlocalizedName().substring(5));
    }
}
Вызываю:
Код:
Item item = new ItemBase("modid:icon");
 
905
5
Кстати, unable to load может значить, что у тебя файл поврежден. Бесплатный совет: сбэкапь все, до чего дотянешься, у тебя может диск умирать.
 
329
13
Я там пример предмета сбросил. Проверяй, ты походу зря вырезаешь часть текста.


Хрень сморозил. В любом случае, код рабочий.
 
771
5
Никто у меня не умирает, слава Богу.
Файл нормально открывается и функционирует.
[merge_posts_bbcode]Добавлено: 05.06.2014 16:11:19[/merge_posts_bbcode]

TaoGunner написал(а):
Я там пример предмета сбросил. Проверяй, ты походу зря вырезаешь часть текста.
Та то я вырезаю в setUnlocalizedName, в setTextureName я ничего не трогаю.
 
905
5
Я вообще делаю через
Код:
    @Override
    public void registerIcons(IIconRegister iconRegister)
        {
        itemIcon = iconRegister.registerIcon("mymod:itemObsPick");
        }
 
771
5
registerIcons - это абсолютно тоже самое, что и setTextureName.
 
905
5
Да, кстати, еще один вопрос от кэпа - а ты уверен, что текстуры у тебя правильно берутся компилятором/игрой?
 

necauqua

когда-то был anti344
Администратор
1,216
27
172
.png убери и будет тебе счастье.
 

necauqua

когда-то был anti344
Администратор
1,216
27
172
771
5
А, извините, то я просто эклипс не открывал и писал по памяти.
На самом деле у меня нет такого.
 
771
5
Решил проблему.
Но предметы с метадатой все равно без текстуры...
Консоль молчит.

Код:
public class ItemMetadataBase extends Item{

    @SideOnly(Side.CLIENT)
    private IIcon[] icons;

    public int numberOfItems;
    public String textureName; 

    public ItemMetadataBase(int numberItems, String unlocalizedName){
        super();
        setUnlocalizedName(unlocalizedName.substring(unlocalizedName.indexOf(":") + 1));
        textureName = unlocalizedName;
        numberOfItems = numberItems;
        setHasSubtypes(true); 
        setMaxDamage(0);
        GameRegistry.registerItem(this, getUnlocalizedName().substring(5));
    }

    public String getUnlocalizedName(ItemStack iStack){
        return super.getUnlocalizedName() + "_" + iStack.getItemDamage();
    }

    @SideOnly(Side.CLIENT)
    public void registerIcons(IIconRegister reg){
        icons = new IIcon[numberOfItems];
        for(int i = 0; i < icons.length; i++){
            icons[i] = reg.registerIcon(textureName + "_" + i);
        }
    }

    @SideOnly(Side.CLIENT)
    public void getSubItems(Item item, CreativeTabs tab, List list){
        for(int x = 0; x < numberOfItems; x++){
            list.add(new ItemStack(this, 1, x));
        }
    }
}
 
675
2
А как же
Код:
    @Override
    @SideOnly(Side.CLIENT)
    public Icon getIconFromDamage(int meta) {
        return icons[meta];
    }
?
[merge_posts_bbcode]Добавлено: 06.06.2014 23:07:14[/merge_posts_bbcode]

Я вот так вот регистрирую иконки:
Код:
    @Override
    @SideOnly(Side.CLIENT)
    public void registerIcons(IconRegister reg) {
        for(int i = 0; i < subNames.length; i++) {
            icons[i] = reg.registerIcon(ModInfo.MOD_ID + ":" + getUnlocalizedName().substring(12) + "_" + subNames[i]);
        }
    }
Намного удобнее использовать String'и в качестве суб-имен.
 
771
5
Ой лол, я когда там с тем файлом игрался, случайно удалил тот метод.
Еще же сказал себе: "Не забудь обратно вернуть, ибо будут проблемы!".
Так и забыл =)
Спасибо)
 

necauqua

когда-то был anti344
Администратор
1,216
27
172
Код:
package net.anti344.rcircuits.content

import net.minecraft.item.{ItemStack, Item}
import net.minecraft.client.renderer.texture.IIconRegister
import net.minecraft.util.IIcon
import collection.mutable.ArrayBuffer
import net.minecraft.creativetab.CreativeTabs
import java.util.{List => JList}
import net.minecraft.client.resources.I18n
import net.anti344.rcircuits.RedstoneMicrocircuits

class MetaItem(names: String*)
  extends Item{
 setCreativeTab(RedstoneMicrocircuits.tab)
 setHasSubtypes(true)

  private val iconExcludes: ArrayBuffer[String] = ArrayBuffer()
  private var icons: Seq[IIcon] = Seq()

  def get(name: String, size: Int = 1): ItemStack =
    if(names.contains(name))
      new ItemStack(this, size, names.indexOf(name))
    else null

  def getName(meta: Int): String =
    if(names.isDefinedAt(meta))
      names(meta)
    else null

  def excludeIcons(excludes: String*): MetaItem = {
    excludes.foreach(iconExcludes += _)
    this
  }

  override def getSubItems(item: Item, tab: CreativeTabs, jlist : JList[_]) = {
    val list = jlist.asInstanceOf[JList[ItemStack]]
    names.foreach(n => list.add(get(n)))
  }

  override def getItemStackDisplayName(is: ItemStack): String =
    if(names.isDefinedAt(is.getItemDamage))
      I18n.format("rcircuits." + names(is.getItemDamage))
    else "BROKEN NAME"

  override def getIconFromDamage(meta: Int): IIcon =
    if(icons.isDefinedAt(meta))
      icons(meta)
    else null

  override def registerIcons(register: IIconRegister) =
    icons = for(n <- names) yield{
      val icon = register.registerIcon("rcircuits:" + n)
      if(!iconExcludes.contains(n))
        icon
      else null
    }
}
 
Сверху