Установка текстуры TileEntity

Статус
В этой теме нельзя размещать новые ответы.
Версия Minecraft
1.12.2
222
5
28
Есть некий TileEntity. Задача, помазать его со всех сторон одинаковой текстуркой.
По гайду я ему устанавливаю текстуру, а он получается таким:
1576088090543.png

В руке и в инвентаре всё нормально. В чём может быть ошибка?

Регистрация блоков:
    @SubscribeEvent
    public static void addBlocks(RegistryEvent.Register<Block> event) {
        for (Block block : BLOCKS.values()) {
            event.getRegistry().register(block.getBlock());
        }
    }

    @SubscribeEvent
    public static void addItems(RegistryEvent.Register<Item> registry) {
        for (Block block : BLOCKS.values()) {
            Item item = new ItemBlock(block.getBlock()).setRegistryName(block.getBlock().getRegistryName());
            registry.getRegistry().register(item);
        }
    }

    @SubscribeEvent
    public static void registerModels(ModelRegistryEvent event) {
        if (FMLCommonHandler.instance().getSide().isClient()) {
            for (Block block : BLOCKS.values()) {
                SimpleBlock block = block.getBlock();
                Item itemBlock = Item.getItemFromBlock(block);
                ModelLoader.setCustomModelResourceLocation(itemBlock, 0, new ModelResourceLocation(Mod.MOD_ID + ":" + itemBlock.getRegistryName().getPath(), "inventory"));
            }
        }
    }

src\main\resources\assets\mod\blockstates\simpleblock.json
JSON:
{
  "forge_marker": 1,
  "defaults": {
    "textures": {
      "all": "mod:blocks/simpleblock"
    }
  },
  "variants": {
    "normal": {
      "model": "cube_all"
    },
    "inventory": {
      "model": "cube_all"
    }
  }
}
 
Решение
Ууу... Короче, переопределил в классе BlockSimpleGameObject метод:
Java:
@Override
public EnumBlockRenderType getRenderType(IBlockState state) {
    return EnumBlockRenderType.MODEL;
}

В игре блок начал рендериться как надо. Что за магия? Из-за чего такое поведение?
Так же метод помечен как устаревший, а его "современный" вариант так и не нашёл. Кто знает, подскажите пожалуйста.
222
5
28
Я это уже пробовал делать, на одном из блоков вот так сделано:

src\main\resources\assets\mod\blockstates\simpleblock2.json
JSON:
{
  "variants": {
    "normal": {
      "model": "mod:simpleblock2"
    }
  }
}

src\main\resources\assets\mod\models\block\simpleblock2.json
JSON:
{
  "parent": "block/cube_all",
  "textures": {
    "all": "mod:blocks/simpleblock2"
  }
}

Проблема точно такая же - блок как на скрине выше. В руке и инвентаре всё нормально. Текстура на месте.
 
222
5
28
В консоли ошибок связанных с этими двумя блоками нет.
Метод не переопределял.

Common Block:
public class BlockSimpleGameObject extends BlockContainer {

    private static Constructor<? extends TileSimpleGameObject> constructor;

    private final SimpleGameObject simpleGameObject;

    public BlockSimpleGameObject(SimpleGameObject simpleGameObject) {
        super(Material.ROCK);
        this.simpleGameObject = simpleGameObject;
        ResourceLocation name = new ResourceLocation(Mod.MOD_ID, simpleGameObject.getName());
        setTranslationKey(name.getPath());
        setRegistryName(name);
        setHardness(3.0f);
    }

    public SimpleGameObject getSimpleGameObject() {
        return simpleGameObject;
    }

    @Override
    public TileEntity createNewTileEntity(@Nonnull World world, int meta) {
        try {
            if (constructor == null) {
                constructor = Proxy.getConstructor(TileSimpleGameObject.class);
            }
            return constructor.newInstance();
        } catch (Exception e) {
            e.printStackTrace();
            return null;
        }
    }

}

Client Side Block:
public final class CBlockSimpleGameObject extends BlockSimpleGameObject {

    public CBlockSimpleGameObject(SimpleGameObject simpleGameObject) {
        super(simpleGameObject);
        setCreativeTab(ClientProxy.CREATIVE_TAB);
    }

    @Override
    public boolean onBlockActivated(World worldIn, BlockPos pos, IBlockState state, EntityPlayer playerIn, EnumHand hand, EnumFacing facing, float hitX, float hitY, float hitZ) {
        return true;
    }

}

Мод проверяю из под Tlauncher, так как эту проблему так и не решил.
 
7,099
324
1,510
1,038
57
229
можно увидеть файл модели и полный лог, иии файл текстуры и путь по которому она лежит?
 
222
5
28
src\main\resources\assets\mod\blockstates\simpleblock.json
blockstates\simpleblock.json:
{
  "variants": {
    "normal": {
      "model": "mod:simpleblock"
    }
  }
}

src\main\resources\assets\mod\models\block\simpleblock.json
models\block\simpleblock.json:
{
  "parent": "block/cube_all",
  "textures": {
    "all": "mod:blocks/simpleblock"
  }
}

Текстура лежит здесь: src\main\resources\assets\mod\textures\blocks\simpleblock.png

Напоминаю, если конечно это играет какую-то роль, мой блок это TileEntity.

Log file запуска: latest.log
 
1,038
57
229
обнови кэш, у тебя всё правильно,
но лучше тут писать block
b8f301c00b.jpg

и в пути соответственно тоже
 
222
5
28
Выполнил clean - результата ноль. Далее даже не пробовал сбрасывать кеш, причина ниже.
и в пути соответственно тоже
Не вижу в этом необходимости, майн текстуры хранит в blocks/items.

Пришло время эксперементов.
Сделал класс:
Java:
public class SimpleBlock extends Block {

    public SimpleBlock() {
        super(Material.ROCK);
        ResourceLocation name = new ResourceLocation(Mod.MOD_ID, "simpleblock");
        setRegistryName(name);
        setTranslationKey(name.getPath());
    }

}
Дал ему копию json'ов выше и запустил - блок после установки отображается нормально, как цельный куб с одинаковой текстурой со всех сторон.
 
222
5
28
Ууу... Короче, переопределил в классе BlockSimpleGameObject метод:
Java:
@Override
public EnumBlockRenderType getRenderType(IBlockState state) {
    return EnumBlockRenderType.MODEL;
}

В игре блок начал рендериться как надо. Что за магия? Из-за чего такое поведение?
Так же метод помечен как устаревший, а его "современный" вариант так и не нашёл. Кто знает, подскажите пожалуйста.
 

tox1cozZ

aka Agravaine
8,456
598
2,893
Я же говорил тебе про него)
Значит где-то переопределяется в родителях.
Юзай его, там дофига помечено устаревшими, новые вроде только на следующих версиях появятся.
 
Статус
В этой теме нельзя размещать новые ответы.
Сверху