diff options
| author | Krakenied <Krakenied1@gmail.com> | 2023-09-16 11:19:24 +0200 |
|---|---|---|
| committer | Krakenied <Krakenied1@gmail.com> | 2023-09-24 15:56:16 +0200 |
| commit | 78f81187adf0802580b7696f8ed89fe82fd72c19 (patch) | |
| tree | 58caf295f7ed9357b9a218f8ffdb619e949fb595 /bukkit/src | |
| parent | 1cbede7b46bf36695b581031be49bd827601b2aa (diff) | |
Rewrite title and action bar handles
Add hex support to action bar (Paper only feature)
Diffstat (limited to 'bukkit/src')
12 files changed, 115 insertions, 57 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 b3932f82..b6388d15 100644 --- a/bukkit/src/main/java/com/leonardobishop/quests/bukkit/BukkitQuestsPlugin.java +++ b/bukkit/src/main/java/com/leonardobishop/quests/bukkit/BukkitQuestsPlugin.java @@ -12,9 +12,17 @@ import java.util.List; import java.util.Map; import java.util.function.BiFunction; +import com.leonardobishop.quests.bukkit.hook.actionbar.ActionBar_Nothing; +import com.leonardobishop.quests.bukkit.hook.actionbar.ActionBar_Paper; +import com.leonardobishop.quests.bukkit.hook.actionbar.ActionBar_Spigot; +import net.md_5.bungee.api.ChatMessageType; +import net.md_5.bungee.api.chat.BaseComponent; import org.bstats.bukkit.MetricsLite; import org.bukkit.Bukkit; import org.bukkit.block.Block; +import org.bukkit.boss.BarColor; +import org.bukkit.boss.BarFlag; +import org.bukkit.boss.BarStyle; import org.bukkit.configuration.ConfigurationSection; import org.bukkit.configuration.file.FileConfiguration; import org.bukkit.entity.Player; @@ -28,8 +36,6 @@ 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.QuestsActionBar; -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.QuestsBossBar; import com.leonardobishop.quests.bukkit.hook.bossbar.BossBar_Bukkit; import com.leonardobishop.quests.bukkit.hook.bossbar.BossBar_Nothing; @@ -45,10 +51,10 @@ import com.leonardobishop.quests.bukkit.hook.papi.AbstractPlaceholderAPIHook; import com.leonardobishop.quests.bukkit.hook.papi.PlaceholderAPIHook; import com.leonardobishop.quests.bukkit.hook.playerblocktracker.AbstractPlayerBlockTrackerHook; import com.leonardobishop.quests.bukkit.hook.playerblocktracker.PlayerBlockTrackerHook; -import com.leonardobishop.quests.bukkit.hook.title.Title; +import com.leonardobishop.quests.bukkit.hook.title.QuestsTitle; 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.title.Title_Nothing; import com.leonardobishop.quests.bukkit.hook.versionspecific.VersionSpecificHandler; import com.leonardobishop.quests.bukkit.hook.versionspecific.VersionSpecificHandler11; import com.leonardobishop.quests.bukkit.hook.versionspecific.VersionSpecificHandler16; @@ -162,7 +168,7 @@ public class BukkitQuestsPlugin extends JavaPlugin implements Quests { private AbstractEssentialsHook essentialsHook; private AbstractPlayerBlockTrackerHook playerBlockTrackerHook; private ItemGetter itemGetter; - private Title titleHandle; + private QuestsTitle titleHandle; private QuestsBossBar bossBarHandle; private QuestsActionBar actionBarHandle; private VersionSpecificHandler versionSpecificHandler; @@ -273,19 +279,18 @@ public class BukkitQuestsPlugin extends JavaPlugin implements Quests { questsLogger.warning("Failed to resolve server version - some features may not work!"); version = 0; } + questsLogger.info("Your server is running version 1." + version); + // (titles) - if (version < 8) { - titleHandle = new Title_Other(); - } else if (version <= 10) { - titleHandle = new Title_BukkitNoTimings(); - } else { - titleHandle = new Title_Bukkit(); - } + setTitleHandle(); + // (bossbar) - bossBarHandle = version <= 8 ? new BossBar_Nothing() : new BossBar_Bukkit(this); + setBossBarHandle(); + // (actionbar) - actionBarHandle = version <= 9 ? new ActionBar_Nothing() : new ActionBar_Bukkit(); + setActionBarHandle(); + // (itemstacks) if (version <= 12) { itemGetter = new ItemGetter_Late_1_8(); @@ -294,6 +299,7 @@ public class BukkitQuestsPlugin extends JavaPlugin implements Quests { } else { itemGetter = new ItemGetterLatest(); } + // (version specific handler) // TODO move above to version specific handlers if (version <= 8) { @@ -655,6 +661,54 @@ public class BukkitQuestsPlugin extends JavaPlugin implements Quests { } } + private void setTitleHandle() { + try { + Player.class.getMethod("sendTitle", String.class, String.class, int.class, int.class, int.class); + titleHandle = new Title_Bukkit(); + return; + } catch (NoSuchMethodException ignored) { + } + + try { + Player.class.getMethod("sendTitle", String.class, String.class); + titleHandle = new Title_BukkitNoTimings(); + return; + } catch (NoSuchMethodException ignored) { + } + + titleHandle = new Title_Nothing(); + } + + private void setBossBarHandle() { + try { + Bukkit.class.getMethod("createBossBar", String.class, BarColor.class, BarStyle.class, BarFlag[].class); + bossBarHandle = new BossBar_Bukkit(this); + return; + } catch (NoSuchMethodException ignored) { + } + + bossBarHandle = new BossBar_Nothing(); + } + + @SuppressWarnings("deprecation") + private void setActionBarHandle() { + try { + Player.class.getMethod("sendActionBar", String.class); + actionBarHandle = new ActionBar_Paper(); + return; + } catch (NoSuchMethodException ignored) { + } + + try { + Player.Spigot.class.getMethod("sendMessage", ChatMessageType.class, BaseComponent.class); + actionBarHandle = new ActionBar_Spigot(); + return; + } catch (NoSuchMethodException ignored) { + } + + actionBarHandle = new ActionBar_Nothing(); + } + public boolean isValidConfiguration() { return validConfiguration; } @@ -687,7 +741,7 @@ public class BukkitQuestsPlugin extends JavaPlugin implements Quests { return itemGetter; } - public Title getTitleHandle() { + public QuestsTitle getTitleHandle() { return titleHandle; } 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 index 9f0c6567..6590606e 100644 --- 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 @@ -3,10 +3,8 @@ package com.leonardobishop.quests.bukkit.hook.actionbar; import org.bukkit.entity.Player; public class ActionBar_Nothing implements QuestsActionBar { - @Override - public void sendActionBar(Player p, String line) { - // version as 1.9 and under + public void sendActionBar(Player player, String title) { + // no compatible action bar impl found } - } diff --git a/bukkit/src/main/java/com/leonardobishop/quests/bukkit/hook/actionbar/ActionBar_Paper.java b/bukkit/src/main/java/com/leonardobishop/quests/bukkit/hook/actionbar/ActionBar_Paper.java new file mode 100644 index 00000000..7377505d --- /dev/null +++ b/bukkit/src/main/java/com/leonardobishop/quests/bukkit/hook/actionbar/ActionBar_Paper.java @@ -0,0 +1,11 @@ +package com.leonardobishop.quests.bukkit.hook.actionbar; + +import org.bukkit.entity.Player; + +public class ActionBar_Paper implements QuestsActionBar { + @SuppressWarnings("deprecation") + @Override + public void sendActionBar(Player player, String title) { + player.sendActionBar(title); + } +} 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_Spigot.java index c387cda6..c57f62ed 100644 --- 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_Spigot.java @@ -5,11 +5,10 @@ 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 QuestsActionBar { - +public class ActionBar_Spigot implements QuestsActionBar { @SuppressWarnings("deprecation") @Override - public void sendActionBar(Player p, String line) { - p.spigot().sendMessage(ChatMessageType.ACTION_BAR, new TextComponent(line)); + public void sendActionBar(Player player, String title) { + player.spigot().sendMessage(ChatMessageType.ACTION_BAR, new TextComponent(title)); } } diff --git a/bukkit/src/main/java/com/leonardobishop/quests/bukkit/hook/actionbar/QuestsActionBar.java b/bukkit/src/main/java/com/leonardobishop/quests/bukkit/hook/actionbar/QuestsActionBar.java index a9fe17eb..98964d49 100644 --- a/bukkit/src/main/java/com/leonardobishop/quests/bukkit/hook/actionbar/QuestsActionBar.java +++ b/bukkit/src/main/java/com/leonardobishop/quests/bukkit/hook/actionbar/QuestsActionBar.java @@ -4,6 +4,6 @@ import org.bukkit.entity.Player; public interface QuestsActionBar { - void sendActionBar(Player p, String line); + void sendActionBar(Player player, String title); } diff --git a/bukkit/src/main/java/com/leonardobishop/quests/bukkit/hook/bossbar/BossBar_Nothing.java b/bukkit/src/main/java/com/leonardobishop/quests/bukkit/hook/bossbar/BossBar_Nothing.java index 66ab96ae..fb149e42 100644 --- a/bukkit/src/main/java/com/leonardobishop/quests/bukkit/hook/bossbar/BossBar_Nothing.java +++ b/bukkit/src/main/java/com/leonardobishop/quests/bukkit/hook/bossbar/BossBar_Nothing.java @@ -6,12 +6,11 @@ public class BossBar_Nothing implements QuestsBossBar { @Override public void sendBossBar(Player player, String questId, String title, int time) { - // old versions as 1.8 + // no compatible boss bar impl found } @Override public void sendBossBar(Player player, String questId, String title, int time, float progress) { - // old versions as 1.8 + // no compatible boss bar impl found } - } diff --git a/bukkit/src/main/java/com/leonardobishop/quests/bukkit/hook/title/QuestsTitle.java b/bukkit/src/main/java/com/leonardobishop/quests/bukkit/hook/title/QuestsTitle.java new file mode 100644 index 00000000..2dcd5960 --- /dev/null +++ b/bukkit/src/main/java/com/leonardobishop/quests/bukkit/hook/title/QuestsTitle.java @@ -0,0 +1,9 @@ +package com.leonardobishop.quests.bukkit.hook.title; + +import org.bukkit.entity.Player; + +public interface QuestsTitle { + + void sendTitle(Player player, String title, String subtitle); + +} diff --git a/bukkit/src/main/java/com/leonardobishop/quests/bukkit/hook/title/Title.java b/bukkit/src/main/java/com/leonardobishop/quests/bukkit/hook/title/Title.java deleted file mode 100644 index 49c4613b..00000000 --- a/bukkit/src/main/java/com/leonardobishop/quests/bukkit/hook/title/Title.java +++ /dev/null @@ -1,8 +0,0 @@ -package com.leonardobishop.quests.bukkit.hook.title; - -import org.bukkit.entity.Player; - -public interface Title { - - void sendTitle(Player player, String message, String submessage); -}
\ No newline at end of file diff --git a/bukkit/src/main/java/com/leonardobishop/quests/bukkit/hook/title/Title_Bukkit.java b/bukkit/src/main/java/com/leonardobishop/quests/bukkit/hook/title/Title_Bukkit.java index 6975700e..1bfd4d6d 100644 --- a/bukkit/src/main/java/com/leonardobishop/quests/bukkit/hook/title/Title_Bukkit.java +++ b/bukkit/src/main/java/com/leonardobishop/quests/bukkit/hook/title/Title_Bukkit.java @@ -2,11 +2,10 @@ package com.leonardobishop.quests.bukkit.hook.title; import org.bukkit.entity.Player; -public class Title_Bukkit implements Title { - - // new title function with timings +public class Title_Bukkit implements QuestsTitle { + @SuppressWarnings("deprecation") @Override - public void sendTitle(Player player, String message, String submessage) { - player.sendTitle(message, submessage, 10, 100, 10); + public void sendTitle(Player player, String title, String subtitle) { + player.sendTitle(title, subtitle, 10, 100, 10); } } diff --git a/bukkit/src/main/java/com/leonardobishop/quests/bukkit/hook/title/Title_BukkitNoTimings.java b/bukkit/src/main/java/com/leonardobishop/quests/bukkit/hook/title/Title_BukkitNoTimings.java index 64c91ea6..5c1a14b5 100644 --- a/bukkit/src/main/java/com/leonardobishop/quests/bukkit/hook/title/Title_BukkitNoTimings.java +++ b/bukkit/src/main/java/com/leonardobishop/quests/bukkit/hook/title/Title_BukkitNoTimings.java @@ -2,12 +2,10 @@ package com.leonardobishop.quests.bukkit.hook.title; import org.bukkit.entity.Player; -public class Title_BukkitNoTimings implements Title { - - // this one is for 1.8, 1.9 and 1.10 where there was no timings method +public class Title_BukkitNoTimings implements QuestsTitle { + @SuppressWarnings("deprecation") @Override - public void sendTitle(Player player, String message, String submessage) { - player.sendTitle(message, submessage); + public void sendTitle(Player player, String title, String subtitle) { + player.sendTitle(title, subtitle); } - } diff --git a/bukkit/src/main/java/com/leonardobishop/quests/bukkit/hook/title/Title_Nothing.java b/bukkit/src/main/java/com/leonardobishop/quests/bukkit/hook/title/Title_Nothing.java new file mode 100644 index 00000000..76bf7241 --- /dev/null +++ b/bukkit/src/main/java/com/leonardobishop/quests/bukkit/hook/title/Title_Nothing.java @@ -0,0 +1,10 @@ +package com.leonardobishop.quests.bukkit.hook.title; + +import org.bukkit.entity.Player; + +public class Title_Nothing implements QuestsTitle { + @Override + public void sendTitle(Player player, String title, String subtitle) { + // no compatible title impl found + } +} diff --git a/bukkit/src/main/java/com/leonardobishop/quests/bukkit/hook/title/Title_Other.java b/bukkit/src/main/java/com/leonardobishop/quests/bukkit/hook/title/Title_Other.java deleted file mode 100644 index cdc8d7bf..00000000 --- a/bukkit/src/main/java/com/leonardobishop/quests/bukkit/hook/title/Title_Other.java +++ /dev/null @@ -1,11 +0,0 @@ -package com.leonardobishop.quests.bukkit.hook.title; - -import org.bukkit.entity.Player; - -public class Title_Other implements Title { - - @Override - public void sendTitle(Player player, String message, String submessage) { - // title function does not exist - } -} |
