local kube = import "../../../kube/kube.libsonnet";
local defaultWorldguardConfig = import "worldguard.libsonnet";

{
    local minecraft = self,
    versions:: {
        "spigot-1.16.1": "registry.k0.hswaw.net/q3k/minecraft:spigot-1.16.1-r2",
        "paper-1.16.1": "registry.k0.hswaw.net/q3k/minecraft:paper-1.16.1-r2",
    },
    server(name, version):: {
        local server = self,
        name:: name,
        version:: version,
        image:: minecraft.versions[server.version],

        metadata:: {
            namespace: "minecraft",
        },

        componentName(component):: "%s-%s" % [server.name, component],

        properties:: {
            "spawn-protection": 16,
            "max-tick-time": 60000,
            "query.port": 25565,
            "generator-settings": "",
            "force-gamemode": false,
            "allow-nether": true,
            "enforce-whitelist": false,
            "gamemode": "survival",
            "broadcast-console-to-ops": true,
            "enable-query": false,
            "player-idle-timeout": 0,
            "difficulty": "easy",
            "broadcast-rcon-to-ops": true,
            "spawn-monsters": true,
            "op-permission-level": 4,
            "pvp": true,
            "snooper-enabled": true,
            "level-type": "default",
            "hardcore": false,
            "enable-command-block": false,
            "network-compression-threshold": 256,
            "max-players": 20,
            "max-world-size": 29999984,
            "resource-pack-sha1": "",
            "function-permission-level": 2,
            "rcon.port": 25575,
            "server-port": 25565,
            "debug": false,
            "server-ip": "",
            "spawn-npcs": true,
            "allow-flight": false,
            "level-name": "world",
            "view-distance": 10,
            "resource-pack": "",
            "spawn-animals": true,
            "white-list": false,
            "rcon.password": "",
            "generate-structures": true,
            "online-mode": true,
            "max-build-height": 256,
            "level-seed": "",
            "prevent-proxy-connections": false,
            "use-native-transport": true,
            "motd": "A Minecraft Server",
            "enable-rcon": false,
        },

        worldguardConfig:: defaultWorldguardConfig,

        startsh:: |||
            #!/usr/bin/env bash
            cd /home/minecraft/world
            cp /home/minecraft/config/server.properties .
            cp /home/minecraft/server.jar .
            mkdir -p plugins/WorldGuard
            cp /home/minecraft/worldedit-*.jar plugins
            cp /home/minecraft/worldguard-*.jar plugins
            cp /home/minecraft/config/worldguard_config.yaml plugins/WorldGuard/config.yml
            echo "eula=true" > eula.txt

            bash /home/minecraft/config/overviewer.sh &
            exec java -Xmx4G -Xms4G -jar server.jar
        |||,

        overviewersh:: |||
            #!/usr/bin/env bash
            mkdir -p overviewer/world
            sleep 60
            while true; do
                echo "Rendering Overviewer map..."
                overviewer.py -p 1 --rendermodes=normal,lighting,smooth-lighting,cave world overviewer/world
                echo "Done."
                sleep 900
            done
        |||,

        secretProperties: kube.Secret(server.componentName("properties")) {
            metadata+: server.metadata,
            data: {
                local properties = std.join("\n", ["%s=%s" % [k, std.toString(server.properties[k])] for k in std.objectFields(server.properties)]),
                "server.properties": std.base64(properties),
                local worldguardConfig = std.manifestYamlDoc(server.worldguardConfig),
                "worldguard_config.yaml": std.base64(worldguardConfig),
                "start.sh": std.base64(server.startsh),
                "overviewer.sh": std.base64(server.overviewersh),
            },
        },

        worldVolume: kube.PersistentVolumeClaim(server.componentName("world")) {
            metadata+: server.metadata,
            spec+: {
                storageClassName: "waw-hdd-redundant-3",
                accessModes: ["ReadWriteOnce"],
                resources: {
                    requests: {
                        storage: "10Gi",
                    },
                },
            },
        },

        deploy: kube.Deployment(server.componentName("deploy")) {
            metadata+: server.metadata,
            spec+: {
                template+: {
                    spec+: {
                        volumes_: {
                            config: kube.SecretVolume(server.secretProperties),
                            world: kube.PersistentVolumeClaimVolume(server.worldVolume),
                        },
                        containers_: {
                            default: kube.Container("default") {
                                image: server.image,
                                command: [
                                    "bash", "/home/minecraft/config/start.sh",
                                ],
                                volumeMounts_: {
                                    config: { mountPath: "/home/minecraft/config" },
                                    world: { mountPath: "/home/minecraft/world" },
                                },
                                ports_: {
                                    minecraft: { containerPort: 25565 },
                                    grpc: { containerPort: 2137 },
                                },
                                resources: {
                                    requests: {
                                        memory: "6G",
                                        cpu: "2",
                                    },
                                    limits: {
                                        memory: "6G",
                                        cpu: "4",
                                    },
                                },
                            },
                            overviewer: kube.Container("overviewer") {
                                image: "halverneus/static-file-server:v1.8.0",
                                env_: {
                                    FOLDER: "/home/minecraft/world/overviewer/world",
                                },
                                volumeMounts_: {
                                    world: { mountPath: "/home/minecraft/world" },
                                },
                                ports_: {
                                    web: { containerPort: 8080 },
                                },
                            },
                            bridge: kube.Container("bridge") {
                                image: "registry.k0.hswaw.net/q3k/minecraft-hscloud-bridge:20200518c",
                                command: [
                                    "/personal/q3k/minecraft/plugin/hscloud/bridge/bridge",
                                    "-plugin", "127.0.0.1:2137",
                                ],
                                ports_: {
                                    bridge: { containerPort: 8081 },
                                },
                            },
                        },
                    },
                },
            },
        },

        svc: kube.Service(server.componentName("svc")) {
            metadata+: server.metadata,
            target_pod:: server.deploy.spec.template,
            spec+: {
                ports: [
                    { name: "minecraft", port: 25565, targetPort: 25565, protocol: "TCP" },
                    { name: "web", port: 80, targetPort: 8080, protocol: "TCP" },
                    { name: "bridge", port: 8080, targetPort: 8081, protocol: "TCP" },
                    { name: "grpc", port: 2137, targetPort: 2137, protocol: "TCP" },
                ],
                type: "LoadBalancer",
                externalTrafficPolicy: "Local",
            },
        },
    },

    ns: kube.Namespace("minecraft"),

    q3k: {
        survival: minecraft.server("q3k-survival", "paper-1.16.1") {
            properties+: {
                motd: "wypierdol z polski kropka pe el",
                "enforce-whitelist": true,
            },
            worldguardConfig+: {
                mobs+: {
                    "block-creeper-block-damage": true,
                },
            },
        },
    },
}
