aboutsummaryrefslogtreecommitdiffstats
path: root/bukkit/src/main/java/com/leonardobishop
diff options
context:
space:
mode:
authorLMBishop <13875753+LMBishop@users.noreply.github.com>2021-07-26 15:50:18 +0100
committerLMBishop <13875753+LMBishop@users.noreply.github.com>2021-07-26 15:50:18 +0100
commitd8c60882d408875e702a3ca12461ee5220f3a30a (patch)
tree2dc1ebc389bb6fc5cd1ad57b21b0328071b677b1 /bukkit/src/main/java/com/leonardobishop
parentb5bfc8ff3a009497ffef87be334995e2e4019e7a (diff)
Add papi support to quest strings (closes #216)
Diffstat (limited to 'bukkit/src/main/java/com/leonardobishop')
-rw-r--r--bukkit/src/main/java/com/leonardobishop/quests/bukkit/BukkitQuestsPlugin.java18
-rw-r--r--bukkit/src/main/java/com/leonardobishop/quests/bukkit/hook/coreprotect/CoreProtectNoHook.java10
-rw-r--r--bukkit/src/main/java/com/leonardobishop/quests/bukkit/menu/itemstack/QItemStack.java8
-rw-r--r--bukkit/src/main/java/com/leonardobishop/quests/bukkit/questcontroller/NormalQuestController.java13
-rw-r--r--bukkit/src/main/java/com/leonardobishop/quests/bukkit/tasktype/type/MiningCertainTaskType.java4
-rw-r--r--bukkit/src/main/java/com/leonardobishop/quests/bukkit/util/MenuUtils.java8
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);