So, I am making a JME3 game that is basically like first person asteroids. It is really simple and compact and works fine on its own. I am trying to add a GUI to it and so far neither the XML or the Swing Canvas ways work for me. I am asking about the XML way because the gui shows up everything is fine when I print stuff or do simple operations but when I try to access a method from a class after a button press it throws this error:
WARNING: Exception: java.lang.reflect.InvocationTargetException
Apr 28, 2014 8:22:44 PM de.lessvoid.nifty.NiftyMethodInvoker logException
WARNING: sun.reflect.NativeMethodAccessorImpl invoke0 (NativeMethodAccessorImpl.java:-2)
Apr 28, 2014 8:22:44 PM de.lessvoid.nifty.NiftyMethodInvoker logException
WARNING: sun.reflect.NativeMethodAccessorImpl invoke (NativeMethodAccessorImpl.java:57)
Apr 28, 2014 8:22:44 PM de.lessvoid.nifty.NiftyMethodInvoker logException
WARNING: sun.reflect.DelegatingMethodAccessorImpl invoke (DelegatingMethodAccessorImpl.java:43)
Apr 28, 2014 8:22:44 PM de.lessvoid.nifty.NiftyMethodInvoker logException
WARNING: java.lang.reflect.Method invoke (Method.java:606)
Apr 28, 2014 8:22:44 PM de.lessvoid.nifty.NiftyMethodInvoker logException
WARNING: de.lessvoid.nifty.NiftyMethodInvoker callMethod (NiftyMethodInvoker.java:145)
Apr 28, 2014 8:22:44 PM de.lessvoid.nifty.NiftyMethodInvoker logException
WARNING: de.lessvoid.nifty.NiftyMethodInvoker performInvoke (NiftyMethodInvoker.java:104)
Apr 28, 2014 8:22:44 PM de.lessvoid.nifty.NiftyMethodInvoker logException
WARNING: de.lessvoid.nifty.Nifty$DelayedMethodInvoke perform (Nifty.java:1174)
Apr 28, 2014 8:22:44 PM de.lessvoid.nifty.NiftyMethodInvoker logException
WARNING: de.lessvoid.nifty.Nifty invokeMethods (Nifty.java:1152)
Apr 28, 2014 8:22:44 PM de.lessvoid.nifty.NiftyMethodInvoker logException
WARNING: de.lessvoid.nifty.Nifty handleDynamicElements (Nifty.java:354)
Apr 28, 2014 8:22:44 PM de.lessvoid.nifty.NiftyMethodInvoker logException
WARNING: de.lessvoid.nifty.Nifty access$1700 (Nifty.java:77)
Apr 28, 2014 8:22:44 PM de.lessvoid.nifty.NiftyMethodInvoker logException
WARNING: de.lessvoid.nifty.Nifty$NiftyInputConsumerImpl processEvent (Nifty.java:1374)
Apr 28, 2014 8:22:44 PM de.lessvoid.nifty.NiftyMethodInvoker logException
WARNING: de.lessvoid.nifty.Nifty$NiftyInputConsumerImpl processMouseEvent (Nifty.java:1329)
Apr 28, 2014 8:22:44 PM de.lessvoid.nifty.NiftyMethodInvoker logException
WARNING: com.jme3.niftygui.InputSystemJme handleMouseEvent (InputSystemJme.java:124)
Apr 28, 2014 8:22:44 PM de.lessvoid.nifty.NiftyMethodInvoker logException
WARNING: com.jme3.niftygui.InputSystemJme onMouseButtonEventQueued (InputSystemJme.java:232)
Apr 28, 2014 8:22:44 PM de.lessvoid.nifty.NiftyMethodInvoker logException
WARNING: com.jme3.niftygui.InputSystemJme forwardEvents (InputSystemJme.java:296)
Apr 28, 2014 8:22:44 PM de.lessvoid.nifty.NiftyMethodInvoker logException
WARNING: de.lessvoid.nifty.Nifty update (Nifty.java:288)
Apr 28, 2014 8:22:44 PM de.lessvoid.nifty.NiftyMethodInvoker logException
WARNING: com.jme3.niftygui.InputSystemJme endInput (InputSystemJme.java:113)
Apr 28, 2014 8:22:44 PM de.lessvoid.nifty.NiftyMethodInvoker logException
WARNING: com.jme3.input.InputManager processQueue (InputManager.java:819)
Apr 28, 2014 8:22:44 PM de.lessvoid.nifty.NiftyMethodInvoker logException
WARNING: com.jme3.input.InputManager update (InputManager.java:883)
Apr 28, 2014 8:22:44 PM de.lessvoid.nifty.NiftyMethodInvoker logException
WARNING: com.jme3.app.Application update (Application.java:604)
Apr 28, 2014 8:22:44 PM de.lessvoid.nifty.NiftyMethodInvoker logException
WARNING: com.jme3.app.SimpleApplication update (SimpleApplication.java:231)
Apr 28, 2014 8:22:44 PM de.lessvoid.nifty.NiftyMethodInvoker logException
WARNING: com.jme3.system.lwjgl.LwjglAbstractDisplay runLoop (LwjglAbstractDisplay.java:151)
Apr 28, 2014 8:22:44 PM de.lessvoid.nifty.NiftyMethodInvoker logException
WARNING: com.jme3.system.lwjgl.LwjglDisplay runLoop (LwjglDisplay.java:185)
Apr 28, 2014 8:22:44 PM de.lessvoid.nifty.NiftyMethodInvoker logException
WARNING: com.jme3.system.lwjgl.LwjglAbstractDisplay run (LwjglAbstractDisplay.java:228)
Apr 28, 2014 8:22:44 PM de.lessvoid.nifty.NiftyMethodInvoker logException
WARNING: java.lang.Thread run (Thread.java:744)
Apr 28, 2014 8:22:44 PM de.lessvoid.nifty.NiftyMethodInvoker logException
WARNING: Root Cause: java.lang.NullPointerException
Apr 28, 2014 8:22:44 PM de.lessvoid.nifty.NiftyMethodInvoker logException
WARNING: com.jme3.material.Material <init> (Material.java:120)
Apr 28, 2014 8:22:44 PM de.lessvoid.nifty.NiftyMethodInvoker logException
WARNING: jme3games.Pop createMaterial (Pop.java:277)
Apr 28, 2014 8:22:44 PM de.lessvoid.nifty.NiftyMethodInvoker logException
WARNING: jme3games.Pop makeSphere (Pop.java:312)
Apr 28, 2014 8:22:44 PM de.lessvoid.nifty.NiftyMethodInvoker logException
WARNING: jme3games.Main runMeteor (Main.java:44)
Apr 28, 2014 8:22:44 PM de.lessvoid.nifty.NiftyMethodInvoker logException
WARNING: jme3GUI.GUIController playMeteor (GUIController.java:59)
Apr 28, 2014 8:22:44 PM de.lessvoid.nifty.NiftyMethodInvoker logException
WARNING: sun.reflect.NativeMethodAccessorImpl invoke0 (NativeMethodAccessorImpl.java:-2)
Apr 28, 2014 8:22:44 PM de.lessvoid.nifty.NiftyMethodInvoker logException
WARNING: sun.reflect.NativeMethodAccessorImpl invoke (NativeMethodAccessorImpl.java:57)
Apr 28, 2014 8:22:44 PM de.lessvoid.nifty.NiftyMethodInvoker logException
WARNING: sun.reflect.DelegatingMethodAccessorImpl invoke (DelegatingMethodAccessorImpl.java:43)
Apr 28, 2014 8:22:44 PM de.lessvoid.nifty.NiftyMethodInvoker logException
WARNING: java.lang.reflect.Method invoke (Method.java:606)
Apr 28, 2014 8:22:44 PM de.lessvoid.nifty.NiftyMethodInvoker logException
WARNING: de.lessvoid.nifty.NiftyMethodInvoker callMethod (NiftyMethodInvoker.java:145)
Apr 28, 2014 8:22:44 PM de.lessvoid.nifty.NiftyMethodInvoker logException
WARNING: de.lessvoid.nifty.NiftyMethodInvoker performInvoke (NiftyMethodInvoker.java:104)
Apr 28, 2014 8:22:44 PM de.lessvoid.nifty.NiftyMethodInvoker logException
WARNING: de.lessvoid.nifty.Nifty$DelayedMethodInvoke perform (Nifty.java:1174)
Apr 28, 2014 8:22:44 PM de.lessvoid.nifty.NiftyMethodInvoker logException
WARNING: de.lessvoid.nifty.Nifty invokeMethods (Nifty.java:1152)
Apr 28, 2014 8:22:44 PM de.lessvoid.nifty.NiftyMethodInvoker logException
WARNING: de.lessvoid.nifty.Nifty handleDynamicElements (Nifty.java:354)
Apr 28, 2014 8:22:44 PM de.lessvoid.nifty.NiftyMethodInvoker logException
WARNING: de.lessvoid.nifty.Nifty access$1700 (Nifty.java:77)
Apr 28, 2014 8:22:44 PM de.lessvoid.nifty.NiftyMethodInvoker logException
WARNING: de.lessvoid.nifty.Nifty$NiftyInputConsumerImpl processEvent (Nifty.java:1374)
Apr 28, 2014 8:22:44 PM de.lessvoid.nifty.NiftyMethodInvoker logException
WARNING: de.lessvoid.nifty.Nifty$NiftyInputConsumerImpl processMouseEvent (Nifty.java:1329)
Apr 28, 2014 8:22:44 PM de.lessvoid.nifty.NiftyMethodInvoker logException
WARNING: com.jme3.niftygui.InputSystemJme handleMouseEvent (InputSystemJme.java:124)
Apr 28, 2014 8:22:44 PM de.lessvoid.nifty.NiftyMethodInvoker logException
WARNING: com.jme3.niftygui.InputSystemJme onMouseButtonEventQueued (InputSystemJme.java:232)
Apr 28, 2014 8:22:44 PM de.lessvoid.nifty.NiftyMethodInvoker logException
WARNING: com.jme3.niftygui.InputSystemJme forwardEvents (InputSystemJme.java:296)
Apr 28, 2014 8:22:44 PM de.lessvoid.nifty.NiftyMethodInvoker logException
WARNING: de.lessvoid.nifty.Nifty update (Nifty.java:288)
Apr 28, 2014 8:22:44 PM de.lessvoid.nifty.NiftyMethodInvoker logException
WARNING: com.jme3.niftygui.InputSystemJme endInput (InputSystemJme.java:113)
Apr 28, 2014 8:22:44 PM de.lessvoid.nifty.NiftyMethodInvoker logException
WARNING: com.jme3.input.InputManager processQueue (InputManager.java:819)
Apr 28, 2014 8:22:44 PM de.lessvoid.nifty.NiftyMethodInvoker logException
WARNING: com.jme3.input.InputManager update (InputManager.java:883)
Apr 28, 2014 8:22:44 PM de.lessvoid.nifty.NiftyMethodInvoker logException
WARNING: com.jme3.app.Application update (Application.java:604)
Apr 28, 2014 8:22:44 PM de.lessvoid.nifty.NiftyMethodInvoker logException
WARNING: com.jme3.app.SimpleApplication update (SimpleApplication.java:231)
Apr 28, 2014 8:22:44 PM de.lessvoid.nifty.NiftyMethodInvoker logException
WARNING: com.jme3.system.lwjgl.LwjglAbstractDisplay runLoop (LwjglAbstractDisplay.java:151)
Apr 28, 2014 8:22:44 PM de.lessvoid.nifty.NiftyMethodInvoker logException
WARNING: com.jme3.system.lwjgl.LwjglDisplay runLoop (LwjglDisplay.java:185)
Apr 28, 2014 8:22:44 PM de.lessvoid.nifty.NiftyMethodInvoker logException
WARNING: com.jme3.system.lwjgl.LwjglAbstractDisplay run (LwjglAbstractDisplay.java:228)
Apr 28, 2014 8:22:44 PM de.lessvoid.nifty.NiftyMethodInvoker logException
WARNING: java.lang.Thread run (Thread.java:744)
with the root cause being:
WARNING: Root Cause: java.lang.NullPointerException
Apr 28, 2014 8:22:44 PM de.lessvoid.nifty.NiftyMethodInvoker logException
WARNING: com.jme3.material.Material <init> (Material.java:120)
Apr 28, 2014 8:22:44 PM de.lessvoid.nifty.NiftyMethodInvoker logException
WARNING: jme3games.Pop createMaterial (Pop.java:277)
Apr 28, 2014 8:22:44 PM de.lessvoid.nifty.NiftyMethodInvoker logException
WARNING: jme3games.Pop makeSphere (Pop.java:312)
Apr 28, 2014 8:22:44 PM de.lessvoid.nifty.NiftyMethodInvoker logException
WARNING: jme3games.Main runMeteor (Main.java:44)
Apr 28, 2014 8:22:44 PM de.lessvoid.nifty.NiftyMethodInvoker logException
WARNING: jme3GUI.GUIController playMeteor (GUIController.java:59)
So, my xml layout is fine and I have a package with the controller as such:
/*
- To change this template, choose Tools | Templates
- and open the template in the editor.
*/
package jme3GUI;
import com.jme3.app.Application;
//allows switching of game modes
import com.jme3.app.state.AbstractAppState;
import com.jme3.app.state.AppStateManager;
import de.lessvoid.nifty.Nifty;
//allows Nifty Gui to do its thing
import de.lessvoid.nifty.screen.Screen;
import de.lessvoid.nifty.screen.ScreenController;
import jme3games.*;
public class GUIController extends AbstractAppState implements ScreenController {
//instance of the game class
Main main = new Main();
Application app;
AppStateManager stateManager;
Nifty nifty;
Screen screen;
public void bind(Nifty nifty, Screen screen) {
this.nifty = nifty;
this.screen = screen;
}
//required method
public void onStartScreen() {
}
//required method
public void onEndScreen() {
}
@Override
public void initialize(AppStateManager stateManager, Application app) {
super.initialize(stateManager, app);
}
//event on click
public void playMeteor() {
//hides the gui
nifty.gotoScreen("game");
//nifty.exit();
//runs the game
main.runMeteor();
}
//event on click
public void playPong() {
//gets rid of the gui
//nifty.exit(); //go to whatever screen
//runs the game
//main.runPong();
}
//event on click
public void Exit() {
main.CloseMe();
}
}
and then I have a main file that imports my game file and it is as such:
/*
- To change this template, choose Tools | Templates
- and open the template in the editor.
*/
package jme3games;
//general import for the app
import com.jme3.app.SimpleApplication;
//Nifty GUI imports
import com.jme3.niftygui.NiftyJmeDisplay;
import de.lessvoid.nifty.Nifty;
import jme3GUI.GUIController;
/**
*
-
@author Myson
*/
public class Main extends SimpleApplication {//variable for the controller and gui
GUIController myguicontroller;
Nifty nifty;
NiftyJmeDisplay niftyDisplay;//instance of the games in the same package
Pop meteor = new Pop();
//Pong pong = new Pong();public static void main(String Args[]) {
Main app = new Main();
app.start();
}public void runPong() {
// pong.run()
}public void runMeteor() {
//doesnt work when i try calling these methods //Only works if i have simple print out stuff meteor.makeSphere(); meteor.makeGameElements();
}//end of hide gui
public void CloseMe() {
System.exit(0);
}public void simpleInitApp() {
//NIFTY GUI myguicontroller = new GUIController(); stateManager.attach(myguicontroller); niftyDisplay = new NiftyJmeDisplay( assetManager, inputManager, audioRenderer, guiViewPort); nifty = niftyDisplay.getNifty(); guiViewPort.addProcessor(niftyDisplay); //adding the layout //points at the start screen from the file nifty.fromXml("Interface/GUILayout.xml", "start", myguicontroller); //nifty.setDebugOptionPanelColors(true); //makes cursor visible flyCam.setDragToRotate(true);
}
}
So, the error is shown when I try to make a material for my spheres and if I comment that out it just finds other things to yell at. Any help would be great.