diff options
| author | LMBishop <13875753+LMBishop@users.noreply.github.com> | 2021-07-26 15:50:18 +0100 |
|---|---|---|
| committer | LMBishop <13875753+LMBishop@users.noreply.github.com> | 2021-07-26 15:50:18 +0100 |
| commit | d8c60882d408875e702a3ca12461ee5220f3a30a (patch) | |
| tree | 2dc1ebc389bb6fc5cd1ad57b21b0328071b677b1 /bukkit/src/main/java/com/leonardobishop | |
| parent | b5bfc8ff3a009497ffef87be334995e2e4019e7a (diff) | |
Add papi support to quest strings (closes #216)
Diffstat (limited to 'bukkit/src/main/java/com/leonardobishop')
6 files changed, 36 insertions, 25 deletions
diff --git a/bukkit/src/main/java/com/leonardobishop/quests/bukkit/BukkitQuestsPlugin.java b/bukkit/src/main/java/com/leonardobishop/quests/bukkit/BukkitQuestsPlugin.java index 5081c296..aedb94ee 100644 --- a/bukkit/src/main/java/com/leonardobishop/quests/bukkit/BukkitQuestsPlugin.java +++ b/bukkit/src/main/java/com/leonardobishop/quests/bukkit/BukkitQuestsPlugin.java @@ -6,7 +6,6 @@ import com.leonardobishop.quests.bukkit.config.BukkitQuestsConfig; import com.leonardobishop.quests.bukkit.config.BukkitQuestsLoader; import com.leonardobishop.quests.bukkit.hook.coreprotect.AbstractCoreProtectHook; import com.leonardobishop.quests.bukkit.hook.coreprotect.CoreProtectHook; -import com.leonardobishop.quests.bukkit.hook.coreprotect.CoreProtectNoHook; import com.leonardobishop.quests.bukkit.hook.itemgetter.ItemGetter; import com.leonardobishop.quests.bukkit.hook.itemgetter.ItemGetterLatest; import com.leonardobishop.quests.bukkit.hook.itemgetter.ItemGetter_1_13; @@ -91,6 +90,7 @@ import org.bukkit.inventory.ItemStack; import org.bukkit.plugin.java.JavaPlugin; import org.bukkit.scheduler.BukkitTask; import org.jetbrains.annotations.NotNull; +import org.jetbrains.annotations.Nullable; import java.io.File; import java.io.FileOutputStream; @@ -101,6 +101,7 @@ import java.util.ArrayList; import java.util.Collections; import java.util.List; import java.util.Map; +import java.util.function.BiFunction; public class BukkitQuestsPlugin extends JavaPlugin implements Quests { @@ -127,6 +128,7 @@ public class BukkitQuestsPlugin extends JavaPlugin implements Quests { private BukkitTask questAutoSaveTask; private BukkitTask questQueuePollTask; + private BiFunction<Player, String, String> placeholderAPIProcessor; @Override public @NotNull QuestsLogger getQuestsLogger() { @@ -258,11 +260,13 @@ public class BukkitQuestsPlugin extends JavaPlugin implements Quests { if (Bukkit.getPluginManager().isPluginEnabled("PlaceholderAPI")) { this.placeholderAPIHook = new PlaceholderAPIHook(); this.placeholderAPIHook.registerExpansion(this); + this.placeholderAPIProcessor = (player, s) -> placeholderAPIHook.replacePlaceholders(player, s); + } else { + this.placeholderAPIProcessor = (player, s) -> s; } + if (Bukkit.getPluginManager().isPluginEnabled("CoreProtect")) { this.coreProtectHook = new CoreProtectHook(); - } else { - this.coreProtectHook = new CoreProtectNoHook(); } // Start quests update checker @@ -522,11 +526,15 @@ public class BukkitQuestsPlugin extends JavaPlugin implements Quests { return configProblems; } - public AbstractPlaceholderAPIHook getPlaceholderAPIHook() { + public @NotNull BiFunction<Player, String, String> getPlaceholderAPIProcessor() { + return placeholderAPIProcessor; + } + + public @Nullable AbstractPlaceholderAPIHook getPlaceholderAPIHook() { return placeholderAPIHook; } - public AbstractCoreProtectHook getCoreProtectHook() { + public @Nullable AbstractCoreProtectHook getCoreProtectHook() { return coreProtectHook; } diff --git a/bukkit/src/main/java/com/leonardobishop/quests/bukkit/hook/coreprotect/CoreProtectNoHook.java b/bukkit/src/main/java/com/leonardobishop/quests/bukkit/hook/coreprotect/CoreProtectNoHook.java deleted file mode 100644 index 4fc0eae9..00000000 --- a/bukkit/src/main/java/com/leonardobishop/quests/bukkit/hook/coreprotect/CoreProtectNoHook.java +++ /dev/null @@ -1,10 +0,0 @@ -package com.leonardobishop.quests.bukkit.hook.coreprotect; - -import org.bukkit.block.Block; - -public class CoreProtectNoHook implements AbstractCoreProtectHook { - @Override - public boolean checkBlock(Block block, int time) { - return false; - } -} diff --git a/bukkit/src/main/java/com/leonardobishop/quests/bukkit/menu/itemstack/QItemStack.java b/bukkit/src/main/java/com/leonardobishop/quests/bukkit/menu/itemstack/QItemStack.java index 4d155e2e..841b24a3 100644 --- a/bukkit/src/main/java/com/leonardobishop/quests/bukkit/menu/itemstack/QItemStack.java +++ b/bukkit/src/main/java/com/leonardobishop/quests/bukkit/menu/itemstack/QItemStack.java @@ -108,14 +108,14 @@ public class QItemStack { } else { tempLore.addAll(globalLoreAppendNotStarted); } - if (plugin.getPlaceholderAPIHook() != null && plugin.getQuestsConfig().getBoolean("options.gui-use-placeholderapi")) { - ism.setDisplayName(plugin.getPlaceholderAPIHook().replacePlaceholders(player, ism.getDisplayName())); + if (plugin.getQuestsConfig().getBoolean("options.gui-use-placeholderapi")) { + ism.setDisplayName(plugin.getPlaceholderAPIProcessor().apply(player, ism.getDisplayName())); } if (questProgress != null) { for (String s : tempLore) { s = processPlaceholders(s, questProgress); - if (plugin.getPlaceholderAPIHook() != null && plugin.getQuestsConfig().getBoolean("options.gui-use-placeholderapi")) { - s = plugin.getPlaceholderAPIHook().replacePlaceholders(player, s); + if (plugin.getQuestsConfig().getBoolean("options.gui-use-placeholderapi")) { + s = plugin.getPlaceholderAPIProcessor().apply(player, s); } formattedLore.add(s); } diff --git a/bukkit/src/main/java/com/leonardobishop/quests/bukkit/questcontroller/NormalQuestController.java b/bukkit/src/main/java/com/leonardobishop/quests/bukkit/questcontroller/NormalQuestController.java index 08ee62d2..950d6c58 100644 --- a/bukkit/src/main/java/com/leonardobishop/quests/bukkit/questcontroller/NormalQuestController.java +++ b/bukkit/src/main/java/com/leonardobishop/quests/bukkit/questcontroller/NormalQuestController.java @@ -119,6 +119,9 @@ public class NormalQuestController implements QuestController { Messages.TITLE_QUEST_START_SUBTITLE.getMessage().replace("{quest}", displayName)); } for (String s : quest.getStartString()) { + if (plugin.getConfig().getBoolean("quests-use-placeholderapi")) { + s = plugin.getPlaceholderAPIProcessor().apply(player, s); + } player.sendMessage(Chat.color(s)); } SoundUtils.playSoundForPlayer(player, plugin.getQuestsConfig().getString("options.sounds.quest-start")); @@ -204,7 +207,12 @@ public class NormalQuestController implements QuestController { // PlayerFinishQuestEvent -- end Bukkit.getServer().getScheduler().runTask(plugin, () -> { for (String s : quest.getRewards()) { - Bukkit.getServer().dispatchCommand(Bukkit.getConsoleSender(), s.replace("{player}", player.getName())); //TODO PlaceholderAPI support + s = s.replace("{player}", player.getName()); + if (plugin.getConfig().getBoolean("quests-use-placeholderapi")) { + Bukkit.getServer().dispatchCommand(Bukkit.getConsoleSender(), plugin.getPlaceholderAPIProcessor().apply(player, s)); + } else { + Bukkit.getServer().dispatchCommand(Bukkit.getConsoleSender(), s); + } } }); if (questFinishEvent.getQuestFinishMessage() != null) @@ -214,6 +222,9 @@ public class NormalQuestController implements QuestController { Messages.TITLE_QUEST_COMPLETE_SUBTITLE.getMessage().replace("{quest}", displayName)); } for (String s : quest.getRewardString()) { + if (plugin.getConfig().getBoolean("quests-use-placeholderapi")) { + s = plugin.getPlaceholderAPIProcessor().apply(player, s); + } player.sendMessage(Chat.color(s)); } SoundUtils.playSoundForPlayer(player, plugin.getQuestsConfig().getString("options.sounds.quest-complete")); diff --git a/bukkit/src/main/java/com/leonardobishop/quests/bukkit/tasktype/type/MiningCertainTaskType.java b/bukkit/src/main/java/com/leonardobishop/quests/bukkit/tasktype/type/MiningCertainTaskType.java index c0e5c8a2..fc274c34 100644 --- a/bukkit/src/main/java/com/leonardobishop/quests/bukkit/tasktype/type/MiningCertainTaskType.java +++ b/bukkit/src/main/java/com/leonardobishop/quests/bukkit/tasktype/type/MiningCertainTaskType.java @@ -97,7 +97,9 @@ public final class MiningCertainTaskType extends BukkitTaskType { boolean coreProtectEnabled = (boolean) task.getConfigValue("check-coreprotect", false); int coreProtectTime = (int) task.getConfigValue("check-coreprotect-time", 3600); - if (coreProtectEnabled && plugin.getCoreProtectHook().checkBlock(event.getBlock(), coreProtectTime)) { + if (coreProtectEnabled + && plugin.getCoreProtectHook() != null + && plugin.getCoreProtectHook().checkBlock(event.getBlock(), coreProtectTime)) { continue; } increment(task, taskProgress, 1); diff --git a/bukkit/src/main/java/com/leonardobishop/quests/bukkit/util/MenuUtils.java b/bukkit/src/main/java/com/leonardobishop/quests/bukkit/util/MenuUtils.java index 8ddf8493..e58fa6e2 100644 --- a/bukkit/src/main/java/com/leonardobishop/quests/bukkit/util/MenuUtils.java +++ b/bukkit/src/main/java/com/leonardobishop/quests/bukkit/util/MenuUtils.java @@ -33,8 +33,8 @@ public class MenuUtils { for (Map.Entry<String, String> entry : placeholders.entrySet()) { s = s.replace(entry.getKey(), entry.getValue()); } - if (plugin.getPlaceholderAPIHook() != null && plugin.getQuestsConfig().getBoolean("options.gui-use-placeholderapi")) { - s = plugin.getPlaceholderAPIHook().replacePlaceholders(player, s); + if (plugin.getQuestsConfig().getBoolean("options.gui-use-placeholderapi")) { + s = plugin.getPlaceholderAPIProcessor().apply(player, s); } newLore.add(s); } @@ -42,8 +42,8 @@ public class MenuUtils { for (Map.Entry<String, String> entry : placeholders.entrySet()) { ism.setDisplayName(ism.getDisplayName().replace(entry.getKey(), entry.getValue())); } - if (plugin.getPlaceholderAPIHook() != null && plugin.getQuestsConfig().getBoolean("options.gui-use-placeholderapi")) { - ism.setDisplayName(plugin.getPlaceholderAPIHook().replacePlaceholders(player, ism.getDisplayName())); + if (plugin.getQuestsConfig().getBoolean("options.gui-use-placeholderapi")) { + ism.setDisplayName(plugin.getPlaceholderAPIProcessor().apply(player, ism.getDisplayName())); } ism.setLore(newLore); newItemStack.setItemMeta(ism); |
