summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorElikill58 <arpetzouille@gmail.com>2023-08-08 17:51:06 +0200
committerLMBishop <13875753+LMBishop@users.noreply.github.com>2023-08-26 15:12:01 +0100
commitb30c24ac12318a2dd5d87da9622aa8f54f383145 (patch)
tree52933fece3b4c8a8631c2f08b28422f910e8d807
parentfa3e19fb1d2f85a8df976e6362d8161bd72dbfd9 (diff)
Add actionbar
-rw-r--r--bukkit/src/main/java/com/leonardobishop/quests/bukkit/BukkitQuestsPlugin.java118
-rw-r--r--bukkit/src/main/java/com/leonardobishop/quests/bukkit/hook/actionbar/ActionBar.java9
-rw-r--r--bukkit/src/main/java/com/leonardobishop/quests/bukkit/hook/actionbar/ActionBar_Bukkit.java15
-rw-r--r--bukkit/src/main/java/com/leonardobishop/quests/bukkit/hook/actionbar/ActionBar_Nothing.java12
-rw-r--r--bukkit/src/main/java/com/leonardobishop/quests/bukkit/util/TaskUtils.java5
-rw-r--r--bukkit/src/main/resources/resources/bukkit/config.yml4
6 files changed, 136 insertions, 27 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 b6cde9d8..98ed3f1c 100644
--- a/bukkit/src/main/java/com/leonardobishop/quests/bukkit/BukkitQuestsPlugin.java
+++ b/bukkit/src/main/java/com/leonardobishop/quests/bukkit/BukkitQuestsPlugin.java
@@ -1,8 +1,35 @@
package com.leonardobishop.quests.bukkit;
+import java.io.File;
+import java.io.FileOutputStream;
+import java.io.IOException;
+import java.io.InputStream;
+import java.io.OutputStream;
+import java.lang.reflect.Method;
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.List;
+import java.util.Map;
+import java.util.function.BiFunction;
+
+import org.bstats.bukkit.MetricsLite;
+import org.bukkit.Bukkit;
+import org.bukkit.block.Block;
+import org.bukkit.configuration.ConfigurationSection;
+import org.bukkit.configuration.file.FileConfiguration;
+import org.bukkit.entity.Player;
+import org.bukkit.inventory.ItemStack;
+import org.bukkit.plugin.Plugin;
+import org.bukkit.plugin.java.JavaPlugin;
+import org.jetbrains.annotations.NotNull;
+import org.jetbrains.annotations.Nullable;
+
import com.leonardobishop.quests.bukkit.command.QuestsCommandSwitcher;
import com.leonardobishop.quests.bukkit.config.BukkitQuestsConfig;
import com.leonardobishop.quests.bukkit.config.BukkitQuestsLoader;
+import com.leonardobishop.quests.bukkit.hook.actionbar.ActionBar;
+import com.leonardobishop.quests.bukkit.hook.actionbar.ActionBar_Bukkit;
+import com.leonardobishop.quests.bukkit.hook.actionbar.ActionBar_Nothing;
import com.leonardobishop.quests.bukkit.hook.bossbar.BossBar;
import com.leonardobishop.quests.bukkit.hook.bossbar.BossBar_Bukkit;
import com.leonardobishop.quests.bukkit.hook.bossbar.BossBar_Nothing;
@@ -22,7 +49,12 @@ import com.leonardobishop.quests.bukkit.hook.title.Title;
import com.leonardobishop.quests.bukkit.hook.title.Title_Bukkit;
import com.leonardobishop.quests.bukkit.hook.title.Title_BukkitNoTimings;
import com.leonardobishop.quests.bukkit.hook.title.Title_Other;
-import com.leonardobishop.quests.bukkit.hook.versionspecific.*;
+import com.leonardobishop.quests.bukkit.hook.versionspecific.VersionSpecificHandler;
+import com.leonardobishop.quests.bukkit.hook.versionspecific.VersionSpecificHandler11;
+import com.leonardobishop.quests.bukkit.hook.versionspecific.VersionSpecificHandler16;
+import com.leonardobishop.quests.bukkit.hook.versionspecific.VersionSpecificHandler17;
+import com.leonardobishop.quests.bukkit.hook.versionspecific.VersionSpecificHandler8;
+import com.leonardobishop.quests.bukkit.hook.versionspecific.VersionSpecificHandler9;
import com.leonardobishop.quests.bukkit.item.ParsedQuestItem;
import com.leonardobishop.quests.bukkit.item.QuestItem;
import com.leonardobishop.quests.bukkit.item.QuestItemRegistry;
@@ -33,15 +65,62 @@ import com.leonardobishop.quests.bukkit.menu.itemstack.QItemStackRegistry;
import com.leonardobishop.quests.bukkit.questcompleter.BukkitQuestCompleter;
import com.leonardobishop.quests.bukkit.questcontroller.NormalQuestController;
import com.leonardobishop.quests.bukkit.runnable.QuestsAutoSaveRunnable;
+import com.leonardobishop.quests.bukkit.scheduler.ServerScheduler;
import com.leonardobishop.quests.bukkit.scheduler.WrappedTask;
import com.leonardobishop.quests.bukkit.scheduler.bukkit.BukkitServerSchedulerAdapter;
-import com.leonardobishop.quests.bukkit.scheduler.ServerScheduler;
import com.leonardobishop.quests.bukkit.scheduler.folia.FoliaServerScheduler;
import com.leonardobishop.quests.bukkit.storage.MySqlStorageProvider;
import com.leonardobishop.quests.bukkit.storage.YamlStorageProvider;
import com.leonardobishop.quests.bukkit.tasktype.BukkitTaskTypeManager;
-import com.leonardobishop.quests.bukkit.tasktype.type.*;
-import com.leonardobishop.quests.bukkit.tasktype.type.dependent.*;
+import com.leonardobishop.quests.bukkit.tasktype.type.BlockshearingTaskType;
+import com.leonardobishop.quests.bukkit.tasktype.type.BreedingTaskType;
+import com.leonardobishop.quests.bukkit.tasktype.type.BrewingTaskType;
+import com.leonardobishop.quests.bukkit.tasktype.type.BucketEmptyTaskType;
+import com.leonardobishop.quests.bukkit.tasktype.type.BucketFillTaskType;
+import com.leonardobishop.quests.bukkit.tasktype.type.BuildingTaskType;
+import com.leonardobishop.quests.bukkit.tasktype.type.CommandTaskType;
+import com.leonardobishop.quests.bukkit.tasktype.type.ConsumeTaskType;
+import com.leonardobishop.quests.bukkit.tasktype.type.CraftingTaskType;
+import com.leonardobishop.quests.bukkit.tasktype.type.DealDamageTaskType;
+import com.leonardobishop.quests.bukkit.tasktype.type.DistancefromTaskType;
+import com.leonardobishop.quests.bukkit.tasktype.type.EnchantingTaskType;
+import com.leonardobishop.quests.bukkit.tasktype.type.ExpEarnTaskType;
+import com.leonardobishop.quests.bukkit.tasktype.type.FarmingTaskType;
+import com.leonardobishop.quests.bukkit.tasktype.type.FishingTaskType;
+import com.leonardobishop.quests.bukkit.tasktype.type.InteractTaskType;
+import com.leonardobishop.quests.bukkit.tasktype.type.InventoryTaskType;
+import com.leonardobishop.quests.bukkit.tasktype.type.MilkingTaskType;
+import com.leonardobishop.quests.bukkit.tasktype.type.MiningTaskType;
+import com.leonardobishop.quests.bukkit.tasktype.type.MobkillingTaskType;
+import com.leonardobishop.quests.bukkit.tasktype.type.PermissionTaskType;
+import com.leonardobishop.quests.bukkit.tasktype.type.PlayerkillingTaskType;
+import com.leonardobishop.quests.bukkit.tasktype.type.PlaytimeTaskType;
+import com.leonardobishop.quests.bukkit.tasktype.type.PositionTaskType;
+import com.leonardobishop.quests.bukkit.tasktype.type.ReplenishingTaskType;
+import com.leonardobishop.quests.bukkit.tasktype.type.ShearingTaskType;
+import com.leonardobishop.quests.bukkit.tasktype.type.SmeltingTaskType;
+import com.leonardobishop.quests.bukkit.tasktype.type.SmithingTaskType;
+import com.leonardobishop.quests.bukkit.tasktype.type.TamingTaskType;
+import com.leonardobishop.quests.bukkit.tasktype.type.WalkingTaskType;
+import com.leonardobishop.quests.bukkit.tasktype.type.dependent.ASkyBlockLevelTaskType;
+import com.leonardobishop.quests.bukkit.tasktype.type.dependent.BentoBoxLevelTaskType;
+import com.leonardobishop.quests.bukkit.tasktype.type.dependent.CitizensDeliverTaskType;
+import com.leonardobishop.quests.bukkit.tasktype.type.dependent.CitizensInteractTaskType;
+import com.leonardobishop.quests.bukkit.tasktype.type.dependent.EcoBossesKillingTaskType;
+import com.leonardobishop.quests.bukkit.tasktype.type.dependent.EssentialsBalanceTaskType;
+import com.leonardobishop.quests.bukkit.tasktype.type.dependent.EssentialsMoneyEarnTaskType;
+import com.leonardobishop.quests.bukkit.tasktype.type.dependent.FabledSkyblockLevelTaskType;
+import com.leonardobishop.quests.bukkit.tasktype.type.dependent.IridiumSkyblockValueTaskType;
+import com.leonardobishop.quests.bukkit.tasktype.type.dependent.MythicMobsKillingTaskType;
+import com.leonardobishop.quests.bukkit.tasktype.type.dependent.NuVotifierVoteTaskType;
+import com.leonardobishop.quests.bukkit.tasktype.type.dependent.PlaceholderAPIEvaluateTaskType;
+import com.leonardobishop.quests.bukkit.tasktype.type.dependent.PlayerPointsEarnTaskType;
+import com.leonardobishop.quests.bukkit.tasktype.type.dependent.ShopGUIPlusBuyTaskType;
+import com.leonardobishop.quests.bukkit.tasktype.type.dependent.ShopGUIPlusSellTaskType;
+import com.leonardobishop.quests.bukkit.tasktype.type.dependent.SuperiorSkyblockLevelType;
+import com.leonardobishop.quests.bukkit.tasktype.type.dependent.SuperiorSkyblockWorthType;
+import com.leonardobishop.quests.bukkit.tasktype.type.dependent.VotingPluginVoteType;
+import com.leonardobishop.quests.bukkit.tasktype.type.dependent.uSkyBlockLevelTaskType;
import com.leonardobishop.quests.bukkit.util.LogHistory;
import com.leonardobishop.quests.common.config.ConfigProblem;
import com.leonardobishop.quests.common.config.ConfigProblemDescriptions;
@@ -57,25 +136,6 @@ import com.leonardobishop.quests.common.storage.StorageProvider;
import com.leonardobishop.quests.common.tasktype.TaskType;
import com.leonardobishop.quests.common.tasktype.TaskTypeManager;
import com.leonardobishop.quests.common.updater.Updater;
-import org.bstats.bukkit.MetricsLite;
-import org.bukkit.Bukkit;
-import org.bukkit.block.Block;
-import org.bukkit.configuration.ConfigurationSection;
-import org.bukkit.configuration.file.FileConfiguration;
-import org.bukkit.entity.Player;
-import org.bukkit.inventory.ItemStack;
-import org.bukkit.plugin.Plugin;
-import org.bukkit.plugin.java.JavaPlugin;
-import org.jetbrains.annotations.NotNull;
-import org.jetbrains.annotations.Nullable;
-
-import java.io.*;
-import java.lang.reflect.Method;
-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 {
@@ -103,6 +163,7 @@ public class BukkitQuestsPlugin extends JavaPlugin implements Quests {
private ItemGetter itemGetter;
private Title titleHandle;
private BossBar bossBarHandle;
+ private ActionBar actionBarHandle;
private VersionSpecificHandler versionSpecificHandler;
private LogHistory logHistory;
@@ -221,10 +282,9 @@ public class BukkitQuestsPlugin extends JavaPlugin implements Quests {
titleHandle = new Title_Bukkit();
}
// (bossbar)
- if(version <= 8)
- bossBarHandle = new BossBar_Nothing();
- else
- bossBarHandle = new BossBar_Bukkit(this);
+ bossBarHandle = version <= 8 ? new BossBar_Nothing() : new BossBar_Bukkit(this);
+ // (actionbar)
+ actionBarHandle = version <= 9 ? new ActionBar_Nothing() : new ActionBar_Bukkit();
// (itemstacks)
if (version <= 12) {
itemGetter = new ItemGetter_Late_1_8();
@@ -632,6 +692,10 @@ public class BukkitQuestsPlugin extends JavaPlugin implements Quests {
public BossBar getBossBarHandle() {
return bossBarHandle;
}
+
+ public ActionBar getActionBarHandle() {
+ return actionBarHandle;
+ }
public VersionSpecificHandler getVersionSpecificHandler() {
return versionSpecificHandler;
diff --git a/bukkit/src/main/java/com/leonardobishop/quests/bukkit/hook/actionbar/ActionBar.java b/bukkit/src/main/java/com/leonardobishop/quests/bukkit/hook/actionbar/ActionBar.java
new file mode 100644
index 00000000..5a7ea51c
--- /dev/null
+++ b/bukkit/src/main/java/com/leonardobishop/quests/bukkit/hook/actionbar/ActionBar.java
@@ -0,0 +1,9 @@
+package com.leonardobishop.quests.bukkit.hook.actionbar;
+
+import org.bukkit.entity.Player;
+
+public interface ActionBar {
+
+ void sendActionBar(Player p, String line);
+
+}
diff --git a/bukkit/src/main/java/com/leonardobishop/quests/bukkit/hook/actionbar/ActionBar_Bukkit.java b/bukkit/src/main/java/com/leonardobishop/quests/bukkit/hook/actionbar/ActionBar_Bukkit.java
new file mode 100644
index 00000000..36d1b24f
--- /dev/null
+++ b/bukkit/src/main/java/com/leonardobishop/quests/bukkit/hook/actionbar/ActionBar_Bukkit.java
@@ -0,0 +1,15 @@
+package com.leonardobishop.quests.bukkit.hook.actionbar;
+
+import org.bukkit.entity.Player;
+
+import net.md_5.bungee.api.ChatMessageType;
+import net.md_5.bungee.api.chat.TextComponent;
+
+public class ActionBar_Bukkit implements ActionBar {
+
+ @SuppressWarnings("deprecation")
+ @Override
+ public void sendActionBar(Player p, String line) {
+ p.spigot().sendMessage(ChatMessageType.ACTION_BAR, new TextComponent(line));
+ }
+}
diff --git a/bukkit/src/main/java/com/leonardobishop/quests/bukkit/hook/actionbar/ActionBar_Nothing.java b/bukkit/src/main/java/com/leonardobishop/quests/bukkit/hook/actionbar/ActionBar_Nothing.java
new file mode 100644
index 00000000..8085153c
--- /dev/null
+++ b/bukkit/src/main/java/com/leonardobishop/quests/bukkit/hook/actionbar/ActionBar_Nothing.java
@@ -0,0 +1,12 @@
+package com.leonardobishop.quests.bukkit.hook.actionbar;
+
+import org.bukkit.entity.Player;
+
+public class ActionBar_Nothing implements ActionBar {
+
+ @Override
+ public void sendActionBar(Player p, String line) {
+ // version as 1.9 and under
+ }
+
+}
diff --git a/bukkit/src/main/java/com/leonardobishop/quests/bukkit/util/TaskUtils.java b/bukkit/src/main/java/com/leonardobishop/quests/bukkit/util/TaskUtils.java
index 068fca3e..c1b4f7cc 100644
--- a/bukkit/src/main/java/com/leonardobishop/quests/bukkit/util/TaskUtils.java
+++ b/bukkit/src/main/java/com/leonardobishop/quests/bukkit/util/TaskUtils.java
@@ -163,6 +163,8 @@ public class TaskUtils {
Object amount = q.getTaskById(progress.getTaskId()).getConfigValue("amount");
if(amount != null && amount instanceof Integer)
progressAmount = (progressAmount * 100) / (int) amount; // convert into percent
+ else
+ progressAmount = 0; // can't find max value
}
if((plugin.getConfig().getBoolean("options.bossbar.complete", true) && progress.isCompleted()) || plugin.getConfig().getBoolean("options.bossbar.progress", true)) {
if(progressAmount > 0)
@@ -170,6 +172,9 @@ public class TaskUtils {
else
plugin.getBossBarHandle().sendBossBar(player, q.getId(), title, plugin.getConfig().getInt("options.bossbar.time", 10));
}
+ if((plugin.getConfig().getBoolean("options.actionbar.complete", true) && progress.isCompleted()) || plugin.getConfig().getBoolean("options.actionbar.progress", true)) {
+ plugin.getActionBarHandle().sendActionBar(player, title);
+ }
}
public static List<PendingTask> getApplicableTasks(Player player, QPlayer qPlayer, TaskType type) {
diff --git a/bukkit/src/main/resources/resources/bukkit/config.yml b/bukkit/src/main/resources/resources/bukkit/config.yml
index 715de4a4..51d112aa 100644
--- a/bukkit/src/main/resources/resources/bukkit/config.yml
+++ b/bukkit/src/main/resources/resources/bukkit/config.yml
@@ -42,6 +42,10 @@ options:
complete: true
# Time in seconds of bossbar showed
time: 10
+ # Enable/disable ActionBar
+ actionbar:
+ progress: true
+ complete: true
# Allow players to have multiple active quests.
# You can set the default number of quests using the 'default' rank below.
# To grant different quest limits to different people, you can define a 'quest-rank'