feat(access): map

This commit is contained in:
arcnmx 2024-09-21 22:45:24 -07:00
parent 1a4ab08adc
commit 22f5a3d420
9 changed files with 210 additions and 24 deletions

View file

@ -12,6 +12,7 @@
inherit (lib.meta) getExe;
inherit (config.lib.minecraft) mkAllowPlayerType writeWhiteList writeOps;
cfg = config.services.minecraft-java-server;
defaultPort = 25565;
in {
options.services.minecraft-java-server = with lib.types; {
enable = mkEnableOption "minecraft java edition server";
@ -22,7 +23,7 @@ in {
};
port = mkOption {
type = port;
default = 25565;
default = defaultPort;
};
jre.package = mkPackageOption pkgs "jre" {};
@ -67,7 +68,66 @@ in {
config = let
confService.services.minecraft-java-server = {
# TODO: fill with defaults
serverProperties = mapOptionDefaults {
enable-jmx-monitoring = false;
"rcon.port" = 25575;
level-seed = "";
gamemode = "survival";
enable-command-block = false;
enable-query = false;
generator-settings = {};
enforce-secure-profile = true;
level-name = "world";
motd = "A Minecraft Server";
#"query.port" = defaultPort;
"query.port" = cfg.serverProperties.server-port or defaultPort;
pvp = true;
generate-structures = true;
max-chained-neighbor-updates = 1000000;
difficulty = "easy";
network-compression-threshold = 256;
max-tick-time = 60000;
require-resource-pack = false;
use-native-transport = true;
max-players = 20;
online-mode = true;
enable-status = true;
allow-flight = false;
initial-disabled-packs = "";
broadcast-rcon-to-ops = true;
view-distance = 10;
server-ip = "";
resource-pack-prompt = "";
allow-nether = true;
server-port = defaultPort;
enable-rcon = false;
sync-chunk-writes = true;
op-permission-level = 4;
prevent-proxy-connections = false;
hide-online-players = false;
resource-pack = "";
entity-broadcast-range-percentage = 100;
simulation-distance = 10;
"rcon.password" = "";
player-idle-timeout = 0;
force-gamemode = false;
rate-limit = 0;
hardcore = false;
white-list = false;
broadcast-console-to-ops = true;
spawn-npcs = true;
spawn-animals = true;
log-ips = true;
function-permission-level = 2;
initial-enabled-packs = "vanilla";
level-type = "minecraft\\:normal";
text-filtering-config = "";
spawn-monsters = true;
enforce-whitelist = false;
spawn-protection = 16;
resource-pack-sha1 = "";
max-world-size = 29999984;
};
};
conf.users = mkIf (cfg.user == "minecraft-bedrock") {
@ -100,6 +160,7 @@ in {
requires = ["minecraft-java-server.socket"];
after = ["network.target" "minecraft-java-server.socket"];
restartIfChanged = false;
restartTriggers = [
cfg.dataDir
cfg.jvmOpts

View file

@ -55,6 +55,18 @@ in {
port = mkAlmostOptionDefault config.ports.default.port;
transport = "udp";
};
dynmap = {
enable = mkAlmostOptionDefault false;
port = mkAlmostOptionDefault 8123;
protocol = "http";
listen = mkAlmostOptionDefault "int";
};
bluemap = {
enable = mkAlmostOptionDefault false;
port = mkAlmostOptionDefault 8100;
protocol = "http";
listen = mkAlmostOptionDefault "int";
};
};
};
}