PrismarineJS / flying-squid

Create Minecraft servers with a powerful, stable, and high level JavaScript API.
https://prismarinejs.github.io/flying-squid/
MIT License
547 stars 100 forks source link
game minecraft minecraft-server protocol server voxel

flying-squid

NPM version Build Status Discord Gitter Irc

Create Minecraft servers with a powerful, stable, and high level JavaScript API.

Features

Building / Running

Before running or building it is recommended that you configure the server in config/settings.json

npm install
node app.js

You can also install flying-squid globally with sudo npm install -g flying-squid and then run it with flying-squid command.

Docker

Docker allows for a higher level of isolation, compatibility and consistency. You can learn how to install Docker here.

Quick start a simple server to test out flying-squid:

docker run -p 25565:25565 prismarinejs/flying-squid

With specific configuration and a container name:

docker run -p 25565:25565 -v $(pwd)/config:/config --name my-flying-squid prismarinejs/flying-squid

docker-compose is useful to quickly launch & stop a single container with a specific configuration.

docker-compose.yaml:

version: '3.8'

services:
  flying-squid:
    image: prismarinejs/flying-squid
    volumes:
       - ${PWD}/config:/config
    ports:
      - "25565:25565"
volumes:
  flying-squid:
docker-compose -f path/to/docker-compose.yaml up

Or do it all locally:

docker build -t local-flying-squid .
docker run -p 25565:25565 local-flying-squid

or

docker-compose up

World generation

There are several modules than can be used to generate the world. The default one is called diamond-square

To install a world generation, all you have to do is npm install it and then change the generation option in settings.json.

Plugins

Documentation

For development see the API documentation, CONTRIBUTE.md and HISTORY.md

Using as a lib

flying-squid is also a server lib. Here is a basic example of usage:

const mcServer = require('flying-squid')

mcServer.createMCServer({
  'motd': 'A Minecraft Server \nRunning flying-squid',
  'port': 25565,
  'max-players': 10,
  'online-mode': true,
  'logging': true,
  'gameMode': 1,
  'difficulty': 1,
  'worldFolder': 'world',
  'generation': {
    'name': 'diamond_square',
    'options': {
      'worldHeight': 80
    }
  },
  'kickTimeout': 10000,
  'plugins': {

  },
  'modpe': false,
  'view-distance': 10,
  'player-list-text': {
    'header': 'Flying squid',
    'footer': 'Test server'
  },
  'everybody-op': true,
  'max-entities': 100,
  'version': '1.16.5'
})

You can add server plugins and player plugins in your package, following CONTRIBUTE.md.

For further examples, see the examples page.

Contributors