Jump to content

Recommended Posts

Posted

For about some time now i have started a 1.8 mod project. I have started it mostly like a test project to learn more about the way Forge 1.8 works but depending on the way it turns out this project may be published. So today i found some time and started working. I am getting a little bit confused over the rendering. I saw a simple tutorial and then tried to recreate the thing my own way. After i finished it seemed that i had done the most part of simple rendering for items and block using .json however everytime i start the game it just crashes on PreInit phase if i am not mistaken. Maybe i am derping and this is an obvious error, but this is the first time for me working on 1.8 so excuse the non-efficient coding(if there is any).

 

Here is the crash-report:

 

---- Minecraft Crash Report ----

// Hey, that tickles! Hehehe!

 

Time: 15-11-09 10.41.MD

Description: Initializing game

 

java.lang.NullPointerException: Initializing game

at com.asolin.client.ItemRenderer.registerItemRenderer(ItemRenderer.java:20)

at com.asolin.client.ItemRenderer.registerItemRender(ItemRenderer.java:12)

at com.asolin.main.clientProxy.registerRenderInfo(clientProxy.java:11)

at com.asolin.main.Asolin.Init(Asolin.java:105)

at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)

at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)

at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)

at java.lang.reflect.Method.invoke(Unknown Source)

at net.minecraftforge.fml.common.FMLModContainer.handleModStateEvent(FMLModContainer.java:537)

at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)

at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)

at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)

at java.lang.reflect.Method.invoke(Unknown Source)

at com.google.common.eventbus.EventSubscriber.handleEvent(EventSubscriber.java:74)

at com.google.common.eventbus.SynchronizedEventSubscriber.handleEvent(SynchronizedEventSubscriber.java:47)

at com.google.common.eventbus.EventBus.dispatch(EventBus.java:322)

at com.google.common.eventbus.EventBus.dispatchQueuedEvents(EventBus.java:304)

at com.google.common.eventbus.EventBus.post(EventBus.java:275)

at net.minecraftforge.fml.common.LoadController.sendEventToModContainer(LoadController.java:212)

at net.minecraftforge.fml.common.LoadController.propogateStateMessage(LoadController.java:190)

at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)

at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)

at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)

at java.lang.reflect.Method.invoke(Unknown Source)

at com.google.common.eventbus.EventSubscriber.handleEvent(EventSubscriber.java:74)

at com.google.common.eventbus.SynchronizedEventSubscriber.handleEvent(SynchronizedEventSubscriber.java:47)

at com.google.common.eventbus.EventBus.dispatch(EventBus.java:322)

at com.google.common.eventbus.EventBus.dispatchQueuedEvents(EventBus.java:304)

at com.google.common.eventbus.EventBus.post(EventBus.java:275)

at net.minecraftforge.fml.common.LoadController.distributeStateMessage(LoadController.java:119)

at net.minecraftforge.fml.common.Loader.preinitializeMods(Loader.java:550)

at net.minecraftforge.fml.client.FMLClientHandler.beginMinecraftLoading(FMLClientHandler.java:248)

at net.minecraft.client.Minecraft.startGame(Minecraft.java:446)

at net.minecraft.client.Minecraft.run(Minecraft.java:356)

at net.minecraft.client.main.Main.main(Main.java:117)

at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)

at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)

at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)

at java.lang.reflect.Method.invoke(Unknown Source)

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 com.asolin.client.ItemRenderer.registerItemRenderer(ItemRenderer.java:20)

at com.asolin.client.ItemRenderer.registerItemRender(ItemRenderer.java:12)

at com.asolin.main.clientProxy.registerRenderInfo(clientProxy.java:11)

at com.asolin.main.Asolin.Init(Asolin.java:105)

at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)

at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)

at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)

at java.lang.reflect.Method.invoke(Unknown Source)

at net.minecraftforge.fml.common.FMLModContainer.handleModStateEvent(FMLModContainer.java:537)

at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)

at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)

at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)

at java.lang.reflect.Method.invoke(Unknown Source)

at com.google.common.eventbus.EventSubscriber.handleEvent(EventSubscriber.java:74)

at com.google.common.eventbus.SynchronizedEventSubscriber.handleEvent(SynchronizedEventSubscriber.java:47)

at com.google.common.eventbus.EventBus.dispatch(EventBus.java:322)

at com.google.common.eventbus.EventBus.dispatchQueuedEvents(EventBus.java:304)

at com.google.common.eventbus.EventBus.post(EventBus.java:275)

at net.minecraftforge.fml.common.LoadController.sendEventToModContainer(LoadController.java:212)

at net.minecraftforge.fml.common.LoadController.propogateStateMessage(LoadController.java:190)

at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)

at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)

at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)

at java.lang.reflect.Method.invoke(Unknown Source)

at com.google.common.eventbus.EventSubscriber.handleEvent(EventSubscriber.java:74)

at com.google.common.eventbus.SynchronizedEventSubscriber.handleEvent(SynchronizedEventSubscriber.java:47)

at com.google.common.eventbus.EventBus.dispatch(EventBus.java:322)

at com.google.common.eventbus.EventBus.dispatchQueuedEvents(EventBus.java:304)

at com.google.common.eventbus.EventBus.post(EventBus.java:275)

at net.minecraftforge.fml.common.LoadController.distributeStateMessage(LoadController.java:119)

at net.minecraftforge.fml.common.Loader.preinitializeMods(Loader.java:550)

at net.minecraftforge.fml.client.FMLClientHandler.beginMinecraftLoading(FMLClientHandler.java:248)

at net.minecraft.client.Minecraft.startGame(Minecraft.java:446)

 

-- Initialization --

Details:

Stacktrace:

at net.minecraft.client.Minecraft.run(Minecraft.java:356)

at net.minecraft.client.main.Main.main(Main.java:117)

at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)

at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)

at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)

at java.lang.reflect.Method.invoke(Unknown Source)

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.8

Operating System: Windows 7 (amd64) version 6.1

Java Version: 1.8.0_65, Oracle Corporation

Java VM Version: Java HotSpot 64-Bit Server VM (mixed mode), Oracle Corporation

Memory: 954310200 bytes (910 MB) / 1056309248 bytes (1007 MB) up to 1056309248 bytes (1007 MB)

JVM Flags: 3 total; -Xincgc -Xmx1024M -Xms1024M

IntCache: cache: 0, tcache: 0, allocated: 0, tallocated: 0

FML: MCP v9.10 FML v8.0.99.99 Minecraft Forge 11.14.3.1450 4 mods loaded, 4 mods active

States: 'U' = Unloaded 'L' = Loaded 'C' = Constructed 'H' = Pre-initialized 'I' = Initialized 'J' = Post-initialized 'A' = Available 'D' = Disabled 'E' = Errored

UCH mcp{9.05} [Minecraft Coder Pack] (minecraft.jar)

UCH FML{8.0.99.99} [Forge Mod Loader] (forgeSrc-1.8-11.14.3.1450.jar)

UCH Forge{11.14.3.1450} [Minecraft Forge] (forgeSrc-1.8-11.14.3.1450.jar)

UCE asolin{1.0} [Asolin] (bin)

Loaded coremods (and transformers):

GL info: ' Vendor: 'ATI Technologies Inc.' Version: '3.3.11672 Compatibility Profile Context' Renderer: 'ATI Radeon HD 3400 Series'

Launched Version: 1.8

LWJGL: 2.9.1

OpenGL: ATI Radeon HD 3400 Series GL version 3.3.11672 Compatibility Profile Context, ATI Technologies Inc.

GL Caps: Using GL 1.3 multitexturing.

Using GL 1.3 texture combiners.

Using framebuffer objects because OpenGL 3.0 is supported and separate blending is supported.

Shaders are available because OpenGL 2.1 is supported.

VBOs are available because OpenGL 1.5 is supported.

 

Using VBOs: No

Is Modded: Definitely; Client brand changed to 'fml,forge'

Type: Client (map_client.txt)

Resource Packs: []

Current Language: English (US)

Profiler Position: N/A (disabled)

 

 

Here is the code:

 

Main Class:

package com.asolin.main;

 

import com.asolin.client.ItemRenderer;

import com.asolin.proxies.proxylib;

import com.asolin.tools.flintAxe;

import com.asolin.tools.flintHoe;

import com.asolin.tools.flintSword;

 

import net.minecraft.creativetab.CreativeTabs;

import net.minecraft.item.Item;

import net.minecraft.item.ItemAxe;

import net.minecraft.item.ItemHoe;

import net.minecraft.item.ItemPickaxe;

import net.minecraft.item.ItemSpade;

import net.minecraft.item.ItemSword;

import net.minecraftforge.common.util.EnumHelper;

import net.minecraftforge.fml.common.Mod;

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.event.FMLPreInitializationEvent;

import net.minecraftforge.fml.common.registry.GameRegistry;

 

@Mod(modid = Asolin.MODID, name = Asolin.NAME, version = Asolin.VERSION)

 

public class Asolin {

 

public static final String MODID = "asolin";

public static final String NAME = "Asolin";

public static final String VERSION = "1.0";

 

@Instance

public static Asolin instance;

 

@SidedProxy(clientSide = proxylib.CLIENTSIDE, serverSide = proxylib.SERVERSIDE)

 

public static serverProxy proxy;

 

//Creative Tab

public static CreativeTabs asolinTab = new asolinTab(CreativeTabs.getNextID(), "Asolin");

 

//Armor Material

 

//Tool Material

public static Item.ToolMaterial flintMat = EnumHelper.addToolMaterial("flintMat", 1, 95, 3.0F, 0.5F, 10);

 

//Items

 

 

//Blocks

 

//Tools

public static ItemAxe flintAxe;

public static ItemSword flintSword;

public static ItemSpade flintShovel;

public static ItemPickaxe flintPickaxe;

public static ItemHoe flintHoe;

 

 

//Misc

 

@EventHandler

public void preInit(FMLPreInitializationEvent event) {

 

ItemRenderer.registerItemRender();

 

//Items

 

//Blocks

 

//Tools

 

flintAxe = new flintAxe();

flintSword = new flintSword();

flintShovel = new com.asolin.tools.flintShovel();

flintPickaxe = new com.asolin.tools.flintPickaxe();

flintHoe = new flintHoe();

 

//Machine

 

//Misc

 

 

 

//Registering Items

 

//Registering Blocks

 

//Registering Tools

GameRegistry.registerItem(flintAxe, flintAxe.getUnlocalizedName().substring(5));

GameRegistry.registerItem(flintSword, flintSword.getUnlocalizedName().substring(5));

GameRegistry.registerItem(flintShovel, flintSword.getUnlocalizedName().substring(5));

GameRegistry.registerItem(flintPickaxe, flintSword.getUnlocalizedName().substring(5));

GameRegistry.registerItem(flintHoe, flintSword.getUnlocalizedName().substring(5));

 

 

//Registering Misc

}

 

@EventHandler

public void Init(FMLPreInitializationEvent event) {

 

proxy.registerRenderInfo();

 

}

 

@EventHandler

public void postInit(FMLPreInitializationEvent event) {

 

}

 

}

 

 

Proxy Library:

package com.asolin.proxies;

 

public class proxylib {

 

public static final String CLIENTSIDE = "com.asolin.main.clientProxy";

public static final String SERVERSIDE = "com.asolin.main.serverProxy";

 

}

 

 

Client Proxy:

package com.asolin.main;

 

import com.asolin.client.ItemRenderer;

 

import net.minecraft.item.Item;

 

public class clientProxy extends serverProxy{

 

@Override

public void registerRenderInfo(){

ItemRenderer.registerItemRender();

}

}

 

 

 

ServerProxy:

package com.asolin.main;

 

public class serverProxy {

 

public void registerRenderInfo(){

 

}

 

 

}

 

 

 

ItemRenderer Class ( Custom ) :

package com.asolin.client;

 

import com.asolin.main.Asolin;

 

import net.minecraft.client.Minecraft;

import net.minecraft.client.resources.model.ModelResourceLocation;

import net.minecraft.item.Item;

 

public class ItemRenderer {

 

public static void registerItemRender(){

registerItemRenderer(Asolin.flintAxe);

registerItemRenderer(Asolin.flintSword);

registerItemRenderer(Asolin.flintPickaxe);

registerItemRenderer(Asolin.flintHoe);

}

 

public static void registerItemRenderer(Item item){

 

Minecraft.getMinecraft().getRenderItem().getItemModelMesher().register(item, 0, new ModelResourceLocation(Asolin.MODID + ":" + item.getUnlocalizedName().substring(5), "inventory"));

 

}

 

}

 

 

 

Posted

I think the issue here is that Minecraft's RenderItem instance is initialised after init and before post-init. So, to make it would you would need to move the item rendering registration to post init.

Posted

Do you get the exact same error? What may help would be to put a new line between each function call (so

    Minecraft.getMinecraft().getRenderItem().getItemModelMesher().register(item, 0, new ModelResourceLocation(Asolin.MODID + ":" + item.getUnlocalizedName().substring(5), "inventory"));

would become:

    Minecraft.getMinecraft()

    .getRenderItem()

    .getItemModelMesher()

    .register(item, 0, new ModelResourceLocation(Asolin.MODID + ":" + item.

    getUnlocalizedName().

    substring(5), "inventory"));

So you can see which function call is throwing an error, rather than just "somewhere in the entire line".

Posted

Your

Init

and

postInit

methods are both handling

FMLPreInitializationEvent

instead of handling

FMLInitializationEvent

and

FMLPostInitializationEvent

.

 

The

RenderItem

instance is created between preInit and init, so it's still

null

when you try to register your item models in the preInit phase.

Please don't PM me to ask for help. Asking your question in a public thread preserves it for people who are having the same problem in the future.

Posted

All things for rendering (e.g.meshing and renderers) are client-only. The server doesn't do display.

The debugger is a powerful and necessary tool in any IDE, so learn how to use it. You'll be able to tell us more and get better help here if you investigate your runtime problems in the debugger before posting.

Posted

Sorry, I saw the word "renderer" in the main class and commented. My own style is to call proxy.init (or preInit) and not have any mention of client-only features until inside my client proxy. In my own code, calls like ItemRenderer.registerItemRender() and proxy.registerRenderInfo() would be red flags.

 

Incidentally, your ItemRenderer class has "import net.minecraft.client.Minecraft". Isn't that a client-only class (hence "client" in its path)?

 

The debugger is a powerful and necessary tool in any IDE, so learn how to use it. You'll be able to tell us more and get better help here if you investigate your runtime problems in the debugger before posting.

Posted

That is not incidentally imported.

Minecraft.getMinecraft uses it. And minecraft.getMinecraft it's client only

I'm glad you found the error.

The debugger is a powerful and necessary tool in any IDE, so learn how to use it. You'll be able to tell us more and get better help here if you investigate your runtime problems in the debugger before posting.

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Unfortunately, your content contains terms that we do not allow. Please edit your content to remove the highlighted words below.
Reply to this topic...

×   Pasted as rich text.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Announcements



×
×
  • Create New...

Important Information

By using this site, you agree to our Terms of Use.