Краш при создании TileEntityBlock

Версия Minecraft
1.7.10
128
12
Здравствуйте, я решил создать модель для блока, но я столкнулся с проблемой.
Когда всё было закончено я в предвкушении запускаю игру. Бац! Мне прилетатет краш репорт, который ввёл меня в ступор.
crash-2018-01-08_12.32.52-client.txt
Код скину после просьбы. А то много текста выйдет...
 
3,005
192
592
Код скину после просьбы. А то много текста выйдет...
Что бы тебе ответили - тебе нужно предоставить код и краш. Иначе мы не можем гадать, что у тебя за проблема.
Тайл зареган?
И что бы "много текста" не было - есть спойлер.
 
Последнее редактирование модератором:
128
12
Краш я как раз таки предоставил.
P.S Спойлер не работает никак
 
Последнее редактирование модератором:

CMTV

Основатель
Администратор
1,304
4
601
Спойлер не работает никак
Всмысле не работает? Выдает какие-то ошибки?
Очень

Да и не обязательно в спойлер. Есть ограничение на макс. высоту блока кода (если больше, то появится прокрутка).
 
128
12
Java:
package ru.whitewarrior.testmod;

import net.minecraft.client.Minecraft;
import net.minecraft.item.ItemStack;
import net.minecraftforge.client.IItemRenderer;

import org.lwjgl.opengl.GL11;

public class RenderItemBlockForge implements IItemRenderer {

    @Override
    public boolean handleRenderType(ItemStack is, ItemRenderType type) {
        return true;
    }

    @Override
    public boolean shouldUseRenderHelper(ItemRenderType type, ItemStack is, ItemRendererHelper helper) {
        return true;
    }

    @Override
    public void renderItem(ItemRenderType type, ItemStack is, Object... data) {
        GL11.glPushMatrix();
        GL11.glTranslatef(0, 0, 0);
        GL11.glScaled(1, 1, 1);
        Minecraft.getMinecraft().renderEngine.bindTexture(RenderTileEntityForge.texture1);
        RenderTileEntityForge.model.renderPart("Stone");
        
        Minecraft.getMinecraft().renderEngine.bindTexture(RenderTileEntityForge.texture2);
        RenderTileEntityForge.model.renderPart("Lava");
        
        Minecraft.getMinecraft().renderEngine.bindTexture(RenderTileEntityForge.texture3);
        RenderTileEntityForge.model.renderPart("Cobblestone");
        GL11.glPopMatrix();
    }

}
Java:
package ru.whitewarrior.testmod;

import cpw.mods.fml.common.Mod;
import cpw.mods.fml.common.SidedProxy;
import cpw.mods.fml.common.event.FMLInitializationEvent;
import cpw.mods.fml.common.event.FMLPostInitializationEvent;
import cpw.mods.fml.common.event.FMLPreInitializationEvent;
import cpw.mods.fml.common.registry.GameRegistry;

import net.minecraft.block.Block;
import net.minecraft.creativetab.CreativeTabs;
import net.minecraft.item.Item;
import net.minecraft.item.ItemArmor.ArmorMaterial;

import tv.twitch.Core;

@Mod(modid=Main.modid, name = Main.MODNAME, version = Main.VERSION)
public class Main {
    public static final String modid="testmodww";
        public static final String MODNAME = "Skyrim";
        public static final String VERSION = "0.2a";
    
    
    @Mod.Instance("testmodww")
    public static Main INSTANCE;

    @SidedProxy(clientSide = "ru.whitewarrior.testmod.ProxyClient", serverSide = "ru.whitewarrior.testmod.ProxyServer")
    public static CommonProxy proxy;


    public static Block ForgeBlock;
    public static Item SteelI;
    public static Item IronI;
    public static Item SilverI;
    public static Item CorundumI;
    public static Item OrihalcumI;
    public static Item EbonyI;
    public static Item GoldI;
    public static Item QuicksilverI;
    public static Item DvemerI;
    public static Item MalachiteI;
    public static Item MoonstoneI;
    public static Item D4;
    public static Item DK;
    public static Item nordh;
    public static Item nordcp;
    public static Item nordl;
    public static Item nordb;   
    public static Item IronKz;
    public static Item DaedrH;
    public static Item DaedrCP;
    public static Item DaedrL;
    public static Item DaedrB;
    public static Item ScaleH;
    public static Item ScaleCP;
    public static Item ScaleL;
    public static Item ScaleB;
    
    
    
    
    
    
    
    
    @Mod.EventHandler
    public void preInit(FMLPreInitializationEvent event){
        
        ScaleH = new DragonScaleArmor(ArmorMaterial.DIAMOND, 0)
                .setUnlocalizedName("armor_test_obj_helm").setCreativeTab(CreativeTabs.tabCombat).setTextureName(modid + ":PlateH");
                GameRegistry.registerItem(ScaleH, "item_armor121");

                ScaleCP = new DragonScaleArmor(ArmorMaterial.DIAMOND, 1)
                .setUnlocalizedName("armor_test_obj_vest").setCreativeTab(CreativeTabs.tabCombat).setTextureName(modid + ":PlateCP");
                GameRegistry.registerItem(ScaleCP, "item_armor2");

                ScaleL = new DragonScaleArmor(ArmorMaterial.DIAMOND, 2)
                .setUnlocalizedName("armor_test_obj_pants").setCreativeTab(CreativeTabs.tabCombat).setTextureName(modid + ":PlateL");
                GameRegistry.registerItem(ScaleL, "item_armor3");

                ScaleB = new DragonScaleArmor(ArmorMaterial.DIAMOND, 3)
                .setUnlocalizedName("armor_test_obj_boots").setCreativeTab(CreativeTabs.tabCombat).setTextureName(modid + ":PlateB");
                GameRegistry.registerItem(ScaleB, "item_armor4");
        
        
        
        
        nordh = new NordArmor(ArmorMaterial.DIAMOND, 0)
                .setUnlocalizedName("armor_test_obj_helm").setCreativeTab(CreativeTabs.tabCombat);
                GameRegistry.registerItem(nordh, "item_armor_test_obj_helm");

                nordcp = new NordArmor(ArmorMaterial.DIAMOND, 1)
                .setUnlocalizedName("armor_test_obj_vest").setCreativeTab(CreativeTabs.tabCombat);
                GameRegistry.registerItem(nordcp, "item_armor_test_obj_vest");

                nordl = new NordArmor(ArmorMaterial.DIAMOND, 2)
                .setUnlocalizedName("armor_test_obj_pants").setCreativeTab(CreativeTabs.tabCombat);
                GameRegistry.registerItem(nordl, "item_armor_test_obj_pants");

                nordb = new NordArmor(ArmorMaterial.DIAMOND, 3)
                .setUnlocalizedName("armor_test_obj_boots").setCreativeTab(CreativeTabs.tabCombat);
                GameRegistry.registerItem(nordb, "item_armor_test_obj_boots");

                
                DaedrH = new DaedricArmor(ArmorMaterial.DIAMOND, 0)
                        .setUnlocalizedName("DaedrH").setCreativeTab(CreativeTabs.tabCombat).setTextureName(modid + ":DaedricH");
                        GameRegistry.registerItem(DaedrH, "item_armor_test_obj_hel");
 
                        DaedrCP = new DaedricArmor(ArmorMaterial.DIAMOND, 1)
                        .setUnlocalizedName("DaedrCP").setCreativeTab(CreativeTabs.tabCombat).setTextureName(modid + ":DaedricCP");
                        GameRegistry.registerItem(DaedrCP, "item_armor_test_obj_vet");

                        DaedrL = new DaedricArmor(ArmorMaterial.DIAMOND, 2)
                        .setUnlocalizedName("DaedrL").setCreativeTab(CreativeTabs.tabCombat).setTextureName(modid + ":DaedricL");
                        GameRegistry.registerItem(DaedrL, "item_armor_test_obj_pans");

                        DaedrB = new DaedricArmor(ArmorMaterial.DIAMOND, 3)
                        .setUnlocalizedName("DaedrB").setCreativeTab(CreativeTabs.tabCombat).setTextureName(modid + ":DaedricB");
                        GameRegistry.registerItem(DaedrB, "item_armor_test_obj_boos");
        
        D4=new D4();
        GameRegistry.registerItem(D4, "D4");
        
        IronKz=new IronKz();
        GameRegistry.registerItem(IronKz, "IronKz");
        
        DK=new DK();
        GameRegistry.registerItem(DK, "DK");
        
        SteelI=new SteelI();
        GameRegistry.registerItem(SteelI, "SteelI");
        
        IronI=new IronI();
        GameRegistry.registerItem(IronI, "IronI");
        
    
        SilverI=new SilverI();
        GameRegistry.registerItem(SilverI, "SilverI");
        
        
        CorundumI=new CorundumI();
        GameRegistry.registerItem(CorundumI, "CorundumI");
        
        OrihalcumI=new OrihalcumI();
        GameRegistry.registerItem(OrihalcumI, "OrihalcumI");
        
        EbonyI=new EbonyI();
        GameRegistry.registerItem(EbonyI, "EbonyI");
        
        GoldI=new GoldI();
        GameRegistry.registerItem(GoldI, "GoldI");
        
        QuicksilverI=new QuicksilverI();
        GameRegistry.registerItem(QuicksilverI, "QuicksilverI");
        
        DvemerI=new DvemerI();
        GameRegistry.registerItem(DvemerI, "DvemerI");
        
        MalachiteI=new MalachiteI();
        GameRegistry.registerItem(MalachiteI, "MalachiteI");
        
        ForgeBlock = new ForgeBlock();
        GameRegistry.registerBlock(ForgeBlock, "ForgeBlock");

        GameRegistry.registerTileEntity(TileEntityForge.class, "TileEntityForge");
        
        MoonstoneI=new MoonstoneI();
        GameRegistry.registerItem(MoonstoneI, "MoonstoneI");
        proxy.preInit();
    }

    @Mod.EventHandler
    public void init(FMLInitializationEvent event) {
        proxy.init();
    }
    @Mod.EventHandler
    public void postInit(FMLPostInitializationEvent event) {
        proxy.postInit();
    }
    public static CreativeTabs IngotTab = new IngotTab("13");
    
}

Java:
package ru.whitewarrior.testmod;

import net.minecraft.item.Item;
import net.minecraftforge.client.MinecraftForgeClient;
import cpw.mods.fml.client.registry.ClientRegistry;
import cpw.mods.fml.common.event.FMLPostInitializationEvent;

public class ProxyClient extends CommonProxy {

    public void preInit() {
        super.preInit();
    }

    public void init() {
        super.init();

        //Blocks
        ClientRegistry.bindTileEntitySpecialRenderer(TileEntityForge.class, new RenderTileEntityForge());
        MinecraftForgeClient.registerItemRenderer(Item.getItemFromBlock(Main.ForgeBlock), new RenderItemBlockForge());
        
        
        MinecraftForgeClient.registerItemRenderer(Main.SteelI, new RenderSteelI());
        MinecraftForgeClient.registerItemRenderer(Main.IronI, new RenderIronI());
        MinecraftForgeClient.registerItemRenderer(Main.SilverI, new RenderSilverI());
        MinecraftForgeClient.registerItemRenderer(Main.CorundumI, new RenderCorundumI());
        MinecraftForgeClient.registerItemRenderer(Main.OrihalcumI, new RenderOrihalcumI());
        MinecraftForgeClient.registerItemRenderer(Main.EbonyI, new RenderEbonyI());
        MinecraftForgeClient.registerItemRenderer(Main.GoldI, new RenderGoldI());
        MinecraftForgeClient.registerItemRenderer(Main.QuicksilverI, new RenderQuicksilverI());
        MinecraftForgeClient.registerItemRenderer(Main.DvemerI, new RenderDvemerI());
        MinecraftForgeClient.registerItemRenderer(Main.MalachiteI, new RenderMalachiteI());
        MinecraftForgeClient.registerItemRenderer(Main.MoonstoneI, new RenderMoonstoneI());
        MinecraftForgeClient.registerItemRenderer(Main.D4, new RenderD4());
        MinecraftForgeClient.registerItemRenderer(Main.DK, new RenderDK());
        MinecraftForgeClient.registerItemRenderer(Main.IronKz, new RenderIronKz());
    }

}

Java:
package ru.whitewarrior.testmod;

import net.minecraft.block.Block;
import net.minecraft.block.ITileEntityProvider;
import net.minecraft.block.material.Material;
import net.minecraft.client.Minecraft;
import net.minecraft.creativetab.CreativeTabs;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.tileentity.TileEntity;
import net.minecraft.world.World;

public class ForgeBlock extends Block implements ITileEntityProvider {

    public ForgeBlock() {
        super(Material.circuits);
        setCreativeTab(CreativeTabs.tabBlock);
        setHardness(0.25F);
        setStepSound(soundTypeMetal);
        setBlockTextureName("forge");
        setBlockName(Main.modid + ".block_obj");
    }

    @Override
    public TileEntity createNewTileEntity(World world, int metadata) {
        return new TileEntityForge();
    }

    public int getRenderType() {
        return -1;
    }

    public boolean isOpaqueCube() {
        return false;
    }

    public boolean renderAsNormalBlock() {
        return false;
    }


    @Override
    public boolean onBlockActivated(World p_149727_1_, int p_149727_2_, int p_149727_3_, int p_149727_4_,
            EntityPlayer p_149727_5_, int p_149727_6_, float p_149727_7_, float p_149727_8_, float p_149727_9_) {
        
        Minecraft.getMinecraft().displayGuiScreen(new GuiForge());
        
        return super.onBlockActivated(p_149727_1_, p_149727_2_, p_149727_3_, p_149727_4_, p_149727_5_, p_149727_6_, p_149727_7_,
                p_149727_8_, p_149727_9_);
    }
    

}
 
1,111
47
420
Все просто. У тебя модель не триангулированая. Исправь это и все будет ок.
Caused by: net.minecraftforge.client.model.ModelFormatException: Error parsing entry ('f 9/9 1/1 5/5', line 2896) in file 'testmodww:eek:bj/forgemodel.obj' - Invalid number of points for face (expected 4, found 3)
 
128
12
Хм, из игры вылетать перестало. Но модели всё равно нет.1515407621563.png
 
250
12
24
ЧТО. ЗА. БРЕД. (Не исключено что я тупой но ты пытаешься тайлу прикрутить рендер от предмета)

Вот этот бред, а точнее вторую строку
Java:
ClientRegistry.bindTileEntitySpecialRenderer(TileEntityForge.class, new RenderTileEntityForge());
        MinecraftForgeClient.registerItemRenderer(Item.getItemFromBlock(Main.ForgeBlock), new RenderItemBlockForge());

Нужно заменить на вот этот бред
Код:
 ClientRegistry.bindTileEntitySpecialRenderer(твой тайл.class, new твой класс рендера());

И рендер не IItemRenderer(тебя вообще не смутило что ты указываешь рендер для блока но в названии Item?), а TileEntitySpecialRenderer.
И он будет выглядеть примерно так:

Код:
public class класс рендера extends TileEntitySpecialRenderer {

    public static IModelCustom model = твоя моделька;
    
    public static ResourceLocation texture = твоя текстура;

    @Override
    public void renderTileEntityAt(TileEntity tile, double x, double y, double z, float f)
    {
        render((твой тайл)tile, x, y, z, f);
    }
    
    private void render(твой тайл tile, double x, double y, double z, float f) {   
        GL11.glPushMatrix();
        GL11.glTranslated(x, y, z);
        bindTexture(texture);
        model.renderAll();
        GL11.glPopMatrix();
    }

}
 
1,111
47
420
ЧТО. ЗА. БРЕД. (Не исключено что я тупой но ты пытаешься тайлу прикрутить рендер от предмета)

Вот этот бред, а точнее вторую строку
Java:
ClientRegistry.bindTileEntitySpecialRenderer(TileEntityForge.class, new RenderTileEntityForge());
        MinecraftForgeClient.registerItemRenderer(Item.getItemFromBlock(Main.ForgeBlock), new RenderItemBlockForge());

Нужно заменить на вот этот бред
Код:
 ClientRegistry.bindTileEntitySpecialRenderer(твой тайл.class, new твой класс рендера());

И рендер не IItemRenderer(тебя вообще не смутило что ты указываешь рендер для блока но в названии Item?), а TileEntitySpecialRenderer.
И он будет выглядеть примерно так:

Код:
public class класс рендера extends TileEntitySpecialRenderer {

    public static IModelCustom model = твоя моделька;
   
    public static ResourceLocation texture = твоя текстура;

    @Override
    public void renderTileEntityAt(TileEntity tile, double x, double y, double z, float f)
    {
        render((твой тайл)tile, x, y, z, f);
    }
   
    private void render(твой тайл tile, double x, double y, double z, float f) {  
        GL11.glPushMatrix();
        GL11.glTranslated(x, y, z);
        bindTexture(texture);
        model.renderAll();
        GL11.glPopMatrix();
    }

}
Лололол. Когда ты сделал рендер тайлу в руке он у тебя станет квадратом эмо, а по сему нужно еще рендер айтэма делать. Так что все ок. Хе хе.
 
128
12
Изменил размеры, теперь такая дичь.
1515412545008.png
Java:
package ru.whitewarrior.testmod;

import net.minecraft.client.renderer.tileentity.TileEntitySpecialRenderer;
import net.minecraft.tileentity.TileEntity;
import net.minecraft.util.ResourceLocation;
import net.minecraftforge.client.model.AdvancedModelLoader;
import net.minecraftforge.client.model.IModelCustom;

import org.lwjgl.opengl.GL11;

public class RenderTileEntityForge extends TileEntitySpecialRenderer {

    public static final IModelCustom model =
            AdvancedModelLoader.loadModel(new ResourceLocation(Main.modid, "obj/forgemodel.obj"));
    public static final ResourceLocation texture1 = new ResourceLocation("minecraft", "textures/blocks/stone.png");
    public static final ResourceLocation texture2 = new ResourceLocation("minecraft", "textures/blocks/lava.png");
    public static final ResourceLocation texture3 = new ResourceLocation("minecraft", "textures/blocks/cobblestone.png");

    @Override
    public void renderTileEntityAt(TileEntity tile, double x, double y, double z, float f) {
        render((TileEntityForge)tile, x, y, z, f);
    }

    private void render(TileEntityForge tile, double x, double y, double z, float f) {
        
        GL11.glPushMatrix();
        GL11.glScaled(0.000005F, 0.000005F, 0.000005F);
        GL11.glTranslated(x, y, z);
        bindTexture(texture1);
        model.renderPart("Stone");
        bindTexture(texture2);
        model.renderPart("Lava");
        bindTexture(texture3);
        model.renderPart("Cobblestone");
        GL11.glPopMatrix();
    }

}
 
Сверху