Jump to content

Jefferzoonn

Vintarian
  • Posts

    24
  • Joined

  • Last visited

  • Days Won

    1

Posts posted by Jefferzoonn

  1. Español:

    Spoiler

    Muy buenas a todo el mundo!

    Soy Jefferzoonn, Jeff Story o JefferZ, como queráis llamarme, a estas alturas tengo mas nombres que Belcebú ...

    Hoy vengo a explicarles donde he adquirido una VPS por 5€ al mes y como he conseguido montar un servidor online de este nuestro amado juego.

    Antes que nada quiero aclarar que esto no es una guía de como adquirir una VPS ni de como usarla, si no de como crear un servidor publico de Vintage Story utilizando una VPS la cual en esta guía se dará por sentado que ya tienes.

    Para esta guía usaremos una VPS de Contabo.com (Tiene unos precios bastante competitivos, recomiendo echarle un ojo)

    Habrá que empezar no? Pero vamos por partes como dijo el descuartizador

    (Esta guía esta basada en Ubuntu)

     

    Paso nº1 - Entrar a la VPS e ir a la carpeta raíz

    Spoiler

    En caso de que nuestra VPS la tengamos en Contabo.com, para entrar usaremos PuTTY con el usuario root y la contraseña que hallamos elegido antes de realizar la instalación.

    Una vez hallamos accedido recomiendo usar el comando "cd .." hasta llegar a la carpeta raíz, también podemos usar el comando "ls" para que nos muestre una lista de carpetas y a si asegurarnos de estar en la raíz.

    Paso nº2 - Instalar pcregrep , screen y wget

    Spoiler

    A partir de aquí voy a etiquetar los comandos de una manera especifica la cual será NumeroDePaso.numeroDeComando

    Comandos:

    2.1

    sudo apt install pcregrep

    2.2

    sudo apt install screen

    2.3

    sudo apt install wget

     

    Paso nº3 - Descargar e instalar NET 7

    Spoiler

    Aquí ya entramos en un terreno en el que se nos pueden dar distintos problemas ya que hay varios linux con distintas versiones y diferencias, para no hacerlo más complicado te recomiendo buscar en tu navegador "instalar NET 7 en aqui_pones_tu_sistema_operativo" de todos modos te voy a decir los comandos que me han funcionado a mi:

    3.1

    wget https://dot.net/v1/dotnet-install.sh -O dotnet-install.sh

    3.2

    chmod +x ./dotnet-install.sh

    3.3

    ./dotnet-install.sh --channel 7.0

     

    Si al iniciar posteriormente el servidor nos sale un error que dice “Fatal! I require dotnet but it’s not installed.”

    Hay que hacer lo siguiente:

    3.4

    wget https://packages.microsoft.com/config/ubuntu/20.04/packages-microsoft-prod.deb -O packages-microsoft-prod.deb 
    sudo dpkg -i packages-microsoft-prod.deb 
    rm packages-microsoft-prod.deb

    3.5

    sudo apt-get update

    3.6

    sudo apt-get install -y dotnet-sdk-7.0

     

    Una vez hecho esto volvemos al punto donde nos habíamos quedado anteriormente del error

    Paso nº4 - Crear un nuevo usuario llamado vintagestory

    Spoiler

    Por motivos de seguridad no se debe ejecutar el servidor desde root por lo que hacemos otro usuario:

    4.1

    adduser vintagestory

    Paso nº5 - Crear carpeta en directorio home/vintagestory

    Spoiler

    Si has seguido la guía igual que lo he hecho yo, seguirás en la carpeta raíz, si no estas en ella, vuelve a la carpeta raíz usando el comando "cd .."

    Ahora desde la carpeta raíz empezamos con los comandos:

    5.1

    cd home

    5.2

    cd vintagestory

    5.3

    mkdir server && cd server

     

    Paso nº6 - Descargar y extraer los archivos necesarios para el servidor

    Spoiler

    Estando en el directorio "/home/vintagestory/server" debemos usar los siguientes comandos:

    6.1

    wget https://cdn.vintagestory.at/gamefiles/stable/vs_server_linux-x64_1.19.8.tar.gz

    6.2

    tar xzf vs_server_linux-x64_*.*.*.tar.gz

    6.3

    chmod +x server.sh

     

    Paso nº7 - Abrir puertos en caso de ser necesario

    Spoiler

    7.1

    firewall-cmd --permanent --zone=public --add-port=42420/tcp

    7.2

    firewall-cmd --reload

    7.3

    iptables -A INPUT -p tcp -m tcp --dport 42420 -j ACCEPT

    Paso nº8 - Iniciar nuestro servidor

    Spoiler

    Es importante tener en cuenta que para iniciar por primera vez el servidor es necesario hacerlo desde el usuario root, en caso de no estarlo nos cambiamos con el comando "su root"

     

    8.1

    ./server.sh start

     

    Lo dejamos cargar y posteriormente hacemos el siguiente comando:

    8.2

    ./server.sh command "stop"

     

    Ahora que ha creado los directorios necesarios nos cambiamos a nuestro usuario llamado vintagestory con el comando:

    8.3

    su vintagestory

     

    Una vez que ya estemos en nuestro usuario dedicado al funcionamiento del servidor (usuario: vintagestory) debemos volver a iniciar nuestro servidor y ya estaría listo para usar

    Comando para iniciar el servidor:

    8.4

    ./server.sh start

     

    Paso nº9 - Darte /op

    Spoiler

    Para darte op debes hacerlo con el servidor encendido obviamente

    Comando para darte op:

    9.1

    ./server.sh command "/op NombreDeUsuario"

    Donde pone NombreDeUsuario lo cambiamos por nuestro nombre, por ejemplo:

    ./server.sh command "/op JefferZ"

     

     

     

    Paso nº 10 - Apagar servidor y acceder desde cliente FTP

    Spoiler

    Para apagar el servidor de Vintage Story introduciremos el siguiente comando en la consola de nuestra VPS:

    10.1

    ./server.sh command "stop"

     

    Paso nº 11 - Abrir nuestro cliente Vintage Story y crear un nuevo mundo

    Spoiler

    Abrimos nuestro juego Vintage Story para crear un mundo y después copiar la configuración al servidor ya que a si es mucho más fácil

    Para este caso le voy a poner una semilla y unos ajustes específicos que posteriormente nos servirán para el funcionamiento de un mod que usaremos más adelante en la sección de Instalar Mods

    Generación del mundo:

    Seed: 1234567890 || Semilla: 1234567890

    Landcover: 50% || Cubierta terrestre: 50%

    Landcover scale: 400% || Escala de cubierta terrestre: 400%

    Importante que el mundo que queremos usar como base quede el primero en nuestra lista de mundos

    Ahora en nuestro PC vamos al directorio:

    AppData\Roaming\VintagestoryData

    Ahí tenemos un archivo llamado “serverconfig.json” el cual debemos abrir para configurar nuestro servidor

    Ejemplo de serverconfig.json de un mundo para un solo jugador:

    Spoiler
    {
      "FileEditWarning": "PLEASE NOTE: This file is also loaded when you start a single player world. If you want to run a dedicated server without affecting single player, we recommend you install the game into a different folder and run the server from there.",
      "ConfigVersion": "1.5",
      "ServerName": "Vintage Story Server",
      "ServerUrl": null,
      "ServerDescription": null,
      "WelcomeMessage": "Bienvenido {0}, espero que sobrevivas bien y prosperes",
      "Ip": null,
      "Port": 42420,
      "Upnp": false,
      "CompressPackets": true,
      "AdvertiseServer": true,
      "MaxClients": 16,
      "PassTimeWhenEmpty": false,
      "MasterserverUrl": "http://masterserver.vintagestory.at/api/v1/servers/",
      "ModDbUrl": "https://mods.vintagestory.at/",
      "ClientConnectionTimeout": 150,
      "EntityDebugMode": false,
      "Password": null,
      "MapSizeX": 1024000,
      "MapSizeY": 256,
      "MapSizeZ": 1024000,
      "ServerLanguage": "es-es",
      "MaxChunkRadius": 12,
      "TickTime": 33.333332,
      "SpawnCapPlayerScaling": 0.5,
      "BlockTickChunkRange": 4,
      "MaxMainThreadBlockTicks": 10000,
      "RandomBlockTicksPerChunk": 16,
      "BlockTickInterval": 300,
      "SkipEveryChunkRow": 0,
      "SkipEveryChunkRowWidth": 0,
      "Roles": [
        {
          "Code": "suvisitor",
          "PrivilegeLevel": -1,
          "Name": "Survival Visitor",
          "Description": "Can only visit this world and chat but not use/place/break anything",
          "DefaultSpawn": null,
          "ForcedSpawn": null,
          "Privileges": [
            "chat"
          ],
          "RuntimePrivileges": [],
          "DefaultGameMode": 1,
          "Color": "Green",
          "LandClaimAllowance": 0,
          "LandClaimMinSize": {
            "X": 5,
            "Y": 5,
            "Z": 5
          },
          "LandClaimMaxAreas": 3,
          "AutoGrant": false
        },
        {
          "Code": "crvisitor",
          "PrivilegeLevel": -1,
          "Name": "Creative Visitor",
          "Description": "Can only visit this world, chat and fly but not use/place/break anything",
          "DefaultSpawn": null,
          "ForcedSpawn": null,
          "Privileges": [
            "chat"
          ],
          "RuntimePrivileges": [],
          "DefaultGameMode": 2,
          "Color": "DarkGray",
          "LandClaimAllowance": 0,
          "LandClaimMinSize": {
            "X": 5,
            "Y": 5,
            "Z": 5
          },
          "LandClaimMaxAreas": 3,
          "AutoGrant": false
        },
        {
          "Code": "limitedsuplayer",
          "PrivilegeLevel": -1,
          "Name": "Limited Survival Player",
          "Description": "Can use/place/break blocks only in permitted areas (priv level -1), create/manage player groups and chat",
          "DefaultSpawn": null,
          "ForcedSpawn": null,
          "Privileges": [
            "controlplayergroups",
            "manageplayergroups",
            "chat",
            "build",
            "useblock",
            "attackcreatures",
            "attackplayers",
            "selfkill"
          ],
          "RuntimePrivileges": [],
          "DefaultGameMode": 1,
          "Color": "White",
          "LandClaimAllowance": 0,
          "LandClaimMinSize": {
            "X": 5,
            "Y": 5,
            "Z": 5
          },
          "LandClaimMaxAreas": 3,
          "AutoGrant": false
        },
        {
          "Code": "limitedcrplayer",
          "PrivilegeLevel": -1,
          "Name": "Limited Creative Player",
          "Description": "Can use/place/break blocks in only in permitted areas (priv level -1), create/manage player groups, chat, fly and set his own game mode (= allows fly and change of move speed)",
          "DefaultSpawn": null,
          "ForcedSpawn": null,
          "Privileges": [
            "controlplayergroups",
            "manageplayergroups",
            "chat",
            "build",
            "useblock",
            "gamemode",
            "freemove",
            "attackcreatures",
            "attackplayers",
            "selfkill"
          ],
          "RuntimePrivileges": [],
          "DefaultGameMode": 2,
          "Color": "LightGreen",
          "LandClaimAllowance": 0,
          "LandClaimMinSize": {
            "X": 5,
            "Y": 5,
            "Z": 5
          },
          "LandClaimMaxAreas": 3,
          "AutoGrant": false
        },
        {
          "Code": "suplayer",
          "PrivilegeLevel": 0,
          "Name": "Survival Player",
          "Description": "Can use/place/break blocks in unprotected areas (priv level 0), create/manage player groups and chat. Can claim an area of up to 8 chunks.",
          "DefaultSpawn": null,
          "ForcedSpawn": null,
          "Privileges": [
            "controlplayergroups",
            "manageplayergroups",
            "chat",
            "areamodify",
            "build",
            "useblock",
            "attackcreatures",
            "attackplayers",
            "selfkill"
          ],
          "RuntimePrivileges": [],
          "DefaultGameMode": 1,
          "Color": "White",
          "LandClaimAllowance": 262144,
          "LandClaimMinSize": {
            "X": 5,
            "Y": 5,
            "Z": 5
          },
          "LandClaimMaxAreas": 3,
          "AutoGrant": false
        },
        {
          "Code": "crplayer",
          "PrivilegeLevel": 100,
          "Name": "Creative Player",
          "Description": "Can use/place/break blocks in all areas (priv level 100), create/manage player groups, chat, fly and set his own game mode (= allows fly and change of move speed). Can claim an area of up to 40 chunks.",
          "DefaultSpawn": null,
          "ForcedSpawn": null,
          "Privileges": [
            "controlplayergroups",
            "manageplayergroups",
            "chat",
            "areamodify",
            "build",
            "useblock",
            "gamemode",
            "freemove",
            "attackcreatures",
            "attackplayers",
            "selfkill"
          ],
          "RuntimePrivileges": [],
          "DefaultGameMode": 2,
          "Color": "LightGreen",
          "LandClaimAllowance": 1310720,
          "LandClaimMinSize": {
            "X": 5,
            "Y": 5,
            "Z": 5
          },
          "LandClaimMaxAreas": 6,
          "AutoGrant": false
        },
        {
          "Code": "sumod",
          "PrivilegeLevel": 200,
          "Name": "Survival Moderator",
          "Description": "Can use/place/break blocks everywhere (priv level 200), create/manage player groups, chat, kick/ban players and do serverwide announcements. Can claim an area of up to 4 chunks.",
          "DefaultSpawn": null,
          "ForcedSpawn": null,
          "Privileges": [
            "controlplayergroups",
            "manageplayergroups",
            "chat",
            "areamodify",
            "build",
            "useblock",
            "buildblockseverywhere",
            "useblockseverywhere",
            "kick",
            "ban",
            "announce",
            "readlists",
            "attackcreatures",
            "attackplayers",
            "selfkill"
          ],
          "RuntimePrivileges": [],
          "DefaultGameMode": 1,
          "Color": "Cyan",
          "LandClaimAllowance": 1310720,
          "LandClaimMinSize": {
            "X": 5,
            "Y": 5,
            "Z": 5
          },
          "LandClaimMaxAreas": 60,
          "AutoGrant": false
        },
        {
          "Code": "crmod",
          "PrivilegeLevel": 500,
          "Name": "Creative Moderator",
          "Description": "Can use/place/break blocks everywhere (priv level 500), create/manage player groups, chat, kick/ban players, fly and set his own or other players game modes (= allows fly and change of move speed). Can claim an area of up to 40 chunks.",
          "DefaultSpawn": null,
          "ForcedSpawn": null,
          "Privileges": [
            "controlplayergroups",
            "manageplayergroups",
            "chat",
            "areamodify",
            "build",
            "useblock",
            "buildblockseverywhere",
            "useblockseverywhere",
            "kick",
            "ban",
            "gamemode",
            "freemove",
            "commandplayer",
            "announce",
            "readlists",
            "attackcreatures",
            "attackplayers",
            "selfkill"
          ],
          "RuntimePrivileges": [],
          "DefaultGameMode": 2,
          "Color": "Cyan",
          "LandClaimAllowance": 1310720,
          "LandClaimMinSize": {
            "X": 5,
            "Y": 5,
            "Z": 5
          },
          "LandClaimMaxAreas": 60,
          "AutoGrant": false
        },
        {
          "Code": "admin",
          "PrivilegeLevel": 99999,
          "Name": "Admin",
          "Description": "Has all privileges, including giving other players admin status.",
          "DefaultSpawn": null,
          "ForcedSpawn": null,
          "Privileges": [
            "build",
            "useblock",
            "buildblockseverywhere",
            "useblockseverywhere",
            "attackplayers",
            "attackcreatures",
            "freemove",
            "gamemode",
            "pickingrange",
            "chat",
            "kick",
            "ban",
            "whitelist",
            "setwelcome",
            "announce",
            "readlists",
            "give",
            "areamodify",
            "setspawn",
            "controlserver",
            "tp",
            "time",
            "grantrevoke",
            "root",
            "commandplayer",
            "controlplayergroups",
            "manageplayergroups",
            "selfkill",
            "worldedit"
          ],
          "RuntimePrivileges": [],
          "DefaultGameMode": 1,
          "Color": "LightBlue",
          "LandClaimAllowance": 2147483647,
          "LandClaimMinSize": {
            "X": 5,
            "Y": 5,
            "Z": 5
          },
          "LandClaimMaxAreas": 99999,
          "AutoGrant": true
        }
      ],
      "DefaultRoleCode": "suplayer",
      "ModPaths": [
        "Mods",
        "C:\\Users\\PC\\AppData\\Roaming\\VintagestoryData\\Mods"
      ],
      "AntiAbuse": 0,
      "WorldConfig": {
        "Seed": "1234567890",
        "SaveFileLocation": "C:\\Users\\PC\\AppData\\Roaming\\VintagestoryData\\Saves\\jefferzs village world.vcdbs",
        "WorldName": "JefferZs Village World",
        "AllowCreativeMode": true,
        "PlayStyle": "surviveandbuild",
        "PlayStyleLangCode": "preset-surviveandbuild",
        "WorldType": "standard",
        "WorldConfiguration": {
          "gameMode": "survival",
          "startingClimate": "temperate",
          "spawnRadius": "50",
          "graceTimer": "0",
          "deathPunishment": "drop",
          "droppedItemsTimer": "600",
          "seasons": "enabled",
          "playerlives": "-1",
          "lungCapacity": "40000",
          "daysPerMonth": "9",
          "harshWinters": "true",
          "blockGravity": "sandgravel",
          "caveIns": "off",
          "allowUndergroundFarming": false,
          "bodyTemperatureResistance": "0",
          "creatureHostility": "aggressive",
          "creatureStrength": "1",
          "playerHealthPoints": "15",
          "playerHungerSpeed": "1",
          "playerHealthRegenSpeed": "1",
          "playerMoveSpeed": "1.5",
          "foodSpoilSpeed": "1",
          "saplingGrowthRate": "1",
          "toolDurability": "1",
          "toolMiningSpeed": "1",
          "propickNodeSearchRadius": "6",
          "globalDepositSpawnRate": "1",
          "microblockChiseling": "stonewood",
          "allowCoordinateHud": true,
          "allowMap": true,
          "colorAccurateWorldmap": false,
          "loreContent": true,
          "clutterObtainable": "ifrepaired",
          "temporalStorms": "sometimes",
          "tempstormDurationMul": "1",
          "temporalStability": true,
          "temporalRifts": "visible",
          "temporalGearRespawnUses": "20",
          "temporalStormSleeping": "0",
          "worldClimate": "realistic",
          "landcover": "0.5",
          "oceanscale": "4",
          "upheavelCommonness": "0.3",
          "geologicActivity": "0.05",
          "landformScale": "1.0",
          "worldWidth": "1024000",
          "worldLength": "1024000",
          "worldEdge": "traversable",
          "polarEquatorDistance": "100000",
          "globalTemperature": "1",
          "globalPrecipitation": "1",
          "globalForestation": "0",
          "surfaceCopperDeposits": "0.12",
          "surfaceTinDeposits": "0.007",
          "snowAccum": "true",
          "allowLandClaiming": true,
          "classExclusiveRecipes": true,
          "auctionHouse": true
        },
        "MapSizeY": 256,
        "CreatedByPlayerName": "JefferZ",
        "DisabledMods": [
          "modprueba@1.0.0",
          "plogrosbasicos@1.0.0",
          "bettercrates@1.7.0",
          "livemap@0.0.4"
        ],
        "RepairMode": false
      },
      "NextPlayerGroupUid": 10,
      "GroupChatHistorySize": 20,
      "MaxOwnedGroupChannelsPerUser": 10,
      "OnlyWhitelisted": false,
      "VerifyPlayerAuth": true,
      "DefaultSpawn": null,
      "AllowPvP": true,
      "AllowFireSpread": true,
      "AllowFallingBlocks": true,
      "HostedMode": false,
      "HostedModeAllowMods": false,
      "StartupCommands": null,
      "RepairMode": false,
      "AnalyzeMode": false,
      "CorruptionProtection": true,
      "RegenerateCorruptChunks": false,
      "ChatRateLimitMs": 1000,
      "DieBelowDiskSpaceMb": 400,
      "ModIdBlackList": null,
      "ServerIdentifier": "445f9983-647d-4773-9007-cfdfb7e08333"
    }

     

     

    Paso nº 12 - Configurar servidor en base a mundo creado anteriormente

    Spoiler

    Volvemos a nuestro FTP y deberíamos seguir en el directorio “/var/vintagestory/data” de la raíz de nuestra VPS a la cual estamos accediendo desde nuestro cliente FTP.

    En dicho directorio encontraremos el mismo archivo serverconfig.json que abriremos y dejaremos la ventana en la mitad de la pantalla derecha y a la vez abriremos en el lado izquierdo de nuestra pantalla el archivo serverconfig.json ubicado en el directorio “AppData\Roaming\VintagestoryData” de nuestro PC.

     

    Ahora viene lo complicado, aquí hay que estar atentos para configurar todo correctamente.

    - Configurando el nombre del servidor -

    Spoiler

    En uno de los primeros apartados del “serverconfig.json” de tu servidor veras que pone:

      "ServerName": "Vintage Story Server",

    Pues donde dice “Vintage Story Server” lo cambiamos por el nombre que queramos para nuestro servidor, por ejemplo:

    "ServerName": "JefferZ server",

     

    - Configurando la descripción del servidor -

    Spoiler

    Ahora vamos a “ "ServerDescription": null, ” y lo cambiamos por algo llamativo para nuestro servidor, ejemplo sin modificar y modificado:

    "ServerDescription": null,

    Modificado:

    "ServerDescription": Este es el mejor servidor del mundo”,

    Esta descripción se mostrara cuando un usuario pulse en tu servidor desde la lista publica de servidores.

    - Configurando el mensaje de bienvenida del servidor -

    Spoiler

    También es recomendable añadir un mensaje de bienvenida personalizado en:

    "WelcomeMessage": "Welcome {0}, may you survive well and prosper",

    El parámetro “{0}” será cambiado por el nombre de usuario a la hora de mostrar el mensaje.

    Mensaje personalizado:

    "WelcomeMessage": "Bienvenido {0}, espero que disfrutes de esta guía",

     

    - Configurando los roles -

    Spoiler

    Vamos con la sección de roles, aquí si lo que queremos es hacer un servidor publico deberíamos hacer unos ajustes en nuestros roles:

    Roles por defecto:

    Spoiler
    "Roles": [
        {
          "Code": "suvisitor",
          "PrivilegeLevel": -1,
          "Name": "Survival Visitor",
          "Description": "Can only visit this world and chat but not use/place/break anything",
          "DefaultSpawn": null,
          "ForcedSpawn": null,
          "Privileges": [
            "chat"
          ],
          "RuntimePrivileges": [],
          "DefaultGameMode": 1,
          "Color": "Green",
          "LandClaimAllowance": 0,
          "LandClaimMinSize": {
            "X": 5,
            "Y": 5,
            "Z": 5
          },
          "LandClaimMaxAreas": 3,
          "AutoGrant": false
        },
        {
          "Code": "crvisitor",
          "PrivilegeLevel": -1,
          "Name": "Creative Visitor",
          "Description": "Can only visit this world, chat and fly but not use/place/break anything",
          "DefaultSpawn": null,
          "ForcedSpawn": null,
          "Privileges": [
            "chat"
          ],
          "RuntimePrivileges": [],
          "DefaultGameMode": 2,
          "Color": "DarkGray",
          "LandClaimAllowance": 0,
          "LandClaimMinSize": {
            "X": 5,
            "Y": 5,
            "Z": 5
          },
          "LandClaimMaxAreas": 3,
          "AutoGrant": false
        },
        {
          "Code": "limitedsuplayer",
          "PrivilegeLevel": -1,
          "Name": "Limited Survival Player",
          "Description": "Can use/place/break blocks only in permitted areas (priv level -1), create/manage player groups and chat",
          "DefaultSpawn": null,
          "ForcedSpawn": null,
          "Privileges": [
            "controlplayergroups",
            "manageplayergroups",
            "chat",
            "build",
            "useblock",
            "attackcreatures",
            "attackplayers",
            "selfkill"
          ],
          "RuntimePrivileges": [],
          "DefaultGameMode": 1,
          "Color": "White",
          "LandClaimAllowance": 0,
          "LandClaimMinSize": {
            "X": 5,
            "Y": 5,
            "Z": 5
          },
          "LandClaimMaxAreas": 3,
          "AutoGrant": false
        },
        {
          "Code": "limitedcrplayer",
          "PrivilegeLevel": -1,
          "Name": "Limited Creative Player",
          "Description": "Can use/place/break blocks in only in permitted areas (priv level -1), create/manage player groups, chat, fly and set his own game mode (= allows fly and change of move speed)",
          "DefaultSpawn": null,
          "ForcedSpawn": null,
          "Privileges": [
            "controlplayergroups",
            "manageplayergroups",
            "chat",
            "build",
            "useblock",
            "gamemode",
            "freemove",
            "attackcreatures",
            "attackplayers",
            "selfkill"
          ],
          "RuntimePrivileges": [],
          "DefaultGameMode": 2,
          "Color": "LightGreen",
          "LandClaimAllowance": 0,
          "LandClaimMinSize": {
            "X": 5,
            "Y": 5,
            "Z": 5
          },
          "LandClaimMaxAreas": 3,
          "AutoGrant": false
        },
        {
          "Code": "suplayer",
          "PrivilegeLevel": 0,
          "Name": "Survival Player",
          "Description": "Can use/place/break blocks in unprotected areas (priv level 0), create/manage player groups and chat. Can claim an area of up to 8 chunks.",
          "DefaultSpawn": null,
          "ForcedSpawn": null,
          "Privileges": [
            "controlplayergroups",
            "manageplayergroups",
            "chat",
            "areamodify",
            "build",
            "useblock",
            "attackcreatures",
            "attackplayers",
            "selfkill"
          ],
          "RuntimePrivileges": [],
          "DefaultGameMode": 1,
          "Color": "White",
          "LandClaimAllowance": 262144,
          "LandClaimMinSize": {
            "X": 5,
            "Y": 5,
            "Z": 5
          },
          "LandClaimMaxAreas": 3,
          "AutoGrant": false
        },
        {
          "Code": "crplayer",
          "PrivilegeLevel": 100,
          "Name": "Creative Player",
          "Description": "Can use/place/break blocks in all areas (priv level 100), create/manage player groups, chat, fly and set his own game mode (= allows fly and change of move speed). Can claim an area of up to 40 chunks.",
          "DefaultSpawn": null,
          "ForcedSpawn": null,
          "Privileges": [
            "controlplayergroups",
            "manageplayergroups",
            "chat",
            "areamodify",
            "build",
            "useblock",
            "gamemode",
            "freemove",
            "attackcreatures",
            "attackplayers",
            "selfkill"
          ],
          "RuntimePrivileges": [],
          "DefaultGameMode": 2,
          "Color": "LightGreen",
          "LandClaimAllowance": 1310720,
          "LandClaimMinSize": {
            "X": 5,
            "Y": 5,
            "Z": 5
          },
          "LandClaimMaxAreas": 6,
          "AutoGrant": false
        },
        {
          "Code": "sumod",
          "PrivilegeLevel": 200,
          "Name": "Survival Moderator",
          "Description": "Can use/place/break blocks everywhere (priv level 200), create/manage player groups, chat, kick/ban players and do serverwide announcements. Can claim an area of up to 4 chunks.",
          "DefaultSpawn": null,
          "ForcedSpawn": null,
          "Privileges": [
            "controlplayergroups",
            "manageplayergroups",
            "chat",
            "areamodify",
            "build",
            "useblock",
            "buildblockseverywhere",
            "useblockseverywhere",
            "kick",
            "ban",
            "announce",
            "readlists",
            "attackcreatures",
            "attackplayers",
            "selfkill"
          ],
          "RuntimePrivileges": [],
          "DefaultGameMode": 1,
          "Color": "Cyan",
          "LandClaimAllowance": 1310720,
          "LandClaimMinSize": {
            "X": 5,
            "Y": 5,
            "Z": 5
          },
          "LandClaimMaxAreas": 60,
          "AutoGrant": false
        },
        {
          "Code": "crmod",
          "PrivilegeLevel": 500,
          "Name": "Creative Moderator",
          "Description": "Can use/place/break blocks everywhere (priv level 500), create/manage player groups, chat, kick/ban players, fly and set his own or other players game modes (= allows fly and change of move speed). Can claim an area of up to 40 chunks.",
          "DefaultSpawn": null,
          "ForcedSpawn": null,
          "Privileges": [
            "controlplayergroups",
            "manageplayergroups",
            "chat",
            "areamodify",
            "build",
            "useblock",
            "buildblockseverywhere",
            "useblockseverywhere",
            "kick",
            "ban",
            "gamemode",
            "freemove",
            "commandplayer",
            "announce",
            "readlists",
            "attackcreatures",
            "attackplayers",
            "selfkill"
          ],
          "RuntimePrivileges": [],
          "DefaultGameMode": 2,
          "Color": "Cyan",
          "LandClaimAllowance": 1310720,
          "LandClaimMinSize": {
            "X": 5,
            "Y": 5,
            "Z": 5
          },
          "LandClaimMaxAreas": 60,
          "AutoGrant": false
        },
        {
          "Code": "admin",
          "PrivilegeLevel": 99999,
          "Name": "Admin",
          "Description": "Has all privileges, including giving other players admin status.",
          "DefaultSpawn": null,
          "ForcedSpawn": null,
          "Privileges": [
            "build",
            "useblock",
            "buildblockseverywhere",
            "useblockseverywhere",
            "attackplayers",
            "attackcreatures",
            "freemove",
            "gamemode",
            "pickingrange",
            "chat",
            "kick",
            "ban",
            "whitelist",
            "setwelcome",
            "announce",
            "readlists",
            "give",
            "areamodify",
            "setspawn",
            "controlserver",
            "tp",
            "time",
            "grantrevoke",
            "root",
            "commandplayer",
            "controlplayergroups",
            "manageplayergroups",
            "selfkill"
          ],
          "RuntimePrivileges": [],
          "DefaultGameMode": 1,
          "Color": "LightBlue",
          "LandClaimAllowance": 2147483647,
          "LandClaimMinSize": {
            "X": 5,
            "Y": 5,
            "Z": 5
          },
          "LandClaimMaxAreas": 99999,
          "AutoGrant": true
        }
      ],

     

    Roles recomendados:

    Spoiler
    "Roles": [
        {
          "Code": "suplayer",
          "PrivilegeLevel": 0,
          "Name": "Survival Player",
          "Description": "Can use/place/break blocks in unprotected areas (priv level 0), create/manage player groups and chat. Can claim an area of up to 8 chunks.",
          "DefaultSpawn": null,
          "ForcedSpawn": null,
          "Privileges": [
            "controlplayergroups",
            "manageplayergroups",
            "chat",
            "areamodify",
            "build",
            "useblock",
            "attackcreatures",
            "attackplayers",
            "selfkill"
          ],
          "RuntimePrivileges": [],
          "DefaultGameMode": 1,
          "Color": "White",
          "LandClaimAllowance": 262144,
          "LandClaimMinSize": {
            "X": 5,
            "Y": 5,
            "Z": 5
          },
          "LandClaimMaxAreas": 3,
          "AutoGrant": false
        },
        {
          "Code": "crplayer",
          "PrivilegeLevel": 100,
          "Name": "Creative Player",
          "Description": "Can use/place/break blocks in all areas (priv level 100), create/manage player groups, chat, fly and set his own game mode (= allows fly and change of move speed). Can claim an area of up to 40 chunks.",
          "DefaultSpawn": null,
          "ForcedSpawn": null,
          "Privileges": [
            "controlplayergroups",
            "manageplayergroups",
            "chat",
            "areamodify",
            "build",
            "useblock",
            "gamemode",
            "freemove",
            "attackcreatures",
            "attackplayers",
            "selfkill"
          ],
          "RuntimePrivileges": [],
          "DefaultGameMode": 2,
          "Color": "LightGreen",
          "LandClaimAllowance": 1310720,
          "LandClaimMinSize": {
            "X": 5,
            "Y": 5,
            "Z": 5
          },
          "LandClaimMaxAreas": 6,
          "AutoGrant": false
        },
        {
          "Code": "sumod",
          "PrivilegeLevel": 200,
          "Name": "Survival Moderator",
          "Description": "Can use/place/break blocks everywhere (priv level 200), create/manage player groups, chat, kick/ban players and do serverwide announcements. Can claim an area of up to 4 chunks.",
          "DefaultSpawn": null,
          "ForcedSpawn": null,
          "Privileges": [
            "controlplayergroups",
            "manageplayergroups",
            "chat",
            "areamodify",
            "build",
            "useblock",
            "buildblockseverywhere",
            "useblockseverywhere",
            "kick",
            "ban",
            "announce",
            "readlists",
            "attackcreatures",
            "attackplayers",
            "selfkill"
          ],
          "RuntimePrivileges": [],
          "DefaultGameMode": 1,
          "Color": "Cyan",
          "LandClaimAllowance": 1310720,
          "LandClaimMinSize": {
            "X": 5,
            "Y": 5,
            "Z": 5
          },
          "LandClaimMaxAreas": 60,
          "AutoGrant": false
        },
        {
          "Code": "crmod",
          "PrivilegeLevel": 500,
          "Name": "Creative Moderator",
          "Description": "Can use/place/break blocks everywhere (priv level 500), create/manage player groups, chat, kick/ban players, fly and set his own or other players game modes (= allows fly and change of move speed). Can claim an area of up to 40 chunks.",
          "DefaultSpawn": null,
          "ForcedSpawn": null,
          "Privileges": [
            "controlplayergroups",
            "manageplayergroups",
            "chat",
            "areamodify",
            "build",
            "useblock",
            "buildblockseverywhere",
            "useblockseverywhere",
            "kick",
            "ban",
            "gamemode",
            "freemove",
            "commandplayer",
            "announce",
            "readlists",
            "attackcreatures",
            "attackplayers",
            "selfkill"
          ],
          "RuntimePrivileges": [],
          "DefaultGameMode": 2,
          "Color": "Cyan",
          "LandClaimAllowance": 1310720,
          "LandClaimMinSize": {
            "X": 5,
            "Y": 5,
            "Z": 5
          },
          "LandClaimMaxAreas": 60,
          "AutoGrant": false
        },
        {
          "Code": "admin",
          "PrivilegeLevel": 99999,
          "Name": "Admin",
          "Description": "Has all privileges, including giving other players admin status.",
          "DefaultSpawn": null,
          "ForcedSpawn": null,
          "Privileges": [
            "build",
            "useblock",
            "buildblockseverywhere",
            "useblockseverywhere",
            "attackplayers",
            "attackcreatures",
            "freemove",
            "gamemode",
            "pickingrange",
            "chat",
            "kick",
            "ban",
            "whitelist",
            "setwelcome",
            "announce",
            "readlists",
            "give",
            "areamodify",
            "setspawn",
            "controlserver",
            "tp",
            "time",
            "grantrevoke",
            "root",
            "commandplayer",
            "controlplayergroups",
            "manageplayergroups",
            "selfkill"
          ],
          "RuntimePrivileges": [],
          "DefaultGameMode": 1,
          "Color": "LightBlue",
          "LandClaimAllowance": 2147483647,
          "LandClaimMinSize": {
            "X": 5,
            "Y": 5,
            "Z": 5
          },
          "LandClaimMaxAreas": 99999,
          "AutoGrant": true
        }
      ],

     

     

    - Copiando la generación de mundo de nuestra partida creada anteriormente -

    Spoiler

    Ahora empieza lo bueno, vamos a la configuración del mundo dentro de la sección:

    "WorldConfig": {
    "Seed": null,
    "SaveFileLocation": "/var/vintagestory/data/Saves/default.vcdbs",
    "WorldName": "A new world",
    "AllowCreativeMode": true,
    "PlayStyle": "surviveandbuild",
    "PlayStyleLangCode": "surviveandbuild-bands",
    "WorldType": "standard",
    "WorldConfiguration": null,
    "MapSizeY": null,
    "CreatedByPlayerName": null,
    "DisabledMods": null,
    "RepairMode": false
    },

    Le añadimos nuestra semilla, si queremos le cambiamos el nombre al archivo de nuestro mundo y le asignamos un nombre a nuestro mundo además de una altura máxima de construcción que puede ser desde 256 hasta 320:

    "WorldConfig": {
    "Seed": "1234567890",
    "SaveFileLocation": "/var/vintagestory/data/Saves/guideWorld.vcdbs",
    "WorldName": "El mundo de las guias",
    "AllowCreativeMode": true,
    "PlayStyle": "surviveandbuild",
    "PlayStyleLangCode": "surviveandbuild-bands",
    "WorldType": "standard",
    "WorldConfiguration": null,
    "MapSizeY": 256,
    "CreatedByPlayerName": null,
    "DisabledMods": null,
    "RepairMode": false
    },

    Y finalmente añadimos nuestra “WorldConfiguration”, donde pone:

    "WorldConfiguration": null,

    Lo sustituimos por la misma sección de nuestro serverconfig.json local, que deberíamos tener en el directorio “AppData\Roaming\VintagestoryData” de nuestro PC y debería quedar así:

    Ejemplo de sección “WorldConfig”:

    Spoiler
    "WorldConfig": {
        "Seed": "1234567890",
        "SaveFileLocation": "/var/vintagestory/data/Saves/guideWorld.vcdbs",
        "WorldName": "El mundo de las guias",
        "AllowCreativeMode": true,
        "PlayStyle": "surviveandbuild",
        "PlayStyleLangCode": "surviveandbuild-bands",
        "WorldType": "standard",
        "WorldConfiguration": {
          "gameMode": "survival",
          "startingClimate": "temperate",
          "spawnRadius": "50",
          "graceTimer": "0",
          "deathPunishment": "drop",
          "droppedItemsTimer": "600",
          "seasons": "enabled",
          "playerlives": "-1",
          "lungCapacity": "40000",
          "daysPerMonth": "9",
          "harshWinters": "true",
          "blockGravity": "sandgravel",
          "caveIns": "off",
          "allowUndergroundFarming": false,
          "bodyTemperatureResistance": "0",
          "creatureHostility": "aggressive",
          "creatureStrength": "1",
          "playerHealthPoints": "15",
          "playerHungerSpeed": "1",
          "playerHealthRegenSpeed": "1",
          "playerMoveSpeed": "1.5",
          "foodSpoilSpeed": "1",
          "saplingGrowthRate": "1",
          "toolDurability": "1",
          "toolMiningSpeed": "1",
          "propickNodeSearchRadius": "6",
          "globalDepositSpawnRate": "1",
          "microblockChiseling": "stonewood",
          "allowCoordinateHud": true,
          "allowMap": true,
          "colorAccurateWorldmap": false,
          "loreContent": true,
          "clutterObtainable": "ifrepaired",
          "temporalStorms": "sometimes",
          "tempstormDurationMul": "1",
          "temporalStability": true,
          "temporalRifts": "visible",
          "temporalGearRespawnUses": "20",
          "temporalStormSleeping": "0",
          "worldClimate": "realistic",
          "landcover": "0.5",
          "oceanscale": "4",
          "upheavelCommonness": "0.3",
          "geologicActivity": "0.05",
          "landformScale": "1.0",
          "worldWidth": "1024000",
          "worldLength": "1024000",
          "worldEdge": "traversable",
          "polarEquatorDistance": "100000",
          "globalTemperature": "1",
          "globalPrecipitation": "1",
          "globalForestation": "0",
          "surfaceCopperDeposits": "0.12",
          "surfaceTinDeposits": "0.007",
          "snowAccum": "true",
          "allowLandClaiming": true,
          "classExclusiveRecipes": true,
          "auctionHouse": true
        },
        "MapSizeY": 256,
        "CreatedByPlayerName": null,
        "DisabledMods": null,
        "RepairMode": false
      },

     

     

     

    Paso nº 13 - Eliminar mundo actual del servidor

    Spoiler

    Al iniciar nuestro servidor por primera vez automáticamente se crea un mundo por defecto el cual ahora vamos a borrar.

    El archivo lo encontraremos en el directorio “/var/vintagestory/data/Saves” de nuestra VPS, el archivo aparecerá con el nombre “default.vcdbs”, una vez lo encontremos solo tenemos que seleccionarlo y borrarlo.

    Una vez lo hayamos borrado deberemos volver a iniciar nuestro servidor desde el usuario “vintagestory”, automáticamente se generara un mundo con la nueva configuración y ya podremos disfrutar de Vintage Story como más nos gusta.

     

    Y con esto ya tendríamos nuestro servidor operativo y listo para usarlo.

    Todavía voy a seguir ampliando la guía para añadir una sección de como configurarlo todo a nuestro gusto, además de otra sección de como instalar mods.

    Próximamente añadiré imágenes para cada paso, de manera que se haga todo un poco más intuitivo y no sea puro texto plano

     

    ¡IMPORTANTE!

    No soy ningún experto en VPS, Linux, o servidores de Vintage Story, solamente quería compartir lo que a mi me ha funcionado, puede que esto a ti no te sirva, o puede que seas un profesional y pienses que soy idiota y no tengo ni idea y estarías en lo correcto, solo comparto mi escaso conocimiento.

    Dicho esto espero que les sirva y aquí me despido.

    English:

    Spoiler

    Very good to everyone!

    I'm Jefferzoonn, Jeff Story or JefferZ, whatever you want to call me, at this point I have more names than Beelzebub...

    Today I come to explain to you where I purchased a VPS for €5 per month and how I managed to set up an online server for this our beloved game.

    First of all, I want to clarify that this is not a guide on how to acquire a VPS or how to use it, but rather how to create a public Vintage Story server using a VPS, which in this guide it will be assumed that you already have.

    For this guide we will use a Contabo.com VPS (It has quite competitive prices, I recommend taking a look)

    We'll have to start, right? But we go in parts as the cutter said

    (This guide is based on Ubuntu)

     

    Step #1 - Enter the VPS and go to the root folder

    Spoiler

    If we have our VPS at Contabo.com, to enter we will use PuTTY with the root user and the password that we chose before installing.

    Once we have accessed it, I recommend using the "cd .." command until we reach the root folder. We can also use the "ls" command to show us a list of folders and to make sure we are at the root.

    Step #2 - Install pcregrep, screen and wget

    Spoiler

    From here I am going to label the commands in a specific way which will be StepNumber.CommandNumber

    Commands:

     2.1

    sudo apt install pcregrep

    2.2

    sudo apt install screen

    2.3

    sudo apt install wget

     

    Step #3 - Download and install NET 7

    Spoiler

    Here we are already entering a terrain in which we can have different problems since there are several Linux with different versions and differences. In order not to make it more complicated, I recommend searching in your browser for "install NET 7 in your_Os" anyway, I'm going to tell you say the commands that have worked for me:

     3.1

    wget https://dot.net/v1/dotnet-install.sh -O dotnet-install.sh

    3.2

    chmod +x ./dotnet-install.sh

    3.3

    ./dotnet-install.sh --channel 7.0

     

    If when you start the server later we get an error that says “Fatal! I require dotnet but it’s not installed.”

    You have to do the following:

     3.4

    wget https://packages.microsoft.com/config/ubuntu/20.04/packages-microsoft-prod.deb -O packages-microsoft-prod.deb 
    sudo dpkg -i packages-microsoft-prod.deb 
    rm packages-microsoft-prod.deb

    3.5

    sudo apt-get update

    3.6

    sudo apt-get install -y dotnet-sdk-7.0

    Once this is done we return to the point where we had left before the error.

    Step #4 - Create a new user called vintagestory

    Spoiler

    For security reasons, the server should not be run from root, so we create another user:

    4.1

    adduser vintagestory

     

    Step #5 - Create folder in home/vintagestory directory

    Spoiler

    If you followed the guide the same as I did, you will still be in the root folder, if you are not in it, go back to the root folder using the command "cd .."

    Now from the root folder we start with the commands:

     5.1

    cd home

    5.2

    cd vintagestory

    5.3

    mkdir server && cd server

     

    Step #6 - Download and extract the necessary files for the server

    Spoiler

    Being in the directory "/home/vintagestory/server" we must use the following commands:

     6.1

    wget https://cdn.vintagestory.at/gamefiles/stable/vs_server_linux-x64_1.19.8.tar.gz

    6.2

    tar xzf vs_server_linux-x64_*.*.*.tar.gz

    6.3

    chmod +x server.sh

     

    Step #7 - Open ports if necessary

    Spoiler

    7.1

    firewall-cmd --permanent --zone=public --add-port=42420/tcp

    7.2

    firewall-cmd --reload

    7.3

    iptables -A INPUT -p tcp -m tcp --dport 42420 -j ACCEPT

     

    Step #8 - Start our server

    Spoiler

    It is important to keep in mind that to start the server for the first time it is necessary to do it from the root user, if not, we change it with the "su root" command.

     

     8.1

    ./server.sh start

     

    We let it load and then do the following command:

    8.2

    ./server.sh command "stop"

     

    Now that we have created the necessary directories we switch to our user named vintagestory with the command:

    8.3

    su vintagestory

     

    Once we are in our user dedicated to the operation of the server (user: vintagestory) we must restart our server and it would be ready to use

    Command to start the server:

    8.4

    ./server.sh start

     

    Step #9 - Give yourself /op

    Spoiler

    To give yourself op you must do it with the server on obviously

    Command to give you op:

    9.1

    ./server.sh command "/op UserName"

    Where it says UserName we change it to our name, for example:

    ./server.sh command "/op JefferZ"

     

    Step #10 - Shut down server and access from FTP client

    Spoiler

    To turn off the Vintage Story server we will enter the following command in the console of our VPS:

    10.1

    ./server.sh command "stop"

     

    Step #11 - Open our Vintage Story client and create a new world

    Spoiler

    We open our Vintage Story game to create a world and then copy the configuration to the server since it is much easier

    In this case I am going to put a seed and some specific settings that will later help us to operate a mod that we will use later in the Install Mods section.

    World Generation:

    Seed: 1234567890 || Semilla: 1234567890

    Landcover: 50% || Cubierta terrestre: 50%

    Landcover scale: 400% || Escala de cubierta terrestre: 400%

    It is important that the world we want to use as a base is the first in our list of worlds

    Now on our PC we go to the directory:

    AppData\Roaming\VintagestoryData

    There we have a file called “serverconfig.json” which we must open to configure our server

    Example serverconfig.json from a single player world:

    Spoiler
    {
      "FileEditWarning": "PLEASE NOTE: This file is also loaded when you start a single player world. If you want to run a dedicated server without affecting single player, we recommend you install the game into a different folder and run the server from there.",
      "ConfigVersion": "1.5",
      "ServerName": "Vintage Story Server",
      "ServerUrl": null,
      "ServerDescription": null,
      "WelcomeMessage": "Bienvenido {0}, espero que sobrevivas bien y prosperes",
      "Ip": null,
      "Port": 42420,
      "Upnp": false,
      "CompressPackets": true,
      "AdvertiseServer": true,
      "MaxClients": 16,
      "PassTimeWhenEmpty": false,
      "MasterserverUrl": "http://masterserver.vintagestory.at/api/v1/servers/",
      "ModDbUrl": "https://mods.vintagestory.at/",
      "ClientConnectionTimeout": 150,
      "EntityDebugMode": false,
      "Password": null,
      "MapSizeX": 1024000,
      "MapSizeY": 256,
      "MapSizeZ": 1024000,
      "ServerLanguage": "es-es",
      "MaxChunkRadius": 12,
      "TickTime": 33.333332,
      "SpawnCapPlayerScaling": 0.5,
      "BlockTickChunkRange": 4,
      "MaxMainThreadBlockTicks": 10000,
      "RandomBlockTicksPerChunk": 16,
      "BlockTickInterval": 300,
      "SkipEveryChunkRow": 0,
      "SkipEveryChunkRowWidth": 0,
      "Roles": [
        {
          "Code": "suvisitor",
          "PrivilegeLevel": -1,
          "Name": "Survival Visitor",
          "Description": "Can only visit this world and chat but not use/place/break anything",
          "DefaultSpawn": null,
          "ForcedSpawn": null,
          "Privileges": [
            "chat"
          ],
          "RuntimePrivileges": [],
          "DefaultGameMode": 1,
          "Color": "Green",
          "LandClaimAllowance": 0,
          "LandClaimMinSize": {
            "X": 5,
            "Y": 5,
            "Z": 5
          },
          "LandClaimMaxAreas": 3,
          "AutoGrant": false
        },
        {
          "Code": "crvisitor",
          "PrivilegeLevel": -1,
          "Name": "Creative Visitor",
          "Description": "Can only visit this world, chat and fly but not use/place/break anything",
          "DefaultSpawn": null,
          "ForcedSpawn": null,
          "Privileges": [
            "chat"
          ],
          "RuntimePrivileges": [],
          "DefaultGameMode": 2,
          "Color": "DarkGray",
          "LandClaimAllowance": 0,
          "LandClaimMinSize": {
            "X": 5,
            "Y": 5,
            "Z": 5
          },
          "LandClaimMaxAreas": 3,
          "AutoGrant": false
        },
        {
          "Code": "limitedsuplayer",
          "PrivilegeLevel": -1,
          "Name": "Limited Survival Player",
          "Description": "Can use/place/break blocks only in permitted areas (priv level -1), create/manage player groups and chat",
          "DefaultSpawn": null,
          "ForcedSpawn": null,
          "Privileges": [
            "controlplayergroups",
            "manageplayergroups",
            "chat",
            "build",
            "useblock",
            "attackcreatures",
            "attackplayers",
            "selfkill"
          ],
          "RuntimePrivileges": [],
          "DefaultGameMode": 1,
          "Color": "White",
          "LandClaimAllowance": 0,
          "LandClaimMinSize": {
            "X": 5,
            "Y": 5,
            "Z": 5
          },
          "LandClaimMaxAreas": 3,
          "AutoGrant": false
        },
        {
          "Code": "limitedcrplayer",
          "PrivilegeLevel": -1,
          "Name": "Limited Creative Player",
          "Description": "Can use/place/break blocks in only in permitted areas (priv level -1), create/manage player groups, chat, fly and set his own game mode (= allows fly and change of move speed)",
          "DefaultSpawn": null,
          "ForcedSpawn": null,
          "Privileges": [
            "controlplayergroups",
            "manageplayergroups",
            "chat",
            "build",
            "useblock",
            "gamemode",
            "freemove",
            "attackcreatures",
            "attackplayers",
            "selfkill"
          ],
          "RuntimePrivileges": [],
          "DefaultGameMode": 2,
          "Color": "LightGreen",
          "LandClaimAllowance": 0,
          "LandClaimMinSize": {
            "X": 5,
            "Y": 5,
            "Z": 5
          },
          "LandClaimMaxAreas": 3,
          "AutoGrant": false
        },
        {
          "Code": "suplayer",
          "PrivilegeLevel": 0,
          "Name": "Survival Player",
          "Description": "Can use/place/break blocks in unprotected areas (priv level 0), create/manage player groups and chat. Can claim an area of up to 8 chunks.",
          "DefaultSpawn": null,
          "ForcedSpawn": null,
          "Privileges": [
            "controlplayergroups",
            "manageplayergroups",
            "chat",
            "areamodify",
            "build",
            "useblock",
            "attackcreatures",
            "attackplayers",
            "selfkill"
          ],
          "RuntimePrivileges": [],
          "DefaultGameMode": 1,
          "Color": "White",
          "LandClaimAllowance": 262144,
          "LandClaimMinSize": {
            "X": 5,
            "Y": 5,
            "Z": 5
          },
          "LandClaimMaxAreas": 3,
          "AutoGrant": false
        },
        {
          "Code": "crplayer",
          "PrivilegeLevel": 100,
          "Name": "Creative Player",
          "Description": "Can use/place/break blocks in all areas (priv level 100), create/manage player groups, chat, fly and set his own game mode (= allows fly and change of move speed). Can claim an area of up to 40 chunks.",
          "DefaultSpawn": null,
          "ForcedSpawn": null,
          "Privileges": [
            "controlplayergroups",
            "manageplayergroups",
            "chat",
            "areamodify",
            "build",
            "useblock",
            "gamemode",
            "freemove",
            "attackcreatures",
            "attackplayers",
            "selfkill"
          ],
          "RuntimePrivileges": [],
          "DefaultGameMode": 2,
          "Color": "LightGreen",
          "LandClaimAllowance": 1310720,
          "LandClaimMinSize": {
            "X": 5,
            "Y": 5,
            "Z": 5
          },
          "LandClaimMaxAreas": 6,
          "AutoGrant": false
        },
        {
          "Code": "sumod",
          "PrivilegeLevel": 200,
          "Name": "Survival Moderator",
          "Description": "Can use/place/break blocks everywhere (priv level 200), create/manage player groups, chat, kick/ban players and do serverwide announcements. Can claim an area of up to 4 chunks.",
          "DefaultSpawn": null,
          "ForcedSpawn": null,
          "Privileges": [
            "controlplayergroups",
            "manageplayergroups",
            "chat",
            "areamodify",
            "build",
            "useblock",
            "buildblockseverywhere",
            "useblockseverywhere",
            "kick",
            "ban",
            "announce",
            "readlists",
            "attackcreatures",
            "attackplayers",
            "selfkill"
          ],
          "RuntimePrivileges": [],
          "DefaultGameMode": 1,
          "Color": "Cyan",
          "LandClaimAllowance": 1310720,
          "LandClaimMinSize": {
            "X": 5,
            "Y": 5,
            "Z": 5
          },
          "LandClaimMaxAreas": 60,
          "AutoGrant": false
        },
        {
          "Code": "crmod",
          "PrivilegeLevel": 500,
          "Name": "Creative Moderator",
          "Description": "Can use/place/break blocks everywhere (priv level 500), create/manage player groups, chat, kick/ban players, fly and set his own or other players game modes (= allows fly and change of move speed). Can claim an area of up to 40 chunks.",
          "DefaultSpawn": null,
          "ForcedSpawn": null,
          "Privileges": [
            "controlplayergroups",
            "manageplayergroups",
            "chat",
            "areamodify",
            "build",
            "useblock",
            "buildblockseverywhere",
            "useblockseverywhere",
            "kick",
            "ban",
            "gamemode",
            "freemove",
            "commandplayer",
            "announce",
            "readlists",
            "attackcreatures",
            "attackplayers",
            "selfkill"
          ],
          "RuntimePrivileges": [],
          "DefaultGameMode": 2,
          "Color": "Cyan",
          "LandClaimAllowance": 1310720,
          "LandClaimMinSize": {
            "X": 5,
            "Y": 5,
            "Z": 5
          },
          "LandClaimMaxAreas": 60,
          "AutoGrant": false
        },
        {
          "Code": "admin",
          "PrivilegeLevel": 99999,
          "Name": "Admin",
          "Description": "Has all privileges, including giving other players admin status.",
          "DefaultSpawn": null,
          "ForcedSpawn": null,
          "Privileges": [
            "build",
            "useblock",
            "buildblockseverywhere",
            "useblockseverywhere",
            "attackplayers",
            "attackcreatures",
            "freemove",
            "gamemode",
            "pickingrange",
            "chat",
            "kick",
            "ban",
            "whitelist",
            "setwelcome",
            "announce",
            "readlists",
            "give",
            "areamodify",
            "setspawn",
            "controlserver",
            "tp",
            "time",
            "grantrevoke",
            "root",
            "commandplayer",
            "controlplayergroups",
            "manageplayergroups",
            "selfkill",
            "worldedit"
          ],
          "RuntimePrivileges": [],
          "DefaultGameMode": 1,
          "Color": "LightBlue",
          "LandClaimAllowance": 2147483647,
          "LandClaimMinSize": {
            "X": 5,
            "Y": 5,
            "Z": 5
          },
          "LandClaimMaxAreas": 99999,
          "AutoGrant": true
        }
      ],
      "DefaultRoleCode": "suplayer",
      "ModPaths": [
        "Mods",
        "C:\\Users\\PC\\AppData\\Roaming\\VintagestoryData\\Mods"
      ],
      "AntiAbuse": 0,
      "WorldConfig": {
        "Seed": "1234567890",
        "SaveFileLocation": "C:\\Users\\PC\\AppData\\Roaming\\VintagestoryData\\Saves\\jefferzs village world.vcdbs",
        "WorldName": "JefferZs Village World",
        "AllowCreativeMode": true,
        "PlayStyle": "surviveandbuild",
        "PlayStyleLangCode": "preset-surviveandbuild",
        "WorldType": "standard",
        "WorldConfiguration": {
          "gameMode": "survival",
          "startingClimate": "temperate",
          "spawnRadius": "50",
          "graceTimer": "0",
          "deathPunishment": "drop",
          "droppedItemsTimer": "600",
          "seasons": "enabled",
          "playerlives": "-1",
          "lungCapacity": "40000",
          "daysPerMonth": "9",
          "harshWinters": "true",
          "blockGravity": "sandgravel",
          "caveIns": "off",
          "allowUndergroundFarming": false,
          "bodyTemperatureResistance": "0",
          "creatureHostility": "aggressive",
          "creatureStrength": "1",
          "playerHealthPoints": "15",
          "playerHungerSpeed": "1",
          "playerHealthRegenSpeed": "1",
          "playerMoveSpeed": "1.5",
          "foodSpoilSpeed": "1",
          "saplingGrowthRate": "1",
          "toolDurability": "1",
          "toolMiningSpeed": "1",
          "propickNodeSearchRadius": "6",
          "globalDepositSpawnRate": "1",
          "microblockChiseling": "stonewood",
          "allowCoordinateHud": true,
          "allowMap": true,
          "colorAccurateWorldmap": false,
          "loreContent": true,
          "clutterObtainable": "ifrepaired",
          "temporalStorms": "sometimes",
          "tempstormDurationMul": "1",
          "temporalStability": true,
          "temporalRifts": "visible",
          "temporalGearRespawnUses": "20",
          "temporalStormSleeping": "0",
          "worldClimate": "realistic",
          "landcover": "0.5",
          "oceanscale": "4",
          "upheavelCommonness": "0.3",
          "geologicActivity": "0.05",
          "landformScale": "1.0",
          "worldWidth": "1024000",
          "worldLength": "1024000",
          "worldEdge": "traversable",
          "polarEquatorDistance": "100000",
          "globalTemperature": "1",
          "globalPrecipitation": "1",
          "globalForestation": "0",
          "surfaceCopperDeposits": "0.12",
          "surfaceTinDeposits": "0.007",
          "snowAccum": "true",
          "allowLandClaiming": true,
          "classExclusiveRecipes": true,
          "auctionHouse": true
        },
        "MapSizeY": 256,
        "CreatedByPlayerName": "JefferZ",
        "DisabledMods": [
          "modprueba@1.0.0",
          "plogrosbasicos@1.0.0",
          "bettercrates@1.7.0",
          "livemap@0.0.4"
        ],
        "RepairMode": false
      },
      "NextPlayerGroupUid": 10,
      "GroupChatHistorySize": 20,
      "MaxOwnedGroupChannelsPerUser": 10,
      "OnlyWhitelisted": false,
      "VerifyPlayerAuth": true,
      "DefaultSpawn": null,
      "AllowPvP": true,
      "AllowFireSpread": true,
      "AllowFallingBlocks": true,
      "HostedMode": false,
      "HostedModeAllowMods": false,
      "StartupCommands": null,
      "RepairMode": false,
      "AnalyzeMode": false,
      "CorruptionProtection": true,
      "RegenerateCorruptChunks": false,
      "ChatRateLimitMs": 1000,
      "DieBelowDiskSpaceMb": 400,
      "ModIdBlackList": null,
      "ServerIdentifier": "445f9983-647d-4773-9007-cfdfb7e08333"
    }

     

     

    Step #12 - Configure server based on previously created world

    Spoiler

    We return to our FTP and we should continue in the “/var/vintagestory/data” directory of the root of our VPS which we are accessing from our FTP client.

    In this directory we will find the same serverconfig.json file that we will open and leave the window in the middle of the right screen and at the same time we will open the serverconfig.json file located in the “AppData\Roaming\VintagestoryData” directory on the left side of our screen. of our PC.

     

    Now comes the complicated part, here you have to be careful to configure everything correctly.

    - Setting the server name -

    Spoiler

    In one of the first sections of the “serverconfig.json” of your server you will see that it says:

    "ServerName": "Vintage Story Server",

    Well, where it says “Vintage Story Server” we change it to the name we want for our server, for example:

    "ServerName": "JefferZ server",

     

    - Setting the server description -

    Spoiler

    Now we go to “ "ServerDescription": null, ” and change it to something attractive for our server, unmodified and modified example:

    "ServerDescription": null,

    Modified:

    "ServerDescription": This is the best server in the world”,

    This description will be displayed when a user clicks on your server from the public server list.

    - Configuring the server welcome message -

    Spoiler

    It is also advisable to add a personalized welcome message in:

    "WelcomeMessage": "Welcome {0}, may you survive well and prosper",

    The parameter “{0}” will be changed to the username when displaying the message.

    Personalized message:

    "WelcomeMessage": "Welcome {0}, I hope you enjoy this guide",

    - Configuring the roles -

    Spoiler

    Let's move on to the roles section, here if what we want is to make a public server we should make some adjustments to our roles:

    Default roles:

    Spoiler
    "Roles": [
        {
          "Code": "suvisitor",
          "PrivilegeLevel": -1,
          "Name": "Survival Visitor",
          "Description": "Can only visit this world and chat but not use/place/break anything",
          "DefaultSpawn": null,
          "ForcedSpawn": null,
          "Privileges": [
            "chat"
          ],
          "RuntimePrivileges": [],
          "DefaultGameMode": 1,
          "Color": "Green",
          "LandClaimAllowance": 0,
          "LandClaimMinSize": {
            "X": 5,
            "Y": 5,
            "Z": 5
          },
          "LandClaimMaxAreas": 3,
          "AutoGrant": false
        },
        {
          "Code": "crvisitor",
          "PrivilegeLevel": -1,
          "Name": "Creative Visitor",
          "Description": "Can only visit this world, chat and fly but not use/place/break anything",
          "DefaultSpawn": null,
          "ForcedSpawn": null,
          "Privileges": [
            "chat"
          ],
          "RuntimePrivileges": [],
          "DefaultGameMode": 2,
          "Color": "DarkGray",
          "LandClaimAllowance": 0,
          "LandClaimMinSize": {
            "X": 5,
            "Y": 5,
            "Z": 5
          },
          "LandClaimMaxAreas": 3,
          "AutoGrant": false
        },
        {
          "Code": "limitedsuplayer",
          "PrivilegeLevel": -1,
          "Name": "Limited Survival Player",
          "Description": "Can use/place/break blocks only in permitted areas (priv level -1), create/manage player groups and chat",
          "DefaultSpawn": null,
          "ForcedSpawn": null,
          "Privileges": [
            "controlplayergroups",
            "manageplayergroups",
            "chat",
            "build",
            "useblock",
            "attackcreatures",
            "attackplayers",
            "selfkill"
          ],
          "RuntimePrivileges": [],
          "DefaultGameMode": 1,
          "Color": "White",
          "LandClaimAllowance": 0,
          "LandClaimMinSize": {
            "X": 5,
            "Y": 5,
            "Z": 5
          },
          "LandClaimMaxAreas": 3,
          "AutoGrant": false
        },
        {
          "Code": "limitedcrplayer",
          "PrivilegeLevel": -1,
          "Name": "Limited Creative Player",
          "Description": "Can use/place/break blocks in only in permitted areas (priv level -1), create/manage player groups, chat, fly and set his own game mode (= allows fly and change of move speed)",
          "DefaultSpawn": null,
          "ForcedSpawn": null,
          "Privileges": [
            "controlplayergroups",
            "manageplayergroups",
            "chat",
            "build",
            "useblock",
            "gamemode",
            "freemove",
            "attackcreatures",
            "attackplayers",
            "selfkill"
          ],
          "RuntimePrivileges": [],
          "DefaultGameMode": 2,
          "Color": "LightGreen",
          "LandClaimAllowance": 0,
          "LandClaimMinSize": {
            "X": 5,
            "Y": 5,
            "Z": 5
          },
          "LandClaimMaxAreas": 3,
          "AutoGrant": false
        },
        {
          "Code": "suplayer",
          "PrivilegeLevel": 0,
          "Name": "Survival Player",
          "Description": "Can use/place/break blocks in unprotected areas (priv level 0), create/manage player groups and chat. Can claim an area of up to 8 chunks.",
          "DefaultSpawn": null,
          "ForcedSpawn": null,
          "Privileges": [
            "controlplayergroups",
            "manageplayergroups",
            "chat",
            "areamodify",
            "build",
            "useblock",
            "attackcreatures",
            "attackplayers",
            "selfkill"
          ],
          "RuntimePrivileges": [],
          "DefaultGameMode": 1,
          "Color": "White",
          "LandClaimAllowance": 262144,
          "LandClaimMinSize": {
            "X": 5,
            "Y": 5,
            "Z": 5
          },
          "LandClaimMaxAreas": 3,
          "AutoGrant": false
        },
        {
          "Code": "crplayer",
          "PrivilegeLevel": 100,
          "Name": "Creative Player",
          "Description": "Can use/place/break blocks in all areas (priv level 100), create/manage player groups, chat, fly and set his own game mode (= allows fly and change of move speed). Can claim an area of up to 40 chunks.",
          "DefaultSpawn": null,
          "ForcedSpawn": null,
          "Privileges": [
            "controlplayergroups",
            "manageplayergroups",
            "chat",
            "areamodify",
            "build",
            "useblock",
            "gamemode",
            "freemove",
            "attackcreatures",
            "attackplayers",
            "selfkill"
          ],
          "RuntimePrivileges": [],
          "DefaultGameMode": 2,
          "Color": "LightGreen",
          "LandClaimAllowance": 1310720,
          "LandClaimMinSize": {
            "X": 5,
            "Y": 5,
            "Z": 5
          },
          "LandClaimMaxAreas": 6,
          "AutoGrant": false
        },
        {
          "Code": "sumod",
          "PrivilegeLevel": 200,
          "Name": "Survival Moderator",
          "Description": "Can use/place/break blocks everywhere (priv level 200), create/manage player groups, chat, kick/ban players and do serverwide announcements. Can claim an area of up to 4 chunks.",
          "DefaultSpawn": null,
          "ForcedSpawn": null,
          "Privileges": [
            "controlplayergroups",
            "manageplayergroups",
            "chat",
            "areamodify",
            "build",
            "useblock",
            "buildblockseverywhere",
            "useblockseverywhere",
            "kick",
            "ban",
            "announce",
            "readlists",
            "attackcreatures",
            "attackplayers",
            "selfkill"
          ],
          "RuntimePrivileges": [],
          "DefaultGameMode": 1,
          "Color": "Cyan",
          "LandClaimAllowance": 1310720,
          "LandClaimMinSize": {
            "X": 5,
            "Y": 5,
            "Z": 5
          },
          "LandClaimMaxAreas": 60,
          "AutoGrant": false
        },
        {
          "Code": "crmod",
          "PrivilegeLevel": 500,
          "Name": "Creative Moderator",
          "Description": "Can use/place/break blocks everywhere (priv level 500), create/manage player groups, chat, kick/ban players, fly and set his own or other players game modes (= allows fly and change of move speed). Can claim an area of up to 40 chunks.",
          "DefaultSpawn": null,
          "ForcedSpawn": null,
          "Privileges": [
            "controlplayergroups",
            "manageplayergroups",
            "chat",
            "areamodify",
            "build",
            "useblock",
            "buildblockseverywhere",
            "useblockseverywhere",
            "kick",
            "ban",
            "gamemode",
            "freemove",
            "commandplayer",
            "announce",
            "readlists",
            "attackcreatures",
            "attackplayers",
            "selfkill"
          ],
          "RuntimePrivileges": [],
          "DefaultGameMode": 2,
          "Color": "Cyan",
          "LandClaimAllowance": 1310720,
          "LandClaimMinSize": {
            "X": 5,
            "Y": 5,
            "Z": 5
          },
          "LandClaimMaxAreas": 60,
          "AutoGrant": false
        },
        {
          "Code": "admin",
          "PrivilegeLevel": 99999,
          "Name": "Admin",
          "Description": "Has all privileges, including giving other players admin status.",
          "DefaultSpawn": null,
          "ForcedSpawn": null,
          "Privileges": [
            "build",
            "useblock",
            "buildblockseverywhere",
            "useblockseverywhere",
            "attackplayers",
            "attackcreatures",
            "freemove",
            "gamemode",
            "pickingrange",
            "chat",
            "kick",
            "ban",
            "whitelist",
            "setwelcome",
            "announce",
            "readlists",
            "give",
            "areamodify",
            "setspawn",
            "controlserver",
            "tp",
            "time",
            "grantrevoke",
            "root",
            "commandplayer",
            "controlplayergroups",
            "manageplayergroups",
            "selfkill"
          ],
          "RuntimePrivileges": [],
          "DefaultGameMode": 1,
          "Color": "LightBlue",
          "LandClaimAllowance": 2147483647,
          "LandClaimMinSize": {
            "X": 5,
            "Y": 5,
            "Z": 5
          },
          "LandClaimMaxAreas": 99999,
          "AutoGrant": true
        }
      ],

     

    Recommended roles:

    Spoiler
    "Roles": [
        {
          "Code": "suplayer",
          "PrivilegeLevel": 0,
          "Name": "Survival Player",
          "Description": "Can use/place/break blocks in unprotected areas (priv level 0), create/manage player groups and chat. Can claim an area of up to 8 chunks.",
          "DefaultSpawn": null,
          "ForcedSpawn": null,
          "Privileges": [
            "controlplayergroups",
            "manageplayergroups",
            "chat",
            "areamodify",
            "build",
            "useblock",
            "attackcreatures",
            "attackplayers",
            "selfkill"
          ],
          "RuntimePrivileges": [],
          "DefaultGameMode": 1,
          "Color": "White",
          "LandClaimAllowance": 262144,
          "LandClaimMinSize": {
            "X": 5,
            "Y": 5,
            "Z": 5
          },
          "LandClaimMaxAreas": 3,
          "AutoGrant": false
        },
        {
          "Code": "crplayer",
          "PrivilegeLevel": 100,
          "Name": "Creative Player",
          "Description": "Can use/place/break blocks in all areas (priv level 100), create/manage player groups, chat, fly and set his own game mode (= allows fly and change of move speed). Can claim an area of up to 40 chunks.",
          "DefaultSpawn": null,
          "ForcedSpawn": null,
          "Privileges": [
            "controlplayergroups",
            "manageplayergroups",
            "chat",
            "areamodify",
            "build",
            "useblock",
            "gamemode",
            "freemove",
            "attackcreatures",
            "attackplayers",
            "selfkill"
          ],
          "RuntimePrivileges": [],
          "DefaultGameMode": 2,
          "Color": "LightGreen",
          "LandClaimAllowance": 1310720,
          "LandClaimMinSize": {
            "X": 5,
            "Y": 5,
            "Z": 5
          },
          "LandClaimMaxAreas": 6,
          "AutoGrant": false
        },
        {
          "Code": "sumod",
          "PrivilegeLevel": 200,
          "Name": "Survival Moderator",
          "Description": "Can use/place/break blocks everywhere (priv level 200), create/manage player groups, chat, kick/ban players and do serverwide announcements. Can claim an area of up to 4 chunks.",
          "DefaultSpawn": null,
          "ForcedSpawn": null,
          "Privileges": [
            "controlplayergroups",
            "manageplayergroups",
            "chat",
            "areamodify",
            "build",
            "useblock",
            "buildblockseverywhere",
            "useblockseverywhere",
            "kick",
            "ban",
            "announce",
            "readlists",
            "attackcreatures",
            "attackplayers",
            "selfkill"
          ],
          "RuntimePrivileges": [],
          "DefaultGameMode": 1,
          "Color": "Cyan",
          "LandClaimAllowance": 1310720,
          "LandClaimMinSize": {
            "X": 5,
            "Y": 5,
            "Z": 5
          },
          "LandClaimMaxAreas": 60,
          "AutoGrant": false
        },
        {
          "Code": "crmod",
          "PrivilegeLevel": 500,
          "Name": "Creative Moderator",
          "Description": "Can use/place/break blocks everywhere (priv level 500), create/manage player groups, chat, kick/ban players, fly and set his own or other players game modes (= allows fly and change of move speed). Can claim an area of up to 40 chunks.",
          "DefaultSpawn": null,
          "ForcedSpawn": null,
          "Privileges": [
            "controlplayergroups",
            "manageplayergroups",
            "chat",
            "areamodify",
            "build",
            "useblock",
            "buildblockseverywhere",
            "useblockseverywhere",
            "kick",
            "ban",
            "gamemode",
            "freemove",
            "commandplayer",
            "announce",
            "readlists",
            "attackcreatures",
            "attackplayers",
            "selfkill"
          ],
          "RuntimePrivileges": [],
          "DefaultGameMode": 2,
          "Color": "Cyan",
          "LandClaimAllowance": 1310720,
          "LandClaimMinSize": {
            "X": 5,
            "Y": 5,
            "Z": 5
          },
          "LandClaimMaxAreas": 60,
          "AutoGrant": false
        },
        {
          "Code": "admin",
          "PrivilegeLevel": 99999,
          "Name": "Admin",
          "Description": "Has all privileges, including giving other players admin status.",
          "DefaultSpawn": null,
          "ForcedSpawn": null,
          "Privileges": [
            "build",
            "useblock",
            "buildblockseverywhere",
            "useblockseverywhere",
            "attackplayers",
            "attackcreatures",
            "freemove",
            "gamemode",
            "pickingrange",
            "chat",
            "kick",
            "ban",
            "whitelist",
            "setwelcome",
            "announce",
            "readlists",
            "give",
            "areamodify",
            "setspawn",
            "controlserver",
            "tp",
            "time",
            "grantrevoke",
            "root",
            "commandplayer",
            "controlplayergroups",
            "manageplayergroups",
            "selfkill"
          ],
          "RuntimePrivileges": [],
          "DefaultGameMode": 1,
          "Color": "LightBlue",
          "LandClaimAllowance": 2147483647,
          "LandClaimMinSize": {
            "X": 5,
            "Y": 5,
            "Z": 5
          },
          "LandClaimMaxAreas": 99999,
          "AutoGrant": true
        }
      ],

     

     

    - Copying the world generation of our previously created game -

    Spoiler

    Now the good part begins, let's go to the world configuration within the section:

    "WorldConfig": {
    "Seed": null,
    "SaveFileLocation": "/var/vintagestory/data/Saves/default.vcdbs",
    "WorldName": "A new world",
    "AllowCreativeMode": true,
    "PlayStyle": "surviveandbuild",
    "PlayStyleLangCode": "surviveandbuild-bands",
    "WorldType": "standard",
    "WorldConfiguration": null,
    "MapSizeY": null,
    "CreatedByPlayerName": null,
    "DisabledMods": null,
    "RepairMode": false
    },

    We add our seed, if we want we change the name of our world file and assign a name to our world in addition to a maximum construction height that can be from 256 to 320:

    "WorldConfig": {
    "Seed": "1234567890",
    "SaveFileLocation": "/var/vintagestory/data/Saves/guideWorld.vcdbs",
    "WorldName": "El mundo de las guias",
    "AllowCreativeMode": true,
    "PlayStyle": "surviveandbuild",
    "PlayStyleLangCode": "surviveandbuild-bands",
    "WorldType": "standard",
    "WorldConfiguration": null,
    "MapSizeY": 256,
    "CreatedByPlayerName": null,
    "DisabledMods": null,
    "RepairMode": false
    },

    And finally we add our “WorldConfiguration”, where it says:

    "WorldConfiguration": null,

    We replace it with the same section of our local serverconfig.json, which we should have in the “AppData\Roaming\VintagestoryData” directory on our PC and it should look like this:

    Example of “WorldConfig” section:

    Spoiler
    "WorldConfig": {
        "Seed": "1234567890",
        "SaveFileLocation": "/var/vintagestory/data/Saves/guideWorld.vcdbs",
        "WorldName": "El mundo de las guias",
        "AllowCreativeMode": true,
        "PlayStyle": "surviveandbuild",
        "PlayStyleLangCode": "surviveandbuild-bands",
        "WorldType": "standard",
        "WorldConfiguration": {
          "gameMode": "survival",
          "startingClimate": "temperate",
          "spawnRadius": "50",
          "graceTimer": "0",
          "deathPunishment": "drop",
          "droppedItemsTimer": "600",
          "seasons": "enabled",
          "playerlives": "-1",
          "lungCapacity": "40000",
          "daysPerMonth": "9",
          "harshWinters": "true",
          "blockGravity": "sandgravel",
          "caveIns": "off",
          "allowUndergroundFarming": false,
          "bodyTemperatureResistance": "0",
          "creatureHostility": "aggressive",
          "creatureStrength": "1",
          "playerHealthPoints": "15",
          "playerHungerSpeed": "1",
          "playerHealthRegenSpeed": "1",
          "playerMoveSpeed": "1.5",
          "foodSpoilSpeed": "1",
          "saplingGrowthRate": "1",
          "toolDurability": "1",
          "toolMiningSpeed": "1",
          "propickNodeSearchRadius": "6",
          "globalDepositSpawnRate": "1",
          "microblockChiseling": "stonewood",
          "allowCoordinateHud": true,
          "allowMap": true,
          "colorAccurateWorldmap": false,
          "loreContent": true,
          "clutterObtainable": "ifrepaired",
          "temporalStorms": "sometimes",
          "tempstormDurationMul": "1",
          "temporalStability": true,
          "temporalRifts": "visible",
          "temporalGearRespawnUses": "20",
          "temporalStormSleeping": "0",
          "worldClimate": "realistic",
          "landcover": "0.5",
          "oceanscale": "4",
          "upheavelCommonness": "0.3",
          "geologicActivity": "0.05",
          "landformScale": "1.0",
          "worldWidth": "1024000",
          "worldLength": "1024000",
          "worldEdge": "traversable",
          "polarEquatorDistance": "100000",
          "globalTemperature": "1",
          "globalPrecipitation": "1",
          "globalForestation": "0",
          "surfaceCopperDeposits": "0.12",
          "surfaceTinDeposits": "0.007",
          "snowAccum": "true",
          "allowLandClaiming": true,
          "classExclusiveRecipes": true,
          "auctionHouse": true
        },
        "MapSizeY": 256,
        "CreatedByPlayerName": null,
        "DisabledMods": null,
        "RepairMode": false
      },

     

     

     

    Step #13 - Delete current world from server

    Spoiler

    When we start our server for the first time, a default world is automatically created, which we are now going to delete.

    We will find the file in the “/var/vintagestory/data/Saves” directory of our VPS, the file will appear with the name “default.vcdbs”, once we find it we just have to select it and delete it.

    Once we have deleted it, we will have to restart our server from the user “vintagestory”, a world will automatically be generated with the new configuration and we will be able to enjoy Vintage Story as we like.

     

    And with this we would have our server operational and ready to use.

    I am still going to continue expanding the guide to add a section on how to configure everything to our liking, as well as another section on how to install mods.

    Soon I will add images for each step, so that everything becomes a little more intuitive and is not pure plain text.

     

    ¡IMPORTANT!

    No soy ningún experto en VPS, Linux, o servidores de Vintage Story, solamente quería compartir lo que a mi me ha funcionado, puede que esto a ti no te sirva, o puede que seas un profesional y pienses que soy idiota y no tengo ni idea y estarías en lo correcto, I'm just sharing my limited knowledge.

    Having said that, I hope it helps you and here I say goodbye.

  2. Buenas me presento, soy JefferZ y hoy vengo aquí para compartir un servidor que he creado abierto para todo el publico, por el momento es vanilla pero se irán añadiendo mods, aunque todos los mods serán testeados y traducidos antes de ser añadidos.

     

    EL NUEVO MUNDO

    image.thumb.png.fdfa2a30feb06f171da1c509f189e3e7.png

    Para entrar puedes buscarlo desde el "Explorador de servidores públicos"

    Búscalo como "el nuevo mundo"

     

    AJUSTES DEL MUNDO

    Spoiler

    Modo: Survival
    Clima: Realista
    Estabilidad Temporal: Activada
    Tormentas Temporales: Raras
    Cincelado: Todos los bloques
    Distancia a los polos: 200.000 bloques
    Capacidad Pulmonar: 1 minuto
    Inviernos verdaderos: Activados
    Días por mes: 9
    Radio de Nodos: 8
    Agricultura subterránea: Activada
    Usos de respawn engrane temporal: Infinitos
    Estaciones: Activadas
    Gravedad de bloques: Arena y Grava
    Resistencia corporal temperatura: -5 cº
    Puntos de salud del jugador: 20
    Tasa hambre: Ligeramente lento (75%)
    Velocidad al caminar: Ligeramente Rápido
    Generación depósitos globales: 120%
    Tamaño del mundo: 1024000
    Borde del mundo: Traspasable
    Temperatura Global: Templado
    Precipitación Global: Normal
    Forestación y Arbustos: Algo mas de bosque (+25%)
    Frecuencia cobre superficie: Común
    Frecuencia estaño superficie: Raro
    Permitir reclamar áreas: Activado
    Recetas exclusivas: Activadas
    Subastas: Activas

     

    ES MUY RECOMENDABLE UNIRSE AL DISCORD!

    https://discord.gg/pHqgTtdrjV

  3. 8 minutes ago, Frepo said:

    I made it do the opposite (increase fall damage). It's basically a custom made behavior for the player, that extends EntityBehavior and overrides the OnFallToGround method in there. But I'm not quite sure it completely replaces the fall damage mechanic (actually I think my method adds on top of the vanilla method), I wrote that a looong time ago with little experience. But it increased the damage for sure, so I was content and never looked back at it again. Maybe you can find something useful here.

    Patch json

      Reveal hidden contents
    
    	 
    		  
    		  
    		  
    		  
    		    
    	
    	 
    		  
    		  
    		  
    		  
    		    
    	
    

     

    My custom behavior class

      Hide contents
    namespace fregtech
    {
        internal class BehaviorFTHealth : EntityBehavior
        {
            public BehaviorFTHealth(Entity entity) : base(entity)
            {
            }
    
            public override void Initialize(EntityProperties properties, JsonObject typeAttributes)
            {
                base.Initialize(properties, typeAttributes);
            }
    
            // FALL DAMAGE OVERHAUL
            public override void OnFallToGround(Vec3d positionBeforeFalling, double withYMotion)
            {
                float fallDmgMod = 1.8f;
                IInventory inv;
    
    
                if (!this.entity.Properties.FallDamage)
                {
                    return;
                }
                double yDistance = Math.Abs(positionBeforeFalling.Y - this.entity.Pos.Y);
                if (yDistance < 3.5)
                {
                    return;
                }
                if (withYMotion > -0.19)
                {
                    return;
                }
    
                // reduce from gear
                if(this.entity is EntityPlayer) // this.entity.Api.Side == EnumAppSide.Server
                {
                    EntityPlayer plr = this.entity as EntityPlayer;
                    // GearInventory = characterInventory:
                    // 0 = head (clothes), 1 = cape (clothes), 2 = over shirt (clothes), 3 = pants (clothes), 4 = boots (clothes), 5 = gloves (misc)
                    // 6 = necklace (misc), 7 = brooch (misc), 8 = mask (misc), 9 = belt (misc), 10 = bracelet (misc), 11 = under shirt (clothes)
                    // 12 = helmet (armor), 13 = body (armor), 14 = legs (armor)
                    inv = plr.GearInventory;
                    
                    if(inv != null)
                    {
                        // each piece of clothing reduces fall damage by 5%
                        if (!inv[0].Empty) {fallDmgMod -= 0.05f;}
                        if (!inv[1].Empty) { fallDmgMod -= 0.05f; }
                        if (!inv[2].Empty) { fallDmgMod -= 0.05f; }
                        if (!inv[3].Empty) { fallDmgMod -= 0.05f; }
                        if (!inv[4].Empty) { // boots
                            if (inv[4].Itemstack.GetName() == "Catfeet boots") { fallDmgMod -= 0.25f; }
                            else { fallDmgMod -= 0.05f; }
                        }
                        if (!inv[11].Empty) { fallDmgMod -= 0.05f; }
    
                        // legs armor
                        if (!inv[14].Empty)
                        {
    
                        }
                    }
                }
    
                if (fallDmgMod <= 0.0)
                {
                    return;
                }
               
                  
                
                    
                
                
                   
                
                          
                
    
                
                      
                      
                 
            
    
            
                
                 
            
        
    

     

    Tal vez puedas escribir algo como esto.

    
    
    	
    

    Pero nuevamente, no estoy muy seguro de que este método reemplace completamente la mecánica básica.

     

    Thank you very much for your contribution, as soon as I have some free time I will try it.

  4. Good morning everyone, today I come with a suggestion that may seem somewhat absurd but in my opinion they are details that give pleasure to the user, let me explain:

    On the new world creation screen, when writing the name you want to give it, you cannot select all the text and delete it, but rather you have to delete it letter by letter (I am attaching a reference image of the new world creation screen, although it is in Spanish, sorry).

    Spoiler

    Captura.PNG.43f890c306f7521fd0d855786c21b9f4.PNG

    Well, my suggestion would be that you can select everything with the mouse, either by selecting and moving the mouse from front to back and vice versa or by double clicking on the word you want to select.

     

    Basically that would be my suggestion, I know it is an unimportant detail and that it practically does not contribute anything, but it is a detail that I wanted to suggest, thanks for your time and best regards

    • Like 3
  5. 3 hours ago, AdrianNumbers said:

    demasiado desorden, imagina una situación 2 o 3 o más chicos tienen la misma idea para una sugestión, pero cada uno tiene un idioma principal diferente, por lo que todos buscan en el foro usando dicho lenguaje para ver si alguien ya publicó algo similar y como no lo encuentran, hacen una nueva publicación, así que ahora tenemos un montón de sugestiones casi idénticas solo en diferentes idiomas, Te aseguro que incluso Tyron (genial como es) dejaría de mirar este foro si Hed tuviera que leer constantemente la misma cosa y posiblemente traducirla por sí mismo cada vez. Es la misma idea de estandarización que los humanos intentan implementar en todas partes, es mucho más fácil organizar todo si es consistente, solo dos sistemas diferentes producen muchos errores, por ejemplo: sistema métrico vs sistema imperial y aquellos que murieron en accidentes aéreos debido a esto. Sé que es un ejemplo extremo XD

    I also thought of something similar and I think you're absolutely right, most likely it would end up being all chaos but the idea of adding a small button that is integrated into the forum and translates it into your preferred language is not such an idea. bad, I think it would greatly speed up the navigation through the forum

  6. I'm trying to create a mod that simply consists of having a block that if you jump on top of it throws you up with great force, but I can't understand the api documentation, I don't even know what methods to look for, for example To cancel the fall damage, does anyone know of an api guide or if someone would be so kind as to make one, it would be great, at least with the basics to know how to use it.

     



    Excuse my English, I have used the google translator

  7. On 16/11/2022 at 1:36, dakko said:

    Con esa información, busqué en el foro de noticias para obtener más información.

    Hubo 2 adiciones recientes que se prepararon para implementar cuerdas y botes:

    No pude encontrar la información wiki sobre estos, pero tal vez la simulación de la cuerda no funcionó y se eliminó en 1.16.5. No sé. Esta es la primera vez que lo escucho.

    Thank you very much, now I have everything clearer

    • Like 1
  8. 9 hours ago, l33tmaan said:

    ROPES WHEN

     

    4 hours ago, dakko said:

    Boats and ropes for animals have not been added to Vintage Story yet. I believe they are planned for the future.

    If you've already seen them in the game, then it must have been a mod.

    I could swear I read on the wiki that they were removed in version 1.16.5 or maybe it was a translation error, if so, please forgive me for the inconvenience caused by my question

    • Like 1
×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.