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

{
    local minecraft = self,
    versions:: {
        "spigot-1.15.2": "registry.k0.hswaw.net/q3k/minecraft:spigot-1.15.2-r3",
    },
    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/spigot.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 spigot.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", "spigot-1.15.2") {
            properties+: {
                motd: "wypierdol z polski kropka pe el",
                "enforce-whitelist": true,
            },
            worldguardConfig+: {
                mobs+: {
                    "block-creeper-block-damage": true,
                },
            },
        },
    },
}
