Wanting too implement a thing that handles in-game giveaways, the giveaway items are saved too the character file but when trying too load the character file upon logging in I get an error:
Code:
public class Giveaway {
private Player player;
public Giveaway(Player player) {
this.player = player;
}
private Path path = Paths.get(System.getProperty("user.home") + "/Desktop/saves/characters/", player.getUsername() + ".json");
private File file = path.toFile();
public void giveReward() {
if (!file.exists()) {
System.out.println("File doesn't exist");
return;
}
try (FileReader fileReader = new FileReader(file)) {
JsonParser fileParser = new JsonParser();
Gson builder = new GsonBuilder().create();
JsonObject reader = (JsonObject) fileParser.parse(fileReader);
if (reader.has("giveaway-rewards")) {
List<Item> list = new ArrayList<Item>();
Item[] rewards = builder.fromJson(reader.get("giveaway-rewards").getAsJsonArray(),
Item[].class);
for (Item s : rewards)
list.add(s);
player.setGiveawayRewards(list);
for(int i = 0; i < list.size(); i++) {
Item item = (Item) list.get(i);
player.giveItem(item.getId(), item.getAmount());
player.sendMessage("@sup@ Congratulations on winning the giveaway, you have received: x" + item.getAmount() + " " + ItemDefinition.forId(item.getId()).getName() + "!");
player.removeGiveawayReward(item);
}
}
} catch (Exception e) {
e.printStackTrace();
}
}
}
Error is on
Code:
private Path path = Paths.get(System.getProperty("user.home") + "/Desktop/saves/characters/", player.getUsername() + ".json");
However when I change too this, it works:
Code:
private Player player;
public Giveaway(Player player) {
this.player = player;
}
public void giveReward() {
Path path = Paths.get(System.getProperty("user.home") + "/Desktop/saves/characters/", player.getUsername() + ".json");
File file = path.toFile();
if (!file.exists()) {
System.out.println("File doesn't exist");
return;
}
try (FileReader fileReader = new FileReader(file)) {
JsonParser fileParser = new JsonParser();
Gson builder = new GsonBuilder().create();
JsonObject reader = (JsonObject) fileParser.parse(fileReader);
if (reader.has("giveaway-rewards")) {
List<Item> list = new ArrayList<Item>();
Item[] rewards = builder.fromJson(reader.get("giveaway-rewards").getAsJsonArray(),
Item[].class);
for (Item s : rewards)
list.add(s);
player.setGiveawayRewards(list);
while(!list.isEmpty()) {
for(int i = 0; i < list.size(); i++) {
Item item = (Item) list.get(i);
player.giveItem(item.getId(), item.getAmount());
player.sendMessage("@sup@ Congratulations on winning the giveaway, you have received: x" + item.getAmount() + " " + ItemDefinition.forId(item.getId()).getName() + "!");
player.removeGiveawayReward(item);
}
}
}
} catch (Exception e) {
e.printStackTrace();
}
}
Can anyone explain why moving
Path path = Paths.get(System.getProperty("user.home") + "/Desktop/saves/characters/", player.getUsername() + ".json");
File file = path.toFile();
inside the method fixed the error?