Giter Site home page Giter Site logo

clvrk / vellum Goto Github PK

View Code? Open in Web Editor NEW
50.0 5.0 11.0 77 KB

Bedrock Server manager with backup functionality, plugin support and more.

C# 100.00%
minecraft bedrock backup-tool map-renderer server-management papyruscs papyrusjs backup vellum manager

vellum's Introduction

Quick links:
Download | Documentation | Discord

vellum
Travis-CI Discord GitHub All Releases Latest supported version

vellum is a Minecraft: Bedrock Server (BDS) automation tool primarily made to create incremental (hot-)backups and render interactive maps of your world using PapyrusCS, all while the server is running without any server-downtime using BDS's save hold | query | resume commands.

Table of contents

Get started

Prerequisites

Before starting to setting up this tool it is recommended to already have a Bedrock Dedicated Server configured. If you choose not to go with the self-contained release of this tool, you must have the latest .NET Core runtime installed aswell.

Installing and configuring

First of all grab the latest pre-compiled binary from the releases page (or compile from source). You will find three releases, two of them for Linux with a larger self-contained one which comes bundled with the .NET Core runtime and a smaller archive which depends on you having the .NET Core runtime already installed on your system, as well as a release for Windows. Download and extract the archive and cd into the directory with the extracted files.

On Linux, you may need to give yourself execution permissions with:

chmod +x ./vellum

Now run this tool for the first time by typing:

./vellum

This will generate a new configuration.json in the directory relative to the vellum executable and then exit. Edit this file and specify at least all required parameters (see below for an overview).

Now you can restart vellum once again with the same command as above. It should now spawn the BDS instance for you and perform backups on the specified interval (do not start the server manually). Once the server has launched through this tool you will be able to use the server console and its commands just like you normally would.

Incremental backups

To create incremental world backups make sure the CreateBackups option is set to true. Backups will be stored in the directory specified by ArchivePath. This tool will automatically delete the oldest backups in that directory according to the threshold specified by the BackupsToKeep option (-1 to not delete any older archives) to prevent eventually running out of disk space.

Restoring backups

Recent backups can be restored using the --restore (or -r) flag, followed by the path to an archive.
After successfully restoring a backup, vellum will start the server like usual. If you do not want the server to automatically start after restoring a backup, specify the --no-start flag.

Usage examples:

# Restore the specified archive from vellums backup directory and start the server
vellum -r "backups/2020-07-30_10-59_MyWorld.zip"

# Restore the specified archive from its absolute path and don't start the server afterwards
vellum -r "/home/server/vellum/backups/2020-07-30_10-59_MyWorld.zip" --no-start

PapyrusCS integration

This tool can automatically execute the PapyrusCS map-rendering tool on an interval. To do so you have to set EnableRenders to true and specify an interval in minutes with RenderInterval. You can add your own arguments that will be attached when PapyrusCS is called. When configuring you will find two keys, PapyrusGlobalArgs and an array called PapyrusTasks. The value in PapyrusGlobalArgs specifies arguments that will be attached for each PapyrusCS task when executed, while PapyrusTasks represent an array of individual processes (or tasks). Adding an entry to the array represents another task that will be executed after the previous one has finished, this way it is possible to make PapyrusCS render multiple dimensions or have different configurations in general. Again, the same PapyrusGlobalArgs will be present for each of these tasks individually.

When specifying additional arguments for PapyrusGlobalArgs please make sure to append to the pre-generated entry (do not edit the -w and -o parameters!). Please thoroughly verify that your paths and arguments are correct, you can find a configuration-example here.

Configuration overview

When you run this tool for the first time, it will generate a configuration.json and terminate. Before restarting the tool, edit this file to your needs. Here is a quick overview:

KEY               VALUE               ABOUT
----------------------------------------------------------
REQUIRED SETTINGS
-----------------
BdsBinPath         String  (!)        Absolute path to the the Bedrock Server
                                      executable (similar to "/../../bedrock_server"
                                      on Linux or "/../../bedrock_server.exe" on 
                                      Windows)

WorldName          String  (!)        Name of the world located in the servers
                                      /worlds/ directory (specify merely the name and
                                      not the full path)
---------------
BACKUP SETTINGS
---------------
EnableBackups      Boolean (!)        Whether to create world-backups as .zip-archives

EnableSchedule     Boolean (!)        Whether to enable scheduled backups. If set to "false",
                                      backups will be performed on the interval specified by
                                      "BackupInterval".

Schedule           String [Array]     An array of clock times (in 24h format) where scheduled
                                      backups should be performed (see the example configuration
                                      below for formatting).

BackupInterval     Double             Time in minutes to take a backup and create a
                                      .zip-archive

ArchivePath        String             Path where world-backup archives should be
                                      created

BackupsToKeep      Integer            Amount of backups to keep in the "ArchivePath"-
                                      directory, old backups automatically get deleted

OnActiviyOnly      Boolean            If set to "true", vellum will only perform a
                                      backup if at least one player has connected
                                      since the previous backup was taken, in order to
                                      only archive worlds which have actually been
                                      modified

StopBeforeBackup   Boolean            Whether to stop, take a backup and then restart
                                      the server instead of taking a hot-backup

NotifyBeforeStop   Integer            Time in seconds before stopping the server for a
                                      backup, players on the server will be
                                      notified with a chat message

BackupOnStartup    Boolean            Whether to create a full backup of the specified
                                      world before starting the BDS process
                                      IMPORTANT: It is highly encouraged to leave
                                      this setting on "true"

PreExec            String             An arbitrary command that gets executed before
                                      each backup starts

PostExec           String             An arbitrary command that gets executed after
                                      each has finished
---------------
RENDER SETTINGS
---------------
EnableRenders      Boolean (!)        Whether to create an interactive map of the world
                                      using PapyrusCS

PapyrusBinPath     String             Absolute path to the papyrus executable (similar
                                      to "/../../PapyrusCs" on Linux or
                                      "/../../PapyrusCs.exe" on Windows)

PapyrusOutputPath  String             Output path for the rendered papyrus map

RenderInterval     Double             Time in minutes to run a backup and render map

PapyrusGlobalArgs  String             Global arguments that are present for each
                                      rendering task specified in the "PapyrusArgs"-
                                      array
                                      IMPORTANT: Do not change the already provided
                                      --world and --ouput arguments

PapyrusTasks       String [Array]     An array of additional arguments for papyrus,
                                      where each array entry executes another
                                      PapyrusCS process after the previous one has
                                      finished (e.g. for rendering of multiple
                                      dimensions)

LowPriority        Boolean            Start render process at lowest OS priority
                                      (Default: false)
-------------------
ADDITIONAL SETTINGS
-------------------
QuietMode          Boolean (!)        Suppress notifying players in-game that vellum
                                      is creating a backup and render

HideStdout         Boolean (!)        Whether to hide the console output generated by
                                      the PapyrusCS rendering process, setting this
                                      to "true" may help debug your configuration but
                                      will result in a more verbose output

BusyCommands       Boolean (!)        Allow executing BDS commands while the tool is
                                      taking backups

CheckForUpdates    Boolean (!)        Whether to check for updates on startup

StopBdsOnException Boolean (!)        Should vellum unexpectedly crash due to an
                                      unhandled exception, this sets whether to send a 
                                      "stop" command to the BDS process to prevent it
                                      from keep running in detached mode otherwise 

BdsWatchdog        Boolean (!)        Monitor BDS process and restart if unexpectedly
                                      exited. Will try to restart process a maximum of 
                                      3 times. This retry count is reset when BDS
                                      instance is deemed stable.
----------------------------------------------------------
* values marked with (!) are required, non-required values should be provided depending on your specific configuration

Example configuration

Below you'll find an example configuration.

Example configuration
{
    "BdsBinPath": "/home/server/bedrock-server/bedrock_server",
    "WorldName": "Bedrock level",
    "Backups": {
      "EnableBackups": true,
      "EnableSchedule": true,
      "Schedule": [
        "00:00",
        "06:00",
        "12:00",
        "18:00"
      ],
      "BackupInterval": 60.0,
      "ArchivePath": "./backups/",
      "BackupsToKeep": 10,
      "OnActivityOnly": true,
      "StopBeforeBackup": false,
      "NotifyBeforeStop": 60,
      "BackupOnStartup": true,
      "PreExec": "echo Starting!",
      "PostExec": "echo Success!"
    },
    "Renders": {
      "EnableRenders": true,
      "PapyrusBinPath": "/home/server/papyruscs/PapyrusCs",
      "PapyrusOutputPath": "/home/server/papyruscs_output",
      "RenderInterval": 180.0,
      "PapyrusGlobalArgs": "-w $WORLD_PATH -o $OUTPUT_PATH --htmlfile index.html --deleteexistingupdatefolder",
      "PapyrusTasks": [
        "--dim 0",
        "--dim 1",
        "--dim 2"
      ]
    },
    "QuietMode": false,
    "HideStdout": true,
    "BusyCommands": true,
    "CheckForUpdates": true,
    "StopBdsOnException": true,
    "BdsWatchdog": true
}

Parameters & Commands

Parameters

Overview of available launch parameters:

PARAMETER                             ABOUT
----------------------------------------------------------
-c | --configuration                  Specifies a custom configuration file.
                                      (Default: configuration.json)

-h | --help                           Prints an overview of available parameters.

-r | --restore <archive path>         Restores a backup from the specified archive.

--no-start                            In conjunction with the --restore flag, this tells the
                                      application to not start the server after successfully
                                      restoring a backup.

--no-backup-on-startup                Disables the initial temporary backup on startup.

Parameters are optional and will default to their default values if not specified.

Commands

vellum also provides a few new, and overloads some existing commands that you can execute to force-invoke backup- or rendering tasks and schedule server shutdowns.

COMMAND                               ABOUT
----------------------------------------------------------
force start backup                    Forces taking a (hot-)backup (according to your
                                      "StopBeforeBackup" setting)

force start render                    Forces PapyrusCS to execute and render your
                                      world

stop <time in seconds>                Schedules a server shutdown and notifies players
                                      in-game

reload vellum                         Reloads the previously specified (or default)
                                      configuration file

updatecheck                           Fetches the latest BDS & vellum version and
                                      displays them in the console

Compiling from source

If you want to compile vellum from source instead of using the pre-built binaries, you'll first need to install .NET Core for your operating system. Clone this repository and cd into the src directory. Then run the following command to build the vellum executable:

dotnet build vellum.csproj -c Release /p:OutputType=Exe /p:PublishSingleFile=false

If you want to build the library instead of the executable, run this command:

dotnet build vellum.csproj -c Release /p:OutputType=Library

Disclaimer

Use this tool at your own risk! When using this software you agree to not hold us liable for any corrupted save data or deleted files. Make sure to configure everything correctly and thoroughly!

If you find any bugs, please report them on the issue tracker here on GitHub, our dedicated Discord server or send me an e-mail.

vellum's People

Contributors

clvrk avatar lastsandwich avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar

vellum's Issues

On windows, with 1.16 BDS, hot backups should work right?

However, the executable is terminating with this error:

"NOTICE: Hot-backups are currently not supported on Windows. Please enable "StopBeforeBackup" in the "configuration.json" instead."

There was known bug with 1.14 that prevent Hot-Backups. With 1.16 maybe it got fixed?

Stopping Bedrock server due to an unhandled exception from vellum...

vellum v1.2.3 build 157
by clarkx86 & DeepBlue

Loading configuration "configuration.json"... Done!
Checking for updates...
Disabling renders because no valid path to a Papyrus executable has been specified
Creating initial world backup...
[ VELLUM ] Creating backup...
[ VELLUM ] -> Clearing local world backup directory...
[ VELLUM ] -> Invalid world directory. Could not create full world backup!
[ VELLUM ] Backup done!
Stopping Bedrock server due to an unhandled exception from vellum...
System.ComponentModel.Win32Exception (2): No such file or directory
at System.Diagnostics.Process.ForkAndExecProcess(String filename, String[] argv, String[] envp, String cwd, Boolean redirectStdin, Boolean redirectStdout, Boolean redirectStderr, Boolean setCredentials, UInt32 userId, UInt32 groupId, UInt32[] groups, Int32& stdinFd, Int32& stdoutFd, Int32& stderrFd, Boolean usesTerminal, Boolean throwOnNoExec)
at System.Diagnostics.Process.StartCore(ProcessStartInfo startInfo)
at System.Diagnostics.Process.Start()
at Vellum.Automation.ProcessManager.Start()
at Vellum.Program.Main(String[] args)
Unhandled exception. System.ComponentModel.Win32Exception (2): No such file or directory
at System.Diagnostics.Process.ForkAndExecProcess(String filename, String[] argv, String[] envp, String cwd, Boolean redirectStdin, Boolean redirectStdout, Boolean redirectStderr, Boolean setCredentials, UInt32 userId, UInt32 groupId, UInt32[] groups, Int32& stdinFd, Int32& stdoutFd, Int32& stderrFd, Boolean usesTerminal, Boolean throwOnNoExec)
at System.Diagnostics.Process.StartCore(ProcessStartInfo startInfo)
at System.Diagnostics.Process.Start()
at Vellum.Automation.ProcessManager.Start()
at Vellum.Program.Main(String[] args)
Aborted (core dumped)

Papyrus render error on Windows

Papyrus has a render error in Windows when attempting a force render.

Hot backups are enabled in Windows

force start render
[         VELLUM         ] Creating backup...
[         VELLUM         ]      -> Holding world saving...
No targets matched selector
[         VELLUM         ]      -> Copying 200 files...
[         VELLUM         ]      -> Veryfing file-integrity...
[         VELLUM         ]      -> Resuming world saving...
[         VELLUM         ] Backup done!
[         VELLUM         ] Initializing map rendering...
No targets matched selector
No targets matched selector
[         VELLUM         ]      -> Rendering map 1/3...
Stopping Bedrock server due to an unhandled exception from vellum...
System.ComponentModel.Win32Exception (5): Access is denied.
   at System.Diagnostics.Process.StartWithCreateProcess(ProcessStartInfo startInfo)
   at System.Diagnostics.Process.Start()
   at Vellum.Automation.RenderManager.Start(String worldPath)
   at Vellum.Program.InvokeRender(String worldPath, String tempWorldPath)
   at Vellum.Program.<>c__DisplayClass16_1.<Main>b__7(String text)
   at Vellum.Program.<>c.<Main>b__16_3()
   at System.Threading.ThreadHelper.ThreadStart_Context(Object state)
   at System.Threading.ExecutionContext.RunInternal(ExecutionContext executionContext, ContextCallback callback, Object state)
--- End of stack trace from previous location where exception was thrown ---
   at System.Threading.ExecutionContext.RunInternal(ExecutionContext executionContext, ContextCallback callback, Object state)
   at System.Threading.ThreadHelper.ThreadStart()
[2020-08-22 12:03:01 INFO] Server stop requested.
[2020-08-22 12:03:01 INFO] Stopping server...
Quit correctly
Unhandled exception. System.ComponentModel.Win32Exception (5): Access is denied.
   at System.Diagnostics.Process.StartWithCreateProcess(ProcessStartInfo startInfo)
   at System.Diagnostics.Process.Start()
   at Vellum.Automation.RenderManager.Start(String worldPath)
   at Vellum.Program.InvokeRender(String worldPath, String tempWorldPath)
   at Vellum.Program.<>c__DisplayClass16_1.<Main>b__7(String text)
   at Vellum.Program.<>c.<Main>b__16_3()
   at System.Threading.ThreadHelper.ThreadStart_Context(Object state)
   at System.Threading.ExecutionContext.RunInternal(ExecutionContext executionContext, ContextCallback callback, Object state)
--- End of stack trace from previous location where exception was thrown ---
   at System.Threading.ExecutionContext.RunInternal(ExecutionContext executionContext, ContextCallback callback, Object state)
   at System.Threading.ThreadHelper.ThreadStart()

The pertinent part of my vellum config is below

    "EnableRenders": true,
    "PapyrusBinPath": "c:\\bedrock-server-1.16.20.03\\papyruscs",
    "PapyrusOutputPath": "c:\\bedrock-server-1.16.20.03\\papyruscs\\output",
    "RenderInterval": 180.0,
    "PapyrusGlobalArgs": "-w $WORLD_PATH -o $OUTPUT_PATH --htmlfile index.html -f png -q 100 --deleteexistingupdatefolder",
    "PapyrusTasks": [
      "--dim 0",
      "--dim 1",
      "--dim 2"
    ]
  },

All folders exist in the appropriate locations as well.

System.ArgumentNullException during render Windows

Program Output:

[ VELLUM ] -> Clearing local world backup directory...
[ VELLUM ] -> Creating full world backup...
[ VELLUM ] Backup done!
Unhandled exception. System.ArgumentNullException: Value cannot be null. (Parameter 'input')
at System.Text.RegularExpressions.Regex.Matches(String input)
at Vellum.Automation.ProcessManager.WaitForMatch(String pattern)
at Vellum.Automation.BackupManager.CreateWorldBackup(String worldPath, String destinationPath, Boolean fullCopy, Boolean archive)
at Vellum.Program.InvokeRender(String worldPath, String tempWorldPath)
at Vellum.Program.<>c__DisplayClass14_1.

b__3(String text)
at Vellum.Program.<>c.b__14_2()
at System.Threading.ThreadHelper.ThreadStart_Context(Object state)
at System.Threading.ExecutionContext.RunInternal(ExecutionContext executionContext, ContextCallback callback, Object state)
--- End of stack trace from previous location where exception was thrown ---
at System.Threading.ExecutionContext.RunInternal(ExecutionContext executionContext, ContextCallback callback, Object state)
at System.Threading.ThreadHelper.ThreadStart()

Trying to setup a server using this and I'm getting this error while testing this tool.
This happens when running the "force start render" command.

Running Vellum in a Docker container

Hello, I'm trying to set up Vellum with the Windows BDS in a Linux container using Wine.

I'm struggling to get Vellum started and I'm wondering if the behaviour of it shutting down after writing config might be responsible. What is the minimum config required to allow Vellum to start and run straight away?

I'm able to start up both BDS and also Element Zero's modified BDS but not Vellum.

Thanks, Chris

Scheduled Restart

Hi guys,

Firstly thanks for this project very awesome.

I would like to request a feature I currently backup hourly but would also like to have the server restarted at a particular time of day and a full offline backup taken.

Is it possible to add this feature?

Cheers

Add interval backups not subject to "BackupsToKeep"

Depending on the interval and the value that "BackupsToKeep" is set to, you could very well end up with only 6 hours of backups. It'd be nice to have a set schedule (every 6 hours?) for a specified number of Days to keep backups for. Not dissimilar to a daily full and incrementals.

Day
00:00 - Full
15-60m Interval Backups
06:00 - Full
15-60m Interval Backups
12:00 - Full
15-60m Interval Backups
18:00 - Full
15-60m Interval Backups

Week:
Day 1: 00:00 Full
Day 2: 00:00 Full
Day 3: 00:00 Full
Day 4: 00:00 Full
Day 5: 00:00 Full
Day 6: 00:00 Full
Day 7: 00:00 Full
Day 7: Schedule Above

Vellum performing updates when not scheduled

In my configuration.json, I have vellum set to update once a day at 4am. This backup is performed, but a backup at 12noon occurs

Here is my configuration.json:

{
  "BdsBinPath": "bedrock_server",
  "Backups": {
    "EnableBackups": true,
    "EnableSchedule": true,
    "Schedule": [
      "04:00"
    ],
    "BackupInterval": 60.0,
    "ArchivePath": "/home/sam/mcBackup/",
    "BackupsToKeep": 7,
    "OnActivityOnly": true,
    "StopBeforeBackup": true,
    "NotifyBeforeStop": 60,
    "PreExec": "",
    "PostExec": ""
  },
  "Renders": {
    "EnableRenders": false,
    "PapyrusBinPath": "",
    "PapyrusOutputPath": "",
    "RenderInterval": 180.0,
    "PapyrusGlobalArgs": "-w $WORLD_PATH -o $OUTPUT_PATH --htmlfile index.html -f png -q 100 --deleteexistingupdatefolder",
    "PapyrusTasks": [
      "--dim 0",
      "--dim 1",
      "--dim 2"
    ],
    "LowPriority": false
  },
  "QuietMode": false,
  "HideStdout": true,
  "BusyCommands": true,
  "CheckForUpdates": true,
  "StopBdsOnException": true,
  "BdsWatchdog": true,
  "Plugins": {}
}

and here is what I see in the server console:

[INFO] IPv6 supported, port: 56140
[INFO] Server started.
No targets matched selector
Skipping this backup because no players were online since the last one was taken...
[INFO] Player connected: REDACTED, xuid: REDACTED
[         VELLUM         ] Creating backup...
[INFO] Server stop requested.
[INFO] Stopping server...
Quit correctly
[         VELLUM         ]      -> Clearing local world backup directory...
[         VELLUM         ]      -> Creating full world backup...
[         VELLUM         ]      -> Archiving world backup...
[         VELLUM         ]      -> Archiving done!
[         VELLUM         ] Backup done!
NO LOG FILE! - setting up server logging...
[2020-11-25 12:00:01 INFO] Starting Server
[2020-11-25 12:00:01 INFO] Version 1.16.100.4
[2020-11-25 12:00:01 INFO] Session ID f6280e3c-930a-401f-93c1-39cbda6bd0ae
[2020-11-25 12:00:01 INFO] Level Name: Bedrock-level
[2020-11-25 12:00:01 INFO] Game mode: 0 Survival
[2020-11-25 12:00:01 INFO] Difficulty: 1 EASY
[INFO] opening worlds/Bedrock-level/db
[INFO] IPv4 supported, port: 19132
[INFO] IPv6 supported, port: 19133
[INFO] IPv4 supported, port: 36415
[INFO] IPv6 supported, port: 51828
[INFO] Server started.
[INFO] Player connected: REDACTED, xuid: REDACTED

I am running the server in a screen session on Ubuntu 18.04.

Backups enabled but no backup showing in path...

Here's my config:

{
  "BdsBinPath": "/home/gameserver/minecraft/bedrock_server",
  "WorldName": "sm_world",
  "Backups": {
    "EnableBackups": true,
    "BackupInterval": 60.0,
    "ArchivePath": "/home/gameserver/minecraft/backups/",
    "BackupsToKeep": 10,
    "OnActivityOnly": false,
    "StopBeforeBackup": false,
    "NotifyBeforeStop": 60,
    "BackupOnStartup": true,
    "PreExec": "",
    "PostExec": ""
  },
  "Renders": {
    "EnableRenders": true,
    "PapyrusBinPath": "/home/gameserver/papyruscs/PapyrusCs",
    "PapyrusOutputPath": "/var/www/html/minecraft/",
    "RenderInterval": 180.0,
    "PapyrusGlobalArgs": "-w $WORLD_PATH -o $OUTPUT_PATH --htmlfile index.html -f png -q 100 --deleteexistingupdatefolder",
    "PapyrusTasks": [
      "--dim 0",
      "--dim 1",
      "--dim 2"
    ]
  },
  "QuietMode": false,
  "HideStdout": true,
  "BusyCommands": true,
  "CheckForUpdates": true,
  "StopBdsOnException": true
}

It says "backup successful" instantly, and there's no data in said backup folder.

/home/gameserver/minecraft//vellum
vellum v1.2.3 build 157
       by clarkx86 & DeepBlue

Loading configuration "configuration.json"... Done!
Checking for updates...
Creating initial world backup...
[         VELLUM         ] Creating backup...
[         VELLUM         ]      -> Creating full world backup...
[         VELLUM         ] Backup done!
NO LOG FILE! - setting up server logging...
[2020-09-05 23:57:09 INFO] Starting Server
[2020-09-05 23:57:09 INFO] Version 1.16.20.3
[2020-09-05 23:57:09 INFO] Session ID ddca48b5-13da-4ddb-a5b9-33c1cba4622d
[2020-09-05 23:57:09 INFO] Level Name: sm_world
[2020-09-05 23:57:09 INFO] Game mode: 2 Adventure
[2020-09-05 23:57:09 INFO] Difficulty: 1 EASY
[2020-09-05 23:57:09 INFO] opening worlds/sm_world/db
[2020-09-05 23:57:13 INFO] IPv4 supported, port: 19132
[2020-09-05 23:57:13 INFO] IPv6 supported, port: 19133
[2020-09-05 23:57:13 INFO] IPv4 supported, port: 41590
[2020-09-05 23:57:13 INFO] IPv6 supported, port: 57779
[2020-09-05 23:57:18 INFO] Server started.

Here's the server log...

Hot buckup?

What is the difference between a backup without a server stop and a backup with With backup from Server stop

NotifyBeforeStop is not working for windows

Hello Clarkx

It seems NotifyBeforeStop is not working since the server is stopped for backup without any warning message. I'm using the Windows build. Furthermore, it seems it affects the following versions:

  • v1.2.2
  • v1.2.1
  • v1.1.0

Configuration I'm using:

{
    "BdsBinPath": "D:\\Minecraft\\bedrock-server-1.16.0.2\\bedrock_server.exe",
    "WorldName": "VouLT_Xande",
    "Backups": {
      "EnableBackups": true,
      "BackupInterval": 30.0,
      "ArchivePath": "D:\\Minecraft\\bedrock-server-1.16.0.2\\backups\\",
      "BackupsToKeep": 10,
      "OnActivityOnly": true,
      "StopBeforeBackup": true,
      "NotifyBeforeStop": 60,
      "BackupOnStartup": true,
      "PreExec": "echo Starting!",
      "PostExec": "echo Success!"
    },
    "Renders": {
      "EnableRenders": false,
      "PapyrusBinPath": "D:\\Minecraft\\bedrock-server-1.16.0.2\\papyrusRender\\",
      "PapyrusOutputPath": "D:\\Minecraft\\bedrock-server-1.16.0.2",
      "RenderInterval": 180.0,
      "PapyrusGlobalArgs": "-w $WORLD_PATH -o $OUTPUT_PATH --htmlfile index.html --deleteexistingupdatefolder",
      "PapyrusTasks": [
        "--dim 0",
        "--dim 1",
        "--dim 2"
      ]
    },
    "QuietMode": false,
    "HideStdout": true,
    "BusyCommands": true,
    "CheckForUpdates": true,
    "StopBdsOnException": true
  }

Let me know if you need more information.

Program doesn't close all the way using stop command

A very minor issue but it could mess with batch scripts.

OS: Windows
To reproduce:

  1. Execute vellum
  2. Wait for BDS to finish loading
  3. type "stop"
  4. Sticks on "vellum quit correctly" until user hits enter

If you type a command instead of enter, it throws an exception instead.

Can be fixed with one line, but not sure if/how it would affect Linux. See upcoming pull request. #14

Backup & render collision after stopping server

OS: Windows
To reproduce:

  1. StopBeforeBackup = true
  2. BackupInterval = RenderInterval
  3. Let the time run out and it takes the server down
  4. It will show two lines of "[ VELLUM ] -> Clearing local world backup directory", and possibly get stuck there

It seems to be a 50/50 coin flip (based on a very small data set) whether this problem will happen, maybe related to which process makes it there first. Sometimes it will stay there forever, and sometimes it will move on to the expected behavior of creating the full world backup, restarting the server, and running the render.

Backup is not working after 1.20 (ish)

Minecraft has broken the backup mechanism again.

The regex pattern is looking for the string to start with "Changes..."
"^(Changes to the (level|world) are resumed.)"

The problem is that when this message is received, it also has a timestamp now.

The simple fix is to replace the regex pattern with "(Changes to the (level|world) are resumed.)"

Vellum crashes on startup

I'm not sure if this is still being maintained, but I've got an error report. I updated the bedrock server to 1.16.221.01 and when I run vellum, I get this error:

vellum v1.3.1 beta build 212
       by clarkx86, DeepBlue & contributors

Loading configuration "configuration.json"... Done!
Reading "server.properties"... Done!
Checking for updates...
Creating initial temporary copy of world directory...
[         VELLUM         ] Executing pre-command...
[         VELLUM         ] Creating backup...
[         VELLUM         ] 	-> Clearing local world backup directory...	
[         VELLUM         ] 	-> Creating full world backup...	
[         VELLUM         ] Backup done!
Stopping BDS due to an unhandled exception from vellum...
System.ComponentModel.Win32Exception (13): Permission denied
   at System.Diagnostics.Process.ForkAndExecProcess(String filename, String[] argv, String[] envp, String cwd, Boolean redirectStdin, Boolean redirectStdout, Boolean redirectStderr, Boolean setCredentials, UInt32 userId, UInt32 groupId, UInt32[] groups, Int32& stdinFd, Int32& stdoutFd, Int32& stderrFd, Boolean usesTerminal, Boolean throwOnNoExec)
   at System.Diagnostics.Process.StartCore(ProcessStartInfo startInfo)
   at System.Diagnostics.Process.Start()
   at Vellum.Automation.ProcessManager.Start()
   at Vellum.VellumHost..ctor(String[] args)
   at Vellum.VellumHost.Main(String[] args)
Unhandled exception. System.ComponentModel.Win32Exception (13): Permission denied
   at System.Diagnostics.Process.ForkAndExecProcess(String filename, String[] argv, String[] envp, String cwd, Boolean redirectStdin, Boolean redirectStdout, Boolean redirectStderr, Boolean setCredentials, UInt32 userId, UInt32 groupId, UInt32[] groups, Int32& stdinFd, Int32& stdoutFd, Int32& stderrFd, Boolean usesTerminal, Boolean throwOnNoExec)
   at System.Diagnostics.Process.StartCore(ProcessStartInfo startInfo)
   at System.Diagnostics.Process.Start()
   at Vellum.Automation.ProcessManager.Start()
   at Vellum.VellumHost..ctor(String[] args)
   at Vellum.VellumHost.Main(String[] args)

Any idea why?

Windows Hot-Backup shows odd localized text in-game

When creating a backup, Vellum will note that it's creating a backup in the game notification Windows, but the text looks like this:

ŵƖ[VELLUM]ŵr

Picture

Running:
v1.2.3 vellum
BDS Windows 1.16.10.2
Windows 10 client

No other 3rd party software.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.