diff --git a/src/main/java/eu/mhsl/craftattack/spawn/appliances/adminChat/AdminChat.java b/src/main/java/eu/mhsl/craftattack/spawn/appliances/adminChat/AdminChat.java new file mode 100644 index 0000000..8891bba --- /dev/null +++ b/src/main/java/eu/mhsl/craftattack/spawn/appliances/adminChat/AdminChat.java @@ -0,0 +1,37 @@ +package eu.mhsl.craftattack.spawn.appliances.adminChat; + +import eu.mhsl.craftattack.spawn.appliance.Appliance; +import eu.mhsl.craftattack.spawn.appliance.ApplianceCommand; +import net.kyori.adventure.text.Component; +import net.kyori.adventure.text.event.ClickEvent; +import net.kyori.adventure.text.format.NamedTextColor; +import org.bukkit.Bukkit; +import org.bukkit.entity.Player; +import org.jetbrains.annotations.NotNull; + +import java.util.List; + +public class AdminChat extends Appliance { + public void sendMessage(Player sender, String message) { + Component privatePrefix = Component + .text("[Admin] ", NamedTextColor.LIGHT_PURPLE) + .clickEvent(ClickEvent.suggestCommand(AdminChatCommand.commandName)); + + Bukkit.getOnlinePlayers().stream() + .filter(player -> player.hasPermission("admin")) + .forEach(player -> { + Component formattedMessage = Component.text() + .append(privatePrefix) + .append(sender.displayName()) + .append(Component.text(" > ", NamedTextColor.DARK_GRAY)) + .append(Component.text(message)) + .build(); + player.sendMessage(formattedMessage); + }); + } + + @Override + protected @NotNull List<ApplianceCommand<?>> commands() { + return List.of(new AdminChatCommand()); + } +} diff --git a/src/main/java/eu/mhsl/craftattack/spawn/appliances/adminChat/AdminChatCommand.java b/src/main/java/eu/mhsl/craftattack/spawn/appliances/adminChat/AdminChatCommand.java new file mode 100644 index 0000000..7adaa72 --- /dev/null +++ b/src/main/java/eu/mhsl/craftattack/spawn/appliances/adminChat/AdminChatCommand.java @@ -0,0 +1,24 @@ +package eu.mhsl.craftattack.spawn.appliances.adminChat; + +import eu.mhsl.craftattack.spawn.appliance.ApplianceCommand; +import org.bukkit.command.Command; +import org.bukkit.command.CommandSender; +import org.jetbrains.annotations.NotNull; + +public class AdminChatCommand extends ApplianceCommand.PlayerChecked<AdminChat> { + public static final String commandName = "adminchat"; + + public AdminChatCommand() { + super(commandName); + } + + @Override + protected void execute(@NotNull CommandSender sender, @NotNull Command command, @NotNull String label, @NotNull String[] args) throws Exception { + if(!sender.hasPermission("admin")) { + return; + } + + String message = String.join(" ", args); + getAppliance().sendMessage(getPlayer(), message); + } +} diff --git a/src/main/resources/plugin.yml b/src/main/resources/plugin.yml index fe67e51..4847a79 100644 --- a/src/main/resources/plugin.yml +++ b/src/main/resources/plugin.yml @@ -43,3 +43,5 @@ commands: msg: r: playtime: + adminchat: + aliases: [ "sc" ]