Skip to content

mxve/blankie

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

9 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

blankie

a minecraft server daemon hibernation thingy


  • stop a minecraft server when idle
  • start the server when a player joins
    • forward the player once the server is up
  • schedule server commands
  • blankie is not a proxy, the target server must be reachable by the user and have accepts-transfers enabled
  • whitelist support (monitors server whitelist, unauthorized players are rejected before transfer/server startup)
  • webhooks for events

table of contents

cli args

  • --config <path>

example config.toml

[server]
java_path = "java" # java executable
work_dir = "." # server dir, use \\ in windows paths
args = ["-Xmx2G", "-jar", "server.jar", "-nogui"] # java args
whitelist_enabled = true # enable whitelist
whitelist_path = "whitelist.json" # whitelist path, relative to work dir (or absolute path)

[blankie]
bind_addr = "0.0.0.0:25565" # blankie address, this is the public address the client connects to
target_addr = "localhost:25566" # server address (port set in server.properties)
log_dir = "blankie-log" # blankie log dir, relative to work dir (or absolute path)
shutdown_timeout = 300 # timeout in seconds before server is stopped
check_interval = 5 # interval in seconds to query server info
motd = "Waiting for server..." # motd to show when server is down
players = 0 # player count when server is down
max_players = 1337 # max player count when server is down

[[blankie.interval_commands]]
command = "say Hello World" # command to run
interval = 60 # interval in seconds to run command

[[blankie.webhooks]]
webhook_url = "" # webhook url
events = ["Transfer"] # events to trigger webhook
body = "{user} joined the server!" # webhook body
bearer_token = "your-bearer-token" # bearer token (optional)
user_agent = "blankie/0.1.0" # user agent (optional)

webhooks

events

  • Connect: player connected to blankie
    • {ip}
  • Disconnect: disconnect from blankie, not server
    • {ip}
  • Login: player logged in
    • {user}
    • {uuid}
    • {ip}
  • WhitelistReject: player not whitelisted
    • {user}
    • {uuid}
    • {ip}
  • ServerStart: server started
    • {user}
    • {uuid}
    • {ip}
  • ServerStop: server stopped due to timeout
  • ServerEmpty: server empty
  • ServerUp: target server reachable
  • Transfer: player transferred to target server
    • {user}
    • {uuid}
    • {host}
    • {port}
  • BlankieStart: blankie started

examples

  • discord
    • user join (transfer)
      • body = "{ \"content\": null, \"embeds\": [{\"description\": \"{user} joined the server!\", \"color\": 5369975, \"author\": {\"name\": \"{user}\", \"icon_url\": \"https://mc-heads.net/avatar/{uuid}\"}}], \"attachments\": []}"

  • server start
    • body = "{ \"content\": null, \"embeds\": [{\"description\": \"Server started for {user}\", \"color\": 13652464, \"author\": {\"name\": \"blankie\", \"icon_url\": \"https://raw.githubusercontent.com/mxve/blankie/main/.github/blankie.png\"}}], \"attachments\": []}"

  • server stop
    • body = "{ \"content\": null, \"embeds\": [{\"description\": \"Server stopped\", \"color\": 15749463, \"author\": {\"name\": \"blankie\", \"icon_url\": \"https://raw.githubusercontent.com/mxve/blankie/main/.github/blankie.png\"}}], \"attachments\": []}"