Meu programa ele salva normalmente, porém quando vou carregar ele da o seguinte erro
Exception in thread "Thread-1" java.lang.IllegalArgumentException: input == null!
at java.desktop/javax.imageio.ImageIO.read(ImageIO.java:1358)
at com.guto.world.World.<init>(World.java:27)
at com.guto.world.World.restartGame(World.java:114)
at com.guto.main.Menu.applySave(Menu.java:74)
at com.guto.main.Menu.tick(Menu.java:60)
at com.guto.main.Game.tick(Game.java:157)
at com.guto.main.Game.run(Game.java:220)
at java.base/java.lang.Thread.run(Thread.java:833)
alguém pode me ajudar a resolver?
Como é o código que lê a imagem?
public World(String path) {
try {
BufferedImage map = ImageIO.read(getClass().getResourceAsStream(path));
int[] pixels = new int[map.getWidth() * map.getHeight()];
WIDTH = map.getWidth();
HEIGHT = map.getHeight();
tiles = new Tile[map.getWidth() * map.getHeight()];
map.getRGB(0, 0, map.getWidth(), map.getHeight(), pixels, 0, map.getWidth());
for(int xx = 0; xx<map.getWidth(); xx++) {
for(int yy = 0; yy<map.getHeight(); yy++) {
int pixelAtual = pixels[xx +(yy * map.getWidth())];
tiles[xx+(yy * WIDTH)] = new FloorTile(xx*16, yy*16, Tile.TILE_FLOOR);
if(pixelAtual == 0xFF000000) {
//Floor
tiles[xx+(yy * WIDTH)] = new FloorTile(xx*16, yy*16, Tile.TILE_FLOOR);
} else if(pixelAtual == 0xFFFFFFFF) {
//Wall
tiles[xx+(yy * WIDTH)] = new WallTile(xx*16, yy*16, Tile.TILE_WALL);
} else if(pixelAtual == 0xFF0026FF) {
//Player
Game.player.setX(xx*16);
Game.player.setY(yy*16);
}
else if(pixelAtual == 0xFFFF0000){
//Enemy
BufferedImage[] buf = new BufferedImage[3];
buf[1] = Game.spritesheet.getSprite(128, 16, 16, 16);
buf[2] = Game.spritesheet.getSprite(128+16, 16, 16, 16);
Enemy en = new Enemy(xx*16, yy*16, 16, 16, Entity.ENEMY_EN);
Game.entities.add(en);
Game.enemies.add(en);
} else if(pixelAtual == 0xFFFF6A00){
//Weapon
Game.entities.add(new Weapon(xx*16, yy*16, 16, 16, Entity.WEAPON_EN));
} else if(pixelAtual == 0xFFF4B38D){
//HealthPotion
HealthPotion potion = new HealthPotion(xx*16, yy*16, 16, 16, Entity.HEALTHPOTION_EN);
//potion.setMask(8, 8, 8, 8);
Game.entities.add(potion);
} else if(pixelAtual == 0xFFFFD800){
//Ammo
Game.entities.add(new Ammo(xx*16, yy*16, 16, 16, Entity.AMMO_EN));
}
}
}
} catch (IOException e) {
e.printStackTrace();
}
}
Esse é o código utilizado para ler td que tem no mapa desde a posição do jogador, as paredes, inimigos e etc.
Ou você está passando o path
errado, ou o arquivo não está no classpath de sua aplicação.