personal/q3k/minecraft: add worldedit+worldguard

This assumes that a new Docker image will be built at tag spigot-1.15.2-r3.

Change-Id: Ia230510d2400faa3631bde99a96366d72e69a4bd
diff --git a/personal/q3k/minecraft/Dockerfile-vanilla b/personal/q3k/minecraft/Dockerfile-vanilla
index 9ba7478..61852a5 100644
--- a/personal/q3k/minecraft/Dockerfile-vanilla
+++ b/personal/q3k/minecraft/Dockerfile-vanilla
@@ -37,6 +37,9 @@
     rm -rf build ;\
     mv spigot*.jar spigot.jar
 
+ADD worldedit-bukkit-7.1.0.jar .
+ADD worldguard-bukkit-7.0.2.jar .
+
 RUN set -e -x ;\
     VERSION=1.15.2 ;\
     mkdir -p /home/minecraft/.minecraft/versions/${VERSION}/ ;\
diff --git a/personal/q3k/minecraft/LICENSE.thirdparty.txt b/personal/q3k/minecraft/LICENSE.thirdparty.txt
new file mode 100644
index 0000000..4444b16
--- /dev/null
+++ b/personal/q3k/minecraft/LICENSE.thirdparty.txt
@@ -0,0 +1,7 @@
+WorldEdit and WorldGuard are licensed under the terms of the GNU Lesser General
+Public License v3.
+
+Full license texts are available at:
+
+* WorldEdit: https://github.com/EngineHub/WorldEdit/blob/7.1.0/LICENSE.txt
+* WorldGuard: https://github.com/EngineHub/WorldGuard/blob/7.0.2/LICENSE.txt
diff --git a/personal/q3k/minecraft/prod.jsonnet b/personal/q3k/minecraft/prod.jsonnet
index e03bb52..973dfd9 100644
--- a/personal/q3k/minecraft/prod.jsonnet
+++ b/personal/q3k/minecraft/prod.jsonnet
@@ -1,9 +1,10 @@
 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-r2",
+        "spigot-1.15.2": "registry.k0.hswaw.net/q3k/minecraft:spigot-1.15.2-r3",
     },
     server(name, version):: {
         local server = self,
@@ -65,11 +66,17 @@
             "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 &
@@ -93,6 +100,8 @@
             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),
             },
@@ -184,6 +193,11 @@
                 motd: "wypierdol z polski kropka pe el",
                 "enforce-whitelist": true,
             },
+            worldguardConfig+: {
+                mobs+: {
+                    "block-creeper-block-damage": true,
+                },
+            },
         },
     },
 }
diff --git a/personal/q3k/minecraft/worldedit-bukkit-7.1.0.jar b/personal/q3k/minecraft/worldedit-bukkit-7.1.0.jar
new file mode 100644
index 0000000..2f3a1e1
--- /dev/null
+++ b/personal/q3k/minecraft/worldedit-bukkit-7.1.0.jar
Binary files differ
diff --git a/personal/q3k/minecraft/worldguard-bukkit-7.0.2.jar b/personal/q3k/minecraft/worldguard-bukkit-7.0.2.jar
new file mode 100644
index 0000000..1bcc848
--- /dev/null
+++ b/personal/q3k/minecraft/worldguard-bukkit-7.0.2.jar
Binary files differ
diff --git a/personal/q3k/minecraft/worldguard.libsonnet b/personal/q3k/minecraft/worldguard.libsonnet
new file mode 100644
index 0000000..0755fcb
--- /dev/null
+++ b/personal/q3k/minecraft/worldguard.libsonnet
@@ -0,0 +1,190 @@
+{
+    regions: {
+        "uuid-migration": {
+            "perform-on-next-start": false,
+            "keep-names-that-lack-uuids": true,
+        },
+        "use-creature-spawn-event": true,
+        sql: {
+            use: false,
+            dsn: "jdbc:mysql://localhost/worldguard",
+            username: "worldguard",
+            password: "worldguard",
+            "table-prefix": "",
+        },
+        "use-paper-entity-origin": false,
+        enable: true,
+        "invincibility-removes-mobs": false,
+        "cancel-chat-without-recipients": true,
+        "nether-portal-protection": false,
+        "fake-player-build-override": true,
+        "explosion-flags-block-entity-damage": true,
+        "high-frequency-flags": false,
+        "protect-against-liquid-flow": false,
+        wand: "minecraft:leather",
+        "max-claim-volume": 30000,
+        "claim-only-inside-existing-regions": false,
+        "location-flags-only-inside-regions": false,
+        "max-region-count-per-player": {
+            default: 7,
+        },
+    },
+    "auto-invincible": false,
+    "auto-invincible-group": false,
+    "auto-no-drowning-group": false,
+    "use-player-move-event": true,
+    "use-player-teleports": true,
+    "use-particle-effects": true,
+    security: {
+        "deop-everyone-on-join": false,
+        "block-in-game-op-command": false,
+        "host-keys-allow-forge-clients": false,
+    },
+    "host-keys": {},
+    "summary-on-start": true,
+    "op-permissions": true,
+    "build-permission-nodes": {
+        enable: false,
+        "deny-message": "&eSorry, but you are not permitted to do that here.",
+    },
+    "event-handling": {
+        "block-entity-spawns-with-untraceable-cause": false,
+        "interaction-whitelist": [],
+        "emit-block-use-at-feet": [],
+        "ignore-hopper-item-move-events": false,
+    },
+    protection: {
+        "item-durability": true,
+        "remove-infinite-stacks": false,
+        "disable-xp-orb-drops": false,
+        "disable-obsidian-generators": false,
+    },
+    gameplay: {
+        "block-potions": [],
+        "block-potions-overly-reliably": false,
+        "disable-conduit-effects": false,
+    },
+    simulation: {
+        sponge: {
+            enable: false,
+            radius: 3,
+            redstone: false,
+        },
+    },
+    default: {
+        "pumpkin-scuba": false,
+        "disable-health-regain": false,
+    },
+    physics: {
+        "no-physics-gravel": false,
+        "no-physics-sand": false,
+        "vine-like-rope-ladders": false,
+        "allow-portal-anywhere": false,
+        "disable-water-damage-blocks": [],
+    },
+    ignition: {
+        "block-tnt": false,
+        "block-tnt-block-damage": false,
+        "block-lighter": false,
+    },
+    fire: {
+        "disable-lava-fire-spread": false,
+        "disable-all-fire-spread": false,
+        "disable-fire-spread-blocks": [],
+        "lava-spread-blocks": [],
+    },
+    mobs: {
+        "block-creeper-explosions": false,
+        "block-creeper-block-damage": false,
+        "block-wither-explosions": false,
+        "block-wither-block-damage": false,
+        "block-wither-skull-explosions": false,
+        "block-wither-skull-block-damage": false,
+        "block-enderdragon-block-damage": false,
+        "block-enderdragon-portal-creation": false,
+        "block-fireball-explosions": false,
+        "block-fireball-block-damage": false,
+        "anti-wolf-dumbness": false,
+        "allow-tamed-spawns": true,
+        "disable-enderman-griefing": false,
+        "disable-snowman-trails": false,
+        "block-painting-destroy": false,
+        "block-item-frame-destroy": false,
+        "block-armor-stand-destroy": false,
+        "block-plugin-spawning": true,
+        "block-above-ground-slimes": false,
+        "block-other-explosions": false,
+        "block-zombie-door-destruction": false,
+        "block-creature-spawn": [],
+    },
+    "player-damage": {
+        "disable-fall-damage": false,
+        "disable-lava-damage": false,
+        "disable-fire-damage": false,
+        "disable-lightning-damage": false,
+        "disable-drowning-damage": false,
+        "disable-suffocation-damage": false,
+        "disable-contact-damage": false,
+        "teleport-on-suffocation": false,
+        "disable-void-damage": false,
+        "teleport-on-void-falling": false,
+        "reset-fall-on-void-teleport": false,
+        "disable-explosion-damage": false,
+        "disable-mob-damage": false,
+        "disable-death-messages": false,
+    },
+    "chest-protection": {
+        enable: false,
+        "disable-off-check": false,
+    },
+    crops: {
+        "disable-creature-trampling": false,
+        "disable-player-trampling": false,
+    },
+    weather: {
+        "prevent-lightning-strike-blocks": [],
+        "disable-lightning-strike-fire": false,
+        "disable-thunderstorm": false,
+        "disable-weather": false,
+        "disable-pig-zombification": false,
+        "disable-villager-witchification": false,
+        "disable-powered-creepers": false,
+        "always-raining": false,
+        "always-thundering": false,
+    },
+    dynamics: {
+        "disable-mushroom-spread": false,
+        "disable-ice-melting": false,
+        "disable-snow-melting": false,
+        "disable-snow-formation": false,
+        "disable-ice-formation": false,
+        "disable-leaf-decay": false,
+        "disable-grass-growth": false,
+        "disable-mycelium-spread": false,
+        "disable-vine-growth": false,
+        "disable-crop-growth": false,
+        "disable-soil-dehydration": false,
+        "snow-fall-blocks": [],
+    },
+    blacklist: {
+        "use-as-whitelist": false,
+        logging: {
+            console: {
+                enable: true,
+            },
+            database: {
+                enable: false,
+                dsn: "jdbc:mysql://localhost:3306/minecraft",
+                user: "root",
+                pass: "",
+                table: "blacklist_events",
+            },
+            file: {
+                enable: false,
+                path: "worldguard/logs/%Y-%m-%d.log",
+                "open-files": 10,
+            },
+        },
+    },
+    "custom-metrics-charts": true,
+}