From 011f59b0c13dbc018680ef9250d2934ef7d25260 Mon Sep 17 00:00:00 2001 From: Fabrizio La Rosa Date: Sun, 12 Jul 2020 15:09:33 +0200 Subject: [PATCH] Unlimited challenges --- .../songoda/skyblock/challenge/FabledChallenge.java | 12 ++++++------ .../challenge/challenge/ChallengeCategory.java | 10 +++++++++- .../skyblock/challenge/challenge/ItemChallenge.java | 12 +++++++++++- src/main/resources/challenges.yml | 4 ++-- src/main/resources/language.yml | 2 ++ 5 files changed, 30 insertions(+), 10 deletions(-) diff --git a/src/main/java/com/songoda/skyblock/challenge/FabledChallenge.java b/src/main/java/com/songoda/skyblock/challenge/FabledChallenge.java index ede403f1..13532dff 100644 --- a/src/main/java/com/songoda/skyblock/challenge/FabledChallenge.java +++ b/src/main/java/com/songoda/skyblock/challenge/FabledChallenge.java @@ -11,13 +11,13 @@ import org.bukkit.Bukkit; import org.bukkit.entity.Player; public class FabledChallenge { - private SkyBlock plugin; - private ChallengeManager challengeManager; - private PlayerManager playerManager; + private final SkyBlock plugin; + private final ChallengeManager challengeManager; + private final PlayerManager playerManager; // I use my own inventory api bc it's hard to implement inventories with the - private InventoryManager inventoryManager; - private DefaultInventory defaultInventory; - private ChallengeInventory challengeInventory; + private final InventoryManager inventoryManager; + private final DefaultInventory defaultInventory; + private final ChallengeInventory challengeInventory; public FabledChallenge(SkyBlock plugin) { this.plugin = plugin; diff --git a/src/main/java/com/songoda/skyblock/challenge/challenge/ChallengeCategory.java b/src/main/java/com/songoda/skyblock/challenge/challenge/ChallengeCategory.java index 695c748d..8507ac82 100644 --- a/src/main/java/com/songoda/skyblock/challenge/challenge/ChallengeCategory.java +++ b/src/main/java/com/songoda/skyblock/challenge/challenge/ChallengeCategory.java @@ -38,7 +38,15 @@ public class ChallengeCategory { String name = ChatColor.translateAlternateColorCodes('&', config.getString(key + ".name")); List require = toColor(config.getStringList(key + ".require")); List reward = toColor(config.getStringList(key + ".reward")); - int maxTimes = config.getInt(key + ".maxtimes"); + int maxTimes = 0; + try { + Integer.parseInt(config.getString(key + ".maxtimes", "unlimited")); + maxTimes = config.getInt(key + ".maxtimes"); + } catch(NumberFormatException ignored) { + if(config.getString(key + ".maxtimes", "unlimited").equalsIgnoreCase("unlimited")) { + maxTimes = Integer.MAX_VALUE; + } + } boolean showInChat = config.getBoolean(key + ".showInChat"); // Item boolean show = config.getBoolean(key + ".item.show"); diff --git a/src/main/java/com/songoda/skyblock/challenge/challenge/ItemChallenge.java b/src/main/java/com/songoda/skyblock/challenge/challenge/ItemChallenge.java index f2a8ea8a..42522b60 100644 --- a/src/main/java/com/songoda/skyblock/challenge/challenge/ItemChallenge.java +++ b/src/main/java/com/songoda/skyblock/challenge/challenge/ItemChallenge.java @@ -38,14 +38,24 @@ public class ItemChallenge { } public ItemStack createItem(UUID player, int amount) { + FileManager.Config langConfig = SkyBlock.getInstance().getFileManager() + .getConfig(new File(SkyBlock.getInstance().getDataFolder(), "language.yml")); + FileConfiguration langConfigLoad = langConfig.getFileConfiguration(); + ItemStack is = type.getItem(); is.setAmount(this.amount); // Air ItemMeta im = is.getItemMeta(); if (im != null) { + String maxAmount; + if(challenge.getMaxTimes() == Integer.MAX_VALUE) { + maxAmount = langConfigLoad.getString("Challenge.Inventory.Unlimited.Message"); + } else { + maxAmount = String.valueOf(challenge.getMaxTimes()); + } im.setDisplayName(ChatColor.translateAlternateColorCodes('&', itemTitle.replace("%challenge", challenge.getName()).replace("%amount", Integer.toString(amount)) - .replace("%max", Integer.toString(challenge.getMaxTimes())))); + .replace("%max", maxAmount))); im.setLore(lore); is.setItemMeta(im); } diff --git a/src/main/resources/challenges.yml b/src/main/resources/challenges.yml index 8bddd3f1..5e9f79c4 100644 --- a/src/main/resources/challenges.yml +++ b/src/main/resources/challenges.yml @@ -337,8 +337,8 @@ challenges: - 'CMD:eco give {player} 100' - 'ITEM:iron_ingot 10' - 'ITEM:name_tag 1' - # The maximum amount of time this challenge is repeatable - maxtimes: 5 + # The maximum amount of time this challenge is repeatable. Unlimited for endless challenge + maxtimes: Unlimited # If true, broadcast a message when this challenge is completed showInChat: true item: diff --git a/src/main/resources/language.yml b/src/main/resources/language.yml index 7e0ae24f..e886b5a0 100644 --- a/src/main/resources/language.yml +++ b/src/main/resources/language.yml @@ -3874,6 +3874,8 @@ Hologram: Message: '%blocks: %amount' Challenge: Inventory: + Unlimited: + Message: 'Unlimited' Item: Title: '%challenge &e%amount &6/ &e%max' Broadcast: '&bSkyBlock &8| &6%player &7has completed challenge %challenge (%amount