[1.9.4]Не удаётся зарегать рендер блока.

Статус
В этой теме нельзя размещать новые ответы.
917
22
332
Всем опять доброго дня и хорошего настроения!
Опять обращаюсь за помощью по поводу уже печально известного мода.
В общем не у одного блока текстура и модель не ставятся. Я опять же удалил все блоки(оставил только один со стандартной моделью) и стал выяснять причину - результат нулевой:(. По логике всё должно работать, но видимо майну понятие "логика" неизвестно. Ладно, хватит лирики.
Я не знаю точно где я допустил ошибку, поэтому выложу все классы в одном коде(их не так уж и много - я оставил лишь один блок).
Код:
                                              Гл. класс:
package ru.reglaps.underSur;

import net.minecraftforge.fml.common.event.FMLPostInitializationEvent;
import net.minecraftforge.fml.common.event.FMLPreInitializationEvent;
import net.minecraftforge.fml.common.event.FMLInitializationEvent;
import net.minecraftforge.fml.common.Mod.EventHandler;
import net.minecraftforge.fml.common.Mod.Instance;
import net.minecraftforge.fml.common.SidedProxy;
import net.minecraftforge.fml.common.Mod;

import ru.reglaps.underSur.proxy.CommonProxy;

@Mod(modid = InfoUnderSur.MODID, version = InfoUnderSur.VERSION, name = InfoUnderSur.MOD_NAME)
public class Main {
    
    @Instance(InfoUnderSur.MODID)
    public Main instance;
    
    @SidedProxy(modId = InfoUnderSur.MODID, clientSide = InfoUnderSur.US_CLIENT_PROXY, serverSide = InfoUnderSur.US_COMMON_PROXY)
    public static CommonProxy proxy;
    
    @EventHandler
    public void preInit(FMLPreInitializationEvent preEvent) {
        this.proxy.preInit(preEvent);
    }
    
    @EventHandler
    public void init(FMLInitializationEvent event) {
        this.proxy.init(event);
    }
    
    @EventHandler
    public void postInit(FMLPostInitializationEvent postEvent) {
        this.proxy.postInit(postEvent);
    }
}


                                             Common прокси:


package ru.reglaps.underSur.proxy;

import net.minecraftforge.fml.common.event.FMLPostInitializationEvent;
import net.minecraftforge.fml.common.event.FMLPreInitializationEvent;
import net.minecraftforge.fml.common.event.FMLInitializationEvent;

import ru.reglaps.underSur.blocks.RegistryBlocks;

public class CommonProxy {
    
    public void preInit(FMLPreInitializationEvent preEvent) {
        RegistryBlocks.initBlocks();
    }
    
    public void init(FMLInitializationEvent event) {
        
    }
    
    public void postInit(FMLPostInitializationEvent postEvent) {
        
    }
}



                                             Client прокси 


package ru.reglaps.underSur.proxy;

import net.minecraftforge.fml.common.event.FMLPostInitializationEvent;
import net.minecraftforge.fml.common.event.FMLPreInitializationEvent;
import net.minecraftforge.fml.common.event.FMLInitializationEvent;

import ru.reglaps.underSur.render.USBlockRender;

public class ClientProxy extends CommonProxy{
    
    public void preInit(FMLPreInitializationEvent preEvent) {
        super.preInit(preEvent);
    }
    
    public void init(FMLInitializationEvent event) {
        super.init(event);
        
        USBlockRender.registerBlockRender();
    }
    
    public void postInit(FMLPostInitializationEvent postEvent) {
        super.postInit(postEvent);
    }
}


                                 Класс в котором я регал блоки:


package ru.reglaps.underSur.blocks;

import net.minecraftforge.fml.common.registry.GameRegistry;
import net.minecraft.block.Block;

public class RegistryBlocks {
    
    public static Block CrackedStone;
    
    public static void initBlocks() {
        GameRegistry.registerBlock(CrackedStone = new CrackedStone(), "CrackedStone");
    }
}

                                          Класс рендера:

package ru.reglaps.underSur.render;

import net.minecraft.client.renderer.block.model.ModelResourceLocation;
import net.minecraft.client.renderer.ItemModelMesher;
import net.minecraft.client.Minecraft;
import net.minecraft.block.Block;
import net.minecraft.item.Item;

import ru.reglaps.underSur.blocks.RegistryBlocks;
import ru.reglaps.underSur.InfoUnderSur;

public final class USBlockRender {    
    
    public static void registerBlockRender() {    
        regBlock(RegistryBlocks.CrackedStone);
    }
    
    public static void regBlock(Block block) {
        Minecraft.getMinecraft().getRenderItem().getItemModelMesher()
        .register(Item.getItemFromBlock(block), 0, new ModelResourceLocation
        (InfoUnderSur.MODID + ":" + block.getUnlocalizedName().substring(5), "inventory"));
    }
}


                                      Ну и сам класс блока:



package ru.reglaps.underSur.blocks;

import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.item.Item;
import net.minecraft.client.Minecraft;
import net.minecraft.client.renderer.block.model.ModelResourceLocation;
import net.minecraft.creativetab.CreativeTabs;
import net.minecraft.block.material.Material;
import net.minecraft.util.math.BlockPos;
import net.minecraft.world.World;
import net.minecraft.block.Block;
import ru.reglaps.underSur.InfoUnderSur;

public class CrackedStone extends Block{
    
    private final String name = "CrackedStone";

    public CrackedStone() {
        super(Material.ROCK);
        setUnlocalizedName(InfoUnderSur.MODID + ":" + name);
        setCreativeTab(CreativeTabs.BUILDING_BLOCKS);
        setResistance(2.5F);
        setHardness(0.5F);        
    }
    
    public String getName(){
        return name;
    }
    
    public void onBlockClicked(World world, BlockPos pos, EntityPlayer entity){
        if (!world.isRemote && world.rand.nextBoolean()) {
            world.destroyBlock(pos, true);
        }
    }
}
Прошу меня извинить за такое обилие текста(я искренне надеюсь что всё дело в моей невнимательности).
Кстати насчёт ресурсов - все они расположены в пути: assets.underSur.и т. д. и т. п.Так что проблема скорей всего не здесь.
Если вопрос тупой посмотрите мою подпись.▼
Заранее всем спасибо)))
 
667
7
2
Я даже в 1.8 не смотрел что да как, но вроде там, и на 1.9 также как на 1.7.10, блоку нужно привязывать TileEntity. А к TileEntity уже привязывать модель, текстуру для модели.
 
667
7
2
Вот нашёл гайд (не на русском:() >Клик.
 
917
22
332
VirysD спасибо за гайдик! Но тему пока закрывать не стоит...
 
667
7
2
608
5
15
CodeChicken вроде рендерит модельки в SimpleBlockRenderingHandler
 
917
22
332
Пишу, что тему можно закрывать.
Методом проб и ошибок(а также декомпиляцией чужих модов), я вроде как разобрался.
Насколько я понял, с некоторых пор, а именно с версии 1.9.4 getUnlocalizedName возвращает содержимое в полном объёме, как в прочем и getRegistryName. То-есть для того что-бы назначить расположение ресурсов нужно подправить setUnlocalizedName. Проще, как мне показалось, назначить блоку setRegistryName.
В результате получается: 
public static void regBlock(Block block) {
Minecraft.getMinecraft().getRenderItem().getItemModelMesher()
.register(Item.getItemFromBlock(block), 0, new ModelResourceLocation
(block.getRegistryName(), "inventory"));
Поправьте меня, если ошибся.
Всем спасибо за участие!
 
Статус
В этой теме нельзя размещать новые ответы.
Сверху