From a41859459fa4209b5549a7f23abb40bc1d9b0ce1 Mon Sep 17 00:00:00 2001 From: BONNe Date: Fri, 26 Apr 2019 21:20:36 +0300 Subject: [PATCH] Implement ability to change text via Chat instead of AnvilGUI (#97). It was necessary as Anvil has limited char input, while chat is almost unlimited. --- .../panel/admin/EditChallengeGUI.java | 37 ++++++++++-------- .../challenges/panel/admin/EditLevelGUI.java | 38 +++++++++++-------- .../challenges/panel/util/StringListGUI.java | 6 +++ 3 files changed, 49 insertions(+), 32 deletions(-) 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 788886d..f258d4b 100644 --- a/src/main/java/world/bentobox/challenges/panel/admin/EditChallengeGUI.java +++ b/src/main/java/world/bentobox/challenges/panel/admin/EditChallengeGUI.java @@ -7,6 +7,7 @@ import org.bukkit.enchantments.Enchantment; import org.bukkit.entity.EntityType; import org.bukkit.inventory.ItemStack; import java.util.*; +import java.util.stream.Collectors; import net.wesjd.anvilgui.AnvilGUI; import world.bentobox.bentobox.api.panels.PanelItem; @@ -116,6 +117,10 @@ public class EditChallengeGUI extends CommonGUI panelBuilder.item(44, this.returnButton); + // Every time when this GUI is build, save challenge + // This will ensure that all main things will be always stored + this.addon.getChallengesManager().saveChallenge(this.challenge); + panelBuilder.build(); } @@ -917,14 +922,14 @@ public class EditChallengeGUI extends CommonGUI icon = new ItemStack(Material.WRITTEN_BOOK); clickHandler = (panel, user, clickType, slot) -> { - new AnvilGUI(this.addon.getPlugin(), - this.user.getPlayer(), - this.challenge.getRewardText(), - (player, reply) -> { - this.challenge.setRewardText(reply); - this.build(); - return reply; - }); + new StringListGUI(this.user, this.challenge.getRewardText(), lineLength, (status, value) -> { + if (status) + { + this.challenge.setRewardText(value.stream().map(s -> s + "|").collect(Collectors.joining())); + } + + this.build(); + }); return true; }; @@ -1114,14 +1119,14 @@ public class EditChallengeGUI extends CommonGUI icon = new ItemStack(Material.WRITTEN_BOOK); clickHandler = (panel, user, clickType, slot) -> { - new AnvilGUI(this.addon.getPlugin(), - this.user.getPlayer(), - this.challenge.getRepeatRewardText(), - (player, reply) -> { - this.challenge.setRepeatRewardText(reply); - this.build(); - return reply; - }); + new StringListGUI(this.user, this.challenge.getRepeatRewardText(), lineLength, (status, value) -> { + if (status) + { + this.challenge.setRepeatRewardText(value.stream().map(s -> s + "|").collect(Collectors.joining())); + } + + this.build(); + }); return true; }; 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 834db93..91fbdd6 100644 --- a/src/main/java/world/bentobox/challenges/panel/admin/EditLevelGUI.java +++ b/src/main/java/world/bentobox/challenges/panel/admin/EditLevelGUI.java @@ -103,6 +103,10 @@ public class EditLevelGUI extends CommonGUI panelBuilder.item(44, this.returnButton); + // Save challenge level every time this gui is build. + // It will ensure that changes are stored in database. + this.addon.getChallengesManager().saveLevel(this.challengeLevel); + panelBuilder.build(); } @@ -422,14 +426,15 @@ public class EditLevelGUI extends CommonGUI "[value]", "|" + this.challengeLevel.getUnlockMessage())); icon = new ItemStack(Material.WRITABLE_BOOK); clickHandler = (panel, user, clickType, slot) -> { - new AnvilGUI(this.addon.getPlugin(), - this.user.getPlayer(), - this.challengeLevel.getUnlockMessage(), - (player, reply) -> { - this.challengeLevel.setUnlockMessage(reply); - this.build(); - return reply; - }); + new StringListGUI(this.user, this.challengeLevel.getUnlockMessage(), lineLength, (status, value) -> { + if (status) + { + this.challengeLevel.setUnlockMessage(value.stream().map(s -> s + "|").collect(Collectors.joining())); + } + + this.build(); + }); + return true; }; glow = false; @@ -492,14 +497,15 @@ public class EditLevelGUI extends CommonGUI "[value]", "|" + this.challengeLevel.getRewardText())); icon = new ItemStack(Material.WRITTEN_BOOK); clickHandler = (panel, user, clickType, slot) -> { - new AnvilGUI(this.addon.getPlugin(), - this.user.getPlayer(), - this.challengeLevel.getRewardText(), - (player, reply) -> { - this.challengeLevel.setRewardText(reply); - this.build(); - return reply; - }); + new StringListGUI(this.user, this.challengeLevel.getRewardText(), lineLength, (status, value) -> { + if (status) + { + this.challengeLevel.setRewardText(value.stream().map(s -> s + "|").collect(Collectors.joining())); + } + + this.build(); + }); + return true; }; glow = false; diff --git a/src/main/java/world/bentobox/challenges/panel/util/StringListGUI.java b/src/main/java/world/bentobox/challenges/panel/util/StringListGUI.java index 2e61681..59b7429 100644 --- a/src/main/java/world/bentobox/challenges/panel/util/StringListGUI.java +++ b/src/main/java/world/bentobox/challenges/panel/util/StringListGUI.java @@ -30,6 +30,12 @@ import world.bentobox.challenges.utils.GuiUtils; */ public class StringListGUI { + public StringListGUI(User user, String value, int lineLength, BiConsumer> consumer) + { + this(user, Collections.singleton(value), lineLength, consumer); + } + + public StringListGUI(User user, Collection value, int lineLength, BiConsumer> consumer) { this(user, new ArrayList<>(value), lineLength, consumer);