From 324defc4a8fd0ddefed40caf4d827dd715b449b5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Elias=20M=C3=BCller?= Date: Fri, 3 Oct 2025 15:30:36 +0200 Subject: [PATCH] removed InfoBarCommand and integrated InfoBars with Settings preference handling --- .../appliances/metaGameplay/infoBars/Bar.java | 1 + .../metaGameplay/infoBars/InfoBarCommand.java | 32 ------------ .../metaGameplay/infoBars/InfoBarSetting.java | 51 +++++++++++++++++++ .../metaGameplay/infoBars/InfoBars.java | 40 ++++++++------- .../infoBars/ShowPreviousBarsListener.java | 2 +- .../metaGameplay/infoBars/bars/MsptBar.java | 4 +- .../infoBars/bars/PlayerCounterBar.java | 4 +- .../metaGameplay/infoBars/bars/TpsBar.java | 4 +- .../metaGameplay/settings/Settings.java | 3 +- .../settings/datatypes/Setting.java | 2 +- .../gameplay/locatorBar/LocatorBar.java | 2 +- .../locatorBar/LocatorBarSettings.java | 2 +- 12 files changed, 89 insertions(+), 58 deletions(-) delete mode 100644 common/src/main/java/eu/mhsl/craftattack/spawn/common/appliances/metaGameplay/infoBars/InfoBarCommand.java create mode 100644 common/src/main/java/eu/mhsl/craftattack/spawn/common/appliances/metaGameplay/infoBars/InfoBarSetting.java diff --git a/common/src/main/java/eu/mhsl/craftattack/spawn/common/appliances/metaGameplay/infoBars/Bar.java b/common/src/main/java/eu/mhsl/craftattack/spawn/common/appliances/metaGameplay/infoBars/Bar.java index d98ee51..75ebd93 100644 --- a/common/src/main/java/eu/mhsl/craftattack/spawn/common/appliances/metaGameplay/infoBars/Bar.java +++ b/common/src/main/java/eu/mhsl/craftattack/spawn/common/appliances/metaGameplay/infoBars/Bar.java @@ -13,6 +13,7 @@ import java.time.temporal.ChronoUnit; public abstract class Bar { private BossBar bossBar; private final BukkitTask updateTask; + public static String name; public Bar() { long refreshRateInTicks = this.refresh().get(ChronoUnit.SECONDS) * Ticks.TICKS_PER_SECOND; diff --git a/common/src/main/java/eu/mhsl/craftattack/spawn/common/appliances/metaGameplay/infoBars/InfoBarCommand.java b/common/src/main/java/eu/mhsl/craftattack/spawn/common/appliances/metaGameplay/infoBars/InfoBarCommand.java deleted file mode 100644 index 4c7ca9c..0000000 --- a/common/src/main/java/eu/mhsl/craftattack/spawn/common/appliances/metaGameplay/infoBars/InfoBarCommand.java +++ /dev/null @@ -1,32 +0,0 @@ -package eu.mhsl.craftattack.spawn.common.appliances.metaGameplay.infoBars; - -import eu.mhsl.craftattack.spawn.core.appliance.ApplianceCommand; -import org.bukkit.command.Command; -import org.bukkit.command.CommandSender; -import org.jetbrains.annotations.NotNull; -import org.jetbrains.annotations.Nullable; - -import java.util.List; - -class InfoBarCommand extends ApplianceCommand.PlayerChecked { - public InfoBarCommand() { - super("infobar"); - } - - @Override - protected void execute(@NotNull CommandSender sender, @NotNull Command command, @NotNull String label, @NotNull String[] args) throws Exception { - if(args.length == 0) throw new Error(" [bar name]"); - switch(args[0]) { - case "hideAll" -> this.getAppliance().hideAll(this.getPlayer()); - case "show" -> this.getAppliance().show(this.getPlayer(), args[1]); - case "hide" -> this.getAppliance().hide(this.getPlayer(), args[1]); - default -> throw new Error("Erlaubte Optionen sind 'show', 'hide', 'hideAll'!"); - } - } - - @Override - public @Nullable List onTabComplete(@NotNull CommandSender sender, @NotNull Command command, @NotNull String label, @NotNull String[] args) { - if(args.length == 1) return List.of("show", "hide", "hideAll"); - return this.getAppliance().getInfoBars().stream().map(Bar::name).toList(); - } -} diff --git a/common/src/main/java/eu/mhsl/craftattack/spawn/common/appliances/metaGameplay/infoBars/InfoBarSetting.java b/common/src/main/java/eu/mhsl/craftattack/spawn/common/appliances/metaGameplay/infoBars/InfoBarSetting.java new file mode 100644 index 0000000..e8f0753 --- /dev/null +++ b/common/src/main/java/eu/mhsl/craftattack/spawn/common/appliances/metaGameplay/infoBars/InfoBarSetting.java @@ -0,0 +1,51 @@ +package eu.mhsl.craftattack.spawn.common.appliances.metaGameplay.infoBars; + +import eu.mhsl.craftattack.spawn.common.appliances.metaGameplay.settings.CategorizedSetting; +import eu.mhsl.craftattack.spawn.common.appliances.metaGameplay.settings.SettingCategory; +import eu.mhsl.craftattack.spawn.common.appliances.metaGameplay.settings.Settings; +import eu.mhsl.craftattack.spawn.common.appliances.metaGameplay.settings.datatypes.MultiBoolSetting; +import org.bukkit.Material; + +public class InfoBarSetting extends MultiBoolSetting implements CategorizedSetting { + public InfoBarSetting() { + super(Settings.Key.InfoBars); + } + + @Override + public SettingCategory category() { + return SettingCategory.Misc; + } + + public record InfoBarConfiguration( + @DisplayName("mspt") boolean mspt, + @DisplayName("Player counter") boolean playerCounter, + @DisplayName("TPS") boolean tps + ) {} + + @Override + protected String title() { + return "Informationsleisten"; + } + + @Override + protected String description() { + return "Wähle anzuzeigende Informationsleisten aus"; + } + + @Override + protected Material icon() { + return Material.COMMAND_BLOCK; + } + + @Override + protected InfoBarConfiguration defaultValue() { + return new InfoBarConfiguration(false, false, false); + } + + @Override + public Class dataType() { + return InfoBarConfiguration.class; + } + + +} diff --git a/common/src/main/java/eu/mhsl/craftattack/spawn/common/appliances/metaGameplay/infoBars/InfoBars.java b/common/src/main/java/eu/mhsl/craftattack/spawn/common/appliances/metaGameplay/infoBars/InfoBars.java index b4d4fab..964d6ae 100644 --- a/common/src/main/java/eu/mhsl/craftattack/spawn/common/appliances/metaGameplay/infoBars/InfoBars.java +++ b/common/src/main/java/eu/mhsl/craftattack/spawn/common/appliances/metaGameplay/infoBars/InfoBars.java @@ -1,5 +1,6 @@ package eu.mhsl.craftattack.spawn.common.appliances.metaGameplay.infoBars; +import eu.mhsl.craftattack.spawn.common.appliances.metaGameplay.settings.Settings; import eu.mhsl.craftattack.spawn.core.Main; import eu.mhsl.craftattack.spawn.core.appliance.Appliance; import eu.mhsl.craftattack.spawn.core.appliance.ApplianceCommand; @@ -24,38 +25,38 @@ public class InfoBars extends Appliance { new PlayerCounterBar() ); - public void showAll(Player player) { - this.getStoredBars(player).forEach(bar -> this.show(player, bar)); + public void showAllEnabled(Player player) { + this.getEnabledBars(player).forEach(bar -> this.show(player, bar)); } - public void hideAll(Player player) { - this.getStoredBars(player).forEach(bar -> this.hide(player, bar)); - this.setStoredBars(player, List.of()); + public void hideAllEnabled(Player player) { + this.getEnabledBars(player).forEach(bar -> this.hide(player, bar)); + this.setEnabledBars(player, List.of()); } public void show(Player player, String bar) { this.validateBarName(bar); - List existingBars = new ArrayList<>(this.getStoredBars(player)); + List existingBars = new ArrayList<>(this.getEnabledBars(player)); existingBars.add(bar); player.showBossBar(this.getBarByName(bar).getBossBar()); - this.setStoredBars(player, existingBars); + this.setEnabledBars(player, existingBars); } public void hide(Player player, String bar) { this.validateBarName(bar); - List existingBars = new ArrayList<>(this.getStoredBars(player)); + List existingBars = new ArrayList<>(this.getEnabledBars(player)); existingBars.remove(bar); player.hideBossBar(this.getBarByName(bar).getBossBar()); - this.setStoredBars(player, existingBars); + this.setEnabledBars(player, existingBars); } - private List getStoredBars(Player player) { + private List getEnabledBars(Player player) { PersistentDataContainer container = player.getPersistentDataContainer(); if(!container.has(this.infoBarKey)) return List.of(); return container.get(this.infoBarKey, PersistentDataType.LIST.strings()); } - private void setStoredBars(Player player, List bars) { + private void setEnabledBars(Player player, List bars) { player.getPersistentDataContainer().set(this.infoBarKey, PersistentDataType.LIST.strings(), bars); } @@ -71,8 +72,16 @@ public class InfoBars extends Appliance { throw new ApplianceCommand.Error(String.format("Ungültiger infobar name '%s'", name)); } - public List getInfoBars() { - return this.infoBars; + @Override + public void onEnable() { + Settings.instance().declareSetting(InfoBarSetting.class); + Settings.instance().addChangeListener(InfoBarSetting.class, player -> { + this.hideAllEnabled(player); + InfoBarSetting.InfoBarConfiguration config = Settings.instance().getSetting(player, Settings.Key.InfoBars, InfoBarSetting.InfoBarConfiguration.class); + if(config.mspt()) this.show(player, MsptBar.name); + if(config.playerCounter()) this.show(player, PlayerCounterBar.name); + if(config.tps()) this.show(player, TpsBar.name); + }); } @Override @@ -84,9 +93,4 @@ public class InfoBars extends Appliance { protected @NotNull List listeners() { return List.of(new ShowPreviousBarsListener()); } - - @Override - protected @NotNull List> commands() { - return List.of(new InfoBarCommand()); - } } diff --git a/common/src/main/java/eu/mhsl/craftattack/spawn/common/appliances/metaGameplay/infoBars/ShowPreviousBarsListener.java b/common/src/main/java/eu/mhsl/craftattack/spawn/common/appliances/metaGameplay/infoBars/ShowPreviousBarsListener.java index 401b4ea..f6c5be0 100644 --- a/common/src/main/java/eu/mhsl/craftattack/spawn/common/appliances/metaGameplay/infoBars/ShowPreviousBarsListener.java +++ b/common/src/main/java/eu/mhsl/craftattack/spawn/common/appliances/metaGameplay/infoBars/ShowPreviousBarsListener.java @@ -7,6 +7,6 @@ import org.bukkit.event.player.PlayerJoinEvent; class ShowPreviousBarsListener extends ApplianceListener { @EventHandler public void onJoin(PlayerJoinEvent event) { -// this.getAppliance().showAll(event.getPlayer()); + this.getAppliance().showAllEnabled(event.getPlayer()); } } diff --git a/common/src/main/java/eu/mhsl/craftattack/spawn/common/appliances/metaGameplay/infoBars/bars/MsptBar.java b/common/src/main/java/eu/mhsl/craftattack/spawn/common/appliances/metaGameplay/infoBars/bars/MsptBar.java index d7e6b87..cfc578c 100644 --- a/common/src/main/java/eu/mhsl/craftattack/spawn/common/appliances/metaGameplay/infoBars/bars/MsptBar.java +++ b/common/src/main/java/eu/mhsl/craftattack/spawn/common/appliances/metaGameplay/infoBars/bars/MsptBar.java @@ -10,6 +10,8 @@ import net.kyori.adventure.text.format.NamedTextColor; import java.time.Duration; public class MsptBar extends Bar { + public static String name = "msptd"; + @Override protected Duration refresh() { return Duration.ofSeconds(3); @@ -17,7 +19,7 @@ public class MsptBar extends Bar { @Override protected String name() { - return "mspt"; + return name; } @Override diff --git a/common/src/main/java/eu/mhsl/craftattack/spawn/common/appliances/metaGameplay/infoBars/bars/PlayerCounterBar.java b/common/src/main/java/eu/mhsl/craftattack/spawn/common/appliances/metaGameplay/infoBars/bars/PlayerCounterBar.java index 60743d5..7717fa2 100644 --- a/common/src/main/java/eu/mhsl/craftattack/spawn/common/appliances/metaGameplay/infoBars/bars/PlayerCounterBar.java +++ b/common/src/main/java/eu/mhsl/craftattack/spawn/common/appliances/metaGameplay/infoBars/bars/PlayerCounterBar.java @@ -12,6 +12,8 @@ import org.bukkit.Bukkit; import java.time.Duration; public class PlayerCounterBar extends Bar { + public static String name = "playerCounter"; + @Override protected Duration refresh() { return Duration.ofSeconds(3); @@ -19,7 +21,7 @@ public class PlayerCounterBar extends Bar { @Override protected String name() { - return "playerCounter"; + return name; } @Override diff --git a/common/src/main/java/eu/mhsl/craftattack/spawn/common/appliances/metaGameplay/infoBars/bars/TpsBar.java b/common/src/main/java/eu/mhsl/craftattack/spawn/common/appliances/metaGameplay/infoBars/bars/TpsBar.java index f956508..b19ad2e 100644 --- a/common/src/main/java/eu/mhsl/craftattack/spawn/common/appliances/metaGameplay/infoBars/bars/TpsBar.java +++ b/common/src/main/java/eu/mhsl/craftattack/spawn/common/appliances/metaGameplay/infoBars/bars/TpsBar.java @@ -10,6 +10,8 @@ import org.bukkit.Bukkit; import java.time.Duration; public class TpsBar extends Bar { + public static String name = "tps"; + @Override protected Duration refresh() { return Duration.ofSeconds(3); @@ -17,7 +19,7 @@ public class TpsBar extends Bar { @Override protected String name() { - return "tps"; + return name; } @Override diff --git a/common/src/main/java/eu/mhsl/craftattack/spawn/common/appliances/metaGameplay/settings/Settings.java b/common/src/main/java/eu/mhsl/craftattack/spawn/common/appliances/metaGameplay/settings/Settings.java index 653416d..bf80564 100644 --- a/common/src/main/java/eu/mhsl/craftattack/spawn/common/appliances/metaGameplay/settings/Settings.java +++ b/common/src/main/java/eu/mhsl/craftattack/spawn/common/appliances/metaGameplay/settings/Settings.java @@ -36,7 +36,8 @@ public class Settings extends Appliance { DoubleDoors, KnockDoors, BorderWarning, - LocatorBarConfig + LocatorBar, + InfoBars } public static Settings instance() { diff --git a/common/src/main/java/eu/mhsl/craftattack/spawn/common/appliances/metaGameplay/settings/datatypes/Setting.java b/common/src/main/java/eu/mhsl/craftattack/spawn/common/appliances/metaGameplay/settings/datatypes/Setting.java index 31cd596..24e28bb 100644 --- a/common/src/main/java/eu/mhsl/craftattack/spawn/common/appliances/metaGameplay/settings/datatypes/Setting.java +++ b/common/src/main/java/eu/mhsl/craftattack/spawn/common/appliances/metaGameplay/settings/datatypes/Setting.java @@ -26,7 +26,7 @@ public abstract class Setting { } public NamespacedKey getNamespacedKey() { - return new NamespacedKey(Main.instance(), this.key.name()); + return new NamespacedKey(Settings.class.getSimpleName().toLowerCase(), this.key.name().toLowerCase()); } public Settings.Key getKey() { diff --git a/craftattack/src/main/java/eu/mhsl/craftattack/spawn/craftattack/appliances/gameplay/locatorBar/LocatorBar.java b/craftattack/src/main/java/eu/mhsl/craftattack/spawn/craftattack/appliances/gameplay/locatorBar/LocatorBar.java index bc0d1f8..5af5cb9 100644 --- a/craftattack/src/main/java/eu/mhsl/craftattack/spawn/craftattack/appliances/gameplay/locatorBar/LocatorBar.java +++ b/craftattack/src/main/java/eu/mhsl/craftattack/spawn/craftattack/appliances/gameplay/locatorBar/LocatorBar.java @@ -29,7 +29,7 @@ public class LocatorBar extends Appliance { } public void updateLocatorBar(Player player) { - boolean enabled = Settings.instance().getSetting(player, Settings.Key.LocatorBarConfig, Boolean.class); + boolean enabled = Settings.instance().getSetting(player, Settings.Key.LocatorBar, Boolean.class); AttributeInstance receive = player.getAttribute(Attribute.WAYPOINT_RECEIVE_RANGE); AttributeInstance transmit = player.getAttribute(Attribute.WAYPOINT_TRANSMIT_RANGE); diff --git a/craftattack/src/main/java/eu/mhsl/craftattack/spawn/craftattack/appliances/gameplay/locatorBar/LocatorBarSettings.java b/craftattack/src/main/java/eu/mhsl/craftattack/spawn/craftattack/appliances/gameplay/locatorBar/LocatorBarSettings.java index bf54025..0ece011 100644 --- a/craftattack/src/main/java/eu/mhsl/craftattack/spawn/craftattack/appliances/gameplay/locatorBar/LocatorBarSettings.java +++ b/craftattack/src/main/java/eu/mhsl/craftattack/spawn/craftattack/appliances/gameplay/locatorBar/LocatorBarSettings.java @@ -13,7 +13,7 @@ public class LocatorBarSettings extends BoolSetting implements CategorizedSettin } public LocatorBarSettings() { - super(Settings.Key.LocatorBarConfig); + super(Settings.Key.LocatorBar); } @Override