diff --git a/src/main/java/eu/mhsl/craftattack/spawn/appliance/Appliance.java b/src/main/java/eu/mhsl/craftattack/spawn/appliance/Appliance.java index 8c5b59b..efbf60c 100644 --- a/src/main/java/eu/mhsl/craftattack/spawn/appliance/Appliance.java +++ b/src/main/java/eu/mhsl/craftattack/spawn/appliance/Appliance.java @@ -21,9 +21,10 @@ import java.util.Optional; */ public abstract class Appliance { private String localConfigPath; + private List listeners; + private List> commands; - public Appliance() { - } + public Appliance() {} /** * Use this constructor to specify a config sub-path for use with the localConfig() method. @@ -71,12 +72,15 @@ public abstract class Appliance { public void onDisable() {} public void initialize(@NotNull JavaPlugin plugin) { - eventHandlers().forEach(listener -> Bukkit.getPluginManager().registerEvents(listener, plugin)); - commands().forEach(command -> setCommandExecutor(plugin, command.commandName, command)); + this.listeners = eventHandlers(); + this.commands = commands(); + + listeners.forEach(listener -> Bukkit.getPluginManager().registerEvents(listener, plugin)); + commands.forEach(command -> setCommandExecutor(plugin, command.commandName, command)); } public void destruct(@NotNull JavaPlugin plugin) { - eventHandlers().forEach(HandlerList::unregisterAll); + listeners.forEach(HandlerList::unregisterAll); } public T queryAppliance(Class clazz) { @@ -93,4 +97,12 @@ public abstract class Appliance { throw new RuntimeException("All commands must be registered in plugin.yml. Missing command: " + name); } } + + public List getListeners() { + return listeners; + } + + public List> getCommands() { + return commands; + } } diff --git a/src/main/java/eu/mhsl/craftattack/spawn/appliances/adminMarker/AdminMarker.java b/src/main/java/eu/mhsl/craftattack/spawn/appliances/adminMarker/AdminMarker.java index 0f5552d..dcd9318 100644 --- a/src/main/java/eu/mhsl/craftattack/spawn/appliances/adminMarker/AdminMarker.java +++ b/src/main/java/eu/mhsl/craftattack/spawn/appliances/adminMarker/AdminMarker.java @@ -16,7 +16,8 @@ public class AdminMarker extends Appliance { } @Override - protected @NotNull List eventHandlers() { + @NotNull + protected List eventHandlers() { return List.of(new AdminMarkerListener()); } } diff --git a/src/main/java/eu/mhsl/craftattack/spawn/appliances/adminMarker/AdminMarkerListener.java b/src/main/java/eu/mhsl/craftattack/spawn/appliances/adminMarker/AdminMarkerListener.java index b3683bb..55d228d 100644 --- a/src/main/java/eu/mhsl/craftattack/spawn/appliances/adminMarker/AdminMarkerListener.java +++ b/src/main/java/eu/mhsl/craftattack/spawn/appliances/adminMarker/AdminMarkerListener.java @@ -4,17 +4,8 @@ import eu.mhsl.craftattack.spawn.appliance.ApplianceListener; import net.kyori.adventure.text.format.TextColor; import org.bukkit.Color; import org.bukkit.entity.Player; -import org.bukkit.event.EventHandler; -import org.bukkit.event.player.PlayerJoinEvent; public class AdminMarkerListener extends ApplianceListener { - @EventHandler - public void onPlayerJoin(PlayerJoinEvent event) { - Player p = event.getPlayer(); - - - } - private TextColor getPlayerColor(Player player) { if (player.hasPermission("chatcolor")) return TextColor.color(Color.AQUA.asRGB()); // TODO read permission from config return TextColor.color(Color.WHITE.asRGB()); diff --git a/src/main/java/eu/mhsl/craftattack/spawn/appliances/chatMessages/ChatMessages.java b/src/main/java/eu/mhsl/craftattack/spawn/appliances/chatMessages/ChatMessages.java index 8acdc97..b2f20be 100644 --- a/src/main/java/eu/mhsl/craftattack/spawn/appliances/chatMessages/ChatMessages.java +++ b/src/main/java/eu/mhsl/craftattack/spawn/appliances/chatMessages/ChatMessages.java @@ -8,7 +8,8 @@ import java.util.List; public class ChatMessages extends Appliance { @Override - protected @NotNull List eventHandlers() { + @NotNull + protected List eventHandlers() { return List.of(new ChatMessagesListener()); } } diff --git a/src/main/java/eu/mhsl/craftattack/spawn/appliances/chatMessages/ChatMessagesListener.java b/src/main/java/eu/mhsl/craftattack/spawn/appliances/chatMessages/ChatMessagesListener.java index 221832e..e5ccc19 100644 --- a/src/main/java/eu/mhsl/craftattack/spawn/appliances/chatMessages/ChatMessagesListener.java +++ b/src/main/java/eu/mhsl/craftattack/spawn/appliances/chatMessages/ChatMessagesListener.java @@ -1,6 +1,8 @@ package eu.mhsl.craftattack.spawn.appliances.chatMessages; import eu.mhsl.craftattack.spawn.appliance.ApplianceListener; +import eu.mhsl.craftattack.spawn.appliances.settings.Settings; +import eu.mhsl.craftattack.spawn.util.IteratorUtil; import io.papermc.paper.event.player.AsyncChatEvent; import net.kyori.adventure.text.Component; import net.kyori.adventure.text.event.ClickEvent; @@ -30,20 +32,28 @@ public class ChatMessagesListener extends ApplianceListener { @EventHandler public void onPlayerJoin(PlayerJoinEvent event) { - event.joinMessage( + event.joinMessage(null); + IteratorUtil.onlinePlayers(player -> { + if(!Settings.instance().getSetting(player, Settings.Key.ShowJoinAndLeaveMessages, Boolean.class)) return; + player.sendMessage( Component - .text(">>> ").color(NamedTextColor.GREEN) - .append(getReportablePlayerName(event.getPlayer())) - ); + .text(">>> ").color(NamedTextColor.GREEN) + .append(getReportablePlayerName(event.getPlayer())) + ); + }); } @EventHandler public void onPlayerLeave(PlayerQuitEvent event) { - event.quitMessage( + event.quitMessage(null); + IteratorUtil.onlinePlayers(player -> { + if(!Settings.instance().getSetting(player, Settings.Key.ShowJoinAndLeaveMessages, Boolean.class)) return; + player.sendMessage( Component - .text("<<< ").color(NamedTextColor.RED) - .append(getReportablePlayerName(event.getPlayer())) - ); + .text("<<< ").color(NamedTextColor.RED) + .append(getReportablePlayerName(event.getPlayer())) + ); + }); } @EventHandler diff --git a/src/main/java/eu/mhsl/craftattack/spawn/appliances/customAdvancements/CustomAdvancements.java b/src/main/java/eu/mhsl/craftattack/spawn/appliances/customAdvancements/CustomAdvancements.java index 861013c..b0e13a1 100644 --- a/src/main/java/eu/mhsl/craftattack/spawn/appliances/customAdvancements/CustomAdvancements.java +++ b/src/main/java/eu/mhsl/craftattack/spawn/appliances/customAdvancements/CustomAdvancements.java @@ -16,7 +16,8 @@ public class CustomAdvancements extends Appliance { } @Override - protected @NotNull List eventHandlers() { + @NotNull + protected List eventHandlers() { return List.of(new CustomAdvancementsDamageEntityListener()); } } diff --git a/src/main/java/eu/mhsl/craftattack/spawn/appliances/debug/Debug.java b/src/main/java/eu/mhsl/craftattack/spawn/appliances/debug/Debug.java index 1364ac3..904dda9 100644 --- a/src/main/java/eu/mhsl/craftattack/spawn/appliances/debug/Debug.java +++ b/src/main/java/eu/mhsl/craftattack/spawn/appliances/debug/Debug.java @@ -9,7 +9,8 @@ import org.jetbrains.annotations.NotNull; import java.util.List; public class Debug extends Appliance { @Override - protected @NotNull List> commands() { + @NotNull + protected List> commands() { return List.of( new UserInfoCommand(), new AppliancesCommand() diff --git a/src/main/java/eu/mhsl/craftattack/spawn/appliances/debug/command/AppliancesCommand.java b/src/main/java/eu/mhsl/craftattack/spawn/appliances/debug/command/AppliancesCommand.java index e8e9a60..1fcdb47 100644 --- a/src/main/java/eu/mhsl/craftattack/spawn/appliances/debug/command/AppliancesCommand.java +++ b/src/main/java/eu/mhsl/craftattack/spawn/appliances/debug/command/AppliancesCommand.java @@ -3,14 +3,18 @@ package eu.mhsl.craftattack.spawn.appliances.debug.command; import eu.mhsl.craftattack.spawn.Main; import eu.mhsl.craftattack.spawn.appliance.ApplianceCommand; import eu.mhsl.craftattack.spawn.appliances.debug.Debug; +import eu.mhsl.craftattack.spawn.util.text.ComponentUtil; import net.kyori.adventure.text.Component; import net.kyori.adventure.text.ComponentBuilder; import net.kyori.adventure.text.TextComponent; +import net.kyori.adventure.text.event.HoverEvent; +import net.kyori.adventure.text.format.NamedTextColor; import org.bukkit.command.Command; import org.bukkit.command.CommandSender; +import org.bukkit.event.Listener; import org.jetbrains.annotations.NotNull; -import java.util.stream.Collectors; +import java.util.List; public class AppliancesCommand extends ApplianceCommand { public AppliancesCommand() { @@ -21,9 +25,40 @@ public class AppliancesCommand extends ApplianceCommand { protected void execute(@NotNull CommandSender sender, @NotNull Command command, @NotNull String label, @NotNull String[] args) { ComponentBuilder componentBuilder = Component.text() .append(Component.text(Main.instance().getAppliances().size())) - .append(Component.text(" appliances loaded:")) - .appendNewline() - .append(Component.text(Main.instance().getAppliances().stream().map(appliance -> appliance.getClass().getSimpleName()).collect(Collectors.joining(", ")))); + .append(Component.text(" appliances running:")) + .appendNewline(); + + Main.instance().getAppliances().forEach(appliance -> { + List> commands = appliance.getCommands(); + List listener = appliance.getListeners(); + + componentBuilder + .append(Component.text(appliance.getClass().getSimpleName(), NamedTextColor.GREEN) + .hoverEvent(HoverEvent.showText(Component.text(appliance.getClass().getName())))) + .append(Component.text(": ", NamedTextColor.DARK_GRAY)) + .append(Component.text(commands.size() + " Commands", NamedTextColor.GRAY) + .hoverEvent(HoverEvent.showText(commands.stream() + .map(applianceCommand -> Component.text() + .append(Component.text(applianceCommand.commandName, NamedTextColor.DARK_GREEN)) + .append(Component.text(": ")) + .append(Component.text(applianceCommand.getClass().getName())) + .build()) + .reduce(ComponentUtil::appendWithNewline) + .orElse(Component.text("No commands available"))))) + .append(Component.text(", ", NamedTextColor.GRAY)) + .append(Component.text(listener.size() + " Listener", NamedTextColor.GRAY) + .hoverEvent(HoverEvent.showText(listener.stream() + .map(eventHandler -> Component.text() + .append(Component.text(eventHandler.getClass().getSimpleName(), NamedTextColor.DARK_GREEN)) + .append(Component.text(": ")) + .append(Component.text(eventHandler.getClass().getName())) + .build()) + .reduce(ComponentUtil::appendWithNewline) + .orElse(Component.text("No listeners available"))))) + .appendNewline(); + }); + + componentBuilder.append(Component.text(Main.instance().getClass().getName(), NamedTextColor.GRAY)); sender.sendMessage(componentBuilder.build()); } diff --git a/src/main/java/eu/mhsl/craftattack/spawn/appliances/displayName/DisplayName.java b/src/main/java/eu/mhsl/craftattack/spawn/appliances/displayName/DisplayName.java index 0451209..6160052 100644 --- a/src/main/java/eu/mhsl/craftattack/spawn/appliances/displayName/DisplayName.java +++ b/src/main/java/eu/mhsl/craftattack/spawn/appliances/displayName/DisplayName.java @@ -47,7 +47,8 @@ public class DisplayName extends Appliance { @Override - protected @NotNull List eventHandlers() { + @NotNull + protected List eventHandlers() { return List.of(new AdminMarkerListener()); } } diff --git a/src/main/java/eu/mhsl/craftattack/spawn/appliances/event/Event.java b/src/main/java/eu/mhsl/craftattack/spawn/appliances/event/Event.java index 1dad133..d0e83ea 100644 --- a/src/main/java/eu/mhsl/craftattack/spawn/appliances/event/Event.java +++ b/src/main/java/eu/mhsl/craftattack/spawn/appliances/event/Event.java @@ -23,7 +23,6 @@ import org.bukkit.entity.Villager; import org.bukkit.event.Listener; import org.bukkit.inventory.ItemStack; import org.bukkit.inventory.meta.ItemMeta; -import org.eclipse.jetty.util.security.CertificateUtils; import org.jetbrains.annotations.NotNull; import java.io.IOException; @@ -216,7 +215,8 @@ public class Event extends Appliance { } @Override - protected @NotNull List> commands() { + @NotNull + protected List> commands() { return List.of( new EventCommand(), new MoveEventVillagerCommand(), @@ -227,7 +227,8 @@ public class Event extends Appliance { } @Override - protected @NotNull List eventHandlers() { + @NotNull + protected List eventHandlers() { return List.of( new ApplyPendingRewardsListener(), new PlayerInteractAtEntityEventListener(this.villager.getUniqueId(), playerInteractAtEntityEvent -> joinEvent(playerInteractAtEntityEvent.getPlayer())), diff --git a/src/main/java/eu/mhsl/craftattack/spawn/appliances/fleischerchest/Fleischerchest.java b/src/main/java/eu/mhsl/craftattack/spawn/appliances/fleischerchest/Fleischerchest.java index 8e0356b..add3457 100644 --- a/src/main/java/eu/mhsl/craftattack/spawn/appliances/fleischerchest/Fleischerchest.java +++ b/src/main/java/eu/mhsl/craftattack/spawn/appliances/fleischerchest/Fleischerchest.java @@ -18,7 +18,8 @@ public class Fleischerchest extends Appliance { } @Override - protected @NotNull List eventHandlers() { + @NotNull + protected List eventHandlers() { return List.of(new FleischerchestCraftItemListener()); } } diff --git a/src/main/java/eu/mhsl/craftattack/spawn/appliances/help/Help.java b/src/main/java/eu/mhsl/craftattack/spawn/appliances/help/Help.java index c2415bf..9e68a8a 100644 --- a/src/main/java/eu/mhsl/craftattack/spawn/appliances/help/Help.java +++ b/src/main/java/eu/mhsl/craftattack/spawn/appliances/help/Help.java @@ -16,7 +16,8 @@ public class Help extends Appliance { } @Override - protected @NotNull List> commands() { + @NotNull + protected List> commands() { return List.of( new HelpCommand(), new SpawnCommand(), diff --git a/src/main/java/eu/mhsl/craftattack/spawn/appliances/kick/Kick.java b/src/main/java/eu/mhsl/craftattack/spawn/appliances/kick/Kick.java index ad7fd61..591bbf4 100644 --- a/src/main/java/eu/mhsl/craftattack/spawn/appliances/kick/Kick.java +++ b/src/main/java/eu/mhsl/craftattack/spawn/appliances/kick/Kick.java @@ -26,7 +26,8 @@ public class Kick extends Appliance { } @Override - protected @NotNull List> commands() { + @NotNull + protected List> commands() { return List.of(new KickCommand()); } } diff --git a/src/main/java/eu/mhsl/craftattack/spawn/appliances/outlawed/Outlawed.java b/src/main/java/eu/mhsl/craftattack/spawn/appliances/outlawed/Outlawed.java index 1ba833c..79e8811 100644 --- a/src/main/java/eu/mhsl/craftattack/spawn/appliances/outlawed/Outlawed.java +++ b/src/main/java/eu/mhsl/craftattack/spawn/appliances/outlawed/Outlawed.java @@ -118,12 +118,14 @@ public class Outlawed extends Appliance { } @Override - protected @NotNull List> commands() { + @NotNull + protected List> commands() { return List.of(new OutlawedCommand()); } @Override - protected @NotNull List eventHandlers() { + @NotNull + protected List eventHandlers() { return List.of(new OutlawedReminderListener()); } } diff --git a/src/main/java/eu/mhsl/craftattack/spawn/appliances/panicBan/PanicBan.java b/src/main/java/eu/mhsl/craftattack/spawn/appliances/panicBan/PanicBan.java index ef6bb8b..75f8bf6 100644 --- a/src/main/java/eu/mhsl/craftattack/spawn/appliances/panicBan/PanicBan.java +++ b/src/main/java/eu/mhsl/craftattack/spawn/appliances/panicBan/PanicBan.java @@ -40,12 +40,14 @@ public class PanicBan extends Appliance { } @Override - protected @NotNull List> commands() { + @NotNull + protected List> commands() { return List.of(new PanicBanCommand()); } @Override - protected @NotNull List eventHandlers() { + @NotNull + protected List eventHandlers() { return List.of(new PanicBanJoinListener()); } } diff --git a/src/main/java/eu/mhsl/craftattack/spawn/appliances/playerlimit/PlayerLimit.java b/src/main/java/eu/mhsl/craftattack/spawn/appliances/playerlimit/PlayerLimit.java index 9ab5e31..3dd658f 100644 --- a/src/main/java/eu/mhsl/craftattack/spawn/appliances/playerlimit/PlayerLimit.java +++ b/src/main/java/eu/mhsl/craftattack/spawn/appliances/playerlimit/PlayerLimit.java @@ -29,14 +29,16 @@ public class PlayerLimit extends Appliance { } @Override - protected @NotNull List eventHandlers() { + @NotNull + protected List eventHandlers() { return List.of( new PlayerLimiterListener() ); } @Override - protected @NotNull List> commands() { + @NotNull + protected List> commands() { return List.of( new SetPlayerLimitCommand() ); diff --git a/src/main/java/eu/mhsl/craftattack/spawn/appliances/projectStart/ProjectStart.java b/src/main/java/eu/mhsl/craftattack/spawn/appliances/projectStart/ProjectStart.java index 459ca0b..73aacf1 100644 --- a/src/main/java/eu/mhsl/craftattack/spawn/appliances/projectStart/ProjectStart.java +++ b/src/main/java/eu/mhsl/craftattack/spawn/appliances/projectStart/ProjectStart.java @@ -174,7 +174,8 @@ public class ProjectStart extends Appliance { } @Override - protected @NotNull List eventHandlers() { + @NotNull + protected List eventHandlers() { return List.of( new PlayerInvincibleListener(), new NoAdvancementsListener() @@ -182,7 +183,8 @@ public class ProjectStart extends Appliance { } @Override - protected @NotNull List> commands() { + @NotNull + protected List> commands() { return List.of( new ProjectStartCommand(), new ProjectStartCancelCommand(), diff --git a/src/main/java/eu/mhsl/craftattack/spawn/appliances/report/Report.java b/src/main/java/eu/mhsl/craftattack/spawn/appliances/report/Report.java index f308c48..40632a0 100644 --- a/src/main/java/eu/mhsl/craftattack/spawn/appliances/report/Report.java +++ b/src/main/java/eu/mhsl/craftattack/spawn/appliances/report/Report.java @@ -136,7 +136,8 @@ public class Report extends Appliance { } @Override - protected @NotNull List> commands() { + @NotNull + protected List> commands() { return List.of(new ReportCommand()); } } diff --git a/src/main/java/eu/mhsl/craftattack/spawn/appliances/restart/Restart.java b/src/main/java/eu/mhsl/craftattack/spawn/appliances/restart/Restart.java index 0a84643..e925360 100644 --- a/src/main/java/eu/mhsl/craftattack/spawn/appliances/restart/Restart.java +++ b/src/main/java/eu/mhsl/craftattack/spawn/appliances/restart/Restart.java @@ -62,7 +62,8 @@ public class Restart extends Appliance { } @Override - protected @NotNull List> commands() { + @NotNull + protected List> commands() { return List.of(new ScheduleRestartCommand(), new CancelRestartCommand()); } } diff --git a/src/main/java/eu/mhsl/craftattack/spawn/appliances/settings/Settings.java b/src/main/java/eu/mhsl/craftattack/spawn/appliances/settings/Settings.java index 446de0d..7f2725d 100644 --- a/src/main/java/eu/mhsl/craftattack/spawn/appliances/settings/Settings.java +++ b/src/main/java/eu/mhsl/craftattack/spawn/appliances/settings/Settings.java @@ -1,8 +1,10 @@ package eu.mhsl.craftattack.spawn.appliances.settings; +import eu.mhsl.craftattack.spawn.Main; import eu.mhsl.craftattack.spawn.appliance.Appliance; import eu.mhsl.craftattack.spawn.appliance.ApplianceCommand; import eu.mhsl.craftattack.spawn.appliances.settings.datatypes.Setting; +import eu.mhsl.craftattack.spawn.appliances.settings.settings.ShowJoinAndLeaveMessagesSetting; import eu.mhsl.craftattack.spawn.appliances.settings.settings.TechnicalTablistSetting; import net.kyori.adventure.text.Component; import org.bukkit.Bukkit; @@ -17,6 +19,11 @@ import java.util.WeakHashMap; public class Settings extends Appliance { public enum Key { TechnicalTab, + ShowJoinAndLeaveMessages, + } + + public static Settings instance() { + return Main.instance().getAppliance(Settings.class); } public record OpenSettingsInventory(Inventory inventory, List> settings) {} @@ -27,7 +34,8 @@ public class Settings extends Appliance { if(settingsCache.containsKey(player)) return settingsCache.get(player); List> settings = List.of( - new TechnicalTablistSetting() + new TechnicalTablistSetting(), + new ShowJoinAndLeaveMessagesSetting() ); settings.forEach(setting -> setting.initializeFromPlayer(player)); @@ -70,12 +78,14 @@ public class Settings extends Appliance { } @Override - protected @NotNull List eventHandlers() { + @NotNull + protected List eventHandlers() { return List.of(new SettingsInventoryListener()); } @Override - protected @NotNull List> commands() { + @NotNull + protected List> commands() { return List.of(new SettingsCommand()); } } diff --git a/src/main/java/eu/mhsl/craftattack/spawn/appliances/settings/datatypes/BoolSetting.java b/src/main/java/eu/mhsl/craftattack/spawn/appliances/settings/datatypes/BoolSetting.java index b9d04cc..4b28398 100644 --- a/src/main/java/eu/mhsl/craftattack/spawn/appliances/settings/datatypes/BoolSetting.java +++ b/src/main/java/eu/mhsl/craftattack/spawn/appliances/settings/datatypes/BoolSetting.java @@ -8,6 +8,7 @@ import org.bukkit.persistence.PersistentDataContainer; import org.bukkit.persistence.PersistentDataType; import java.util.List; +import java.util.Objects; public abstract class BoolSetting extends Setting { private boolean state; @@ -21,7 +22,9 @@ public abstract class BoolSetting extends Setting { @Override public void fromStorage(PersistentDataContainer container) { - this.state = Boolean.TRUE.equals(container.get(getNamespacedKey(), PersistentDataType.BOOLEAN)); + this.state = container.has(getNamespacedKey()) + ? Objects.requireNonNull(container.get(getNamespacedKey(), PersistentDataType.BOOLEAN)) + : defaultValue(); } @Override diff --git a/src/main/java/eu/mhsl/craftattack/spawn/appliances/settings/datatypes/Setting.java b/src/main/java/eu/mhsl/craftattack/spawn/appliances/settings/datatypes/Setting.java index 7e0b1b6..c9545ee 100644 --- a/src/main/java/eu/mhsl/craftattack/spawn/appliances/settings/datatypes/Setting.java +++ b/src/main/java/eu/mhsl/craftattack/spawn/appliances/settings/datatypes/Setting.java @@ -42,6 +42,7 @@ public abstract class Setting { protected abstract Material icon(); public abstract ItemMeta buildMeta(ItemMeta meta); protected abstract void change(); + protected abstract TDataType defaultValue(); protected abstract void fromStorage(PersistentDataContainer container); protected abstract void toStorage(PersistentDataContainer container, TDataType value); public abstract Class dataType(); diff --git a/src/main/java/eu/mhsl/craftattack/spawn/appliances/settings/settings/ShowJoinAndLeaveMessagesSetting.java b/src/main/java/eu/mhsl/craftattack/spawn/appliances/settings/settings/ShowJoinAndLeaveMessagesSetting.java new file mode 100644 index 0000000..60aa111 --- /dev/null +++ b/src/main/java/eu/mhsl/craftattack/spawn/appliances/settings/settings/ShowJoinAndLeaveMessagesSetting.java @@ -0,0 +1,31 @@ +package eu.mhsl.craftattack.spawn.appliances.settings.settings; + +import eu.mhsl.craftattack.spawn.appliances.settings.Settings; +import eu.mhsl.craftattack.spawn.appliances.settings.datatypes.BoolSetting; +import org.bukkit.Material; + +public class ShowJoinAndLeaveMessagesSetting extends BoolSetting { + public ShowJoinAndLeaveMessagesSetting() { + super(Settings.Key.ShowJoinAndLeaveMessages); + } + + @Override + protected String title() { + return "Join & Leave Nachrichten anzeigen"; + } + + @Override + protected String description() { + return "Zeige allgemeine Beitritts und Verlassensmeldungen im Chat"; + } + + @Override + protected Material icon() { + return Material.PLAYER_HEAD; + } + + @Override + protected Boolean defaultValue() { + return true; + } +} diff --git a/src/main/java/eu/mhsl/craftattack/spawn/appliances/settings/settings/TechnicalTablistSetting.java b/src/main/java/eu/mhsl/craftattack/spawn/appliances/settings/settings/TechnicalTablistSetting.java index e02e712..4542d45 100644 --- a/src/main/java/eu/mhsl/craftattack/spawn/appliances/settings/settings/TechnicalTablistSetting.java +++ b/src/main/java/eu/mhsl/craftattack/spawn/appliances/settings/settings/TechnicalTablistSetting.java @@ -23,4 +23,9 @@ public class TechnicalTablistSetting extends BoolSetting { protected Material icon() { return Material.COMMAND_BLOCK_MINECART; } + + @Override + protected Boolean defaultValue() { + return false; + } } diff --git a/src/main/java/eu/mhsl/craftattack/spawn/appliances/tablist/Tablist.java b/src/main/java/eu/mhsl/craftattack/spawn/appliances/tablist/Tablist.java index 452ceb1..8b46361 100644 --- a/src/main/java/eu/mhsl/craftattack/spawn/appliances/tablist/Tablist.java +++ b/src/main/java/eu/mhsl/craftattack/spawn/appliances/tablist/Tablist.java @@ -75,7 +75,8 @@ public class Tablist extends Appliance { } @Override - protected @NotNull List eventHandlers() { + @NotNull + protected List eventHandlers() { return List.of(new TablistListener()); } } diff --git a/src/main/java/eu/mhsl/craftattack/spawn/appliances/titleClear/TitleClear.java b/src/main/java/eu/mhsl/craftattack/spawn/appliances/titleClear/TitleClear.java index 9088402..53c1f67 100644 --- a/src/main/java/eu/mhsl/craftattack/spawn/appliances/titleClear/TitleClear.java +++ b/src/main/java/eu/mhsl/craftattack/spawn/appliances/titleClear/TitleClear.java @@ -12,7 +12,8 @@ public class TitleClear extends Appliance { player.clearTitle(); } @Override - protected @NotNull List eventHandlers() { + @NotNull + protected List eventHandlers() { return List.of( new TitleClearListener() ); diff --git a/src/main/java/eu/mhsl/craftattack/spawn/appliances/whitelist/Whitelist.java b/src/main/java/eu/mhsl/craftattack/spawn/appliances/whitelist/Whitelist.java index f17f143..1777296 100644 --- a/src/main/java/eu/mhsl/craftattack/spawn/appliances/whitelist/Whitelist.java +++ b/src/main/java/eu/mhsl/craftattack/spawn/appliances/whitelist/Whitelist.java @@ -11,7 +11,6 @@ import org.apache.http.client.utils.URIBuilder; import org.bukkit.Bukkit; import org.bukkit.entity.Player; import org.bukkit.event.Listener; -import org.eclipse.jetty.websocket.server.WebSocketHandler; import org.jetbrains.annotations.NotNull; import java.io.IOException; @@ -139,7 +138,8 @@ public class Whitelist extends Appliance { } @Override - protected @NotNull List eventHandlers() { + @NotNull + protected List eventHandlers() { return List.of( new PlayerJoinListener() ); diff --git a/src/main/java/eu/mhsl/craftattack/spawn/appliances/worldmuseum/WorldMuseum.java b/src/main/java/eu/mhsl/craftattack/spawn/appliances/worldmuseum/WorldMuseum.java index 5443817..6521a1a 100644 --- a/src/main/java/eu/mhsl/craftattack/spawn/appliances/worldmuseum/WorldMuseum.java +++ b/src/main/java/eu/mhsl/craftattack/spawn/appliances/worldmuseum/WorldMuseum.java @@ -14,7 +14,6 @@ import org.bukkit.Location; import org.bukkit.entity.*; import org.bukkit.event.Listener; import org.geysermc.cumulus.form.SimpleForm; -import org.geysermc.cumulus.form.util.FormBuilder; import org.jetbrains.annotations.NotNull; import java.util.List; @@ -60,12 +59,14 @@ public class WorldMuseum extends Appliance { } @Override - protected @NotNull List> commands() { + @NotNull + protected List> commands() { return List.of(new MoveWorldMuseumVillagerCommand()); } @Override - protected @NotNull List eventHandlers() { + @NotNull + protected List eventHandlers() { return List.of( new PlayerInteractAtEntityEventListener(this.villager.getUniqueId(), playerInteractAtEntityEvent -> handleVillagerInteraction(playerInteractAtEntityEvent.getPlayer())), new DismissInventoryOpenFromHolder(this.villager.getUniqueId()) diff --git a/src/main/java/eu/mhsl/craftattack/spawn/util/text/ComponentUtil.java b/src/main/java/eu/mhsl/craftattack/spawn/util/text/ComponentUtil.java index 8ec83db..15f2545 100644 --- a/src/main/java/eu/mhsl/craftattack/spawn/util/text/ComponentUtil.java +++ b/src/main/java/eu/mhsl/craftattack/spawn/util/text/ComponentUtil.java @@ -13,6 +13,10 @@ import java.awt.*; import java.util.Arrays; public class ComponentUtil { + public static TextComponent appendWithNewline(Component a, Component b) { + return Component.text().append(a.appendNewline().append(b)).build(); + } + public static Component getFormattedTPS() { double[] tpsValues = Bukkit.getTPS();