From f75e4e080ce8d69b1c844b81c6138519148b84b4 Mon Sep 17 00:00:00 2001 From: BONNe1704 Date: Wed, 23 Jan 2019 16:33:33 +0200 Subject: [PATCH] Rework Challenge, ChallengeLevel and ChallengesPlayerData classes. Challenge now will not know their world, as it is not necessary. Remove ICON type, as it is useless. Rename Level to Other, as under it will be not only level things. Rename slot to order, as it was weird that users could define slot but not order. Order is easier to understand and use. ChallengesLevel now knows all their levels. Each challenge level only will be for single world. Rename some variables. ChallengesPlayerData was just adapted with changes in challenges and level classes. --- .../challenges/ChallengesImportManager.java | 45 +- .../challenges/ChallengesManager.java | 32 +- .../challenges/database/object/Challenge.java | 1462 ++++++++++------- .../database/object/ChallengeLevel.java | 552 +++++-- .../database/object/ChallengesPlayerData.java | 405 +++-- .../challenges/panel/ChallengesPanels.java | 15 +- .../challenges/panel/ChallengesPanels2.java | 22 +- .../challenges/panel/RequiredPanel.java | 6 +- .../challenges/panel/TryToComplete.java | 31 +- .../panel/admin/EditChallengeGUI.java | 48 +- .../challenges/panel/admin/EditLevelGUI.java | 28 +- .../challenges/panel/user/ChallengesGUI.java | 4 +- 12 files changed, 1664 insertions(+), 986 deletions(-) diff --git a/src/main/java/world/bentobox/challenges/ChallengesImportManager.java b/src/main/java/world/bentobox/challenges/ChallengesImportManager.java index 1b4b294..8f4df1f 100644 --- a/src/main/java/world/bentobox/challenges/ChallengesImportManager.java +++ b/src/main/java/world/bentobox/challenges/ChallengesImportManager.java @@ -16,10 +16,13 @@ import org.bukkit.configuration.file.YamlConfiguration; import org.bukkit.entity.EntityType; import org.bukkit.inventory.ItemStack; +import world.bentobox.bentobox.util.ItemParser; import world.bentobox.challenges.database.object.ChallengeLevel; import world.bentobox.challenges.database.object.Challenge; import world.bentobox.bentobox.api.user.User; import world.bentobox.bentobox.util.Util; +import world.bentobox.challenges.utils.GuiUtils; + /** * Imports challenges @@ -64,13 +67,13 @@ public class ChallengesImportManager user.sendMessage("challenges.admin.import.no-load","[message]", e.getMessage()); return false; } - makeLevels(user); + makeLevels(user, world, overwrite); makeChallenges(user, world, overwrite); addon.getChallengesManager().save(); return true; } - private void makeLevels(User user) { + private void makeLevels(User user, World world, boolean overwrite) { // Parse the levels String levels = chal.getString("challenges.levels", ""); if (!levels.isEmpty()) { @@ -82,15 +85,16 @@ public class ChallengesImportManager challengeLevel.setFriendlyName(level); challengeLevel.setUniqueId(level); challengeLevel.setOrder(order++); - challengeLevel.setWaiveramount(chal.getInt("challenges.waiveramount")); + challengeLevel.setWorld(Util.getWorld(world).getName()); + challengeLevel.setWaiverAmount(chal.getInt("challenges.waiveramount")); // Check if there is a level reward ConfigurationSection unlock = chal.getConfigurationSection("challenges.levelUnlock." + level); if (unlock != null) { challengeLevel.setUnlockMessage(unlock.getString("message")); - challengeLevel.setRewardDescription(unlock.getString("rewardDesc","")); + challengeLevel.setRewardText(unlock.getString("rewardDesc","")); challengeLevel.setRewardItems(parseItems(unlock.getString("itemReward",""))); - challengeLevel.setMoneyReward(unlock.getInt("moneyReward")); - challengeLevel.setExpReward(unlock.getInt("expReward")); + challengeLevel.setRewardMoney(unlock.getInt("moneyReward")); + challengeLevel.setRewardExperience(unlock.getInt("expReward")); challengeLevel.setRewardCommands(unlock.getStringList("commands")); } addon.getChallengesManager().storeLevel(challengeLevel); @@ -103,7 +107,6 @@ public class ChallengesImportManager /** * Imports challenges * @param overwrite - * @param args */ private void makeChallenges(User user, World world, boolean overwrite) { int size = 0; @@ -115,41 +118,42 @@ public class ChallengesImportManager newChallenge.setDeployed(true); ConfigurationSection details = chals.getConfigurationSection(challenge); newChallenge.setFriendlyName(details.getString("friendlyname", challenge)); - newChallenge.setWorld(Util.getWorld(world).getName()); newChallenge.setDescription(addon.getChallengesManager().stringSplit(details.getString("description", ""))); - newChallenge.setIcon(new ParseItem(addon, details.getString("icon") + ":1").getItem()); - newChallenge.setLevel(details.getString("level", ChallengesManager.FREE)); + newChallenge.setIcon(ItemParser.parse(details.getString("icon") + ":1")); newChallenge.setChallengeType(Challenge.ChallengeType.valueOf(details.getString("type","INVENTORY").toUpperCase())); newChallenge.setTakeItems(details.getBoolean("takeItems",true)); newChallenge.setRewardText(details.getString("rewardText", "")); newChallenge.setRewardCommands(details.getStringList("rewardcommands")); newChallenge.setRewardMoney(details.getInt("moneyReward",0)); - newChallenge.setRewardExp(details.getInt("expReward")); + newChallenge.setRewardExperience(details.getInt("expReward")); newChallenge.setRepeatable(details.getBoolean("repeatable")); newChallenge.setRepeatRewardText(details.getString("repeatRewardText","")); newChallenge.setRepeatMoneyReward(details.getInt("repearMoneyReward")); - newChallenge.setRepeatExpReward(details.getInt("repeatExpReward")); + newChallenge.setRepeatExperienceReward(details.getInt("repeatExpReward")); newChallenge.setRepeatRewardCommands(details.getStringList("repeatrewardcommands")); newChallenge.setMaxTimes(details.getInt("maxtimes")); // TODO reset allowed - newChallenge.setReqMoney(details.getInt("requiredMoney")); - newChallenge.setReqExp(details.getInt("requiredExp")); + newChallenge.setRequiredMoney(details.getInt("requiredMoney")); + newChallenge.setRequiredExperience(details.getInt("requiredExp")); String reqItems = details.getString("requiredItems",""); if (newChallenge.getChallengeType().equals(Challenge.ChallengeType.INVENTORY)) { newChallenge.setRequiredItems(parseItems(reqItems)); - } else if (newChallenge.getChallengeType().equals(Challenge.ChallengeType.LEVEL)) { - newChallenge.setReqIslandlevel(Long.parseLong(reqItems)); + } else if (newChallenge.getChallengeType().equals(Challenge.ChallengeType.OTHER)) { + newChallenge.setRequiredIslandLevel(Long.parseLong(reqItems)); } else if (newChallenge.getChallengeType().equals(Challenge.ChallengeType.ISLAND)) { parseEntities(newChallenge, reqItems); } newChallenge.setRewardItems(parseItems(details.getString("itemReward"))); newChallenge.setRepeatItemReward(parseItems(details.getString("repeatItemReward"))); // Save + this.addon.getChallengesManager().addChallengeToLevel(newChallenge, + addon.getChallengesManager().getLevel(Util.getWorld(world).getName() + "_" + details.getString("level"))); + if (addon.getChallengesManager().storeChallenge(newChallenge, overwrite, user, false)) { size++; } } - addon.getChallengesManager().sortChallenges(); + user.sendMessage("challenges.admin.import.number", "[number]", String.valueOf(size)); } @@ -180,7 +184,7 @@ public class ChallengesImportManager List result = new ArrayList<>(); if (!reqList.isEmpty()) { for (String s : reqList.split(" ")) { - ItemStack item = new ParseItem(addon,s).getItem(); + ItemStack item = ItemParser.parse(s); if (item != null) { result.add(item); } @@ -188,7 +192,4 @@ public class ChallengesImportManager } return result; } - - - -} +} \ No newline at end of file diff --git a/src/main/java/world/bentobox/challenges/ChallengesManager.java b/src/main/java/world/bentobox/challenges/ChallengesManager.java index e5322e3..554faef 100644 --- a/src/main/java/world/bentobox/challenges/ChallengesManager.java +++ b/src/main/java/world/bentobox/challenges/ChallengesManager.java @@ -80,7 +80,7 @@ public class ChallengesManager { */ public long checkChallengeTimes(User user, Challenge challenge, World world) { addPlayer(user); - return playerData.get(user.getUniqueId()).getTimes(world, challenge.getUniqueId()); + return playerData.get(user.getUniqueId()).getTimes(challenge.getUniqueId()); } /** @@ -189,7 +189,7 @@ public class ChallengesManager { */ public List getAllChallengesList(World world) { List result = new ArrayList<>(); - challengeMap.values().forEach(ch -> ch.stream().filter(c -> c.getWorld().equals(Util.getWorld(world).getName())).forEach(c -> result.add(c.getUniqueId()))); + challengeMap.values().forEach(ch -> ch.stream().filter(c -> c.getUniqueId().startsWith(Util.getWorld(world).getName())).forEach(c -> result.add(c.getUniqueId()))); return result; } @@ -230,10 +230,10 @@ public class ChallengesManager { for (Entry> entry : this.challengeMap.entrySet()) { // Check how much challenges must be done in previous level. - int challengesToDo = Math.max(0, entry.getKey().getWaiveramount() - doneChallengeCount); + int challengesToDo = Math.max(0, entry.getKey().getWaiverAmount() - doneChallengeCount); doneChallengeCount = (int) entry.getValue().stream().filter( - ch -> playerData.isChallengeDone(world, ch.getUniqueId())).count(); + ch -> playerData.isChallengeDone(ch.getUniqueId())).count(); // Create result class with the data result.add(new LevelStatus( @@ -270,7 +270,7 @@ public class ChallengesManager { Optional lv = challengeMap.keySet().stream().filter(l -> l.getUniqueId().equalsIgnoreCase(level)).findFirst(); // Get the challenges applicable to this world return lv.isPresent() ? challengeMap.get(lv.get()).stream() - .filter(c -> c.getWorld().equalsIgnoreCase(worldName) || c.getWorld().isEmpty()).collect(Collectors.toSet()) + .filter(c -> c.getUniqueId().startsWith(worldName)).collect(Collectors.toSet()) : new HashSet<>(); } @@ -319,7 +319,7 @@ public class ChallengesManager { */ public boolean isChallenge(World world, String name) { for (Set ch : challengeMap.values()) { - if (ch.stream().filter(c -> c.getWorld().equals(Util.getWorld(world).getName())).anyMatch(c -> c.getUniqueId().equalsIgnoreCase(name))) { + if (ch.stream().filter(c -> c.getUniqueId().startsWith(Util.getWorld(world).getName())).anyMatch(c -> c.getUniqueId().equalsIgnoreCase(name))) { return true; } } @@ -328,13 +328,12 @@ public class ChallengesManager { /** * Checks if a challenge is complete or not - * @param uniqueId - unique ID - player's UUID * @param challengeName - Challenge uniqueId * @return - true if completed */ public boolean isChallengeComplete(User user, String challengeName, World world) { addPlayer(user); - return playerData.get(user.getUniqueId()).isChallengeDone(world, challengeName); + return playerData.get(user.getUniqueId()).isChallengeDone(challengeName); } /** @@ -396,7 +395,7 @@ public class ChallengesManager { */ public void setChallengeComplete(User user, String challengeUniqueId, World world) { addPlayer(user); - playerData.get(user.getUniqueId()).setChallengeDone(world, challengeUniqueId); + playerData.get(user.getUniqueId()).setChallengeDone(challengeUniqueId); // Save savePlayer(user.getUniqueId()); } @@ -409,7 +408,7 @@ public class ChallengesManager { */ public void setResetChallenge(User user, String challengeUniqueId, World world) { addPlayer(user); - playerData.get(user.getUniqueId()).setChallengeTimes(world, challengeUniqueId, 0); + playerData.get(user.getUniqueId()).setChallengeTimes(challengeUniqueId, 0); // Save savePlayer(user.getUniqueId()); } @@ -637,4 +636,17 @@ public class ChallengesManager { return playerList; } + + + + public ChallengeLevel getLevel(String level) + { + return null; + } + + + public void addChallengeToLevel(Challenge newChallenge, ChallengeLevel level) + { + + } } diff --git a/src/main/java/world/bentobox/challenges/database/object/Challenge.java b/src/main/java/world/bentobox/challenges/database/object/Challenge.java index 9d4c3e7..6f6f829 100644 --- a/src/main/java/world/bentobox/challenges/database/object/Challenge.java +++ b/src/main/java/world/bentobox/challenges/database/object/Challenge.java @@ -1,6 +1,7 @@ package world.bentobox.challenges.database.object; +import com.google.gson.annotations.Expose; import org.bukkit.Material; import org.bukkit.World; import org.bukkit.entity.EntityType; @@ -9,657 +10,1012 @@ import java.util.*; import world.bentobox.bentobox.api.configuration.ConfigComment; import world.bentobox.bentobox.database.objects.DataObject; -import world.bentobox.challenges.ChallengesManager; + /** * Data object for challenges * @author tastybento * */ -public class Challenge implements DataObject { - - public Challenge() {} - - - public boolean isRemoveEntities() +public class Challenge implements DataObject +{ + /** + * Empty constructor + */ + public Challenge() { - return false; } - public void setRemoveEntities(boolean b) + /** + * This enum holds all Challenge Types. + */ + public enum ChallengeType { - - } - - - public boolean isRemoveBlocks() - { - return false; - } - - - public void setRemoveBlocks(boolean b) - { - - } - - - public boolean isTakeExperience() - { - return false; - } - - - public void setTakeExperience(boolean b) - { - - } - - - public enum ChallengeType { - /** - * This challenge only shows and icon in the GUI and doesn't do anything. - */ - ICON, /** * The player must have the items on them. */ INVENTORY, - /** - * The island level has to be equal or over this amount. Only works if there's an island level plugin installed. - */ - LEVEL, + /** * Items or required entities have to be within x blocks of the player. */ - ISLAND + ISLAND, + + /** + * Other type, like required money / experience or island level. This my request + * other plugins to be setup before it could work. + */ + OTHER, } - // The order of the fields is the order shown in the YML files - @ConfigComment("Whether this challenge is deployed or not") - private boolean deployed; - - // Description - @ConfigComment("Name of the icon and challenge. May include color codes. Single line.") - private String friendlyName = ""; - @ConfigComment("Description of the challenge. Will become the lore on the icon. Can include & color codes. String List.") - private List description = new ArrayList<>(); - @ConfigComment("The icon in the GUI for this challenge. ItemStack.") - private ItemStack icon = new ItemStack(Material.PAPER); - @ConfigComment("Icon slot where this challenge should be placed. 0 to 49. A negative value means any slot") - private int slot = -1; - - // Definition - @ConfigComment("Challenge level. Default is Free") - private String level = ChallengesManager.FREE; - @ConfigComment("Challenge type can be ICON, INVENTORY, LEVEL or ISLAND.") - private ChallengeType challengeType = ChallengeType.INVENTORY; - @ConfigComment("World where this challenge operates. List only overworld. Nether and end are automatically covered.") - private String world = ""; - @ConfigComment("List of environments where this challenge will occur: NETHER, NORMAL, THE_END. Leave blank for all.") - private Set environment = new HashSet<>(); - @ConfigComment("The required permissions to see this challenge. String list.") - private Set reqPerms = new HashSet<>(); - @ConfigComment("The number of blocks around the player to search for items on an island") - private int searchRadius = 10; - @ConfigComment("If true, the challenge will disappear from the GUI when completed") - private boolean removeWhenCompleted; - @ConfigComment("Take the required items from the player") - private boolean takeItems = true; - @ConfigComment("Take the money from the player") - private boolean takeMoney = false; - - // Requirements - @ConfigComment("This is a map of the blocks required in a ISLAND challenge. Material, Integer") - private Map requiredBlocks = new EnumMap<>(Material.class); - @ConfigComment("The items that must be in the inventory to complete the challenge. ItemStack List.") - private List requiredItems = new ArrayList<>(); - @ConfigComment("Any entities that must be in the area for ISLAND type challenges. Map EntityType, Number") - private Map requiredEntities = new EnumMap<>(EntityType.class); - @ConfigComment("Required experience") - private int reqExp; - @ConfigComment("Required island level for this challenge. Only works if Level Addon is being used.") - private long reqIslandlevel; - @ConfigComment("Required money") - private int reqMoney; - - // Rewards - @ConfigComment("List of items the player will receive first time. ItemStack List.") - private List rewardItems = new ArrayList<>(); - @ConfigComment("If this is blank, the reward text will be auto-generated, otherwise this will be used.") - private String rewardText = ""; - @ConfigComment("Experience point reward") - private int rewardExp; - @ConfigComment("Money reward") - private int rewardMoney; - @ConfigComment("Commands to run when the player completes the challenge for the first time. String List") - private List rewardCommands = new ArrayList<>(); - - // Repeatable - @ConfigComment("True if the challenge is repeatable") - private boolean repeatable; - @ConfigComment("Maximum number of times the challenge can be repeated") - private int maxTimes = 1; - @ConfigComment("Repeat exp award") - private int repeatExpReward; - @ConfigComment("Reward items for repeating the challenge. List of ItemStacks.") - private List repeatItemReward = new ArrayList<>(); - @ConfigComment("Repeat money award") - private int repeatMoneyReward; - @ConfigComment("Commands to run when challenge is repeated. String List.") - private List repeatRewardCommands = new ArrayList<>(); - @ConfigComment("Description of the repeat rewards. If blank, it will be autogenerated.") - private String repeatRewardText = ""; +// --------------------------------------------------------------------- +// Section: Variables +// --------------------------------------------------------------------- + @ConfigComment("") @ConfigComment("Unique name of the challenge") + @Expose private String uniqueId = ""; - /* - * END OF SETTINGS - */ + @ConfigComment("") + @ConfigComment("The name of the challenge. May include color codes. Single line.") + @Expose + private String friendlyName = ""; - /** - * @return the challengeType - */ - public ChallengeType getChallengeType() { - return challengeType; - } + @ConfigComment("") + @ConfigComment("Whether this challenge is deployed or not.") + @Expose + private boolean deployed; - /** - * @param challengeType the challengeType to set - */ - public void setChallengeType(ChallengeType challengeType) { - this.challengeType = challengeType; - } + @ConfigComment("") + @ConfigComment("Description of the challenge. Will become the lore on the icon. Can ") + @ConfigComment("include & color codes. String List.") + @Expose + private List description = new ArrayList<>(); - /** - * @return the deployed - */ - public boolean isDeployed() { - return deployed; - } + @ConfigComment("") + @ConfigComment("The icon in the GUI for this challenge. ItemStack.") + @Expose + private ItemStack icon = new ItemStack(Material.PAPER); - /** - * @param deployed the deployed to set - */ - public void setDeployed(boolean deployed) { - this.deployed = deployed; - } + @ConfigComment("") + @ConfigComment("Order of this challenge. It allows define order for challenges in") + @ConfigComment("single level. If order for challenges are equal, it will order by") + @ConfigComment("challenge unique id.") + @Expose + private int order = -1; - /** - * @return the description - */ - public List getDescription() { - return description; - } + @ConfigComment("") + @ConfigComment("Challenge type can be INVENTORY, OTHER or ISLAND.") + @Expose + private ChallengeType challengeType = ChallengeType.INVENTORY; - /** - * @param description the description to set - */ - public void setDescription(List description) { - this.description = description; - } + @ConfigComment("") + @ConfigComment("List of environments where this challenge will occur: NETHER, NORMAL,") + @ConfigComment("THE_END. Leave blank for all.") + @Expose + private Set environment = new HashSet<>(); - /** - * @return the expReward - */ - public int getRewardExp() { - return rewardExp; - } + @ConfigComment("") + @ConfigComment("If true, the challenge will disappear from the GUI when completed") + @Expose + private boolean removeWhenCompleted; - /** - * @param expReward the expReward to set - */ - public void setRewardExp(int expReward) { - this.rewardExp = expReward; - } + @ConfigComment("") + @ConfigComment("Unique challenge ID. Empty means that challenge is in free challenge list.") + @Expose + private String level = ""; - /** - * @return the friendlyName - */ - public String getFriendlyName() { - return friendlyName; - } +// --------------------------------------------------------------------- +// Section: Requirement related +// --------------------------------------------------------------------- - /** - * @param friendlyName the friendlyName to set - */ - public void setFriendlyName(String friendlyName) { - this.friendlyName = friendlyName; - } + @ConfigComment("") + @ConfigComment("") + @ConfigComment("The required permissions to see this challenge. String list.") + @Expose + private Set requiredPermissions = new HashSet<>(); - /** - * @return the icon - */ - public ItemStack getIcon() { - return icon != null ? icon.clone() : new ItemStack(Material.MAP); - } + @ConfigComment("") + @ConfigComment("This is a map of the blocks required in a ISLAND challenge. Material,") + @ConfigComment("Integer") + @Expose + private Map requiredBlocks = new EnumMap<>(Material.class); - /** - * @param icon the icon to set - */ - public void setIcon(ItemStack icon) { - this.icon = icon; - } + @ConfigComment("") + @ConfigComment("Remove the required blocks from the island") + @Expose + private boolean removeBlocks; - /** - * @return the level - */ - public String getLevel() { - return level; - } + @ConfigComment("") + @ConfigComment("Any entities that must be in the area for ISLAND type challenges. ") + @ConfigComment("Map EntityType, Number") + @Expose + private Map requiredEntities = new EnumMap<>(EntityType.class); - /** - * @param level the level to set - */ - public void setLevel(String level) { - if (level.isEmpty()) { - level = ChallengesManager.FREE; - } - this.level = level; - } + @ConfigComment("") + @ConfigComment("Remove the entities from the island") + @Expose + private boolean removeEntities; - /** - * @return the maxTimes - */ - public int getMaxTimes() { - return maxTimes; - } + @ConfigComment("") + @ConfigComment("The items that must be in the inventory to complete the challenge. ") + @ConfigComment("ItemStack List.") + @Expose + private List requiredItems = new ArrayList<>(); - /** - * @param maxTimes the maxTimes to set - */ - public void setMaxTimes(int maxTimes) { - this.maxTimes = maxTimes; - } + @ConfigComment("") + @ConfigComment("Take the required items from the player") + @Expose + private boolean takeItems = true; - /** - * @return the moneyReward - */ - public int getRewardMoney() { - return rewardMoney; - } + @ConfigComment("") + @ConfigComment("Required experience for challenge completion.") + @Expose + private int requiredExperience = 0; - /** - * @param moneyReward the moneyReward to set - */ - public void setRewardMoney(int moneyReward) { - this.rewardMoney = moneyReward; - } + @ConfigComment("") + @ConfigComment("Take the experience from the player") + @Expose + private boolean takeExperience; - /** - * @return the removeWhenCompleted - */ - public boolean isRemoveWhenCompleted() { - return removeWhenCompleted; - } + @ConfigComment("") + @ConfigComment("Required money for challenge completion. Economy plugins or addons") + @ConfigComment("is required for this option.") + @Expose + private int requiredMoney = 0; - /** - * @param removeWhenCompleted the removeWhenCompleted to set - */ - public void setRemoveWhenCompleted(boolean removeWhenCompleted) { - this.removeWhenCompleted = removeWhenCompleted; - } + @ConfigComment("") + @ConfigComment("Take the money from the player") + @Expose + private boolean takeMoney; - /** - * @return the repeatable - */ - public boolean isRepeatable() { - return repeatable; - } + @ConfigComment("") + @ConfigComment("Required island level for challenge completion. Plugin or Addon that") + @ConfigComment("calculates island level is required for this option.") + @Expose + private long requiredIslandLevel; - /** - * @param repeatable the repeatable to set - */ - public void setRepeatable(boolean repeatable) { - this.repeatable = repeatable; - } + @ConfigComment("") + @ConfigComment("The number of blocks around the player to search for items on an island") + @Expose + private int searchRadius = 10; - /** - * @return the repeatExpReward - */ - public int getRepeatExpReward() { - return repeatExpReward; - } - /** - * @param repeatExpReward the repeatExpReward to set - */ - public void setRepeatExpReward(int repeatExpReward) { - this.repeatExpReward = repeatExpReward; - } +// --------------------------------------------------------------------- +// Section: Rewards +// --------------------------------------------------------------------- - /** - * @return the repeatItemReward - */ - public List getRepeatItemReward() { - return repeatItemReward; - } + @ConfigComment("") + @ConfigComment("") + @ConfigComment("If this is blank, the reward text will be auto-generated, otherwise") + @ConfigComment("this will be used.") + @Expose + private String rewardText = ""; - /** - * @param repeatItemReward the repeatItemReward to set - */ - public void setRepeatItemReward(List repeatItemReward) { - this.repeatItemReward = repeatItemReward; - } - /** - * @return the repeatMoneyReward - */ - public int getRepeatMoneyReward() { - return repeatMoneyReward; - } + @ConfigComment("") + @ConfigComment("List of items the player will receive first time. ItemStack List.") + @Expose + private List rewardItems = new ArrayList<>(); - /** - * @param repeatMoneyReward the repeatMoneyReward to set - */ - public void setRepeatMoneyReward(int repeatMoneyReward) { - this.repeatMoneyReward = repeatMoneyReward; - } + @ConfigComment("") + @ConfigComment("Experience point reward") + @Expose + private int rewardExperience = 0; - /** - * @return the repeatRewardCommands - */ - public List getRepeatRewardCommands() { - return repeatRewardCommands; - } + @ConfigComment("") + @ConfigComment("Money reward. Economy plugin or addon required for this option.") + @Expose + private int rewardMoney = 0; - /** - * @param repeatRewardCommands the repeatRewardCommands to set - */ - public void setRepeatRewardCommands(List repeatRewardCommands) { - this.repeatRewardCommands = repeatRewardCommands; - } + @ConfigComment("") + @ConfigComment("Commands to run when the player completes the challenge for the first") + @ConfigComment("time. String List") + @Expose + private List rewardCommands = new ArrayList<>(); - /** - * @return the repeatRewardText - */ - public String getRepeatRewardText() { - return repeatRewardText; - } - /** - * @param repeatRewardText the repeatRewardText to set - */ - public void setRepeatRewardText(String repeatRewardText) { - this.repeatRewardText = repeatRewardText; - } +// --------------------------------------------------------------------- +// Section: Repeat Rewards +// --------------------------------------------------------------------- - /** - * @return the reqExp - */ - public int getReqExp() { - return reqExp; - } - /** - * @param reqExp the reqExp to set - */ - public void setReqExp(int reqExp) { - this.reqExp = reqExp; - } + @ConfigComment("") + @ConfigComment("") + @ConfigComment("True if the challenge is repeatable") + @Expose + private boolean repeatable; - /** - * @return the reqIslandlevel - */ - public long getReqIslandlevel() { - return reqIslandlevel; - } + @ConfigComment("") + @ConfigComment("Description of the repeat rewards. If blank, it will be autogenerated.") + @Expose + private String repeatRewardText = ""; - /** - * @param reqIslandlevel the reqIslandlevel to set - */ - public void setReqIslandlevel(long reqIslandlevel) { - this.reqIslandlevel = reqIslandlevel; - } + @ConfigComment("") + @ConfigComment("Maximum number of times the challenge can be repeated. 0 or less") + @ConfigComment("will mean infinite times.") + @Expose + private int maxTimes = 1; - /** - * @return the reqMoney - */ - public int getReqMoney() { - return reqMoney; - } + @ConfigComment("") + @ConfigComment("Repeat experience reward") + @Expose + private int repeatExperienceReward = 0; - /** - * @param reqMoney the reqMoney to set - */ - public void setReqMoney(int reqMoney) { - this.reqMoney = reqMoney; - } + @ConfigComment("") + @ConfigComment("Reward items for repeating the challenge. List of ItemStacks.") + @Expose + private List repeatItemReward = new ArrayList<>(); - /** - * @return the reqPerms - */ - public Set getReqPerms() { - return reqPerms; - } + @ConfigComment("") + @ConfigComment("Repeat money reward. Economy plugin or addon required for this option.") + @Expose + private int repeatMoneyReward; - /** - * @param reqPerms the reqPerms to set - */ - public void setReqPerms(Set reqPerms) { - this.reqPerms = reqPerms; - } + @ConfigComment("") + @ConfigComment("Commands to run when challenge is repeated. String List.") + @Expose + private List repeatRewardCommands = new ArrayList<>(); - /** - * @return the requiredItems - */ - public List getRequiredItems() { - return requiredItems; - } - /** - * @param requiredItems the requiredItems to set - */ - public void setRequiredItems(List requiredItems) { - this.requiredItems = requiredItems; - } +// --------------------------------------------------------------------- +// Section: Getters +// --------------------------------------------------------------------- - /** - * @return requiredEntities - */ - public Map getRequiredEntities() { - return requiredEntities; - } - - /** - * @param requiredEntities the requiredEntities to set - */ - public void setRequiredEntities(Map requiredEntities) { - this.requiredEntities = requiredEntities; - } - - /** - * @return the requiredBlocks - */ - public Map getRequiredBlocks() { - return requiredBlocks; - } - - /** - * @param map the requiredBlocks to set - */ - public void setRequiredBlocks(Map map) { - this.requiredBlocks = map; - } - - /** - * @return the rewardCommands - */ - public List getRewardCommands() { - return rewardCommands; - } - - /** - * @param rewardCommands the rewardCommands to set - */ - public void setRewardCommands(List rewardCommands) { - this.rewardCommands = rewardCommands; - } - - /** - * @return the itemReward - */ - public List getRewardItems() { - return rewardItems; - } - - /** - * @param itemReward the itemReward to set - */ - public void setRewardItems(List itemReward) { - this.rewardItems = itemReward; - } - - /** - * @return the rewardText - */ - public String getRewardText() { - return rewardText; - } - - /** - * @param rewardText the rewardText to set - */ - public void setRewardText(String rewardText) { - this.rewardText = rewardText; - } - - /** - * @return the searchRadius - */ - public int getSearchRadius() { - return searchRadius; - } - - /** - * @param searchRadius the searchRadius to set - */ - public void setSearchRadius(int searchRadius) { - this.searchRadius = searchRadius; - } - - /** - * @return the slot - */ - public int getSlot() { - return slot; - } - - /** - * @param slot the slot to set - */ - public void setSlot(int slot) { - this.slot = slot; - } - - /** - * @return the takeItems - */ - public boolean isTakeItems() { - return takeItems; - } - - /** - * @param takeItems the takeItems to set - */ - public void setTakeItems(boolean takeItems) { - this.takeItems = takeItems; - } - - /** - * @return the takeMoney - */ - public boolean isTakeMoney() { - return takeMoney; - } - - /** - * @param takeMoney the takeMoney to set - */ - public void setTakeMoney(boolean takeMoney) { - this.takeMoney = takeMoney; - } - - /** - * @return the environment - */ - public Set getEnvironment() { - return environment; - } - - /** - * @param environment the environment to set - */ - public void setEnvironment(Set environment) { - this.environment = environment; - } - - /** - * @return the worlds - */ - public String getWorld() { - return world; - } - - /** - * @param worlds the worlds to set - */ - public void setWorld(String world) { - this.world = world; - } /** * @return the uniqueId */ @Override - public String getUniqueId() { + public String getUniqueId() + { return uniqueId; } + + /** + * @return the friendlyName + */ + public String getFriendlyName() + { + return friendlyName; + } + + + /** + * @return the deployed + */ + public boolean isDeployed() + { + return deployed; + } + + + /** + * @return the description + */ + public List getDescription() + { + return description; + } + + + /** + * @return the icon + */ + public ItemStack getIcon() + { + return icon; + } + + + /** + * @return the order + */ + public int getOrder() + { + return order; + } + + + /** + * @return the challengeType + */ + public ChallengeType getChallengeType() + { + return challengeType; + } + + + /** + * @return the environment + */ + public Set getEnvironment() + { + return environment; + } + + + /** + * @return the level + */ + public String getLevel() + { + return level; + } + + + /** + * @return the removeWhenCompleted + */ + public boolean isRemoveWhenCompleted() + { + return removeWhenCompleted; + } + + + /** + * @return the requiredPermissions + */ + public Set getRequiredPermissions() + { + return requiredPermissions; + } + + + /** + * @return the requiredBlocks + */ + public Map getRequiredBlocks() + { + return requiredBlocks; + } + + + /** + * @return the removeBlocks + */ + public boolean isRemoveBlocks() + { + return removeBlocks; + } + + + /** + * @return the requiredEntities + */ + public Map getRequiredEntities() + { + return requiredEntities; + } + + + /** + * @return the removeEntities + */ + public boolean isRemoveEntities() + { + return removeEntities; + } + + + /** + * @return the requiredItems + */ + public List getRequiredItems() + { + return requiredItems; + } + + + /** + * @return the takeItems + */ + public boolean isTakeItems() + { + return takeItems; + } + + + /** + * @return the requiredExperience + */ + public int getRequiredExperience() + { + return requiredExperience; + } + + + /** + * @return the takeExperience + */ + public boolean isTakeExperience() + { + return takeExperience; + } + + + /** + * @return the requiredMoney + */ + public int getRequiredMoney() + { + return requiredMoney; + } + + + /** + * @return the takeMoney + */ + public boolean isTakeMoney() + { + return takeMoney; + } + + + /** + * @return the requiredIslandLevel + */ + public long getRequiredIslandLevel() + { + return requiredIslandLevel; + } + + + /** + * @return the searchRadius + */ + public int getSearchRadius() + { + return searchRadius; + } + + + /** + * @return the rewardText + */ + public String getRewardText() + { + return rewardText; + } + + + /** + * @return the rewardItems + */ + public List getRewardItems() + { + return rewardItems; + } + + + /** + * @return the rewardExperience + */ + public int getRewardExperience() + { + return rewardExperience; + } + + + /** + * @return the rewardMoney + */ + public int getRewardMoney() + { + return rewardMoney; + } + + + /** + * @return the rewardCommands + */ + public List getRewardCommands() + { + return rewardCommands; + } + + + /** + * @return the repeatable + */ + public boolean isRepeatable() + { + return repeatable; + } + + + /** + * @return the repeatRewardText + */ + public String getRepeatRewardText() + { + return repeatRewardText; + } + + + /** + * @return the maxTimes + */ + public int getMaxTimes() + { + return maxTimes; + } + + + /** + * @return the repeatExperienceReward + */ + public int getRepeatExperienceReward() + { + return repeatExperienceReward; + } + + + /** + * @return the repeatItemReward + */ + public List getRepeatItemReward() + { + return repeatItemReward; + } + + + /** + * @return the repeatMoneyReward + */ + public int getRepeatMoneyReward() + { + return repeatMoneyReward; + } + + + /** + * @return the repeatRewardCommands + */ + public List getRepeatRewardCommands() + { + return repeatRewardCommands; + } + + +// --------------------------------------------------------------------- +// Section: Setters +// --------------------------------------------------------------------- + + /** * @param uniqueId the uniqueId to set */ @Override - public void setUniqueId(String uniqueId) { + public void setUniqueId(String uniqueId) + { this.uniqueId = uniqueId; } - /* (non-Javadoc) + + /** + * This method sets the friendlyName value. + * @param friendlyName the friendlyName new value. + * + */ + public void setFriendlyName(String friendlyName) + { + this.friendlyName = friendlyName; + } + + + /** + * This method sets the deployed value. + * @param deployed the deployed new value. + * + */ + public void setDeployed(boolean deployed) + { + this.deployed = deployed; + } + + + /** + * This method sets the description value. + * @param description the description new value. + * + */ + public void setDescription(List description) + { + this.description = description; + } + + + /** + * This method sets the icon value. + * @param icon the icon new value. + * + */ + public void setIcon(ItemStack icon) + { + this.icon = icon; + } + + + /** + * This method sets the order value. + * @param order the order new value. + * + */ + public void setOrder(int order) + { + this.order = order; + } + + + /** + * This method sets the challengeType value. + * @param challengeType the challengeType new value. + * + */ + public void setChallengeType(ChallengeType challengeType) + { + this.challengeType = challengeType; + } + + + /** + * This method sets the environment value. + * @param environment the environment new value. + * + */ + public void setEnvironment(Set environment) + { + this.environment = environment; + } + + + /** + * This method sets the level value. + * @param level the level new value. + */ + public void setLevel(String level) + { + this.level = level; + } + + + /** + * This method sets the removeWhenCompleted value. + * @param removeWhenCompleted the removeWhenCompleted new value. + * + */ + public void setRemoveWhenCompleted(boolean removeWhenCompleted) + { + this.removeWhenCompleted = removeWhenCompleted; + } + + + /** + * This method sets the requiredPermissions value. + * @param requiredPermissions the requiredPermissions new value. + * + */ + public void setRequiredPermissions(Set requiredPermissions) + { + this.requiredPermissions = requiredPermissions; + } + + + /** + * This method sets the requiredBlocks value. + * @param requiredBlocks the requiredBlocks new value. + * + */ + public void setRequiredBlocks(Map requiredBlocks) + { + this.requiredBlocks = requiredBlocks; + } + + + /** + * This method sets the removeBlocks value. + * @param removeBlocks the removeBlocks new value. + * + */ + public void setRemoveBlocks(boolean removeBlocks) + { + this.removeBlocks = removeBlocks; + } + + + /** + * This method sets the requiredEntities value. + * @param requiredEntities the requiredEntities new value. + * + */ + public void setRequiredEntities(Map requiredEntities) + { + this.requiredEntities = requiredEntities; + } + + + /** + * This method sets the removeEntities value. + * @param removeEntities the removeEntities new value. + * + */ + public void setRemoveEntities(boolean removeEntities) + { + this.removeEntities = removeEntities; + } + + + /** + * This method sets the requiredItems value. + * @param requiredItems the requiredItems new value. + * + */ + public void setRequiredItems(List requiredItems) + { + this.requiredItems = requiredItems; + } + + + /** + * This method sets the takeItems value. + * @param takeItems the takeItems new value. + * + */ + public void setTakeItems(boolean takeItems) + { + this.takeItems = takeItems; + } + + + /** + * This method sets the requiredExperience value. + * @param requiredExperience the requiredExperience new value. + * + */ + public void setRequiredExperience(int requiredExperience) + { + this.requiredExperience = requiredExperience; + } + + + /** + * This method sets the takeExperience value. + * @param takeExperience the takeExperience new value. + * + */ + public void setTakeExperience(boolean takeExperience) + { + this.takeExperience = takeExperience; + } + + + /** + * This method sets the requiredMoney value. + * @param requiredMoney the requiredMoney new value. + * + */ + public void setRequiredMoney(int requiredMoney) + { + this.requiredMoney = requiredMoney; + } + + + /** + * This method sets the takeMoney value. + * @param takeMoney the takeMoney new value. + * + */ + public void setTakeMoney(boolean takeMoney) + { + this.takeMoney = takeMoney; + } + + + /** + * This method sets the requiredIslandLevel value. + * @param requiredIslandLevel the requiredIslandLevel new value. + * + */ + public void setRequiredIslandLevel(long requiredIslandLevel) + { + this.requiredIslandLevel = requiredIslandLevel; + } + + + /** + * This method sets the searchRadius value. + * @param searchRadius the searchRadius new value. + * + */ + public void setSearchRadius(int searchRadius) + { + this.searchRadius = searchRadius; + } + + + /** + * This method sets the rewardText value. + * @param rewardText the rewardText new value. + * + */ + public void setRewardText(String rewardText) + { + this.rewardText = rewardText; + } + + + /** + * This method sets the rewardItems value. + * @param rewardItems the rewardItems new value. + * + */ + public void setRewardItems(List rewardItems) + { + this.rewardItems = rewardItems; + } + + + /** + * This method sets the rewardExperience value. + * @param rewardExperience the rewardExperience new value. + * + */ + public void setRewardExperience(int rewardExperience) + { + this.rewardExperience = rewardExperience; + } + + + /** + * This method sets the rewardMoney value. + * @param rewardMoney the rewardMoney new value. + * + */ + public void setRewardMoney(int rewardMoney) + { + this.rewardMoney = rewardMoney; + } + + + /** + * This method sets the rewardCommands value. + * @param rewardCommands the rewardCommands new value. + * + */ + public void setRewardCommands(List rewardCommands) + { + this.rewardCommands = rewardCommands; + } + + + /** + * This method sets the repeatable value. + * @param repeatable the repeatable new value. + * + */ + public void setRepeatable(boolean repeatable) + { + this.repeatable = repeatable; + } + + + /** + * This method sets the repeatRewardText value. + * @param repeatRewardText the repeatRewardText new value. + * + */ + public void setRepeatRewardText(String repeatRewardText) + { + this.repeatRewardText = repeatRewardText; + } + + + /** + * This method sets the maxTimes value. + * @param maxTimes the maxTimes new value. + * + */ + public void setMaxTimes(int maxTimes) + { + this.maxTimes = maxTimes; + } + + + /** + * This method sets the repeatExperienceReward value. + * @param repeatExperienceReward the repeatExperienceReward new value. + * + */ + public void setRepeatExperienceReward(int repeatExperienceReward) + { + this.repeatExperienceReward = repeatExperienceReward; + } + + + /** + * This method sets the repeatItemReward value. + * @param repeatItemReward the repeatItemReward new value. + * + */ + public void setRepeatItemReward(List repeatItemReward) + { + this.repeatItemReward = repeatItemReward; + } + + + /** + * This method sets the repeatMoneyReward value. + * @param repeatMoneyReward the repeatMoneyReward new value. + * + */ + public void setRepeatMoneyReward(int repeatMoneyReward) + { + this.repeatMoneyReward = repeatMoneyReward; + } + + + /** + * This method sets the repeatRewardCommands value. + * @param repeatRewardCommands the repeatRewardCommands new value. + * + */ + public void setRepeatRewardCommands(List repeatRewardCommands) + { + this.repeatRewardCommands = repeatRewardCommands; + } + + +// --------------------------------------------------------------------- +// Section: Other methods +// --------------------------------------------------------------------- + + + /** * @see java.lang.Object#hashCode() + * @return int */ @Override - public int hashCode() { + public int hashCode() + { final int prime = 31; int result = 1; result = prime * result + ((uniqueId == null) ? 0 : uniqueId.hashCode()); return result; } - /* (non-Javadoc) - * @see java.lang.Object#equals(java.lang.Object) + + /** + * @see java.lang.Object#equals(Object) () + * @param obj of type Object + * @return boolean */ @Override - public boolean equals(Object obj) { - if (this == obj) { + public boolean equals(Object obj) + { + if (this == obj) + { return true; } - if (obj == null) { - return false; - } - if (!(obj instanceof Challenge)) { + + if (!(obj instanceof Challenge)) + { return false; } + Challenge other = (Challenge) obj; - if (uniqueId == null) { - if (other.uniqueId != null) { - return false; - } - } else if (!uniqueId.equals(other.uniqueId)) { - return false; + + if (uniqueId == null) + { + return other.uniqueId == null; + } + else + { + return uniqueId.equals(other.uniqueId); } - return true; } -} +} \ No newline at end of file diff --git a/src/main/java/world/bentobox/challenges/database/object/ChallengeLevel.java b/src/main/java/world/bentobox/challenges/database/object/ChallengeLevel.java index 70b5f74..cae1976 100644 --- a/src/main/java/world/bentobox/challenges/database/object/ChallengeLevel.java +++ b/src/main/java/world/bentobox/challenges/database/object/ChallengeLevel.java @@ -1,9 +1,13 @@ package world.bentobox.challenges.database.object; +import com.google.gson.annotations.Expose; +import org.bukkit.Material; import org.bukkit.inventory.ItemStack; import java.util.ArrayList; +import java.util.HashSet; import java.util.List; +import java.util.Set; import world.bentobox.bentobox.api.configuration.ConfigComment; import world.bentobox.bentobox.database.objects.DataObject; @@ -14,223 +18,455 @@ import world.bentobox.challenges.ChallengesManager; * @author tastybento * */ -public class ChallengeLevel implements DataObject, Comparable { +public class ChallengeLevel implements DataObject, Comparable +{ + /** + * Constructor ChallengeLevel creates a new ChallengeLevel instance. + */ + public ChallengeLevel() + { + } - public ChallengeLevel() {} - @ConfigComment("A friendly name for the level. If blank, level name is used.") - private String friendlyName = ""; - - @ConfigComment("Worlds that this level applies in. String list.") - private List worlds = new ArrayList<>(); +// --------------------------------------------------------------------- +// Section: Variables +// --------------------------------------------------------------------- - @ConfigComment("Commands to run when this level is completed") - private List rewardCommands = new ArrayList<>(); - + @ConfigComment("") @ConfigComment("Level name") + @Expose private String uniqueId = ChallengesManager.FREE; - - @ConfigComment("The number of undone challenges that can be left on this level before unlocking next level") - private int waiveramount = 1; - - @ConfigComment("The ordering of the levels, lowest to highest") - private int order = 0; - - @ConfigComment("The message shown when unlocking this level") + + @ConfigComment("") + @ConfigComment("A friendly name for the level. If blank, level name is used.") + @Expose + private String friendlyName = ""; + + @ConfigComment("") + @ConfigComment("ItemStack that represents current level. Will be used as icon in GUIs.") + @Expose + private ItemStack icon = new ItemStack(Material.BOOK); + + @ConfigComment("") + @ConfigComment("World that this level applies in. String.") + @Expose + private String world = ""; + + @ConfigComment("") + @ConfigComment("The ordering of the level, lowest to highest") + @Expose + private int order; + + @ConfigComment("") + @ConfigComment("The number of undone challenges that can be left on this level before") + @ConfigComment("unlocking next level.") + @Expose + private int waiverAmount = 1; + + @ConfigComment("") + @ConfigComment("The message shown when unlocking this level. Single line string.") + @Expose private String unlockMessage = ""; - - @ConfigComment("Unlock reward description") - private String rewardDescription = ""; - - @ConfigComment("List of reward itemstacks") - private List rewardItems; - - @ConfigComment("Unlock experience reward") - private int expReward; - - @ConfigComment("Unlock money reward") - private int moneyReward; - - public String getFriendlyName() { - return friendlyName; - } - public List getRewardCommands() { - return rewardCommands = new ArrayList<>(); - } + @ConfigComment("") + @ConfigComment("") + @ConfigComment("If this is blank, the reward text will be auto-generated, otherwise") + @ConfigComment("this will be used.") + @Expose + private String rewardText = ""; + + @ConfigComment("") + @ConfigComment("List of items the player will receive on completing level.") + @ConfigComment("ItemStack List.") + @Expose + private List rewardItems = new ArrayList<>(); + + @ConfigComment("") + @ConfigComment("Experience point reward on completing level.") + @Expose + private int rewardExperience = 0; + + @ConfigComment("") + @ConfigComment("Money reward. Economy plugin or addon required for this option.") + @Expose + private int rewardMoney = 0; + + @ConfigComment("") + @ConfigComment("Commands to run when the player completes all challenges in current") + @ConfigComment("level. String List") + @Expose + private List rewardCommands = new ArrayList<>(); + + @ConfigComment("") + @ConfigComment("Set of all challenges that is linked with current level.") + @ConfigComment("String Set") + @Expose + private Set challenges = new HashSet<>(); + + +// --------------------------------------------------------------------- +// Section: Getters +// --------------------------------------------------------------------- + + + /** + * This method returns the uniqueId value. + * @return the value of uniqueId. + * @see DataObject#getUniqueId() + */ @Override - public String getUniqueId() { + public String getUniqueId() + { return uniqueId; } + /** - * Get the number of undone tasks that can be left on a level before unlocking next level - * @return + * This method returns the friendlyName value. + * @return the value of friendlyName. */ - public int getWaiveramount() { - return waiveramount; + public String getFriendlyName() + { + return friendlyName; } - public void setFriendlyName(String friendlyName) { - this.friendlyName = friendlyName; + + /** + * This method returns the icon value. + * @return the value of icon. + */ + public ItemStack getIcon() + { + return icon; } - public void setRewardCommands(List rewardCommands) { - this.rewardCommands = rewardCommands; + + /** + * This method returns the world value. + * @return the value of world. + */ + public String getWorld() + { + return world; } - @Override - public void setUniqueId(String uniqueId) { - this.uniqueId = uniqueId; - } - public void setWaiveramount(int waiveramount) { - this.waiveramount = waiveramount; - } - - public int getOrder() { + /** + * This method returns the order value. + * @return the value of order. + */ + public int getOrder() + { return order; } - public void setOrder(int order) { - this.order = order; - } - - @Override - public int compareTo(ChallengeLevel o) { - return Integer.compare(this.order, o.order); - } - - /** - * @return the rewardDescription - */ - public String getRewardDescription() { - return rewardDescription; - } /** - * @param rewardDescription the rewardDescription to set + * This method returns the waiverAmount value. + * @return the value of waiverAmount. */ - public void setRewardDescription(String rewardDescription) { - this.rewardDescription = rewardDescription; + public int getWaiverAmount() + { + return waiverAmount; } - /** - * @return the rewardItems - */ - public List getRewardItems() { - return rewardItems; - } /** - * @param rewardItems the rewardItems to set + * This method returns the unlockMessage value. + * @return the value of unlockMessage. */ - public void setRewardItems(List rewardItems) { - this.rewardItems = rewardItems; - } - - /** - * @return the expReward - */ - public int getExpReward() { - return expReward; - } - - /** - * @param expReward the expReward to set - */ - public void setExpReward(int expReward) { - this.expReward = expReward; - } - - /** - * @return the moneyReward - */ - public int getMoneyReward() { - return moneyReward; - } - - /** - * @param moneyReward the moneyReward to set - */ - public void setMoneyReward(int moneyReward) { - this.moneyReward = moneyReward; - } - - /** - * @return the unlockMessage - */ - public String getUnlockMessage() { + public String getUnlockMessage() + { return unlockMessage; } + /** - * @param unlockMessage the unlockMessage to set + * This method returns the rewardText value. + * @return the value of rewardText. */ - public void setUnlockMessage(String unlockMessage) { + public String getRewardText() + { + return rewardText; + } + + + /** + * This method returns the rewardItems value. + * @return the value of rewardItems. + */ + public List getRewardItems() + { + return rewardItems; + } + + + /** + * This method returns the rewardExperience value. + * @return the value of rewardExperience. + */ + public int getRewardExperience() + { + return rewardExperience; + } + + + /** + * This method returns the rewardMoney value. + * @return the value of rewardMoney. + */ + public int getRewardMoney() + { + return rewardMoney; + } + + + /** + * This method returns the rewardCommands value. + * @return the value of rewardCommands. + */ + public List getRewardCommands() + { + return rewardCommands; + } + + + /** + * This method returns the challenges value. + * @return the value of challenges. + */ + public Set getChallenges() + { + return challenges; + } + + +// --------------------------------------------------------------------- +// Section: Setters +// --------------------------------------------------------------------- + + + /** + * This method sets the uniqueId value. + * @param uniqueId the uniqueId new value. + * + * @see DataObject#setUniqueId(String) + */ + @Override + public void setUniqueId(String uniqueId) + { + this.uniqueId = uniqueId; + } + + + /** + * This method sets the friendlyName value. + * @param friendlyName the friendlyName new value. + * + */ + public void setFriendlyName(String friendlyName) + { + this.friendlyName = friendlyName; + } + + + /** + * This method sets the icon value. + * @param icon the icon new value. + * + */ + public void setIcon(ItemStack icon) + { + this.icon = icon; + } + + + /** + * This method sets the world value. + * @param world the world new value. + * + */ + public void setWorld(String world) + { + this.world = world; + } + + + /** + * This method sets the order value. + * @param order the order new value. + * + */ + public void setOrder(int order) + { + this.order = order; + } + + + /** + * This method sets the waiverAmount value. + * @param waiverAmount the waiverAmount new value. + * + */ + public void setWaiverAmount(int waiverAmount) + { + this.waiverAmount = waiverAmount; + } + + + /** + * This method sets the unlockMessage value. + * @param unlockMessage the unlockMessage new value. + * + */ + public void setUnlockMessage(String unlockMessage) + { this.unlockMessage = unlockMessage; } - /** - * @return the worlds - */ - public List getWorlds() { - return worlds; - } /** - * @param worlds the worlds to set + * This method sets the rewardText value. + * @param rewardText the rewardText new value. + * */ - public void setWorlds(List worlds) { - this.worlds = worlds; + public void setRewardText(String rewardText) + { + this.rewardText = rewardText; } - /* (non-Javadoc) - * @see java.lang.Object#hashCode() + + /** + * This method sets the rewardItems value. + * @param rewardItems the rewardItems new value. + * + */ + public void setRewardItems(List rewardItems) + { + this.rewardItems = rewardItems; + } + + + /** + * This method sets the rewardExperience value. + * @param rewardExperience the rewardExperience new value. + * + */ + public void setRewardExperience(int rewardExperience) + { + this.rewardExperience = rewardExperience; + } + + + /** + * This method sets the rewardMoney value. + * @param rewardMoney the rewardMoney new value. + * + */ + public void setRewardMoney(int rewardMoney) + { + this.rewardMoney = rewardMoney; + } + + + /** + * This method sets the rewardCommands value. + * @param rewardCommands the rewardCommands new value. + * + */ + public void setRewardCommands(List rewardCommands) + { + this.rewardCommands = rewardCommands; + } + + + /** + * This method sets the challenges value. + * @param challenges the challenges new value. + * + */ + public void setChallenges(Set challenges) + { + this.challenges = challenges; + } + + +// --------------------------------------------------------------------- +// Section: Other methods +// --------------------------------------------------------------------- + + + /** + * {@inheritDoc} */ @Override - public int hashCode() { + public int compareTo(ChallengeLevel o) + { + if (this.equals(o)) + { + return 0; + } + else + { + if (this.getWorld().equals(o.getWorld())) + { + if (this.order == o.getOrder()) + { + return this.getUniqueId().compareTo(o.getUniqueId()); + } + else + { + return Integer.compare(this.order, o.getOrder()); + } + } + else + { + return this.getWorld().compareTo(o.getWorld()); + } + } + } + + + /** + * {@inheritDoc} + */ + @Override + public int hashCode() + { final int prime = 31; int result = 1; result = prime * result + ((uniqueId == null) ? 0 : uniqueId.hashCode()); return result; } - /* (non-Javadoc) - * @see java.lang.Object#equals(java.lang.Object) + + + /** + * {@inheritDoc} */ @Override - public boolean equals(Object obj) { - if (this == obj) { + public boolean equals(Object obj) + { + if (this == obj) + { return true; } - if (obj == null) { - return false; - } - if (!(obj instanceof ChallengeLevel)) { + + if (!(obj instanceof ChallengeLevel)) + { return false; } + ChallengeLevel other = (ChallengeLevel) obj; - if (uniqueId == null) { - if (other.uniqueId != null) { - return false; - } - } else if (!uniqueId.equals(other.uniqueId)) { - return false; + + if (uniqueId == null) + { + return other.uniqueId == null; + } + else + { + return uniqueId.equals(other.uniqueId); } - return true; } - - - public ItemStack getIcon() - { - return null; - } - - - public void setIcon(ItemStack newIcon) - { - - } -} +} \ No newline at end of file diff --git a/src/main/java/world/bentobox/challenges/database/object/ChallengesPlayerData.java b/src/main/java/world/bentobox/challenges/database/object/ChallengesPlayerData.java index fd62f9f..afc84a0 100644 --- a/src/main/java/world/bentobox/challenges/database/object/ChallengesPlayerData.java +++ b/src/main/java/world/bentobox/challenges/database/object/ChallengesPlayerData.java @@ -1,6 +1,3 @@ -/** - * - */ package world.bentobox.challenges.database.object; import java.util.HashMap; @@ -20,173 +17,265 @@ import world.bentobox.bentobox.util.Util; * @author tastybento * */ -public class ChallengesPlayerData implements DataObject { +public class ChallengesPlayerData implements DataObject +{ + /** + * Constructor ChallengesPlayerData creates a new ChallengesPlayerData instance. + */ + public ChallengesPlayerData() + { + } - @Expose - private String uniqueId = ""; - /** - * Challenge map, where key = unique challenge name and Value = number of times completed - */ - @Expose - private Map challengeStatus = new HashMap<>(); - @Expose - private Map challengesTimestamp = new HashMap<>(); - @Expose - private Set levelsDone = new HashSet<>(); - // Required for bean instantiation - public ChallengesPlayerData() {} + /** + * Creates a player data entry + * + * @param uniqueId - the player's UUID in string format + */ + public ChallengesPlayerData(String uniqueId) + { + this.uniqueId = uniqueId; + } - /** - * Mark a challenge as having been completed. Will increment the number of times and timestamp - * @param world - world of challenge - * @param challengeName - unique challenge name - */ - public void setChallengeDone(World world, String challengeName) { - String name = Util.getWorld(world).getName() + challengeName; - int times = challengeStatus.getOrDefault(name, 0) + 1; - challengeStatus.put(name, times); - challengesTimestamp.put(name, System.currentTimeMillis()); - } - /** - * Set the number of times a challenge has been done - * @param world - world of challenge - * @param challengeName - unique challenge name - * @param times - the number of times to set - * - */ - public void setChallengeTimes(World world, String challengeName, int times) { - String name = Util.getWorld(world).getName() + challengeName; - challengeStatus.put(name, times); - challengesTimestamp.put(name, System.currentTimeMillis()); - } +// --------------------------------------------------------------------- +// Section: Variables +// --------------------------------------------------------------------- - /** - * Check if a challenge has been done - * @param challengeName - unique challenge name - * @return true if done at least once - */ - public boolean isChallengeDone(World world, String challengeName) { - return getTimes(world, challengeName) > 0; - } - /** - * Check how many times a challenge has been done - * @param challengeName - unique challenge name - * @return - number of times - */ - public int getTimes(World world, String challengeName) { - return challengeStatus.getOrDefault(Util.getWorld(world).getName() + challengeName, 0); - } + /** + * This variable stores each player UUID as string. + */ + @Expose + private String uniqueId = ""; - /** - * Creates a player data entry - * @param uniqueId - the player's UUID in string format - */ - public ChallengesPlayerData(String uniqueId) { - this.uniqueId = uniqueId; - } + /** + * Challenge map, where key = unique challenge name and Value = number of times + * completed + */ + @Expose + private Map challengeStatus = new HashMap<>(); - /* (non-Javadoc) - * @see world.bentobox.bbox.database.objects.DataObject#getUniqueId() - */ - @Override - public String getUniqueId() { - return uniqueId; - } + /** + * Map of challenges completion time where key is challenges unique id and value is + * timestamp when challenge was completed last time. + */ + @Expose + private Map challengesTimestamp = new HashMap<>(); - /* (non-Javadoc) - * @see world.bentobox.bbox.database.objects.DataObject#setUniqueId(java.lang.String) - */ - @Override - public void setUniqueId(String uniqueId) { - this.uniqueId = uniqueId; - } + /** + * Set of Strings that contains all challenge levels that are completed. + */ + @Expose + private Set levelsDone = new HashSet<>(); - /** - * @return the challengeStatus - */ - public Map getChallengeStatus() { - return challengeStatus; - } - /** - * @param challengeStatus the challengeStatus to set - */ - public void setChallengeStatus(Map challengeStatus) { - this.challengeStatus = challengeStatus; - } - /** - * @return the challengesTimestamp - */ - public Map getChallengesTimestamp() { - return challengesTimestamp; - } - /** - * @param challengesTimestamp the challengesTimestamp to set - */ - public void setChallengesTimestamp(Map challengesTimestamp) { - this.challengesTimestamp = challengesTimestamp; - } - /** - * @return the levelsDone - */ - public Set getLevelsDone() { - return levelsDone; - } - /** - * @param levelsDone the levelsDone to set - */ - public void setLevelsDone(Set levelsDone) { - this.levelsDone = levelsDone; - } +// --------------------------------------------------------------------- +// Section: Getters +// --------------------------------------------------------------------- - /* (non-Javadoc) - * @see java.lang.Object#hashCode() - */ - @Override - public int hashCode() { - final int prime = 31; - int result = 1; - result = prime * result + ((uniqueId == null) ? 0 : uniqueId.hashCode()); - return result; - } - /* (non-Javadoc) - * @see java.lang.Object#equals(java.lang.Object) - */ - @Override - public boolean equals(Object obj) { - if (this == obj) { - return true; - } - if (obj == null) { - return false; - } - if (!(obj instanceof ChallengesPlayerData)) { - return false; - } - ChallengesPlayerData other = (ChallengesPlayerData) obj; - if (uniqueId == null) { - if (other.uniqueId != null) { - return false; - } - } else if (!uniqueId.equals(other.uniqueId)) { - return false; - } - return true; - } + /** + * @return uniqueID + * @see DataObject#getUniqueId() + */ + @Override + public String getUniqueId() + { + return uniqueId; + } - /** - * Resets all challenges and levels in world for this player - * @param world - */ - public void reset(World world) { - String worldName = Util.getWorld(world).getName(); - challengeStatus.keySet().removeIf(n -> n.startsWith(worldName)); - challengesTimestamp.keySet().removeIf(n -> n.startsWith(worldName)); - levelsDone.removeIf(n -> n.startsWith(worldName)); - } -} + /** + * This method returns the challengeStatus value. + * @return the value of challengeStatus. + */ + public Map getChallengeStatus() + { + return challengeStatus; + } + + + /** + * This method returns the challengesTimestamp value. + * @return the value of challengesTimestamp. + */ + public Map getChallengesTimestamp() + { + return challengesTimestamp; + } + + + /** + * This method returns the levelsDone value. + * @return the value of levelsDone. + */ + public Set getLevelsDone() + { + return levelsDone; + } + + +// --------------------------------------------------------------------- +// Section: Setters +// --------------------------------------------------------------------- + + + /** + * @param uniqueId - unique ID the uniqueId to set + * @see DataObject#setUniqueId(String) + */ + @Override + public void setUniqueId(String uniqueId) + { + this.uniqueId = uniqueId; + } + + + /** + * This method sets the challengeStatus value. + * @param challengeStatus the challengeStatus new value. + * + */ + public void setChallengeStatus(Map challengeStatus) + { + this.challengeStatus = challengeStatus; + } + + + /** + * This method sets the challengesTimestamp value. + * @param challengesTimestamp the challengesTimestamp new value. + * + */ + public void setChallengesTimestamp(Map challengesTimestamp) + { + this.challengesTimestamp = challengesTimestamp; + } + + + /** + * This method sets the levelsDone value. + * @param levelsDone the levelsDone new value. + * + */ + public void setLevelsDone(Set levelsDone) + { + this.levelsDone = levelsDone; + } + + +// --------------------------------------------------------------------- +// Section: Other Methods +// --------------------------------------------------------------------- + + + /** + * Resets all challenges and levels in world for this player + * + * @param world world which challenges must be reset. + */ + public void reset(World world) + { + String worldName = Util.getWorld(world).getName(); + challengeStatus.keySet().removeIf(n -> n.startsWith(worldName)); + challengesTimestamp.keySet().removeIf(n -> n.startsWith(worldName)); + levelsDone.removeIf(n -> n.startsWith(worldName)); + } + + + /** + * Mark a challenge as having been completed. Will increment the number of times and + * timestamp + * + * @param challengeName - unique challenge name + */ + public void setChallengeDone(String challengeName) + { + int times = challengeStatus.getOrDefault(challengeName, 0) + 1; + challengeStatus.put(challengeName, times); + challengesTimestamp.put(challengeName, System.currentTimeMillis()); + } + + + /** + * Set the number of times a challenge has been done + * + * @param challengeName - unique challenge name + * @param times - the number of times to set + */ + public void setChallengeTimes(String challengeName, int times) + { + challengeStatus.put(challengeName, times); + challengesTimestamp.put(challengeName, System.currentTimeMillis()); + } + + + /** + * Check if a challenge has been done + * + * @param challengeName - unique challenge name + * @return true if done at least once + */ + public boolean isChallengeDone(String challengeName) + { + return this.getTimes(challengeName) > 0; + } + + + /** + * Check how many times a challenge has been done + * + * @param challengeName - unique challenge name + * @return - number of times + */ + public int getTimes(String challengeName) + { + return challengeStatus.getOrDefault(challengeName, 0); + } + + + /** + * @see Object#hashCode() + * @return object hashCode value. + */ + @Override + public int hashCode() + { + final int prime = 31; + int result = 1; + result = prime * result + ((uniqueId == null) ? 0 : uniqueId.hashCode()); + return result; + } + + + /** + * @see java.lang.Object#equals(java.lang.Object) + * @param obj Other object. + * @return boolean that indicate if objects are equals. + */ + @Override + public boolean equals(Object obj) + { + if (this == obj) + { + return true; + } + + if (!(obj instanceof ChallengesPlayerData)) + { + return false; + } + + ChallengesPlayerData other = (ChallengesPlayerData) obj; + + if (uniqueId == null) + { + return other.uniqueId == null; + } + else + { + return uniqueId.equals(other.uniqueId); + } + } +} \ No newline at end of file diff --git a/src/main/java/world/bentobox/challenges/panel/ChallengesPanels.java b/src/main/java/world/bentobox/challenges/panel/ChallengesPanels.java index ff58d80..f021c74 100644 --- a/src/main/java/world/bentobox/challenges/panel/ChallengesPanels.java +++ b/src/main/java/world/bentobox/challenges/panel/ChallengesPanels.java @@ -85,7 +85,6 @@ public class ChallengesPanels { * Creates a panel item for challenge if appropriate and adds it to panelBuilder * @param panelBuilder * @param challenge - * @param user */ private void createItem(PanelBuilder panelBuilder, Challenge challenge) { // Check completion @@ -100,16 +99,13 @@ public class ChallengesPanels { .description(challengeDescription(challenge)) .glow(completed) .clickHandler((panel, player, c, s) -> { - if (!challenge.getChallengeType().equals(ChallengeType.ICON)) { - new TryToComplete(addon).user(player).manager(manager).challenge(challenge) + new TryToComplete(addon).user(player).manager(manager).challenge(challenge) .world(world).permPrefix(permPrefix).label(label).build(); - //new TryToComplete(addon, player, manager, challenge, world, permPrefix, label); - } return true; }) .build(); - if (challenge.getSlot() >= 0) { - panelBuilder.item(challenge.getSlot(),item); + if (challenge.getOrder() >= 0) { + panelBuilder.item(challenge.getOrder(),item); } else { panelBuilder.item(item); } @@ -161,7 +157,6 @@ public class ChallengesPanels { * Creates the challenge description for the "item" in the inventory * * @param challenge - * @param player * @return List of strings splitting challenge string into 25 chars long */ private List challengeDescription(Challenge challenge) { @@ -210,7 +205,7 @@ public class ChallengesPanels { // First time moneyReward = challenge.getRewardMoney(); rewardText = challenge.getRewardText(); - expReward = challenge.getRewardExp(); + expReward = challenge.getRewardExperience(); if (!rewardText.isEmpty()) { result.addAll(splitTrans(user, "challenges.first-time-rewards")); } @@ -218,7 +213,7 @@ public class ChallengesPanels { // Repeat challenge moneyReward = challenge.getRepeatMoneyReward(); rewardText = challenge.getRepeatRewardText(); - expReward = challenge.getRepeatExpReward(); + expReward = challenge.getRepeatExperienceReward(); if (!rewardText.isEmpty()) { result.addAll(splitTrans(user, "challenges.repeat-rewards")); } diff --git a/src/main/java/world/bentobox/challenges/panel/ChallengesPanels2.java b/src/main/java/world/bentobox/challenges/panel/ChallengesPanels2.java index f52bf72..2f215c6 100644 --- a/src/main/java/world/bentobox/challenges/panel/ChallengesPanels2.java +++ b/src/main/java/world/bentobox/challenges/panel/ChallengesPanels2.java @@ -107,7 +107,6 @@ public class ChallengesPanels2 { * Creates a panel item for challenge if appropriate and adds it to panelBuilder * @param panelBuilder * @param challenge - * @param requester */ private void createItem(PanelBuilder panelBuilder, Challenge challenge) { // For admin, glow means activated. For user, glow means done @@ -138,33 +137,27 @@ public class ChallengesPanels2 { if (mode.equals(Mode.ADMIN)) { // Admin click itemBuilder.clickHandler((panel, player, c, s) -> { - if (!challenge.getChallengeType().equals(ChallengeType.ICON)) { - new AdminGUI(addon, player, challenge, world, permPrefix, label); - } + new AdminGUI(addon, player, challenge, world, permPrefix, label); return true; }); } else if (mode.equals(Mode.EDIT)) { // Admin edit click itemBuilder.clickHandler((panel, player, c, s) -> { - if (!challenge.getChallengeType().equals(ChallengeType.ICON)) { - new AdminEditGUI(addon, player, target, challenge, world, permPrefix, label); - } + new AdminEditGUI(addon, player, target, challenge, world, permPrefix, label); return true; }); } else { // Player click itemBuilder.clickHandler((panel, player, c, s) -> { - if (!challenge.getChallengeType().equals(ChallengeType.ICON)) { - new TryToComplete(addon, player, manager, challenge, world, permPrefix, label); - } + new TryToComplete(addon, player, manager, challenge, world, permPrefix, label); return true; }); } // If the challenge has a specific slot allocated, use it - if (challenge.getSlot() >= 0) { - panelBuilder.item(challenge.getSlot(),itemBuilder.build()); + if (challenge.getOrder() >= 0) { + panelBuilder.item(challenge.getOrder(),itemBuilder.build()); } else { panelBuilder.item(itemBuilder.build()); } @@ -216,7 +209,6 @@ public class ChallengesPanels2 { * Creates the challenge description for the "item" in the inventory * * @param challenge - * @param player * @return List of strings splitting challenge string into 25 chars long */ private List challengeDescription(Challenge challenge) { @@ -287,7 +279,7 @@ public class ChallengesPanels2 { // First time moneyReward = challenge.getRewardMoney(); rewardText = challenge.getRewardText(); - expReward = challenge.getRewardExp(); + expReward = challenge.getRewardExperience(); if (!rewardText.isEmpty()) { result.addAll(splitTrans(requester, "challenges.first-time-rewards")); } @@ -296,7 +288,7 @@ public class ChallengesPanels2 { // Repeat challenge moneyReward = challenge.getRepeatMoneyReward(); rewardText = challenge.getRepeatRewardText(); - expReward = challenge.getRepeatExpReward(); + expReward = challenge.getRepeatExperienceReward(); if (!rewardText.isEmpty()) { result.addAll(splitTrans(requester, "challenges.repeat-rewards")); } diff --git a/src/main/java/world/bentobox/challenges/panel/RequiredPanel.java b/src/main/java/world/bentobox/challenges/panel/RequiredPanel.java index 9e69652..76ff526 100644 --- a/src/main/java/world/bentobox/challenges/panel/RequiredPanel.java +++ b/src/main/java/world/bentobox/challenges/panel/RequiredPanel.java @@ -73,7 +73,7 @@ public class RequiredPanel implements ClickHandler, PanelListener { .clickHandler(this) .build()).forEach(pb::item); return pb.user(user).build(); - case LEVEL: + case OTHER: break; default: @@ -137,8 +137,6 @@ public class RequiredPanel implements ClickHandler, PanelListener { } // Save changes switch (challenge.getChallengeType()) { - case ICON: - break; case INVENTORY: List reqItems = new ArrayList<>(); // Skip first item @@ -154,7 +152,7 @@ public class RequiredPanel implements ClickHandler, PanelListener { break; case ISLAND: break; - case LEVEL: + case OTHER: break; default: break; diff --git a/src/main/java/world/bentobox/challenges/panel/TryToComplete.java b/src/main/java/world/bentobox/challenges/panel/TryToComplete.java index c5012f9..ffe8709 100644 --- a/src/main/java/world/bentobox/challenges/panel/TryToComplete.java +++ b/src/main/java/world/bentobox/challenges/panel/TryToComplete.java @@ -97,7 +97,7 @@ public class TryToComplete { vaultHook -> vaultHook.deposit(this.user, this.challenge.getRewardMoney())); // Give exp - user.getPlayer().giveExp(challenge.getRewardExp()); + user.getPlayer().giveExp(challenge.getRewardExperience()); // Run commands runCommands(challenge.getRewardCommands()); user.sendMessage("challenges.you-completed", "[challenge]", challenge.getFriendlyName()); @@ -118,7 +118,7 @@ public class TryToComplete { vaultHook -> vaultHook.deposit(this.user, this.challenge.getRepeatMoneyReward())); // Give exp - user.getPlayer().giveExp(challenge.getRepeatExpReward()); + user.getPlayer().giveExp(challenge.getRepeatExperienceReward()); // Run commands runCommands(challenge.getRepeatRewardCommands()); user.sendMessage("challenges.you-repeated", "[challenge]", challenge.getFriendlyName()); @@ -162,7 +162,7 @@ public class TryToComplete { vaultHook -> vaultHook.deposit(this.user, this.challenge.getRewardMoney())); // Give exp - user.getPlayer().giveExp(challenge.getRewardExp()); + user.getPlayer().giveExp(challenge.getRewardExperience()); // Run commands runCommands(challenge.getRewardCommands()); user.sendMessage("challenges.you-completed", "[challenge]", challenge.getFriendlyName()); @@ -183,7 +183,7 @@ public class TryToComplete { vaultHook -> vaultHook.deposit(this.user, this.challenge.getRepeatMoneyReward())); // Give exp - user.getPlayer().giveExp(challenge.getRepeatExpReward()); + user.getPlayer().giveExp(challenge.getRepeatExperienceReward()); // Run commands runCommands(challenge.getRepeatRewardCommands()); user.sendMessage("challenges.you-repeated", "[challenge]", challenge.getFriendlyName()); @@ -199,7 +199,7 @@ public class TryToComplete { */ private ChallengeResult checkIfCanCompleteChallenge() { // Check the world - if (!Util.getWorld(user.getWorld()).getName().equalsIgnoreCase(challenge.getWorld())) { + if (!challenge.getUniqueId().startsWith(Util.getWorld(world).getName())) { user.sendMessage("general.errors.wrong-world"); return new ChallengeResult(); } @@ -215,7 +215,7 @@ public class TryToComplete { } // Check repeatability if (manager.isChallengeComplete(user, challenge.getUniqueId(), world) - && (!challenge.isRepeatable() || challenge.getChallengeType().equals(ChallengeType.LEVEL) + && (!challenge.isRepeatable() || challenge.getChallengeType().equals(ChallengeType.OTHER) || challenge.getChallengeType().equals(ChallengeType.ISLAND))) { user.sendMessage("challenges.not-repeatable"); return new ChallengeResult(); @@ -226,24 +226,24 @@ public class TryToComplete { if (vaultHook.isPresent()) { - if (!vaultHook.get().has(this.user, this.challenge.getReqMoney())) + if (!vaultHook.get().has(this.user, this.challenge.getRequiredMoney())) { - this.user.sendMessage("challenges.not-enough-money", "[money]", Integer.toString(this.challenge.getReqMoney())); + this.user.sendMessage("challenges.not-enough-money", "[money]", Integer.toString(this.challenge.getRequiredMoney())); return new ChallengeResult(); } } // Check exp - if (this.user.getPlayer().getTotalExperience() < this.challenge.getReqExp()) + if (this.user.getPlayer().getTotalExperience() < this.challenge.getRequiredExperience()) { - this.user.sendMessage("challenges.not-enough-exp", "[xp]", Integer.toString(this.challenge.getReqExp())); + this.user.sendMessage("challenges.not-enough-exp", "[xp]", Integer.toString(this.challenge.getRequiredExperience())); return new ChallengeResult(); } switch (challenge.getChallengeType()) { case INVENTORY: return checkInventory(); - case LEVEL: + case OTHER: return checkLevel(); case ISLAND: return checkSurrounding(); @@ -303,9 +303,9 @@ public class TryToComplete { if (vaultHook.isPresent() && this.challenge.isTakeMoney() && - this.challenge.getReqMoney() > 0) + this.challenge.getRequiredMoney() > 0) { - vaultHook.get().withdraw(this.user, this.challenge.getReqMoney()); + vaultHook.get().withdraw(this.user, this.challenge.getRequiredMoney()); } } @@ -346,12 +346,12 @@ public class TryToComplete { // Check if the level addon is installed or not long level = addon.getAddonByName("Level") .map(l -> ((Level)l).getIslandLevel(world, user.getUniqueId())).orElse(0L); - if (level >= challenge.getReqIslandlevel()) { + if (level >= challenge.getRequiredIslandLevel()) { // process money removal this.removeMoney(); return new ChallengeResult().setMeetsRequirements(); } else { - user.sendMessage("challenges.error.island-level", TextVariables.NUMBER, String.valueOf(challenge.getReqIslandlevel())); + user.sendMessage("challenges.error.island-level", TextVariables.NUMBER, String.valueOf(challenge.getRequiredIslandLevel())); return new ChallengeResult(); } } @@ -428,7 +428,6 @@ public class TryToComplete { private boolean meetsRequirements; private boolean repeat; /** - * @param meetsRequirements the meetsRequirements to set */ public ChallengeResult setMeetsRequirements() { this.meetsRequirements = true; diff --git a/src/main/java/world/bentobox/challenges/panel/admin/EditChallengeGUI.java b/src/main/java/world/bentobox/challenges/panel/admin/EditChallengeGUI.java index 5271864..203b3c6 100644 --- a/src/main/java/world/bentobox/challenges/panel/admin/EditChallengeGUI.java +++ b/src/main/java/world/bentobox/challenges/panel/admin/EditChallengeGUI.java @@ -102,7 +102,7 @@ public class EditChallengeGUI extends CommonGUI case ISLAND: this.buildIslandRequirementsPanel(panelBuilder); break; - case LEVEL: + case OTHER: this.buildOtherRequirementsPanel(panelBuilder); break; } @@ -320,7 +320,7 @@ public class EditChallengeGUI extends CommonGUI { icon = new ItemStack(Material.CHEST); } - else if (this.challenge.getChallengeType().equals(Challenge.ChallengeType.LEVEL)) + else if (this.challenge.getChallengeType().equals(Challenge.ChallengeType.OTHER)) { icon = new ItemStack(Material.EXPERIENCE_BOTTLE); } @@ -427,13 +427,13 @@ public class EditChallengeGUI extends CommonGUI description = Collections.singletonList( this.user.getTranslation("challenges.gui.admin.descriptions.order", "[value]", - Integer.toString(this.challenge.getSlot()))); + Integer.toString(this.challenge.getOrder()))); icon = new ItemStack(Material.DROPPER); clickHandler = (panel, user, clickType, slot) -> { - new NumberGUI(this.user, this.challenge.getSlot(), -1, 54, (status, value) -> { + new NumberGUI(this.user, this.challenge.getOrder(), -1, 54, (status, value) -> { if (status) { - this.challenge.setSlot(value); + this.challenge.setOrder(value); } this.build(); @@ -640,13 +640,13 @@ public class EditChallengeGUI extends CommonGUI case REQUIRED_PERMISSIONS: { name = this.user.getTranslation("challenges.gui.admin.buttons.permissions"); - description = new ArrayList<>(this.challenge.getReqPerms()); + description = new ArrayList<>(this.challenge.getRequiredPermissions()); icon = new ItemStack(Material.REDSTONE_LAMP); clickHandler = (panel, user, clickType, slot) -> { - new StringListGUI(this.user, this.challenge.getReqPerms(), (status, value) -> { + new StringListGUI(this.user, this.challenge.getRequiredPermissions(), (status, value) -> { if (status) { - this.challenge.setReqPerms(new HashSet<>(value)); + this.challenge.setRequiredPermissions(new HashSet<>(value)); } this.build(); @@ -713,13 +713,13 @@ public class EditChallengeGUI extends CommonGUI description = Collections.singletonList( this.user.getTranslation("challenges.gui.admin.descriptions.required-exp", "[value]", - Integer.toString(this.challenge.getMaxTimes()))); + Integer.toString(this.challenge.getRequiredExperience()))); icon = new ItemStack(Material.EXPERIENCE_BOTTLE); clickHandler = (panel, user, clickType, slot) -> { - new NumberGUI(this.user, this.challenge.getReqExp(), 0, (status, value) -> { + new NumberGUI(this.user, this.challenge.getRequiredExperience(), 0, (status, value) -> { if (status) { - this.challenge.setReqExp(value); + this.challenge.setRequiredExperience(value); } this.build(); @@ -758,13 +758,13 @@ public class EditChallengeGUI extends CommonGUI description = Collections.singletonList( this.user.getTranslation("challenges.gui.admin.descriptions.required-level", "[value]", - Long.toString(this.challenge.getReqIslandlevel()))); + Long.toString(this.challenge.getRequiredIslandLevel()))); icon = new ItemStack(Material.BEACON); clickHandler = (panel, user, clickType, slot) -> { - new NumberGUI(this.user, (int) this.challenge.getReqIslandlevel(), (status, value) -> { + new NumberGUI(this.user, (int) this.challenge.getRequiredIslandLevel(), (status, value) -> { if (status) { - this.challenge.setReqIslandlevel(value); + this.challenge.setRequiredIslandLevel(value); } this.build(); @@ -781,13 +781,13 @@ public class EditChallengeGUI extends CommonGUI description = Collections.singletonList( this.user.getTranslation("challenges.gui.admin.descriptions.required-money", "[value]", - Integer.toString(this.challenge.getReqMoney()))); + Integer.toString(this.challenge.getRequiredMoney()))); icon = new ItemStack(Material.GOLD_INGOT); clickHandler = (panel, user, clickType, slot) -> { - new NumberGUI(this.user, this.challenge.getReqMoney(), 0, (status, value) -> { + new NumberGUI(this.user, this.challenge.getRequiredMoney(), 0, (status, value) -> { if (status) { - this.challenge.setReqMoney(value); + this.challenge.setRequiredMoney(value); } this.build(); @@ -874,13 +874,13 @@ public class EditChallengeGUI extends CommonGUI description = Collections.singletonList( this.user.getTranslation("challenges.gui.admin.descriptions.reward-exp", "[value]", - Integer.toString(this.challenge.getRewardExp()))); + Integer.toString(this.challenge.getRewardExperience()))); icon = new ItemStack(Material.EXPERIENCE_BOTTLE); clickHandler = (panel, user, clickType, slot) -> { - new NumberGUI(this.user, this.challenge.getReqExp(), 0, (status, value) -> { + new NumberGUI(this.user, this.challenge.getRewardExperience(), 0, (status, value) -> { if (status) { - this.challenge.setRewardExp(value); + this.challenge.setRewardExperience(value); } this.build(); @@ -1035,13 +1035,13 @@ public class EditChallengeGUI extends CommonGUI description = Collections.singletonList( this.user.getTranslation("challenges.gui.admin.descriptions.repeat-reward-exp", "[value]", - Integer.toString(this.challenge.getRepeatExpReward()))); + Integer.toString(this.challenge.getRepeatExperienceReward()))); icon = new ItemStack(Material.GLASS_BOTTLE); clickHandler = (panel, user, clickType, slot) -> { - new NumberGUI(this.user, this.challenge.getRepeatExpReward(), 0, (status, value) -> { + new NumberGUI(this.user, this.challenge.getRepeatExperienceReward(), 0, (status, value) -> { if (status) { - this.challenge.setRepeatExpReward(value); + this.challenge.setRepeatExperienceReward(value); } this.build(); @@ -1234,4 +1234,4 @@ public class EditChallengeGUI extends CommonGUI * Variable holds current active menu. */ private MenuType currentMenuType; -} +} \ No newline at end of file diff --git a/src/main/java/world/bentobox/challenges/panel/admin/EditLevelGUI.java b/src/main/java/world/bentobox/challenges/panel/admin/EditLevelGUI.java index 912aa87..fbcf53c 100644 --- a/src/main/java/world/bentobox/challenges/panel/admin/EditLevelGUI.java +++ b/src/main/java/world/bentobox/challenges/panel/admin/EditLevelGUI.java @@ -398,13 +398,13 @@ public class EditLevelGUI extends CommonGUI description = Collections.singletonList( this.user.getTranslation("challenges.gui.admin.descriptions.waiver-amount", "[value]", - Integer.toString(this.challengeLevel.getWaiveramount()))); + Integer.toString(this.challengeLevel.getWaiverAmount()))); icon = new ItemStack(Material.REDSTONE_TORCH); clickHandler = (panel, user, clickType, slot) -> { - new NumberGUI(this.user, this.challengeLevel.getWaiveramount(), 0, (status, value) -> { + new NumberGUI(this.user, this.challengeLevel.getWaiverAmount(), 0, (status, value) -> { if (status) { - this.challengeLevel.setWaiveramount(value); + this.challengeLevel.setWaiverAmount(value); } this.build(); @@ -419,14 +419,14 @@ public class EditLevelGUI extends CommonGUI case REWARD_DESCRIPTION: { name = this.user.getTranslation("challenges.gui.admin.buttons.reward-text"); - description = Collections.singletonList(this.challengeLevel.getRewardDescription()); + description = Collections.singletonList(this.challengeLevel.getRewardText()); icon = new ItemStack(Material.WRITTEN_BOOK); clickHandler = (panel, user, clickType, slot) -> { new AnvilGUI(this.addon.getPlugin(), this.user.getPlayer(), - this.challengeLevel.getRewardDescription(), + this.challengeLevel.getRewardText(), (player, reply) -> { - this.challengeLevel.setRewardDescription(reply); + this.challengeLevel.setRewardText(reply); this.build(); return reply; }); @@ -468,13 +468,13 @@ public class EditLevelGUI extends CommonGUI description = Collections.singletonList( this.user.getTranslation("challenges.gui.admin.descriptions.reward-exp", "[value]", - Integer.toString(this.challengeLevel.getExpReward()))); + Integer.toString(this.challengeLevel.getRewardExperience()))); icon = new ItemStack(Material.EXPERIENCE_BOTTLE); clickHandler = (panel, user, clickType, slot) -> { - new NumberGUI(this.user, this.challengeLevel.getExpReward(), 0, (status, value) -> { + new NumberGUI(this.user, this.challengeLevel.getRewardExperience(), 0, (status, value) -> { if (status) { - this.challengeLevel.setExpReward(value); + this.challengeLevel.setRewardExperience(value); } this.build(); @@ -491,13 +491,13 @@ public class EditLevelGUI extends CommonGUI description = Collections.singletonList( this.user.getTranslation("challenges.gui.admin.descriptions.reward-money", "[value]", - Integer.toString(this.challengeLevel.getMoneyReward()))); + Integer.toString(this.challengeLevel.getRewardMoney()))); icon = new ItemStack(Material.GOLD_INGOT); clickHandler = (panel, user, clickType, slot) -> { - new NumberGUI(this.user, this.challengeLevel.getMoneyReward(), 0, (status, value) -> { + new NumberGUI(this.user, this.challengeLevel.getRewardMoney(), 0, (status, value) -> { if (status) { - this.challengeLevel.setMoneyReward(value); + this.challengeLevel.setRewardMoney(value); } this.build(); @@ -544,7 +544,7 @@ public class EditLevelGUI extends CommonGUI new SelectChallengeGUI(this.user, challengeList, (status, value) -> { if (status) { - manager.linkChallenge(this.challengeLevel, value); + manager.addChallengeToLevel(value, this.challengeLevel); } this.build(); @@ -636,4 +636,4 @@ public class EditLevelGUI extends CommonGUI * Variable holds current active menu. */ private MenuType currentMenuType; -} +} \ No newline at end of file diff --git a/src/main/java/world/bentobox/challenges/panel/user/ChallengesGUI.java b/src/main/java/world/bentobox/challenges/panel/user/ChallengesGUI.java index 098fe0a..894bd75 100644 --- a/src/main/java/world/bentobox/challenges/panel/user/ChallengesGUI.java +++ b/src/main/java/world/bentobox/challenges/panel/user/ChallengesGUI.java @@ -443,13 +443,13 @@ public class ChallengesGUI extends CommonGUI { rewardText = challenge.getRewardText(); rewardMoney = challenge.getRewardMoney(); - rewardExperience = challenge.getRewardExp(); + rewardExperience = challenge.getRewardExperience(); } else { rewardText = challenge.getRepeatRewardText(); rewardMoney = challenge.getRepeatMoneyReward(); - rewardExperience = challenge.getRepeatExpReward(); + rewardExperience = challenge.getRepeatExperienceReward(); } List result = new ArrayList<>();