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" ]