minecraft-server-admin
v0.2.0
Published
API for managing a minecraft server instance
Downloads
28
Maintainers
Readme
node-minecraft-server-admin
This module aims to encapsulate the management of a minecraft server, including spinning up game instances, running backup/restore operations, getting/setting server.properties, white-list.txt, banned-*.txt, etc data, and more as time goes on.
npm install minecraft-server-admin
The export is a single constructor function:
var Server = require("minecraft-server-admin");
High-Level Overview
This module is very opinionated, and creates it's directory structure in a very particular way to encapsulate all server information into a single directory. (which is the dir supplied as the only argument to the Constructor function)
backups/
- All server backups will reside hereserver/
- The minecraft server base dir will reside here (largely controlled by the minecraft server itself)world/
- Usually, this is the server's world data (can be configured viaserver.properties
)minecraft_server.jar
- This is a symbolic link pointing to aminecraft_server.jar
somewhere else on disk.banned-ips.txt
- Banned IP addressesbanned-players.txt
- Banned player usernameswhite-list.txt
- Server whitelist (must be enabled inserver.properties
)opts.txt
- Server operator listserver.properties
- See the Minecraft Wikiserver.log
- Server console/log output
config.json
- This contains configuration details for the server that exist outside theserver.properties
and friends. (such as thejava
command, allowed RAM, etc)
API Documentation
Server(dir)
The constructor requires a base directory as it's only parameter, this will be the root directory for all the server's data/configuration/etc.
Arguments
dir
- The path to the server's location on disk
Server#dir
The absolute path location for this server, set by the Constructor
(see above)
Server#log
An instance of file-class.File
(see file-class)
pointing to server/server.log
.
Server#config
An instance of file-class.JSONFile
(see file-class)
pointing to config.json
.
Server#properties
An instance of file-class.File
(see file-class)
(using parse/stringify methods from node-minecraft-server-properties)
pointing to server/server.properties
Server#whitelist
An instance of file-class.ListFile
(see file-class)
pointing to server/white-list.txt
.
Server#operators
An instance of file-class.ListFile
(see file-class)
pointing to server/ops.txt
.
Server#banned.ips
An instance of file-class.ListFile
(see file-class)
pointing to server/banned-ips.txt
.
Server#banned.players
An instance of file-class.ListFile
(see file-class)
pointing to server/banned-players.txt
.
Server#backups
An instance of dir-backup
(see node-dir-backup)
that sets up a backup system with the server/
dir as the source, and backups/
as the target.
Server#game
This property is only set after a game has been started and begins to run successfully, it is an instance of the node-minecraft-runner object, and exposes that entire API via this property. (this includes execute server commands on the console, allows for listening to events that the server emits, etc)
Server#status
This is a String
property that returns the current status of the running game,
or "Stopped"
if no game is running.
Server#jar
This is the filesystem location of the server's jar file, not following the symbolic link.
(ie: server/minecraft_server.jar
)
Server#file(location)
This function returns the absolute path to a file within the server's directory.
Arguments
location
- The relative location of the file
Returns String
Server#create(options, callback)
This creates the entire directory structure for a server, additional data passed
via arguments will be passed off to various other methods to creating configuration
files (such as server.properties
)
Arguments
options
- Hash of data for server defaultsconfig
-config.json
data (ie:java
,ram
)properties
-server/server.properties
datawhitelist
-server/white-list.txt
dataops
-server/ops.txt
databannedPlayers
-server/banned-players.txt
databannedIps
-server/banned-ips.txt
datajar
-server/minecraft_server.jar
source location
callback
- Arguments provided:err
- Error object (if relevent)
var options = {
properties: {
// ... any excluded properties will likely be given defaults by the server
"white-list": true
},
ops: [ "the-op" ]
};
server.create(options, function (err) {
// err => null or Error()
});
Server#del(callback)
This will destroy the entire directory structure for the server, if a game is currently running, it will stop that instance first.
Arguments
callback
- Arguments provided:err
Error object (if relevent)
Server#exists(callback)
This will check for the existence of the server specified by this object.
Arguments
callback
- Arguments provided:exists
-Boolean
indicating the existence of the server's root dir
Server#banned(callback)
This method is short-hand for reading both banned-ips.txt
and banned-players.txt
.
Arguments
callback
- Arguments provided:err
- Error object (if relevent)banned
-Object
of banned players/ips
Server#nukeWorld(callback)
This method destroys the world data. (ie: the dir specified by the level-name
property in server.properties
) This is a nice way to give your world a clean
slate without needing to reconfigure the entire server.
Arguments
callback
- Arguments provided:err
- Error object (if relevent)
Server#linkJar(location, callback)
This method creates a symbolic link at server/minecraft_server.jar
pointing
to the location
specified.
Arguments
location
- The absolute path to a validminecraft_server.jar
filecallback
- Arguments provided:err
- Error object (if relevent)
Server#downloadJar(url, callback)
This method downloads the file located at the specified url
via HTTP
to server/minecraft_server.jar
.
Arguments
url
- The url pointing to a validminecraft_server.jar
callback
- Arguments provided:err
- Error object (if relevent)
Server#start(callback)
This method will start the server instance, when the server has started properly,
it will set the Server#game
property with the
node-minecraft-runner
instance object.
Arguments
callback
- Arguments provided:err
- Error object (if relevent)
Server#stop(callback)
This method will stop the server instance, once the server stops/exits, the
Server#game
property will be deleted.
Arguments
callback
- Arguments provided:err
- Error object (if relevent)
Server#restart(callback)
This is short-hand for stopping and starting the server, any errors encountered by either will be passed to the callback.
Arguments
callback
- Arguments provided:err
- Error object (if relevent)
Server#backup(callback)
This method handles running a backup for the server's server/
directory. (to
exclude the backups themselves from being part of the backup) This method also
handles the necessary steps to take if the server is actively running, such as
broadcasting a message to the current users, forcing the server to flush data to
disk, etc.
Arguments
callback
- Arguments provided:err
- Error object (if relevent)timestamp
-Date
reflecting the time of the backup itself
Server#restore(timestamp, callback)
This method restores a server from a previously-run backup. Unlike Server#backup()
,
it cannot be run while the server is still actively running.
Arguments
callback
- Arguments provided:err
- Error object (if relevent)