I'm trying to create a game for a project and I am getting a nullPointerException from the following code:
I have noted in comments what lines give nullPointerExceptions. The RPGSystem.class which is referred to has the following code:
I have no idea why I am getting a nullPointerException and I have not been able to find out why the removeObjects line in RPGBattleSystem is giving me a nullPointerException. Any help is greatly appreciated
import greenfoot.*; // (World, Actor, GreenfootImage, Greenfoot and MouseInfo)
import java.util.List;
/**
* RPGBattleSystem
*/
public class RPGBattleSystem extends Actor
{
public RPGBattleSystem()
{
clearRPGSystem();
L2Battle l2battle = (L2Battle)getWorld();
World world = getWorld();
world.addObject(new RPGSystem(1), 300, 325);
}
public void clearRPGSystem()
{
L2Battle l2battle = (L2Battle)getWorld();
World world = getWorld();
world.removeObjects(world.getObjects(RPGSystem.class)); //nullPointer
System.out.print("Instances of RPGSystem.class: ");
System.out.println(world.getObjects(RPGSystem.class).size()); //nullPointer
}
}
import greenfoot.*; // (World, Actor, GreenfootImage, Greenfoot and MouseInfo)
/**
* RPGSystem
*/
public class RPGSystem extends Actor
{
private final int LAYOUT_WIDTH = 600;
private final int LAYOUT_HEIGHT = 150;
private final int LAYOUT_R = 118;
private final int LAYOUT_G = 120;
private final int LAYOUT_B = 122;
private final int LAYOUT_T = 255;
private final int Button_WIDTH = 200;
private final int Button_HEIGHT = 50;
private final int Button_R = 158;
private final int Button_G = 160;
private final int Button_B = 163;
private final int Button_T = 255;
protected int redCapHealthPoints = 100;
protected int redCapDamageMultiplier = 1;
public int cmd = 0;
/**
* Act - do whatever the RPGSystem wants to do. This method is called whenever
* the 'Act' or 'Run' button gets pressed in the environment.
*/
public RPGSystem(int cmd)
{
this.cmd=cmd;
cmdLine(cmd);
}
public void act()
{
L2Battle l2battle = (L2Battle)getWorld();
World world = getWorld();
if (Greenfoot.isKeyDown("1"))
{
world.addObject(new RPGBattleSystem(), 300, 325);
Greenfoot.delay(5);
}
if (Greenfoot.isKeyDown("2"))
{
//Nothing yet
}
}
public void cmdLine(int cmd)
{
//Define world commands
L2Battle l2battle = (L2Battle)getWorld();
World world = getWorld();
System.out.print("Calling RPGSystem function: ");
System.out.println(cmd);
if (cmd == 0)
{
System.out.println("Error. Tried to call a RPGSystem function 0: Does not exist.");
}
if (cmd == 1) //RPGSystem layout
{
GreenfootImage image = new GreenfootImage(LAYOUT_WIDTH, LAYOUT_HEIGHT);
image.setColor(new greenfoot.Color(LAYOUT_R,LAYOUT_G,LAYOUT_B,LAYOUT_T));
image.fillRect(0, 0, LAYOUT_WIDTH, LAYOUT_HEIGHT );
setImage(image);
}
if (cmd == 2) //RPGSystem Button-Battle
{
GreenfootImage image = new GreenfootImage(Button_WIDTH, Button_HEIGHT);
image.setColor(new greenfoot.Color(Button_R,Button_G,Button_B,Button_T));
image.fillRect(0, 0, Button_WIDTH, Button_HEIGHT );
Font font = image.getFont();
font = font.deriveFont(26.0f);
image.setFont(font);
image.setColor(new Color(255, 255, 255));
image.drawString("Battle [1]", 20, 35);
setImage(image);
}
if (cmd == 3) //RPGSystem Button-Item
{
GreenfootImage image = new GreenfootImage(Button_WIDTH, Button_HEIGHT);
image.setColor(new greenfoot.Color(Button_R,Button_G,Button_B,Button_T));
image.fillRect(0, 0, Button_WIDTH, Button_HEIGHT );
Font font = image.getFont();
font = font.deriveFont(26.0f);
image.setFont(font);
image.setColor(new Color(255, 255, 255));
image.drawString("Items [2]", 20, 35);
setImage(image);
}
}
}

