Не видит текстуру Forge 1.12.2

Версия Minecraft
1.12.2
API
Forge
2
1
0
Почему-то не хочет грузить текстуру. Текстура png расширением 32x32px test_block.png
1655196983911.png
Ошибки связанной с текстуркой не выдает:
1655197381613.png
Вот файловая система и папки в assets:
1655197506271.png
item\test_block.json:
{
  "parent": "hit:block/test_block"
}
block\test_block.json:
{
  "parent": "block/cube_all",
  "textures": {
    "all": "hit:blocks/test_block"
  }
}
blockstates\test_block.json:
{
  "variants": {
    "normal": { "model": "hit:test_block" }
  }
}
Создание самого блока:
TestBlock.java:
package ua.ArmyX.hit.blocks;

import net.minecraft.block.Block;
import net.minecraft.block.SoundType;
import net.minecraft.block.material.Material;
import net.minecraft.item.Item;
import net.minecraft.item.ItemBlock;
import sun.security.mscapi.CPublicKey;
import ua.ArmyX.hit.Main;
import ua.ArmyX.hit.init.InitBlocks;
import ua.ArmyX.hit.init.InitItems;
import ua.ArmyX.hit.utils.interfaces.IHasModel;

public class TestBlock extends Block implements IHasModel {
    public TestBlock(String name, Material material) {
        super(material);
        this.setHardness(2.0F);//прочность
        this.setResistance(15.0F);//взрывоустой
        this.setHarvestLevel("axe", 2);
        this.setRegistryName(name);
        this.setUnlocalizedName(name);
        this.setSoundType(SoundType.WOOD);

        InitBlocks.BLOCKS.add(this);
        InitItems.ITEMS.add(new ItemBlock(this).setRegistryName(this.getRegistryName()));
    }
    @Override
    public void registerModels(){
        Main.proxy.registerItemRenderer(Item.getItemFromBlock(this),0,"inventory");
    }
}
Регистрация:
RegisterHandler.java:
package ua.ArmyX.hit.utils.handlers;

import net.minecraft.block.Block;
import net.minecraft.item.Item;
import net.minecraftforge.client.event.ModelRegistryEvent;
import net.minecraftforge.event.RegistryEvent;
import net.minecraftforge.fml.common.Mod;
import net.minecraftforge.fml.common.eventhandler.SubscribeEvent;
import ua.ArmyX.hit.init.InitBlocks;
import ua.ArmyX.hit.init.InitItems;
import ua.ArmyX.hit.utils.interfaces.IHasModel;

@Mod.EventBusSubscriber
public class RegisterHandler {
    @SubscribeEvent
    public static void OnBlockRegister(RegistryEvent.Register<Block> event){
        event.getRegistry().registerAll(InitBlocks.BLOCKS.toArray(new Block[0]));
    }
    @SubscribeEvent
    public static void OnItemRegister(RegistryEvent.Register<Item> event){
        event.getRegistry().registerAll(InitItems.ITEMS.toArray(new Item[0]));
    }
    @SubscribeEvent
    public static void OnModelRegister(ModelRegistryEvent event){
        for (Item item : InitItems.ITEMS){
            if (item instanceof  IHasModel){
                ((IHasModel)item).registerModels();
            }
        }
        for(Block block : InitBlocks.BLOCKS){
            if ( block instanceof IHasModel){
                ((IHasModel)block).registerModels();
            }
        }
    }
}
Инициализация блоков:
InitBlocks.java:
package ua.ArmyX.hit.init;

import net.minecraft.block.Block;
import net.minecraft.block.material.Material;
import ua.ArmyX.hit.blocks.TestBlock;

import java.util.ArrayList;
import java.util.List;

public class InitBlocks {
    public static final List<Block> BLOCKS = new ArrayList<Block>();

    //Blocks
    public static final Block TEST_BLOCK = new TestBlock("test_block", Material.WOOD);
}
Уже перепробовал все статьи с правками IDE. Вот мой build.gradle:
build.gradle:
buildscript {
    repositories {
        maven { url = 'https://maven.minecraftforge.net' }
        mavenCentral()
    }
    dependencies {
        classpath 'net.minecraftforge.gradle:ForgeGradle:3.+'
    }
}
  
apply plugin: 'net.minecraftforge.gradle'
// Only edit below this line, the above code adds and enables the necessary things for Forge to be setup.
apply plugin: 'eclipse'
apply plugin: 'maven-publish'

version = '1.0'
group = 'com.yourname.modid' // http://maven.apache.org/guides/mini/guide-naming-conventions.html
archivesBaseName = 'modid'

sourceCompatibility = targetCompatibility = compileJava.sourceCompatibility = compileJava.targetCompatibility = '1.8' // Need this here so eclipse task generates correctly.
processResources {
    inputs.property "modid", archivesBaseName.toLowerCase()
    inputs.property "name", archivesBaseName
    inputs.property "version", project.version
    inputs.property "mcversion", "1.12.2"

    sourceSets {
        main.java.srcDirs = ['src/main/java']
        main.resources.srcDirs = ['src/main/resources']
    }

    from(sourceSets.main.resources.srcDirs) {
        include "mcmod.info"

        expand "modid": archivesBaseName.toLowerCase(), "name": archivesBaseName,
                "version": project.version, "mcversion": "1.12.2"
    }

    from(sourceSets.main.resources.srcDirs) {
        exclude "mcmod.info"
    }
}
minecraft {
    // The mappings can be changed at any time, and must be in the following format.
    // snapshot_YYYYMMDD   Snapshot are built nightly.
    // stable_#            Stables are built at the discretion of the MCP team.
    // Use non-default mappings at your own risk. they may not always work.
    // Simply re-run your setup task after changing the mappings to update your workspace.
    //mappings channel: 'snapshot', version: '20171003-1.12'
    mappings channel: 'snapshot', version: '20171003-1.12'
    // makeObfSourceJar = false // an Srg named sources jar is made by default. uncomment this to disable.
 
    // accessTransformer = file('src/main/resources/META-INF/accesstransformer.cfg')

    // Default run configurations.
    // These can be tweaked, removed, or duplicated as needed.
    runs {
        client {
            workingDirectory project.file('run')

            // Recommended logging data for a userdev environment
            property 'forge.logging.markers', 'SCAN,REGISTRIES,REGISTRYDUMP'

            // Recommended logging level for the console
            property 'forge.logging.console.level', 'debug'
        }

        server {

            // Recommended logging data for a userdev environment
            property 'forge.logging.markers', 'SCAN,REGISTRIES,REGISTRYDUMP'

            // Recommended logging level for the console
            property 'forge.logging.console.level', 'debug'
        }
    }
}

dependencies {
    implementation 'org.jetbrains:annotations:20.1.0'

    // Specify the version of Minecraft to use, If this is any group other then 'net.minecraft' it is assumed
    // that the dep is a ForgeGradle 'patcher' dependency. And it's patches will be applied.
    // The userdev artifact is a special name and will get all sorts of transformations applied to it.
    minecraft 'net.minecraftforge:forge:1.12.2-14.23.5.2859'

    // You may put jars on which you depend on in ./libs or you may define them like so..
    // compile "some.group:artifact:version:classifier"
    // compile "some.group:artifact:version"

    // Real examples
    // compile 'com.mod-buildcraft:buildcraft:6.0.8:dev'  // adds buildcraft to the dev env
    // compile 'com.googlecode.efficient-java-matrix-library:ejml:0.24' // adds ejml to the dev env

    // The 'provided' configuration is for optional dependencies that exist at compile-time but might not at runtime.
    // provided 'com.mod-buildcraft:buildcraft:6.0.8:dev'

    // These dependencies get remapped to your current MCP mappings
    // deobf 'com.mod-buildcraft:buildcraft:6.0.8:dev'

    // For more info...
    // http://www.gradle.org/docs/current/userguide/artifact_dependencies_tutorial.html
    // http://www.gradle.org/docs/current/userguide/dependency_management.html

}

// Example for how to get properties into the manifest for reading by the runtime..
jar {
    manifest {
        attributes([
            "Specification-Title": "examplemod",
            "Specification-Vendor": "examplemodsareus",
            "Specification-Version": "1", // We are version 1 of ourselves
            "Implementation-Title": project.name,
            "Implementation-Version": "${version}",
            "Implementation-Vendor" :"examplemodsareus",
            "Implementation-Timestamp": new Date().format("yyyy-MM-dd'T'HH:mm:ssZ")
        ])
    }
}

// Example configuration to allow publishing using the maven-publish task
// This is the preferred method to reobfuscate your jar file
jar.finalizedBy('reobfJar')
// However if you are in a multi-project build, dev time needs unobfed jar files, so you can delay the obfuscation until publishing by doing
//publish.dependsOn('reobfJar')

publishing {
    publications {
        mavenJava(MavenPublication) {
            artifact jar
        }
    }
    repositories {
        maven {
            url "file:///${project.projectDir}/mcmodsrepo"
        }
    }
}
apply plugin: 'idea'
idea {
    module {
        inheritOutputDirs = true
        idea.module.inheritOutputDirs = true
    }
}
subprojects {
    apply plugin: 'idea'
}

task prepareAssets(type: Copy) {
    group = 'build'
    from project.file('src/main/resources')
    into project.file('build/classes/java/main')
}
classes.dependsOn(prepareAssets)
Использую Forge 14.23.5.2859
Прошу помогите
 
Последнее редактирование:
Решение
Почему-то не хочет грузить текстуру. Текстура png расширением 32x32px Посмотреть вложение 14565
Посмотреть вложение 14564
Ошибки связанной с текстуркой не выдает:
Посмотреть вложение 14566
Вот файловая система и папки в assets:
Посмотреть вложение 14567
item\test_block.json:
{
  "parent": "hit:block/test_block"
}
block\test_block.json:
{
  "parent": "block/cube_all",
  "textures": {
    "all": "hit:blocks/test_block"
  }
}
blockstates\test_block.json:
{
  "variants": {
    "normal": { "model": "hit:test_block" }
  }
}
Создание самого блока:
TestBlock.java:
package ua.ArmyX.hit.blocks;

import net.minecraft.block.Block;
import net.minecraft.block.SoundType;
import net.minecraft.block.material.Material;
import net.minecraft.item.Item;
import net.minecraft.item.ItemBlock;
import sun.security.mscapi.CPublicKey;
import ua.ArmyX.hit.Main;
import...
2
1
0
Почему-то не хочет грузить текстуру. Текстура png расширением 32x32px Посмотреть вложение 14565
Посмотреть вложение 14564
Ошибки связанной с текстуркой не выдает:
Посмотреть вложение 14566
Вот файловая система и папки в assets:
Посмотреть вложение 14567
item\test_block.json:
{
  "parent": "hit:block/test_block"
}
block\test_block.json:
{
  "parent": "block/cube_all",
  "textures": {
    "all": "hit:blocks/test_block"
  }
}
blockstates\test_block.json:
{
  "variants": {
    "normal": { "model": "hit:test_block" }
  }
}
Создание самого блока:
TestBlock.java:
package ua.ArmyX.hit.blocks;

import net.minecraft.block.Block;
import net.minecraft.block.SoundType;
import net.minecraft.block.material.Material;
import net.minecraft.item.Item;
import net.minecraft.item.ItemBlock;
import sun.security.mscapi.CPublicKey;
import ua.ArmyX.hit.Main;
import ua.ArmyX.hit.init.InitBlocks;
import ua.ArmyX.hit.init.InitItems;
import ua.ArmyX.hit.utils.interfaces.IHasModel;

public class TestBlock extends Block implements IHasModel {
    public TestBlock(String name, Material material) {
        super(material);
        this.setHardness(2.0F);//прочность
        this.setResistance(15.0F);//взрывоустой
        this.setHarvestLevel("axe", 2);
        this.setRegistryName(name);
        this.setUnlocalizedName(name);
        this.setSoundType(SoundType.WOOD);

        InitBlocks.BLOCKS.add(this);
        InitItems.ITEMS.add(new ItemBlock(this).setRegistryName(this.getRegistryName()));
    }
    @Override
    public void registerModels(){
        Main.proxy.registerItemRenderer(Item.getItemFromBlock(this),0,"inventory");
    }
}
Регистрация:
RegisterHandler.java:
package ua.ArmyX.hit.utils.handlers;

import net.minecraft.block.Block;
import net.minecraft.item.Item;
import net.minecraftforge.client.event.ModelRegistryEvent;
import net.minecraftforge.event.RegistryEvent;
import net.minecraftforge.fml.common.Mod;
import net.minecraftforge.fml.common.eventhandler.SubscribeEvent;
import ua.ArmyX.hit.init.InitBlocks;
import ua.ArmyX.hit.init.InitItems;
import ua.ArmyX.hit.utils.interfaces.IHasModel;

@Mod.EventBusSubscriber
public class RegisterHandler {
    @SubscribeEvent
    public static void OnBlockRegister(RegistryEvent.Register<Block> event){
        event.getRegistry().registerAll(InitBlocks.BLOCKS.toArray(new Block[0]));
    }
    @SubscribeEvent
    public static void OnItemRegister(RegistryEvent.Register<Item> event){
        event.getRegistry().registerAll(InitItems.ITEMS.toArray(new Item[0]));
    }
    @SubscribeEvent
    public static void OnModelRegister(ModelRegistryEvent event){
        for (Item item : InitItems.ITEMS){
            if (item instanceof  IHasModel){
                ((IHasModel)item).registerModels();
            }
        }
        for(Block block : InitBlocks.BLOCKS){
            if ( block instanceof IHasModel){
                ((IHasModel)block).registerModels();
            }
        }
    }
}
Инициализация блоков:
InitBlocks.java:
package ua.ArmyX.hit.init;

import net.minecraft.block.Block;
import net.minecraft.block.material.Material;
import ua.ArmyX.hit.blocks.TestBlock;

import java.util.ArrayList;
import java.util.List;

public class InitBlocks {
    public static final List<Block> BLOCKS = new ArrayList<Block>();

    //Blocks
    public static final Block TEST_BLOCK = new TestBlock("test_block", Material.WOOD);
}
Уже перепробовал все статьи с правками IDE. Вот мой build.gradle:
build.gradle:
buildscript {
    repositories {
        maven { url = 'https://maven.minecraftforge.net' }
        mavenCentral()
    }
    dependencies {
        classpath 'net.minecraftforge.gradle:ForgeGradle:3.+'
    }
}
 
apply plugin: 'net.minecraftforge.gradle'
// Only edit below this line, the above code adds and enables the necessary things for Forge to be setup.
apply plugin: 'eclipse'
apply plugin: 'maven-publish'

version = '1.0'
group = 'com.yourname.modid' // http://maven.apache.org/guides/mini/guide-naming-conventions.html
archivesBaseName = 'modid'

sourceCompatibility = targetCompatibility = compileJava.sourceCompatibility = compileJava.targetCompatibility = '1.8' // Need this here so eclipse task generates correctly.
processResources {
    inputs.property "modid", archivesBaseName.toLowerCase()
    inputs.property "name", archivesBaseName
    inputs.property "version", project.version
    inputs.property "mcversion", "1.12.2"

    sourceSets {
        main.java.srcDirs = ['src/main/java']
        main.resources.srcDirs = ['src/main/resources']
    }

    from(sourceSets.main.resources.srcDirs) {
        include "mcmod.info"

        expand "modid": archivesBaseName.toLowerCase(), "name": archivesBaseName,
                "version": project.version, "mcversion": "1.12.2"
    }

    from(sourceSets.main.resources.srcDirs) {
        exclude "mcmod.info"
    }
}
minecraft {
    // The mappings can be changed at any time, and must be in the following format.
    // snapshot_YYYYMMDD   Snapshot are built nightly.
    // stable_#            Stables are built at the discretion of the MCP team.
    // Use non-default mappings at your own risk. they may not always work.
    // Simply re-run your setup task after changing the mappings to update your workspace.
    //mappings channel: 'snapshot', version: '20171003-1.12'
    mappings channel: 'snapshot', version: '20171003-1.12'
    // makeObfSourceJar = false // an Srg named sources jar is made by default. uncomment this to disable.
 
    // accessTransformer = file('src/main/resources/META-INF/accesstransformer.cfg')

    // Default run configurations.
    // These can be tweaked, removed, or duplicated as needed.
    runs {
        client {
            workingDirectory project.file('run')

            // Recommended logging data for a userdev environment
            property 'forge.logging.markers', 'SCAN,REGISTRIES,REGISTRYDUMP'

            // Recommended logging level for the console
            property 'forge.logging.console.level', 'debug'
        }

        server {

            // Recommended logging data for a userdev environment
            property 'forge.logging.markers', 'SCAN,REGISTRIES,REGISTRYDUMP'

            // Recommended logging level for the console
            property 'forge.logging.console.level', 'debug'
        }
    }
}

dependencies {
    implementation 'org.jetbrains:annotations:20.1.0'

    // Specify the version of Minecraft to use, If this is any group other then 'net.minecraft' it is assumed
    // that the dep is a ForgeGradle 'patcher' dependency. And it's patches will be applied.
    // The userdev artifact is a special name and will get all sorts of transformations applied to it.
    minecraft 'net.minecraftforge:forge:1.12.2-14.23.5.2859'

    // You may put jars on which you depend on in ./libs or you may define them like so..
    // compile "some.group:artifact:version:classifier"
    // compile "some.group:artifact:version"

    // Real examples
    // compile 'com.mod-buildcraft:buildcraft:6.0.8:dev'  // adds buildcraft to the dev env
    // compile 'com.googlecode.efficient-java-matrix-library:ejml:0.24' // adds ejml to the dev env

    // The 'provided' configuration is for optional dependencies that exist at compile-time but might not at runtime.
    // provided 'com.mod-buildcraft:buildcraft:6.0.8:dev'

    // These dependencies get remapped to your current MCP mappings
    // deobf 'com.mod-buildcraft:buildcraft:6.0.8:dev'

    // For more info...
    // http://www.gradle.org/docs/current/userguide/artifact_dependencies_tutorial.html
    // http://www.gradle.org/docs/current/userguide/dependency_management.html

}

// Example for how to get properties into the manifest for reading by the runtime..
jar {
    manifest {
        attributes([
            "Specification-Title": "examplemod",
            "Specification-Vendor": "examplemodsareus",
            "Specification-Version": "1", // We are version 1 of ourselves
            "Implementation-Title": project.name,
            "Implementation-Version": "${version}",
            "Implementation-Vendor" :"examplemodsareus",
            "Implementation-Timestamp": new Date().format("yyyy-MM-dd'T'HH:mm:ssZ")
        ])
    }
}

// Example configuration to allow publishing using the maven-publish task
// This is the preferred method to reobfuscate your jar file
jar.finalizedBy('reobfJar')
// However if you are in a multi-project build, dev time needs unobfed jar files, so you can delay the obfuscation until publishing by doing
//publish.dependsOn('reobfJar')

publishing {
    publications {
        mavenJava(MavenPublication) {
            artifact jar
        }
    }
    repositories {
        maven {
            url "file:///${project.projectDir}/mcmodsrepo"
        }
    }
}
apply plugin: 'idea'
idea {
    module {
        inheritOutputDirs = true
        idea.module.inheritOutputDirs = true
    }
}
subprojects {
    apply plugin: 'idea'
}

task prepareAssets(type: Copy) {
    group = 'build'
    from project.file('src/main/resources')
    into project.file('build/classes/java/main')
}
classes.dependsOn(prepareAssets)
Использую Forge 14.23.5.2859
Прошу помогите
извеняюсь, я дурак, там нужно было папку "blocks" в textures, а у меня она "block"
 
Сверху