dots/modules/games/server/minecraft/velocity.nix
2025-05-03 16:34:35 +10:00

89 lines
4.3 KiB
Nix

{ config, pkgs, ... }:
{
services.minecraft-servers.servers.velocity = {
enable = true;
package = pkgs.velocityServers.velocity;
autoStart = true;
openFirewall = true;
jvmOpts = "-Xms256M -Xmx1024M";
symlinks = {
"plugins/Luckperms.jar" = pkgs.fetchurl { url = "https://download.luckperms.net/1575/velocity/LuckPerms-Velocity-5.4.158.jar"; sha512 = "07b649db2d2c9f16791d706621dcb606d05bbc1125fa65765e7d4cf4b45778a84f65ca4ad8e461ff146646805072852322cfbd91d66699af5e895d00b233648f"; };
"plugins/Velocitab.jar" = pkgs.fetchurl { url = "https://hangarcdn.papermc.io/plugins/William278/Velocitab/versions/1.7.5/VELOCITY/Velocitab-1.7.5.jar"; sha512 = "ExyxRVbkzgVRTOZC9yRrwJbNpRnD1aFZa/QlMmBHAjLMXYmM/Q7lRMGtQs3dyrjBI06Z9e01ZaOmTTa2RbtNew=="; };
"plugins/Message.jar" = pkgs.fetchurl { url = "https://hangarcdn.papermc.io/plugins/OskarsMC-Plugins/message/versions/1.4.0/VELOCITY/message-1.4.0-all.jar"; sha512 = "62503339714d7d26d71a98b2036cd04e91c9049567a033441d904a5f3190177bdc41dcd5183e6c51eb083a143edbfaf50642d44c99c1b83e7a3546a3654305c8"; };
"plugins/Send.jar" = pkgs.fetchurl { url = "https://github.com/OskarsMC-Plugins/send/releases/download/3.0.0/send-3.0.0.jar"; sha512 = "aff03bb13804cd01ecd649d283bfdb0b3411cb4df045670328a43f53a05f7386a76a536c4fcbbd3cdc718aa300f2ab2940c7437a181e31fa9f1c9c0e591896ab"; };
"plugins/Broadcast.jar" = pkgs.fetchurl { url = "https://github.com/OskarsMC-Plugins/broadcast/releases/download/1.0.0/broadcast-1.0.0.jar"; sha512 = "80911709bb8889a3a338d8430b6305d7a3530ff63640a59edf196344f53aca6a1830a57b38a54e01a31f09758e8d89f6fce65af87f63cd6c3d83a5e5d028f544"; };
};
symlinks."velocity.toml".value = {
# Config version. Do not change this
config-version = "2.7";
bind = "0.0.0.0:25565";
motd = "<#09add3>A Velocity Server";
show-max-players = 500; # displayed maximum players, not an actual cap
online-mode = true;
force-key-authentication = true;
player-info-forwarding-mode = "modern";
forwarding-secret-file = "forwarding.secret";
announce-forge = false; # lets clients know server supports forge mods
kick-existing-players = false; # kick when multiple connections are made from the same account
ping-passthrough = "DISABLED";
forced-hosts = {
};
};
files."plugins/velocitab/tab_groups.yml".value = {
groups = [
{
name = "default";
headers = [ "<gray>" ];
footers = [ "<gray>connected to <light_purple>%server%<gray>" ];
format = "<white>%prefix%%username% <gray>%server%";
nametag.prefix = "%prefix%";
nametag.suffix = "";
sorting_placeholders = [
"%role_weight%"
"%username_lower%"
];
only_list_players_in_same_server = false;
}
];
};
files."plugins/message/config.toml".value = {
plugin = {
enabled = true;
luckperms-integration = true; # If luckperms is found, use luckperms prefixes and suffixes.
miniplaceholders-integration = true; # If miniplaceholders is present, you can use the MiniPlaceholders placeholders in the messages.
allow-self-message-sending = true; # Allow a player to send messages to themselves.
};
messages = {
message-sent = "<light_purple></light_purple> <gray><sender></gray> <dark_gray></dark_gray> <gray><receiver></gray> <white><message></white>";
message-received = "<light_purple></light_purple> <gray><receiver></gray> <dark_gray></dark_gray> <gray><sender></gray> <white><message></white>";
message-socialspy = "<light_purple> spy</light_purple> <gray><sender></gray> <dark_gray></dark_gray> <gray><receiver></gray> <white><message></white>";
};
aliases = {
message = ["msg" "tell"];
reply = ["r"];
};
error-handlers = { };
developer-info.config-version = 1.2;
};
files."plugins/send/config.toml".value = {
plugin.enabled = true;
servers.server-blacklist = false;
developer-info.config-version = 0.2;
messages = {
send-success-plural="<gray>Sent <light_purple><players></light_purple> players to <light_purple><server></light_purple>.";
send-success-singular="<gray>Sent <light_purple><player></light_purple> to <light_purple><server></light_purple>.";
};
};
};
}