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",
        "paper-1.16.4": "registry.k0.hswaw.net/q3k/minecraft:paper-1.16.4-r1",
    },
    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.4") {
            properties+: {
                motd: "wypierdol z polski kropka pe el",
                "enforce-whitelist": true,
            },
            worldguardConfig+: {
                mobs+: {
                    "block-creeper-block-damage": true,
                },
            },
        },
    },
}
