From 25db2e71d2ccd76dcea7be3c16f66fa194deda46 Mon Sep 17 00:00:00 2001 From: Daniel Saukel Date: Sat, 14 Aug 2021 18:34:11 +0200 Subject: [PATCH] Fix level fee requirement; resolves #1048 --- .../requirement/FeeLevelRequirement.java | 34 ++++++------------- .../FinishedDungeonsRequirement.java | 1 - 2 files changed, 11 insertions(+), 24 deletions(-) diff --git a/core/src/main/java/de/erethon/dungeonsxl/requirement/FeeLevelRequirement.java b/core/src/main/java/de/erethon/dungeonsxl/requirement/FeeLevelRequirement.java index e4750eb2..fcc28da8 100644 --- a/core/src/main/java/de/erethon/dungeonsxl/requirement/FeeLevelRequirement.java +++ b/core/src/main/java/de/erethon/dungeonsxl/requirement/FeeLevelRequirement.java @@ -20,7 +20,6 @@ import de.erethon.dungeonsxl.api.DungeonsAPI; import de.erethon.dungeonsxl.api.Requirement; import de.erethon.dungeonsxl.api.dungeon.Game; import de.erethon.dungeonsxl.api.dungeon.GameRule; -import de.erethon.dungeonsxl.api.dungeon.GameRuleContainer; import de.erethon.dungeonsxl.config.DMessage; import de.erethon.dungeonsxl.player.DGamePlayer; import de.erethon.dungeonsxl.player.DGlobalPlayer; @@ -40,7 +39,6 @@ public class FeeLevelRequirement implements Requirement { private DungeonsAPI api; private int fee; - private Boolean keepInventory; public FeeLevelRequirement(DungeonsAPI api) { this.api = api; @@ -93,38 +91,28 @@ public class FeeLevelRequirement implements Requirement { @Override public void demand(Player player) { + DGamePlayer dPlayer = (DGamePlayer) api.getPlayerCache().getGamePlayer(player); + if (dPlayer == null) { + return; + } + + DPlayerData data = dPlayer.getData(); + data.setOldLevel(data.getOldLevel() - fee); + data.getConfig().set(DPlayerData.PREFIX_STATE_PERSISTENCE + "oldLvl", data.getOldLevel()); + data.save(); if (isKeepInventory(player)) { player.setLevel(player.getLevel() - fee); - - } else { - DGamePlayer dPlayer = (DGamePlayer) api.getPlayerCache().getGamePlayer(player); - if (dPlayer == null) { - return; - } - DPlayerData data = dPlayer.getData(); - data.setOldLevel(data.getOldLevel() - fee); } MessageUtil.sendMessage(player, DMessage.REQUIREMENT_FEE.getMessage(fee + " levels")); } private boolean isKeepInventory(Player player) { - if (keepInventory != null) { - return keepInventory; - } - Game game = api.getGame(player); - GameRuleContainer rules = null; if (game != null) { - rules = game.getRules(); + return game.getRules().getState(GameRule.KEEP_INVENTORY_ON_ENTER); } - if (rules != null) { - keepInventory = rules.getState(GameRule.KEEP_INVENTORY_ON_ENTER); - return keepInventory; - } - - keepInventory = GameRuleContainer.DEFAULT_VALUES.getState(GameRule.KEEP_INVENTORY_ON_ENTER); - return keepInventory; + return true; } @Override diff --git a/core/src/main/java/de/erethon/dungeonsxl/requirement/FinishedDungeonsRequirement.java b/core/src/main/java/de/erethon/dungeonsxl/requirement/FinishedDungeonsRequirement.java index ac74b7e6..d541b75e 100644 --- a/core/src/main/java/de/erethon/dungeonsxl/requirement/FinishedDungeonsRequirement.java +++ b/core/src/main/java/de/erethon/dungeonsxl/requirement/FinishedDungeonsRequirement.java @@ -20,7 +20,6 @@ import de.erethon.dungeonsxl.api.DungeonsAPI; import de.erethon.dungeonsxl.api.Requirement; import de.erethon.dungeonsxl.config.DMessage; import de.erethon.dungeonsxl.player.DGlobalPlayer; -import de.erethon.dungeonsxl.player.DPermission; import de.erethon.dungeonsxl.player.DPlayerData; import de.erethon.dungeonsxl.util.commons.misc.NumberUtil; import de.erethon.dungeonsxl.util.commons.misc.SimpleDateUtil;