Skip to content

Instantly share code, notes, and snippets.

@orangemn6
Last active January 21, 2021 04:08
Show Gist options
  • Save orangemn6/e77303915cae7d290e3aa990c369e0ee to your computer and use it in GitHub Desktop.
Save orangemn6/e77303915cae7d290e3aa990c369e0ee to your computer and use it in GitHub Desktop.
MineColab
Display the source blob
Display the rendered blob
Raw
{
"nbformat": 4,
"nbformat_minor": 0,
"metadata": {
"colab": {
"name": "MineColab",
"provenance": [],
"collapsed_sections": [],
"toc_visible": true,
"include_colab_link": true
},
"kernelspec": {
"name": "python3",
"display_name": "Python 3"
}
},
"cells": [
{
"cell_type": "markdown",
"metadata": {
"id": "view-in-github",
"colab_type": "text"
},
"source": [
"<a href=\"https://colab.research.google.com/gist/orangemn6/e77303915cae7d290e3aa990c369e0ee/minecolab.ipynb\" target=\"_parent\"><img src=\"https://colab.research.google.com/assets/colab-badge.svg\" alt=\"Open In Colab\"/></a>"
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "ZktjRJuZp1h6"
},
"source": [
"```\n",
"███╗ ███╗██╗███╗ ██╗███████╗ ██████╗ ██████╗ ██╗ █████╗ ██████╗ \n",
"████╗ ████║██║████╗ ██║██╔════╝██╔════╝██╔═══██╗██║ ██╔══██╗██╔══██╗\n",
"██╔████╔██║██║██╔██╗ ██║█████╗ ██║ ██║ ██║██║ ███████║██████╔╝\n",
"██║╚██╔╝██║██║██║╚██╗██║██╔══╝ ██║ ██║ ██║██║ ██╔══██║██╔══██╗\n",
"██║ ╚═╝ ██║██║██║ ╚████║███████╗╚██████╗╚██████╔╝███████╗██║ ██║██████╔╝\n",
"╚═╝ ╚═╝╚═╝╚═╝ ╚═══╝╚══════╝ ╚═════╝ ╚═════╝ ╚══════╝╚═╝ ╚═╝╚═════╝ \n",
"```\n",
"**Run a Minecraft Server on Google Colab!**\n",
"\n",
"---\n",
"\n",
"The script below will run your server. You'll have to create a server first to be able to use it - don't worry, the scripts below will do the majority of the work for you."
]
},
{
"cell_type": "code",
"metadata": {
"id": "lqtMoYg0dUmu",
"colab": {
"base_uri": "https://localhost:8080/"
},
"outputId": "2f87ee72-129a-4959-ef9d-83762c5e4a9a"
},
"source": [
"!pip -q install pyngrok\n",
"\n",
"import os\n",
"import re\n",
"from pyngrok import ngrok\n",
"# Update the package lists\n",
"!sudo apt update &>/dev/null && echo \"apt cache successfully updated\" || echo \"apt cache update failed, you might receive stale packages\"\n",
"# Install OpenJDK 15\n",
"!wget -qO - https://adoptopenjdk.jfrog.io/adoptopenjdk/api/gpg/key/public | sudo apt-key add -\n",
"!sudo add-apt-repository --yes https://adoptopenjdk.jfrog.io/adoptopenjdk/deb/ &>/dev/null || echo \"Failed to add repo. Still can be ignored if openjdk15 gets installed.\"\n",
"!sudo apt-get install adoptopenjdk-15-hotspot-jre &>/dev/null && echo \"Yay! Openjdk15 has been successfully installed.\" || echo \"Failed to install OpenJdk15.\"\n",
"#Perform java version check\n",
"java_ver = !java -version 2>&1 | awk -F[\\\"\\.] -v OFS=. 'NR==1{print $2}'\n",
"if java_ver[0] == \"15\" :\n",
" print(\"Openjdk15 is working correctly, you are good to go.\")\n",
"else:\n",
" print(\"Openjdk15 doesn't seems to be installed or isn't working, falling back to java\", java[0], \". You might experience reduced performance.\")\n",
"\n",
"\n",
"# Mount Google Drive\n",
"from google.colab import drive\n",
"drive.mount('/content/drive')\n",
"\n",
"# Ask for the ngrok authtoken\n",
"print(\"Get your authtoken from https://dashboard.ngrok.com/auth\")\n",
"import getpass\n",
"authtoken = getpass.getpass() # input your Ngrok auth token everytime you run the cell or simply replace \"getpass.getpass()\" with your token in \"double quotes\"\n",
"! ngrok authtoken $authtoken # login to ngrok\n",
"\n",
"# Connect to ngrok\n",
"url = ngrok.connect(25565, 'tcp')\n",
"print('Your server address is ' + ((str(url).split('\"')[1::2])[0]).replace('tcp://', ''))\n",
"\n",
"# Change directory to the Minecraft server folder on Google Drive\n",
"%cd \"/content/drive/My Drive/Minecraft-server\"\n",
"!ls #list the directory contents (to verify that working directory was changed)\n",
"\n",
"print('Starting server...')\n",
"!java -Xmx6144M -Xms6144M -XX:+UseG1GC -XX:+ParallelRefProcEnabled -XX:MaxGCPauseMillis=200 -XX:+UnlockExperimentalVMOptions -XX:+DisableExplicitGC -XX:+AlwaysPreTouch -XX:G1NewSizePercent=30 -XX:G1MaxNewSizePercent=40 -XX:G1HeapRegionSize=8M -XX:G1ReservePercent=20 -XX:G1HeapWastePercent=5 -XX:G1MixedGCCountTarget=4 -XX:InitiatingHeapOccupancyPercent=15 -XX:G1MixedGCLiveThresholdPercent=90 -XX:G1RSetUpdatingPauseTimePercent=5 -XX:SurvivorRatio=32 -XX:+PerfDisableSharedMem -XX:MaxTenuringThreshold=1 -Dusing.aikars.flags=https://mcflags.emc.gs -Daikars.new.flags=true -jar server.jar nogui\n"
],
"execution_count": 3,
"outputs": [
{
"output_type": "stream",
"text": [
"apt cache successfully updated\n",
"OK\n",
"Yay! Openjdk15 has been successfully installed.\n",
"Openjdk15 is working correctly, you are good to go.\n",
"Drive already mounted at /content/drive; to attempt to forcibly remount, call drive.mount(\"/content/drive\", force_remount=True).\n",
"Get your authtoken from https://dashboard.ngrok.com/auth\n",
"··········\n",
"Authtoken saved to configuration file: /root/.ngrok2/ngrok.yml\n",
"Your server address is 0.tcp.ngrok.io:15781\n",
"/content/drive/My Drive/Minecraft-server\n",
"banned-ips.json ngrok\t\t\t spigot.yml\n",
"banned-players.json ngrok-stable-linux-amd64.zip usercache.json\n",
"bukkit.yml\t ops.json\t\t\t version_history.json\n",
"cache\t\t paper.yml\t\t\t whitelist.json\n",
"commands.yml\t permissions.yml\t\t world\n",
"eula.txt\t plugins\t\t\t world_nether\n",
"help.yml\t server.jar\t\t\t world_the_end\n",
"logs\t\t server.properties\n",
"Starting server...\n",
"System Info: Java 15 (OpenJDK 64-Bit Server VM 15.0.1+9) Host: Linux 4.19.112+ (amd64)\n",
"Loading libraries, please wait...\n",
"[14:20:56 INFO]: Environment: authHost='https://authserver.mojang.com', accountsHost='https://api.mojang.com', sessionHost='https://sessionserver.mojang.com', name='PROD'\n",
"[14:20:58 INFO]: Reloading ResourceManager: Default, bukkit\n",
"[14:20:59 INFO]: Loaded 7 recipes\n",
"[14:21:01 INFO]: Starting minecraft server version 1.16.3\n",
"[14:21:01 INFO]: Loading properties\n",
"[14:21:02 INFO]: This server is running Paper version git-Paper-253 (MC: 1.16.3) (Implementing API version 1.16.3-R0.1-SNAPSHOT)\n",
"\u001b[K[14:21:03 INFO]: Debug logging is disabled\n",
"\u001b[K[14:21:03 INFO]: Using 4 threads for Netty based IO\n",
"\u001b[K[14:21:03 INFO]: Server Ping Player Sample Count: 12\n",
"\u001b[K[14:21:03 INFO]: Default game type: CREATIVE\n",
"\u001b[K[14:21:03 INFO]: Generating keypair\n",
"\u001b[K[14:21:04 INFO]: Starting Minecraft server on *:25565\n",
"\u001b[K[14:21:04 INFO]: Using epoll channel type\n",
"\u001b[K[14:21:04 INFO]: Server permissions file permissions.yml is empty, ignoring it\n",
"\u001b[K\u001b[33;1m[14:21:04 WARN]: **** SERVER IS RUNNING IN OFFLINE/INSECURE MODE!\n",
"\u001b[K\u001b[33;1m[14:21:04 WARN]: The server will make no attempt to authenticate usernames. Beware.\n",
"\u001b[K\u001b[33;1m[14:21:04 WARN]: While this makes the game possible to play without internet access, it also opens up the ability for hackers to connect with any username they choose.\n",
"\u001b[K\u001b[33;1m[14:21:04 WARN]: To change this, set \"online-mode\" to \"true\" in the server.properties file.\n",
"\u001b[K[14:21:04 INFO]: Preparing level \"world\"\n",
"\u001b[K[14:21:04 INFO]: -------- World Settings For [world] --------\n",
"\u001b[K[14:21:04 INFO]: Item Merge Radius: 2.5\n",
"\u001b[K[14:21:04 INFO]: Allow Zombie Pigmen to spawn from portal blocks: true\n",
"\u001b[K[14:21:04 INFO]: Item Despawn Rate: 6000\n",
"\u001b[K[14:21:04 INFO]: View Distance: 10\n",
"\u001b[K[14:21:04 INFO]: Nerfing mobs spawned from spawners: false\n",
"\u001b[K[14:21:04 INFO]: Entity Tracking Range: Pl 48 / An 48 / Mo 48 / Mi 32 / Other 64\n",
"\u001b[K[14:21:04 INFO]: Experience Merge Radius: 3.0\n",
"\u001b[K[14:21:04 INFO]: Hopper Transfer: 8 Hopper Check: 1 Hopper Amount: 1\n",
"\u001b[K[14:21:04 INFO]: Max TNT Explosions: 100\n",
"\u001b[K[14:21:04 INFO]: Tile Max Tick Time: 50ms Entity max Tick Time: 50ms\n",
"\u001b[K[14:21:04 INFO]: Mob Spawn Range: 8\n",
"\u001b[K[14:21:04 INFO]: Zombie Aggressive Towards Villager: true\n",
"\u001b[K[14:21:04 INFO]: Arrow Despawn Rate: 1200 Trident Respawn Rate:1200\n",
"\u001b[K[14:21:04 INFO]: Custom Map Seeds: Village: 10387312 Desert: 14357617 Igloo: 14357618 Jungle: 14357619 Swamp: 14357620 Monument: 10387313 Ocean: 14357621 Shipwreck: 165745295 End City: 10387313 Slime: 987234911 Bastion: 30084232 Fortress: 30084232 Mansion: 10387319 Fossil: 14357921 Portal: 34222645\n",
"\u001b[K[14:21:04 INFO]: Cactus Growth Modifier: 100%\n",
"\u001b[K[14:21:04 INFO]: Cane Growth Modifier: 100%\n",
"\u001b[K[14:21:04 INFO]: Melon Growth Modifier: 100%\n",
"\u001b[K[14:21:04 INFO]: Mushroom Growth Modifier: 100%\n",
"\u001b[K[14:21:04 INFO]: Pumpkin Growth Modifier: 100%\n",
"\u001b[K[14:21:04 INFO]: Sapling Growth Modifier: 100%\n",
"\u001b[K[14:21:04 INFO]: Beetroot Growth Modifier: 100%\n",
"\u001b[K[14:21:04 INFO]: Carrot Growth Modifier: 100%\n",
"\u001b[K[14:21:04 INFO]: Potato Growth Modifier: 100%\n",
"\u001b[K[14:21:04 INFO]: Wheat Growth Modifier: 100%\n",
"\u001b[K[14:21:04 INFO]: NetherWart Growth Modifier: 100%\n",
"\u001b[K[14:21:04 INFO]: Vine Growth Modifier: 100%\n",
"\u001b[K[14:21:04 INFO]: Cocoa Growth Modifier: 100%\n",
"\u001b[K[14:21:04 INFO]: Bamboo Growth Modifier: 100%\n",
"\u001b[K[14:21:04 INFO]: SweetBerry Growth Modifier: 100%\n",
"\u001b[K[14:21:04 INFO]: Kelp Growth Modifier: 100%\n",
"\u001b[K[14:21:04 INFO]: Entity Activation Range: An 32 / Mo 32 / Ra 48 / Mi 16 / Tiv true\n",
"\u001b[K[14:21:05 INFO]: -------- World Settings For [world_nether] --------\n",
"\u001b[K[14:21:05 INFO]: Item Merge Radius: 2.5\n",
"\u001b[K[14:21:05 INFO]: Allow Zombie Pigmen to spawn from portal blocks: true\n",
"\u001b[K[14:21:05 INFO]: Item Despawn Rate: 6000\n",
"\u001b[K[14:21:05 INFO]: View Distance: 10\n",
"\u001b[K[14:21:05 INFO]: Nerfing mobs spawned from spawners: false\n",
"\u001b[K[14:21:05 INFO]: Entity Tracking Range: Pl 48 / An 48 / Mo 48 / Mi 32 / Other 64\n",
"\u001b[K[14:21:05 INFO]: Experience Merge Radius: 3.0\n",
"\u001b[K[14:21:05 INFO]: Hopper Transfer: 8 Hopper Check: 1 Hopper Amount: 1\n",
"\u001b[K[14:21:05 INFO]: Max TNT Explosions: 100\n",
"\u001b[K[14:21:05 INFO]: Tile Max Tick Time: 50ms Entity max Tick Time: 50ms\n",
"\u001b[K[14:21:05 INFO]: Mob Spawn Range: 8\n",
"\u001b[K[14:21:05 INFO]: Zombie Aggressive Towards Villager: true\n",
"\u001b[K[14:21:05 INFO]: Arrow Despawn Rate: 1200 Trident Respawn Rate:1200\n",
"\u001b[K[14:21:05 INFO]: Custom Map Seeds: Village: 10387312 Desert: 14357617 Igloo: 14357618 Jungle: 14357619 Swamp: 14357620 Monument: 10387313 Ocean: 14357621 Shipwreck: 165745295 End City: 10387313 Slime: 987234911 Bastion: 30084232 Fortress: 30084232 Mansion: 10387319 Fossil: 14357921 Portal: 34222645\n",
"\u001b[K[14:21:05 INFO]: Cactus Growth Modifier: 100%\n",
"\u001b[K[14:21:05 INFO]: Cane Growth Modifier: 100%\n",
"\u001b[K[14:21:05 INFO]: Melon Growth Modifier: 100%\n",
"\u001b[K[14:21:05 INFO]: Mushroom Growth Modifier: 100%\n",
"\u001b[K[14:21:05 INFO]: Pumpkin Growth Modifier: 100%\n",
"\u001b[K[14:21:05 INFO]: Sapling Growth Modifier: 100%\n",
"\u001b[K[14:21:05 INFO]: Beetroot Growth Modifier: 100%\n",
"\u001b[K[14:21:05 INFO]: Carrot Growth Modifier: 100%\n",
"\u001b[K[14:21:05 INFO]: Potato Growth Modifier: 100%\n",
"\u001b[K[14:21:05 INFO]: Wheat Growth Modifier: 100%\n",
"\u001b[K[14:21:05 INFO]: NetherWart Growth Modifier: 100%\n",
"\u001b[K[14:21:05 INFO]: Vine Growth Modifier: 100%\n",
"\u001b[K[14:21:05 INFO]: Cocoa Growth Modifier: 100%\n",
"\u001b[K[14:21:05 INFO]: Bamboo Growth Modifier: 100%\n",
"\u001b[K[14:21:05 INFO]: SweetBerry Growth Modifier: 100%\n",
"\u001b[K[14:21:05 INFO]: Kelp Growth Modifier: 100%\n",
"\u001b[K[14:21:05 INFO]: Entity Activation Range: An 32 / Mo 32 / Ra 48 / Mi 16 / Tiv true\n",
"\u001b[K[14:21:06 INFO]: -------- World Settings For [world_the_end] --------\n",
"\u001b[K[14:21:06 INFO]: Item Merge Radius: 2.5\n",
"\u001b[K[14:21:06 INFO]: Allow Zombie Pigmen to spawn from portal blocks: true\n",
"\u001b[K[14:21:06 INFO]: Item Despawn Rate: 6000\n",
"\u001b[K[14:21:06 INFO]: View Distance: 10\n",
"\u001b[K[14:21:06 INFO]: Nerfing mobs spawned from spawners: false\n",
"\u001b[K[14:21:06 INFO]: Entity Tracking Range: Pl 48 / An 48 / Mo 48 / Mi 32 / Other 64\n",
"\u001b[K[14:21:06 INFO]: Experience Merge Radius: 3.0\n",
"\u001b[K[14:21:06 INFO]: Hopper Transfer: 8 Hopper Check: 1 Hopper Amount: 1\n",
"\u001b[K[14:21:06 INFO]: Max TNT Explosions: 100\n",
"\u001b[K[14:21:06 INFO]: Tile Max Tick Time: 50ms Entity max Tick Time: 50ms\n",
"\u001b[K[14:21:06 INFO]: Mob Spawn Range: 8\n",
"\u001b[K[14:21:06 INFO]: Zombie Aggressive Towards Villager: true\n",
"\u001b[K[14:21:06 INFO]: Arrow Despawn Rate: 1200 Trident Respawn Rate:1200\n",
"\u001b[K[14:21:06 INFO]: Custom Map Seeds: Village: 10387312 Desert: 14357617 Igloo: 14357618 Jungle: 14357619 Swamp: 14357620 Monument: 10387313 Ocean: 14357621 Shipwreck: 165745295 End City: 10387313 Slime: 987234911 Bastion: 30084232 Fortress: 30084232 Mansion: 10387319 Fossil: 14357921 Portal: 34222645\n",
"\u001b[K[14:21:06 INFO]: Cactus Growth Modifier: 100%\n",
"\u001b[K[14:21:06 INFO]: Cane Growth Modifier: 100%\n",
"\u001b[K[14:21:06 INFO]: Melon Growth Modifier: 100%\n",
"\u001b[K[14:21:06 INFO]: Mushroom Growth Modifier: 100%\n",
"\u001b[K[14:21:06 INFO]: Pumpkin Growth Modifier: 100%\n",
"\u001b[K[14:21:06 INFO]: Sapling Growth Modifier: 100%\n",
"\u001b[K[14:21:06 INFO]: Beetroot Growth Modifier: 100%\n",
"\u001b[K[14:21:06 INFO]: Carrot Growth Modifier: 100%\n",
"\u001b[K[14:21:06 INFO]: Potato Growth Modifier: 100%\n",
"\u001b[K[14:21:06 INFO]: Wheat Growth Modifier: 100%\n",
"\u001b[K[14:21:06 INFO]: NetherWart Growth Modifier: 100%\n",
"\u001b[K[14:21:06 INFO]: Vine Growth Modifier: 100%\n",
"\u001b[K[14:21:06 INFO]: Cocoa Growth Modifier: 100%\n",
"\u001b[K[14:21:06 INFO]: Bamboo Growth Modifier: 100%\n",
"\u001b[K[14:21:06 INFO]: SweetBerry Growth Modifier: 100%\n",
"\u001b[K[14:21:06 INFO]: Kelp Growth Modifier: 100%\n",
"\u001b[K[14:21:06 INFO]: Entity Activation Range: An 32 / Mo 32 / Ra 48 / Mi 16 / Tiv true\n",
"\u001b[K[14:21:07 INFO]: Preparing start region for dimension minecraft:overworld\n",
"\u001b[K[14:21:08 INFO]: Loaded 0 spawn chunks for world world\n",
"\u001b[K[14:21:08 INFO]: Preparing spawn area: 0%\n",
"\u001b[K[14:21:08 INFO]: Preparing spawn area: 0%\n",
"\u001b[K[14:21:08 INFO]: Preparing spawn area: 0%\n",
"\u001b[K[14:21:08 INFO]: Time elapsed: 1444 ms\n",
"\u001b[K[14:21:08 INFO]: Preparing start region for dimension minecraft:the_nether\n",
"\u001b[K[14:21:08 INFO]: Loaded 0 spawn chunks for world world_nether\n",
"\u001b[K[14:21:08 INFO]: Time elapsed: 190 ms\n",
"\u001b[K[14:21:08 INFO]: Preparing start region for dimension minecraft:the_end\n",
"\u001b[K[14:21:18 INFO]: Loaded 0 spawn chunks for world world_the_end\n",
"\u001b[K[14:21:18 INFO]: Preparing spawn area: 0%\n",
"\u001b[K[14:21:18 INFO]: Preparing spawn area: 0%\n",
"\u001b[K[14:21:18 INFO]: Preparing spawn area: 0%\n",
"\u001b[K[14:21:18 INFO]: Preparing spawn area: 0%\n",
"\u001b[K[14:21:18 INFO]: Preparing spawn area: 0%\n",
"\u001b[K[14:21:18 INFO]: Preparing spawn area: 0%\n",
"\u001b[K[14:21:18 INFO]: Preparing spawn area: 0%\n",
"\u001b[K[14:21:18 INFO]: Preparing spawn area: 0%\n",
"\u001b[K[14:21:18 INFO]: Preparing spawn area: 0%\n",
"\u001b[K[14:21:18 INFO]: Preparing spawn area: 0%\n",
"\u001b[K[14:21:18 INFO]: Preparing spawn area: 0%\n",
"\u001b[K[14:21:18 INFO]: Preparing spawn area: 0%\n",
"\u001b[K[14:21:18 INFO]: Preparing spawn area: 0%\n",
"\u001b[K[14:21:18 INFO]: Preparing spawn area: 0%\n",
"\u001b[K[14:21:18 INFO]: Preparing spawn area: 0%\n",
"\u001b[K[14:21:18 INFO]: Preparing spawn area: 0%\n",
"\u001b[K[14:21:18 INFO]: Preparing spawn area: 0%\n",
"\u001b[K[14:21:18 INFO]: Preparing spawn area: 0%\n",
"\u001b[K[14:21:18 INFO]: Preparing spawn area: 0%\n",
"\u001b[K[14:21:18 INFO]: Preparing spawn area: 0%\n",
"\u001b[K[14:21:18 INFO]: Preparing spawn area: 0%\n",
"\u001b[K[14:21:21 INFO]: Preparing spawn area: 0%\n",
"\u001b[K[14:21:21 INFO]: Preparing spawn area: 0%\n",
"\u001b[K[14:21:21 INFO]: Preparing spawn area: 0%\n",
"\u001b[K[14:21:21 INFO]: Preparing spawn area: 0%\n",
"\u001b[K[14:21:21 INFO]: Preparing spawn area: 0%\n",
"\u001b[K[14:21:21 INFO]: Time elapsed: 12649 ms\n",
"\u001b[K[14:21:21 INFO]: Running delayed init tasks\n",
"\u001b[K[14:21:21 INFO]: Done (19.846s)! For help, type \"help\"\n",
"\u001b[K[14:21:21 INFO]: Timings Reset\n",
">....[14:21:23 INFO]: Stopping server\n",
"[14:21:23 INFO]: Saving players\n",
"[14:21:23 INFO]: Saving worlds\n",
"[14:21:23 INFO]: Saving chunks for level 'ServerLevel[world]'/minecraft:overworld\n",
"[14:21:31 INFO]: ThreadedAnvilChunkStorage (world): All chunks are saved\n",
"[14:21:31 INFO]: Saving chunks for level 'ServerLevel[world_nether]'/minecraft:the_nether\n",
"[14:21:38 INFO]: ThreadedAnvilChunkStorage (DIM-1): All chunks are saved\n",
"[14:21:38 INFO]: Saving chunks for level 'ServerLevel[world_the_end]'/minecraft:the_end\n",
"[14:21:40 INFO]: ThreadedAnvilChunkStorage (DIM1): All chunks are saved\n",
"[14:21:40 INFO]: ThreadedAnvilChunkStorage (world): All chunks are saved\n",
"[14:21:40 INFO]: ThreadedAnvilChunkStorage (DIM-1): All chunks are saved\n",
"[14:21:40 INFO]: ThreadedAnvilChunkStorage (DIM1): All chunks are saved\n",
"[14:21:40 INFO]: Flushing Chunk IO\n",
"[14:21:40 INFO]: Closing Thread Pool\n",
"[14:21:40 INFO]: Closing Server\n"
],
"name": "stdout"
}
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "_4IowSDVUZp8"
},
"source": [
"# Make-a-Server\n",
"\n",
"The code below will download a server for you and accept the EULA. After running these scripts, your server will be ready to run."
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "7wrNfinQOlWV"
},
"source": [
"**Download the Minecraft server**\n",
"\n",
"The code below will download Paper, a high-performance fork of the Vanilla server."
]
},
{
"cell_type": "code",
"metadata": {
"id": "Fy5-YjJMPV3S",
"colab": {
"base_uri": "https://localhost:8080/"
},
"outputId": "e00f6aba-a7c9-4f99-b4aa-9400e51bacd3"
},
"source": [
"# Replace \"1.16.4\" with your desired server version.\n",
"# Available versions:\n",
"# - 1.16.4\n",
"# - 1.16.3\n",
"# - 1.15.2\n",
"# - 1.14.4\n",
"# - 1.13.2\n",
"# - 1.12.2\n",
"# - 1.11.2\n",
"# - 1.10.2\n",
"# - 1.9.4\n",
"# - 1.8.8\n",
"# Newer versions might work too, however this isn't guaranteed.\n",
"version = '1.16.3'\n",
"\n",
"from google.colab import drive\n",
"import requests\n",
"\n",
"drive.mount('/content/drive')\n",
"\n",
"# Create the directory which will be used for the server\n",
"! mkdir \"/content/drive/My Drive/Minecraft-server\"\n",
"\n",
"print('Downloading to Google Drive...')\n",
"\n",
"url = 'https://papermc.io/api/v1/paper/' + version + '/latest/download'\n",
"\n",
"r = requests.get(url)\n",
"\n",
"if r.status_code is 200:\n",
" with open('/content/drive/My Drive/Minecraft-server/server.jar', 'wb') as f:\n",
" f.write(r.content)\n",
" print('Done!')\n",
"else:\n",
" print('Error '+ str(r.status_code) + '! Most likely you entered a unsupported version. Try running the code again if you think that shouldn\\'t have happened.')"
],
"execution_count": null,
"outputs": [
{
"output_type": "stream",
"text": [
"Drive already mounted at /content/drive; to attempt to forcibly remount, call drive.mount(\"/content/drive\", force_remount=True).\n",
"mkdir: cannot create directory ‘/content/drive/My Drive/Minecraft-server’: File exists\n",
"Downloading to Google Drive...\n",
"Done!\n"
],
"name": "stdout"
}
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "vhHYrg6FlbcQ"
},
"source": [
"**Automatically accept the EULA**"
]
},
{
"cell_type": "code",
"metadata": {
"id": "aefCB6cFlle8",
"colab": {
"base_uri": "https://localhost:8080/"
},
"outputId": "58d74010-24e9-4b35-be0e-4bc24d0a6dda"
},
"source": [
"# Please read the file stored in your server folder before running this command. \n",
"# Also, go to https://www.minecraft.net/en-us/eula to read Minecraft's EULA.\n",
"\n",
"# Make sure Drive is mounted\n",
"from google.colab import drive\n",
"drive.mount('/content/drive')\n",
"\n",
"%cd \"/content/drive/My Drive/Minecraft-server\"\n",
"! sed -i 's/eula=false/eula=true/g' eula.txt"
],
"execution_count": null,
"outputs": [
{
"output_type": "stream",
"text": [
"Drive already mounted at /content/drive; to attempt to forcibly remount, call drive.mount(\"/content/drive\", force_remount=True).\n",
"/content/drive/My Drive/Minecraft-server\n"
],
"name": "stdout"
}
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "FO5S4OHVdV5O"
},
"source": [
"# Debug\n",
"SSH acess to host OS"
]
},
{
"cell_type": "code",
"metadata": {
"id": "cM7gKp6Yi8Q2",
"colab": {
"base_uri": "https://localhost:8080/"
},
"outputId": "c2a7235f-818f-4b64-ad65-48a15be5e494"
},
"source": [
"## For SSH acess to host OS ##\n",
"#Download ngrok\n",
"! wget -q -c -nc https://bin.equinox.io/c/4VmDzA7iaHb/ngrok-stable-linux-amd64.zip\n",
"! unzip -qq -n ngrok-stable-linux-amd64.zip\n",
"#Setup sshd\n",
"! apt-get install -qq -o=Dpkg::Use-Pty=0 openssh-server pwgen > /dev/null\n",
"#Set root password\n",
"! echo root:minecraft123 | chpasswd #change the password (default is minecraft123)\n",
"! mkdir -p /var/run/sshd\n",
"! echo \"PermitRootLogin yes\" >> /etc/ssh/sshd_config\n",
"! echo \"PasswordAuthentication yes\" >> /etc/ssh/sshd_config\n",
"! echo \"LD_LIBRARY_PATH=/usr/lib64-nvidia\" >> /root/.bashrc\n",
"! echo \"export LD_LIBRARY_PATH\" >> /root/.bashrc\n",
"\n",
"#Run sshd\n",
"get_ipython().system_raw('/usr/sbin/sshd -D &')\n",
"\n",
"#Ask token\n",
"print(\"Copy authtoken from https://dashboard.ngrok.com/auth\")\n",
"import getpass\n",
"authtoken = getpass.getpass() #input your Ngrok auth token everytime or simply replace \"getpass.getpass()\" with your token in \"double quotes\"\n",
"\n",
"#Create tunnel\n",
"get_ipython().system_raw('./ngrok authtoken $authtoken && ./ngrok tcp 22 &')\n",
"\n",
"#Get the public address by running the cell below (for some reason, running both the commands in same cell result in an error. \n",
"#Thus it has been kept in a sepreate cell)"
],
"execution_count": 7,
"outputs": [
{
"output_type": "stream",
"text": [
"Copy authtoken from https://dashboard.ngrok.com/auth\n",
"··········\n"
],
"name": "stdout"
}
]
},
{
"cell_type": "code",
"metadata": {
"id": "7kR6rsn7jyxt",
"colab": {
"base_uri": "https://localhost:8080/"
},
"outputId": "9f915936-a05f-4f68-cdf5-f429a84312c2"
},
"source": [
"#Get public address \n",
"! curl -s http://localhost:4040/api/tunnels | python3 -c \\\n",
" \"import sys, json; print(json.load(sys.stdin)['tunnels'][0]['public_url'])\""
],
"execution_count": 5,
"outputs": [
{
"output_type": "stream",
"text": [
"Traceback (most recent call last):\n",
" File \"<string>\", line 1, in <module>\n",
" File \"/usr/lib/python3.6/json/__init__.py\", line 299, in load\n",
" parse_constant=parse_constant, object_pairs_hook=object_pairs_hook, **kw)\n",
" File \"/usr/lib/python3.6/json/__init__.py\", line 354, in loads\n",
" return _default_decoder.decode(s)\n",
" File \"/usr/lib/python3.6/json/decoder.py\", line 339, in decode\n",
" obj, end = self.raw_decode(s, idx=_w(s, 0).end())\n",
" File \"/usr/lib/python3.6/json/decoder.py\", line 357, in raw_decode\n",
" raise JSONDecodeError(\"Expecting value\", s, err.value) from None\n",
"json.decoder.JSONDecodeError: Expecting value: line 1 column 1 (char 0)\n"
],
"name": "stdout"
}
]
},
{
"cell_type": "code",
"metadata": {
"id": "Z2rztsCQk0kh",
"colab": {
"base_uri": "https://localhost:8080/"
},
"outputId": "206b5cad-5f44-4ab5-de3c-3627cef2aa4b"
},
"source": [
"## For inspecting the minecraft server directory ##\n",
"%cd \"/content/drive/My Drive/Minecraft-server\"\n",
"!ls\n"
],
"execution_count": null,
"outputs": [
{
"output_type": "stream",
"text": [
"/content/drive/My Drive/Minecraft-server\n",
"banned-ips.json ngrok\t\t\t spigot.yml\n",
"banned-players.json ngrok-stable-linux-amd64.zip usercache.json\n",
"bukkit.yml\t ops.json\t\t\t version_history.json\n",
"cache\t\t paper.yml\t\t\t whitelist.json\n",
"commands.yml\t permissions.yml\t\t world\n",
"eula.txt\t plugins\t\t\t world_nether\n",
"help.yml\t server.jar\t\t\t world_the_end\n",
"logs\t\t server.properties\n"
],
"name": "stdout"
}
]
},
{
"cell_type": "code",
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/"
},
"id": "R1_q3CYG8xOU",
"outputId": "49baf98d-1458-419d-9ce8-d4720c5f13d2"
},
"source": [
"!java -Xmx6144M -Xms6144M -XX:+UseG1GC -XX:+ParallelRefProcEnabled -XX:MaxGCPauseMillis=200 -XX:+UnlockExperimentalVMOptions -XX:+DisableExplicitGC -XX:+AlwaysPreTouch -XX:G1NewSizePercent=30 -XX:G1MaxNewSizePercent=40 -XX:G1HeapRegionSize=8M -XX:G1ReservePercent=20 -XX:G1HeapWastePercent=5 -XX:G1MixedGCCountTarget=4 -XX:InitiatingHeapOccupancyPercent=15 -XX:G1MixedGCLiveThresholdPercent=90 -XX:G1RSetUpdatingPauseTimePercent=5 -XX:SurvivorRatio=32 -XX:+PerfDisableSharedMem -XX:MaxTenuringThreshold=1 -Dusing.aikars.flags=https://mcflags.emc.gs -Daikars.new.flags=true -jar server.jar nogui"
],
"execution_count": null,
"outputs": [
{
"output_type": "stream",
"text": [
"System Info: Java 15 (OpenJDK 64-Bit Server VM 15.0.1+9) Host: Linux 4.19.112+ (amd64)\n",
"Loading libraries, please wait...\n",
"[14:11:25 INFO]: Environment: authHost='https://authserver.mojang.com', accountsHost='https://api.mojang.com', sessionHost='https://sessionserver.mojang.com', name='PROD'\n",
"[14:11:26 INFO]: Reloading ResourceManager: Default, bukkit\n",
"[14:11:27 INFO]: Loaded 7 recipes\n",
"[14:11:30 INFO]: Starting minecraft server version 1.16.3\n",
"[14:11:30 INFO]: Loading properties\n",
"\u001b[K[14:11:30 INFO]: This server is running Paper version git-Paper-253 (MC: 1.16.3) (Implementing API version 1.16.3-R0.1-SNAPSHOT)\n",
"\u001b[K[14:11:30 INFO]: Debug logging is disabled\n",
"\u001b[K[14:11:30 INFO]: Server Ping Player Sample Count: 12\n",
"\u001b[K[14:11:30 INFO]: Using 4 threads for Netty based IO\n",
"\u001b[K[14:11:30 INFO]: Default game type: CREATIVE\n",
"\u001b[K[14:11:30 INFO]: Generating keypair\n",
"\u001b[K[14:11:31 INFO]: Starting Minecraft server on *:25565\n",
"\u001b[K[14:11:31 INFO]: Using epoll channel type\n",
"\u001b[K[14:11:31 INFO]: Server permissions file permissions.yml is empty, ignoring it\n",
"\u001b[K\u001b[33;1m[14:11:31 WARN]: **** SERVER IS RUNNING IN OFFLINE/INSECURE MODE!\n",
"\u001b[K\u001b[33;1m[14:11:31 WARN]: The server will make no attempt to authenticate usernames. Beware.\n",
"\u001b[K\u001b[33;1m[14:11:31 WARN]: While this makes the game possible to play without internet access, it also opens up the ability for hackers to connect with any username they choose.\n",
"\u001b[K\u001b[33;1m[14:11:31 WARN]: To change this, set \"online-mode\" to \"true\" in the server.properties file.\n",
"\u001b[K[14:11:31 INFO]: Preparing level \"world\"\n",
"\u001b[K[14:11:31 INFO]: -------- World Settings For [world] --------\n",
"\u001b[K[14:11:31 INFO]: Mob Spawn Range: 8\n",
"\u001b[K[14:11:31 INFO]: Item Despawn Rate: 6000\n",
"\u001b[K[14:11:31 INFO]: Entity Tracking Range: Pl 48 / An 48 / Mo 48 / Mi 32 / Other 64\n",
"\u001b[K[14:11:31 INFO]: View Distance: 10\n",
"\u001b[K[14:11:31 INFO]: Allow Zombie Pigmen to spawn from portal blocks: true\n",
"\u001b[K[14:11:31 INFO]: Item Merge Radius: 2.5\n",
"\u001b[K[14:11:31 INFO]: Zombie Aggressive Towards Villager: true\n",
"\u001b[K[14:11:31 INFO]: Arrow Despawn Rate: 1200 Trident Respawn Rate:1200\n",
"\u001b[K[14:11:31 INFO]: Nerfing mobs spawned from spawners: false\n",
"\u001b[K[14:11:31 INFO]: Experience Merge Radius: 3.0\n",
"\u001b[K[14:11:31 INFO]: Hopper Transfer: 8 Hopper Check: 1 Hopper Amount: 1\n",
"\u001b[K[14:11:31 INFO]: Cactus Growth Modifier: 100%\n",
"\u001b[K[14:11:31 INFO]: Cane Growth Modifier: 100%\n",
"\u001b[K[14:11:31 INFO]: Melon Growth Modifier: 100%\n",
"\u001b[K[14:11:31 INFO]: Mushroom Growth Modifier: 100%\n",
"\u001b[K[14:11:31 INFO]: Pumpkin Growth Modifier: 100%\n",
"\u001b[K[14:11:31 INFO]: Sapling Growth Modifier: 100%\n",
"\u001b[K[14:11:31 INFO]: Beetroot Growth Modifier: 100%\n",
"\u001b[K[14:11:31 INFO]: Carrot Growth Modifier: 100%\n",
"\u001b[K[14:11:31 INFO]: Potato Growth Modifier: 100%\n",
"\u001b[K[14:11:31 INFO]: Wheat Growth Modifier: 100%\n",
"\u001b[K[14:11:31 INFO]: NetherWart Growth Modifier: 100%\n",
"\u001b[K[14:11:31 INFO]: Vine Growth Modifier: 100%\n",
"\u001b[K[14:11:31 INFO]: Cocoa Growth Modifier: 100%\n",
"\u001b[K[14:11:31 INFO]: Bamboo Growth Modifier: 100%\n",
"\u001b[K[14:11:31 INFO]: SweetBerry Growth Modifier: 100%\n",
"\u001b[K[14:11:31 INFO]: Kelp Growth Modifier: 100%\n",
"\u001b[K[14:11:31 INFO]: Entity Activation Range: An 32 / Mo 32 / Ra 48 / Mi 16 / Tiv true\n",
"\u001b[K[14:11:31 INFO]: Custom Map Seeds: Village: 10387312 Desert: 14357617 Igloo: 14357618 Jungle: 14357619 Swamp: 14357620 Monument: 10387313 Ocean: 14357621 Shipwreck: 165745295 End City: 10387313 Slime: 987234911 Bastion: 30084232 Fortress: 30084232 Mansion: 10387319 Fossil: 14357921 Portal: 34222645\n",
"\u001b[K[14:11:31 INFO]: Max TNT Explosions: 100\n",
"\u001b[K[14:11:31 INFO]: Tile Max Tick Time: 50ms Entity max Tick Time: 50ms\n",
"\u001b[K[14:11:31 INFO]: -------- World Settings For [world_nether] --------\n",
"\u001b[K[14:11:31 INFO]: Mob Spawn Range: 8\n",
"\u001b[K[14:11:31 INFO]: Item Despawn Rate: 6000\n",
"\u001b[K[14:11:31 INFO]: Entity Tracking Range: Pl 48 / An 48 / Mo 48 / Mi 32 / Other 64\n",
"\u001b[K[14:11:31 INFO]: View Distance: 10\n",
"\u001b[K[14:11:31 INFO]: Allow Zombie Pigmen to spawn from portal blocks: true\n",
"\u001b[K[14:11:31 INFO]: Item Merge Radius: 2.5\n",
"\u001b[K[14:11:31 INFO]: Zombie Aggressive Towards Villager: true\n",
"\u001b[K[14:11:31 INFO]: Arrow Despawn Rate: 1200 Trident Respawn Rate:1200\n",
"\u001b[K[14:11:31 INFO]: Nerfing mobs spawned from spawners: false\n",
"\u001b[K[14:11:31 INFO]: Experience Merge Radius: 3.0\n",
"\u001b[K[14:11:31 INFO]: Hopper Transfer: 8 Hopper Check: 1 Hopper Amount: 1\n",
"\u001b[K[14:11:31 INFO]: Cactus Growth Modifier: 100%\n",
"\u001b[K[14:11:31 INFO]: Cane Growth Modifier: 100%\n",
"\u001b[K[14:11:31 INFO]: Melon Growth Modifier: 100%\n",
"\u001b[K[14:11:31 INFO]: Mushroom Growth Modifier: 100%\n",
"\u001b[K[14:11:31 INFO]: Pumpkin Growth Modifier: 100%\n",
"\u001b[K[14:11:31 INFO]: Sapling Growth Modifier: 100%\n",
"\u001b[K[14:11:31 INFO]: Beetroot Growth Modifier: 100%\n",
"\u001b[K[14:11:31 INFO]: Carrot Growth Modifier: 100%\n",
"\u001b[K[14:11:31 INFO]: Potato Growth Modifier: 100%\n",
"\u001b[K[14:11:31 INFO]: Wheat Growth Modifier: 100%\n",
"\u001b[K[14:11:31 INFO]: NetherWart Growth Modifier: 100%\n",
"\u001b[K[14:11:31 INFO]: Vine Growth Modifier: 100%\n",
"\u001b[K[14:11:31 INFO]: Cocoa Growth Modifier: 100%\n",
"\u001b[K[14:11:31 INFO]: Bamboo Growth Modifier: 100%\n",
"\u001b[K[14:11:31 INFO]: SweetBerry Growth Modifier: 100%\n",
"\u001b[K[14:11:31 INFO]: Kelp Growth Modifier: 100%\n",
"\u001b[K[14:11:31 INFO]: Entity Activation Range: An 32 / Mo 32 / Ra 48 / Mi 16 / Tiv true\n",
"\u001b[K[14:11:31 INFO]: Custom Map Seeds: Village: 10387312 Desert: 14357617 Igloo: 14357618 Jungle: 14357619 Swamp: 14357620 Monument: 10387313 Ocean: 14357621 Shipwreck: 165745295 End City: 10387313 Slime: 987234911 Bastion: 30084232 Fortress: 30084232 Mansion: 10387319 Fossil: 14357921 Portal: 34222645\n",
"\u001b[K[14:11:31 INFO]: Max TNT Explosions: 100\n",
"\u001b[K[14:11:31 INFO]: Tile Max Tick Time: 50ms Entity max Tick Time: 50ms\n",
"\u001b[K[14:11:31 INFO]: -------- World Settings For [world_the_end] --------\n",
"\u001b[K[14:11:31 INFO]: Mob Spawn Range: 8\n",
"\u001b[K[14:11:31 INFO]: Item Despawn Rate: 6000\n",
"\u001b[K[14:11:31 INFO]: Entity Tracking Range: Pl 48 / An 48 / Mo 48 / Mi 32 / Other 64\n",
"\u001b[K[14:11:31 INFO]: View Distance: 10\n",
"\u001b[K[14:11:31 INFO]: Allow Zombie Pigmen to spawn from portal blocks: true\n",
"\u001b[K[14:11:31 INFO]: Item Merge Radius: 2.5\n",
"\u001b[K[14:11:31 INFO]: Zombie Aggressive Towards Villager: true\n",
"\u001b[K[14:11:31 INFO]: Arrow Despawn Rate: 1200 Trident Respawn Rate:1200\n",
"\u001b[K[14:11:31 INFO]: Nerfing mobs spawned from spawners: false\n",
"\u001b[K[14:11:31 INFO]: Experience Merge Radius: 3.0\n",
"\u001b[K[14:11:31 INFO]: Hopper Transfer: 8 Hopper Check: 1 Hopper Amount: 1\n",
"\u001b[K[14:11:31 INFO]: Cactus Growth Modifier: 100%\n",
"\u001b[K[14:11:31 INFO]: Cane Growth Modifier: 100%\n",
"\u001b[K[14:11:31 INFO]: Melon Growth Modifier: 100%\n",
"\u001b[K[14:11:31 INFO]: Mushroom Growth Modifier: 100%\n",
"\u001b[K[14:11:31 INFO]: Pumpkin Growth Modifier: 100%\n",
"\u001b[K[14:11:31 INFO]: Sapling Growth Modifier: 100%\n",
"\u001b[K[14:11:31 INFO]: Beetroot Growth Modifier: 100%\n",
"\u001b[K[14:11:31 INFO]: Carrot Growth Modifier: 100%\n",
"\u001b[K[14:11:31 INFO]: Potato Growth Modifier: 100%\n",
"\u001b[K[14:11:31 INFO]: Wheat Growth Modifier: 100%\n",
"\u001b[K[14:11:31 INFO]: NetherWart Growth Modifier: 100%\n",
"\u001b[K[14:11:31 INFO]: Vine Growth Modifier: 100%\n",
"\u001b[K[14:11:31 INFO]: Cocoa Growth Modifier: 100%\n",
"\u001b[K[14:11:31 INFO]: Bamboo Growth Modifier: 100%\n",
"\u001b[K[14:11:31 INFO]: SweetBerry Growth Modifier: 100%\n",
"\u001b[K[14:11:31 INFO]: Kelp Growth Modifier: 100%\n",
"\u001b[K[14:11:31 INFO]: Entity Activation Range: An 32 / Mo 32 / Ra 48 / Mi 16 / Tiv true\n",
"\u001b[K[14:11:31 INFO]: Custom Map Seeds: Village: 10387312 Desert: 14357617 Igloo: 14357618 Jungle: 14357619 Swamp: 14357620 Monument: 10387313 Ocean: 14357621 Shipwreck: 165745295 End City: 10387313 Slime: 987234911 Bastion: 30084232 Fortress: 30084232 Mansion: 10387319 Fossil: 14357921 Portal: 34222645\n",
"\u001b[K[14:11:31 INFO]: Max TNT Explosions: 100\n",
"\u001b[K[14:11:31 INFO]: Tile Max Tick Time: 50ms Entity max Tick Time: 50ms\n",
"\u001b[K[14:11:31 INFO]: Preparing start region for dimension minecraft:overworld\n",
"\u001b[K[14:11:32 INFO]: Loaded 0 spawn chunks for world world\n",
"\u001b[K[14:11:32 INFO]: Preparing spawn area: 0%\n",
"\u001b[K[14:11:32 INFO]: Preparing spawn area: 0%\n",
"\u001b[K[14:11:32 INFO]: Time elapsed: 673 ms\n",
"\u001b[K[14:11:32 INFO]: Preparing start region for dimension minecraft:the_nether\n",
"\u001b[K[14:11:32 INFO]: Loaded 0 spawn chunks for world world_nether\n",
"\u001b[K[14:11:34 INFO]: Time elapsed: 1598 ms\n",
"\u001b[K[14:11:34 INFO]: Preparing start region for dimension minecraft:the_end\n",
"\u001b[K[14:11:42 INFO]: Loaded 0 spawn chunks for world world_the_end\n",
"\u001b[K[14:11:43 INFO]: Preparing spawn area: 0%\n",
"\u001b[K[14:11:43 INFO]: Preparing spawn area: 0%\n",
"\u001b[K[14:11:43 INFO]: Preparing spawn area: 0%\n",
"\u001b[K[14:11:43 INFO]: Preparing spawn area: 0%\n",
"\u001b[K[14:11:43 INFO]: Preparing spawn area: 0%\n",
"\u001b[K[14:11:43 INFO]: Preparing spawn area: 0%\n",
"\u001b[K[14:11:43 INFO]: Preparing spawn area: 0%\n",
"\u001b[K[14:11:43 INFO]: Preparing spawn area: 0%\n",
"\u001b[K[14:11:43 INFO]: Preparing spawn area: 0%\n",
"\u001b[K[14:11:43 INFO]: Preparing spawn area: 0%\n",
"\u001b[K[14:11:43 INFO]: Preparing spawn area: 0%\n",
"\u001b[K[14:11:43 INFO]: Preparing spawn area: 0%\n",
"\u001b[K[14:11:43 INFO]: Preparing spawn area: 0%\n",
"\u001b[K[14:11:43 INFO]: Preparing spawn area: 0%\n",
"\u001b[K[14:11:43 INFO]: Preparing spawn area: 0%\n",
"\u001b[K[14:11:43 INFO]: Preparing spawn area: 0%\n",
"\u001b[K[14:11:43 INFO]: Preparing spawn area: 0%\n",
"\u001b[K[14:11:43 INFO]: Preparing spawn area: 0%\n",
"\u001b[K[14:11:43 INFO]: Preparing spawn area: 0%\n",
"\u001b[K[14:11:44 INFO]: Preparing spawn area: 0%\n",
"\u001b[K[14:11:44 INFO]: Preparing spawn area: 0%\n",
"\u001b[K[14:11:44 INFO]: Preparing spawn area: 0%\n",
"\u001b[K[14:11:44 INFO]: Time elapsed: 10703 ms\n",
"\u001b[K[14:11:44 INFO]: Running delayed init tasks\n",
"\u001b[K[14:11:44 INFO]: Done (14.530s)! For help, type \"help\"\n",
"\u001b[K[14:11:44 INFO]: Timings Reset\n",
">...."
],
"name": "stdout"
}
]
}
]
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment