minecraft: add CTM server

Change-Id: Ic4590bbab4cdbefe0db05f1026363b11f7973794
diff --git a/personal/q3k/minecraft/Dockerfile-paper b/personal/q3k/minecraft/Dockerfile-paper
index d9b6c67..9f4db69 100644
--- a/personal/q3k/minecraft/Dockerfile-paper
+++ b/personal/q3k/minecraft/Dockerfile-paper
@@ -4,7 +4,7 @@
     export DEBIAN_FRONTEND=noninteractive ;\
     apt-get -y update ;\
     apt-get -y upgrade ;\
-    apt-get -y install git openjdk-8-jre-headless wget
+    apt-get -y install git openjdk-8-jre-headless wget unzip
 
 RUN set -e -x ;\
     export DEBIAN_FRONTEND=noninteractive ;\
@@ -26,7 +26,7 @@
 
 USER minecraft
 WORKDIR /home/minecraft
-ARG VERSION=1.16.4
+ARG VERSION=1.16.5
 
 RUN set -e -x ;\
     wget --quiet https://papermc.io/api/v1/paper/${VERSION}/latest/download ;\
diff --git a/personal/q3k/minecraft/prod.jsonnet b/personal/q3k/minecraft/prod.jsonnet
index 6c4bd4b..dfadbc3 100644
--- a/personal/q3k/minecraft/prod.jsonnet
+++ b/personal/q3k/minecraft/prod.jsonnet
@@ -7,12 +7,15 @@
         "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",
+        "paper-1.16.5": "registry.k0.hswaw.net/q3k/minecraft:paper-1.16.5-r2",
     },
     server(name, version):: {
         local server = self,
         name:: name,
         version:: version,
         image:: minecraft.versions[server.version],
+        worldedit:: true,
+        overviewer:: true,
 
         metadata:: {
             namespace: "minecraft",
@@ -70,20 +73,25 @@
 
         worldguardConfig:: defaultWorldguardConfig,
 
+        startSteps:: [
+        ] + (if server.worldedit then [
+            "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",
+        ] else []),
+
         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
+            %s
 
             bash /home/minecraft/config/overviewer.sh &
             exec java -Xmx4G -Xms4G -jar server.jar
-        |||,
+        ||| % [std.join("\n", server.startSteps)],
 
         overviewersh:: |||
             #!/usr/bin/env bash
@@ -102,11 +110,13 @@
             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),
+                "start.sh": std.base64(server.startsh),
+            } + (if server.worldedit then {
                 local worldguardConfig = std.manifestYamlDoc(server.worldguardConfig),
                 "worldguard_config.yaml": std.base64(worldguardConfig),
-                "start.sh": std.base64(server.startsh),
+            } else {} )+ (if server.overviewer then {
                 "overviewer.sh": std.base64(server.overviewersh),
-            },
+            } else {}),
         },
 
         worldVolume: kube.PersistentVolumeClaim(server.componentName("world")) {
@@ -156,6 +166,17 @@
                                     },
                                 },
                             },
+                            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 },
+                                },
+                            },
+                        } + (if server.overviewer then {
                             overviewer: kube.Container("overviewer") {
                                 image: "halverneus/static-file-server:v1.8.0",
                                 env_: {
@@ -168,17 +189,7 @@
                                     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 },
-                                },
-                            },
-                        },
+                        } else {}),
                     },
                 },
             },
@@ -203,16 +214,34 @@
     ns: kube.Namespace("minecraft"),
 
     q3k: {
-        survival: minecraft.server("q3k-survival", "paper-1.16.4") {
+        "nova-arcana": minecraft.server("q3k-nova-arcana", "paper-1.16.5") {
+            overviewer: false,
+            worldedit: false,
             properties+: {
-                motd: "wypierdol z polski kropka pe el",
-                "enforce-whitelist": true,
+                motd: "Nova Arcana V1.1.4",
+                //"enforce-whitelist": true,
+                "enable-rcon": "true",
+                "rcon.password": "dupa.8",
             },
-            worldguardConfig+: {
-                mobs+: {
-                    "block-creeper-block-damage": true,
-                },
-            },
+            startSteps+: [
+                |||
+                    if [ ! -e world/map-installed.txt ]; then
+                        set -e -x
+                        mkdir -p world
+                        cd world
+                        rm -rf *
+                        wget https://object.ceph-waw3.hswaw.net/q3k-personal/f1a73ad0518a2629a5bed072a7de4e4534a3c89705d6cea2f203a05cccd01634.zip -O map.zip
+                        unzip -o map.zip
+                        mv Untold*/* .
+                        rm -rf Untold*
+                        rm map.zip
+                        touch map-installed.txt
+                        ls -la
+                        cd ..
+                        set +e +x
+                    fi
+                |||
+            ],
         },
     },
 }