[1.7.10] Краш при добавлении вкладки

нужно добавить вкладку в креатив и взять иконку от блока.
Код:
    final CreativeTabs tabxxx = new CreativeTabs("xxx") {
        @Override
        @SideOnly(Side.CLIENT)
        public Item getTabIconItem() {
            return Item.getItemFromBlock(blockBlue);
        }

    };
Почему крашит?
 
Код:
[13:17:41] [Client thread/FATAL]: Reported exception thrown!
net.minecraft.util.ReportedException: Rendering item
    at net.minecraft.client.renderer.EntityRenderer.updateCameraAndRender(EntityRenderer.java:1168) ~[EntityRenderer.class:?]
    at net.minecraft.client.Minecraft.runGameLoop(Minecraft.java:1057) ~[Minecraft.class:?]
    at net.minecraft.client.Minecraft.run(Minecraft.java:951) [Minecraft.class:?]
    at net.minecraft.client.main.Main.main(Main.java:164) [Main.class:?]
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[?:1.7.0_71]
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57) ~[?:1.7.0_71]
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[?:1.7.0_71]
    at java.lang.reflect.Method.invoke(Method.java:606) ~[?:1.7.0_71]
    at net.minecraft.launchwrapper.Launch.launch(Launch.java:135) [launchwrapper-1.11.jar:?]
    at net.minecraft.launchwrapper.Launch.main(Launch.java:28) [launchwrapper-1.11.jar:?]
    at net.minecraftforge.gradle.GradleStartCommon.launch(Unknown Source) [start/:?]
    at GradleStart.main(Unknown Source) [start/:?]
Caused by: java.lang.NullPointerException
    at net.minecraft.item.ItemStack.getItemDamage(ItemStack.java:265) ~[ItemStack.class:?]
    at net.minecraft.client.renderer.entity.RenderItem.renderItemIntoGUI(RenderItem.java:419) ~[RenderItem.class:?]
    at net.minecraft.client.renderer.entity.RenderItem.renderItemAndEffectIntoGUI(RenderItem.java:585) ~[RenderItem.class:?]
    at net.minecraft.client.gui.inventory.GuiContainerCreative.func_147051_a(GuiContainerCreative.java:968) ~[GuiContainerCreative.class:?]
    at net.minecraft.client.gui.inventory.GuiContainerCreative.drawGuiContainerBackgroundLayer(GuiContainerCreative.java:795) ~[GuiContainerCreative.class:?]
    at net.minecraft.client.gui.inventory.GuiContainer.drawScreen(GuiContainer.java:93) ~[GuiContainer.class:?]
    at net.minecraft.client.renderer.InventoryEffectRenderer.drawScreen(InventoryEffectRenderer.java:44) ~[InventoryEffectRenderer.class:?]
    at net.minecraft.client.gui.inventory.GuiContainerCreative.drawScreen(GuiContainerCreative.java:673) ~[GuiContainerCreative.class:?]
    at net.minecraft.client.renderer.EntityRenderer.updateCameraAndRender(EntityRenderer.java:1137) ~[EntityRenderer.class:?]
    ... 11 more
[13:17:41] [Client thread/INFO] [STDOUT]: [net.minecraft.client.Minecraft:displayCrashReport:388]: ---- Minecraft Crash Report ----
// Hi. I'm Minecraft, and I'm a crashaholic.

Time: 30.05.15 13:17
Description: Rendering item

java.lang.NullPointerException: Rendering item
    at net.minecraft.item.ItemStack.getItemDamage(ItemStack.java:265)
    at net.minecraft.client.renderer.entity.RenderItem.renderItemIntoGUI(RenderItem.java:419)
    at net.minecraft.client.renderer.entity.RenderItem.renderItemAndEffectIntoGUI(RenderItem.java:585)
    at net.minecraft.client.gui.inventory.GuiContainerCreative.func_147051_a(GuiContainerCreative.java:968)
    at net.minecraft.client.gui.inventory.GuiContainerCreative.drawGuiContainerBackgroundLayer(GuiContainerCreative.java:795)
    at net.minecraft.client.gui.inventory.GuiContainer.drawScreen(GuiContainer.java:93)
    at net.minecraft.client.renderer.InventoryEffectRenderer.drawScreen(InventoryEffectRenderer.java:44)
    at net.minecraft.client.gui.inventory.GuiContainerCreative.drawScreen(GuiContainerCreative.java:673)
    at net.minecraft.client.renderer.EntityRenderer.updateCameraAndRender(EntityRenderer.java:1137)
    at net.minecraft.client.Minecraft.runGameLoop(Minecraft.java:1057)
    at net.minecraft.client.Minecraft.run(Minecraft.java:951)
    at net.minecraft.client.main.Main.main(Main.java:164)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:606)
    at net.minecraft.launchwrapper.Launch.launch(Launch.java:135)
    at net.minecraft.launchwrapper.Launch.main(Launch.java:28)
    at net.minecraftforge.gradle.GradleStartCommon.launch(Unknown Source)
    at GradleStart.main(Unknown Source)


A detailed walkthrough of the error, its code path and all known details is as follows:
---------------------------------------------------------------------------------------

-- Head --
Stacktrace:
    at net.minecraft.item.ItemStack.getItemDamage(ItemStack.java:265)
    at net.minecraft.client.renderer.entity.RenderItem.renderItemIntoGUI(RenderItem.java:419)

-- Item being rendered --
Details:
    Item Type: null
    Item Aux: ~~ERROR~~ NullPointerException: null
    Item NBT: null
    Item Foil: ~~ERROR~~ NullPointerException: null
Stacktrace:
    at net.minecraft.client.renderer.entity.RenderItem.renderItemAndEffectIntoGUI(RenderItem.java:585)
    at net.minecraft.client.gui.inventory.GuiContainerCreative.func_147051_a(GuiContainerCreative.java:968)
    at net.minecraft.client.gui.inventory.GuiContainerCreative.drawGuiContainerBackgroundLayer(GuiContainerCreative.java:795)
    at net.minecraft.client.gui.inventory.GuiContainer.drawScreen(GuiContainer.java:93)
    at net.minecraft.client.renderer.InventoryEffectRenderer.drawScreen(InventoryEffectRenderer.java:44)
    at net.minecraft.client.gui.inventory.GuiContainerCreative.drawScreen(GuiContainerCreative.java:673)

-- Screen render details --
Details:
    Screen name: net.minecraft.client.gui.inventory.GuiContainerCreative
    Mouse location: Scaled: (310, 11). Absolute: (621, 456)
    Screen size: Scaled: (427, 240). Absolute: (854, 480). Scale factor of 2

-- Affected level --
Details:
    Level name: MpServer
    All players: 1 total; [EntityClientPlayerMP['RAIN'/259, l='MpServer', x=-5325,32, y=7,61, z=1804,60]]
    Chunk stats: MultiplayerChunkCache: 169, 169
    Level seed: 0
    Level generator: ID 01 - flat, ver 0. Features enabled: false
    Level generator options: 
    Level spawn location: World: (-53,4,-1690), Chunk: (at 11,0,6 in -4,-106; contains blocks -64,0,-1696 to -49,255,-1681), Region: (-1,-4; contains chunks -32,-128 to -1,-97, blocks -512,0,-2048 to -1,255,-1537)
    Level time: 611296 game time, 2825 day time
    Level dimension: 0
    Level storage version: 0x00000 - Unknown?
    Level weather: Rain time: 0 (now: false), thunder time: 0 (now: false)
    Level game mode: Game mode: creative (ID 1). Hardcore: false. Cheats: false
    Forced entities: 27 total; [EntityClientPlayerMP['RAIN'/259, l='MpServer', x=-5325,32, y=7,61, z=1804,60], EntityVillager['Житель'/272, l='MpServer', x=-5344,69, y=4,00, z=1769,00], EntityItem['item.item.seeds'/28100, l='MpServer', x=-5344,88, y=1,13, z=1785,56], EntityBat['Летучая мышь'/258, l='MpServer', x=-5296,25, y=6,10, z=1768,19], EntityVillager['Житель'/256, l='MpServer', x=-5347,34, y=4,00, z=1770,09], EntityBat['Летучая мышь'/257, l='MpServer', x=-5304,75, y=6,10, z=1765,81], EntityVillager['Житель'/262, l='MpServer', x=-5334,25, y=4,00, z=1775,40], EntityVillager['Житель'/263, l='MpServer', x=-5343,75, y=1,00, z=1776,04], EntityVillager['Житель'/260, l='MpServer', x=-5346,00, y=4,00, z=1791,31], EntityVillager['Житель'/261, l='MpServer', x=-5325,53, y=2,00, z=1783,81], EntityVillager['Житель'/266, l='MpServer', x=-5337,44, y=4,00, z=1779,38], EntityItem['item.item.carrots'/17428, l='MpServer', x=-5337,06, y=5,13, z=1784,88], EntityVillager['Житель'/267, l='MpServer', x=-5314,38, y=5,00, z=1771,31], EntityVillager['Житель'/264, l='MpServer', x=-5328,31, y=4,00, z=1776,44], EntityVillager['Житель'/265, l='MpServer', x=-5330,25, y=4,00, z=1780,25], EntityItem['item.item.seeds'/270, l='MpServer', x=-5314,22, y=1,13, z=1826,09], EntityBat['Летучая мышь'/271, l='MpServer', x=-5341,41, y=5,00, z=1777,75], EntityVillager['Житель'/268, l='MpServer', x=-5325,47, y=4,00, z=1763,88], EntityVillager['Житель'/269, l='MpServer', x=-5341,90, y=4,00, z=1772,63], EntityItem['item.item.seeds'/26190, l='MpServer', x=-5344,28, y=5,13, z=1787,34], EntityItem['item.item.seeds'/26191, l='MpServer', x=-5343,06, y=5,13, z=1787,13], EntityItem['item.item.carrots'/26185, l='MpServer', x=-5338,19, y=1,13, z=1787,06], EntityBat['Летучая мышь'/254, l='MpServer', x=-5351,25, y=7,10, z=1791,75], EntityVillager['Житель'/255, l='MpServer', x=-5350,59, y=4,00, z=1776,47], EntityVillager['Житель'/252, l='MpServer', x=-5344,69, y=5,00, z=1775,31], EntityBat['Летучая мышь'/253, l='MpServer', x=-5352,63, y=8,10, z=1784,25], EntityItem['item.item.carrots'/26195, l='MpServer', x=-5337,34, y=5,13, z=1782,75]]
    Retry entities: 0 total; []
    Server brand: fml,forge
    Server type: Integrated singleplayer server
Stacktrace:
    at net.minecraft.client.multiplayer.WorldClient.addWorldInfoToCrashReport(WorldClient.java:415)
    at net.minecraft.client.Minecraft.addGraphicsAndWorldToCrashReport(Minecraft.java:2556)
    at net.minecraft.client.Minecraft.run(Minecraft.java:972)
    at net.minecraft.client.main.Main.main(Main.java:164)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:606)
    at net.minecraft.launchwrapper.Launch.launch(Launch.java:135)
    at net.minecraft.launchwrapper.Launch.main(Launch.java:28)
    at net.minecraftforge.gradle.GradleStartCommon.launch(Unknown Source)
    at GradleStart.main(Unknown Source)

-- System Details --
Details:
    Minecraft Version: 1.7.10
    Operating System: Windows 7 (x86) version 6.1
    Java Version: 1.7.0_71, Oracle Corporation
    Java VM Version: Java HotSpot(TM) Client VM (mixed mode), Oracle Corporation
    Memory: 785448920 bytes (749 MB) / 1046937600 bytes (998 MB) up to 1046937600 bytes (998 MB)
    JVM Flags: 3 total; -Xincgc -Xmx1024M -Xms1024M
    AABB Pool Size: 0 (0 bytes; 0 MB) allocated, 0 (0 bytes; 0 MB) used
    IntCache: cache: 0, tcache: 0, allocated: 0, tallocated: 0
    FML: MCP v9.05 FML v7.10.85.1291 Minecraft Forge 10.13.2.1291 16 mods loaded, 16 mods active
    mcp{9.05} [Minecraft Coder Pack] (minecraft.jar) Unloaded->Constructed->Pre-initialized->Initialized->Post-initialized->Available->Available->Available->Available
    FML{7.10.85.1291} [Forge Mod Loader] (forgeSrc-1.7.10-10.13.2.1291.jar) Unloaded->Constructed->Pre-initialized->Initialized->Post-initialized->Available->Available->Available->Available
    Forge{10.13.2.1291} [Minecraft Forge] (forgeSrc-1.7.10-10.13.2.1291.jar) Unloaded->Constructed->Pre-initialized->Initialized->Post-initialized->Available->Available->Available->Available
    allMaterialStairs{1.0} [allMaterialStairs] (forge-1.7) Unloaded->Constructed->Pre-initialized->Initialized->Post-initialized->Available->Available->Available->Available
    capabilitieshack{test} [Player capabilities hack] (forge-1.7) Unloaded->Constructed->Pre-initialized->Initialized->Post-initialized->Available->Available->Available->Available
    coloredblocks{1.0.0} [Colored blocks] (forge-1.7) Unloaded->Constructed->Pre-initialized->Initialized->Post-initialized->Available->Available->Available->Available
    coloredbricks{1.0.0} [Colored bricks] (forge-1.7) Unloaded->Constructed->Pre-initialized->Initialized->Post-initialized->Available->Available->Available->Available
    destructionmod{BETA} [Destruction mod] (forge-1.7) Unloaded->Constructed->Pre-initialized->Initialized->Post-initialized->Available->Available->Available->Available
    editworld{experimental} [edit world] (forge-1.7) Unloaded->Constructed->Pre-initialized->Initialized->Post-initialized->Available->Available->Available->Available
    falloutmod{dev} [FalloutInMinecraft] (forge-1.7) Unloaded->Constructed->Pre-initialized->Initialized->Post-initialized->Available->Available->Available->Available
    fireworks{BETA} [Fireworks] (forge-1.7) Unloaded->Constructed->Pre-initialized->Initialized->Post-initialized->Available->Available->Available->Available
    infinitedispenser{1.0.0.1} [Infinite dispenser] (forge-1.7) Unloaded->Constructed->Pre-initialized->Initialized->Post-initialized->Available->Available->Available->Available
    photocamera{1.0.0} [Photocamera] (forge-1.7) Unloaded->Constructed->Pre-initialized->Initialized->Post-initialized->Available->Available->Available->Available
    rapidarrows{BETA} [Rapid arrows] (forge-1.7) Unloaded->Constructed->Pre-initialized->Initialized->Post-initialized->Available->Available->Available->Available
    rotatingstatuesmod{1.0.0} [Rotating statues] (forge-1.7) Unloaded->Constructed->Pre-initialized->Initialized->Post-initialized->Available->Available->Available->Available
    test3drender{TEST} [3d test] (forge-1.7) Unloaded->Constructed->Pre-initialized->Initialized->Post-initialized->Available->Available->Available->Available
    Launched Version: 1.7.10
    LWJGL: 2.9.1
    OpenGL: Intel(R) HD Graphics 2500 GL version 4.0.0 - Build 10.18.10.4176, Intel
    GL Caps: Using GL 1.3 multitexturing.
Using framebuffer objects because OpenGL 3.0 is supported and separate blending is supported.
Anisotropic filtering is supported and maximum anisotropy is 16.
Shaders are available because OpenGL 2.1 is supported.

    Is Modded: Definitely; Client brand changed to 'fml,forge'
    Type: Client (map_client.txt)
    Resource Packs: []
    Current Language: Русский (Россия)
    Profiler Position: N/A (disabled)
    Vec3 Pool Size: 0 (0 bytes; 0 MB) allocated, 0 (0 bytes; 0 MB) used
    Anisotropic Filtering: Off (1)
[13:17:41] [Client thread/INFO] [STDOUT]: [net.minecraft.client.Minecraft:displayCrashReport:398]: #@!@# Game crashed! Crash report saved to: #@!@# I:\games\minecraft\modding\forge-1.7\eclipse\.\crash-reports\crash-2015-05-30_13.17.41-client.txt
Disconnected from the target VM, address: '127.0.0.1:55922', transport: 'socket'
AL lib: (EE) alc_cleanup: 1 device not closed

Process finished with exit code -1
null pointer exception
но мой блок не равен null. Смотрел в дебаггере.
 
Dovakin написал(а):
А что раньше регистрирукшь? Блок или вкладку? Надо блок
у меня в коде идет сначала вышеуказанная конструкция, потом FMLInitializationEvent.
При выполнении return Item.getItemFromBlock(blockWhite), блок по-идее уже зарегистрирован. Это видно в дебаггере.
Дебаггер доходит до метода
Код:
    public int func_148747_b(Object p_148747_1_)
    {
        Integer integer = (Integer)this.field_148749_a.get(p_148747_1_);
        return integer == null ? -1 : integer.intValue();
    }
и тут получается -1
[merge_posts_bbcode]Добавлено: 30.05.2015 15:41:51[/merge_posts_bbcode]

если вынести вкладку в отдельный класс и делать
Код:
    final CreativeTabs tabxxx = new Tab1("yyyyyy");
тогда работает.
но почему?
 
Типа я не знаю как правильно объяснить. Но постараюсь понятнее.
Код:
Item.getItemFromBlock(blockBlue);
Тут ты не указал главный класс, а просто переменную. Если до этого момента переменная "blockBlue" не равен нулевому значению, то краша про нулевое значение не было. Но тогда из-за листа, этого блока не было во вкладке.
Когда ты сделал отдельный класс для вкладки, то ты указал главный класс и переменную, то тут зависит от условий, если переменная "blockBlue" будет не нулевому значению, до того как будет вызван метод, который требует переменную "blockBlue", то краша не должно.
[merge_posts_bbcode]Добавлено: 30.05.2015 12:02:05[/merge_posts_bbcode]

Т.е. типа надо указать кроме переменной и ещё класс этой переменной, даже если эта переменная находиться в этом-же классе.
 
Да, но ведь public Item getTabIconItem() вызывается не при загрузке мода, а при перелистывании инвентаря в игре. То есть, к этому моменту все блоки уже давно зарегистрированы.
p.s. Аккуратно переписал код еще раз. Всё работает без класса вкладки. Так и не понял, где ошибка была.
 
Dovakin написал(а):
Код главного / вкладки класса
Код:
    final CreativeTabs tabColoredBlocks = new CreativeTabs("coloredblocks") {
        @Override
        @SideOnly(Side.CLIENT)
        public Item getTabIconItem() {
            return Item.getItemFromBlock(blockWhite);
        }
    };

    public static Block
            blockBlack,
            blockWhite;

    @Mod.EventHandler
    public void init(FMLInitializationEvent event) {
        blockBlack = new Block1(Material.rock, "blockBlack").setCreativeTab(tabColoredBlocks)
                .setBlockTextureName(ModInfo.MODID + ":blockBlack");
        blockWhite = new Block1(Material.rock, "blockWhite").setCreativeTab(tabColoredBlocks)
                .setBlockTextureName(ModInfo.MODID + ":blockWhite");
        GameRegistry.registerBlock(blockBlack, "blockBlack");
        GameRegistry.registerBlock(blockWhite, "blockWhite");
    }
вкладку уже удалил.
 
Назад
Сверху