diff options
Diffstat (limited to 'bukkit/src')
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' |
