Skip to content

Instantly share code, notes, and snippets.

@sko00o
Last active December 30, 2023 14:56
Show Gist options
  • Star 1 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save sko00o/ab410d98c9a8a4e0a8bff252029f5a2a to your computer and use it in GitHub Desktop.
Save sko00o/ab410d98c9a8a4e0a8bff252029f5a2a to your computer and use it in GitHub Desktop.
Makefile for managing Minecraft server
BASEPATH=$(PWD)
EXEC=server.jar # forge-1.14.3-27.0.12.jar # you can change to forge
BACKUPNAME="world-$(shell date '+%F-%H%M').tar.gz"
BAKPATH=$(BASEPATH)/backup-worlds
MAKEFLAGS += --silent
all: help
## require: install required programs
.PHONY: require
require: path-require
# debian 10 missing java 8
source /etc/os-release && \
test $VERSION_ID = "10" && \
echo "deb http://ftp.cn.debian.org/debian sid main" | sudo tee /etc/apt/sources.list.d/sid.list
sudo apt update
sudo apt -y install screen
sudo apt -y install openjdk-8-jre
.PHONY: path-require
path-require:
mkdir -p $(BAKPATH)
## start: start minecraft server in screen session
.PHONY: start
start:
screen -dm -S minecraft \
java -Xms1024M -Xmx2048M -jar $(BASEPATH)/$(EXEC) nogui
@echo 'press Ctrl+A,D to quit screen'
sleep 1
screen -d -r minecraft
## console: control mc server in console
.PHONY: console
console:
screen -d -r minecraft
## stop: stop mc server in screen session
.PHONY: stop
stop:
screen -X -S minecraft quit
## backup: tar world dir for backup
.PHONY: backup
backup:
@tar czvf $(BACKUPNAME) world
@mv $(BACKUPNAME) $(BAKPATH)/.
## help: show this menu
.PHONY: help
help: Makefile
@echo
@echo " Choose a command run: "
@echo
@sed -n 's/^##//p' $< | column -t -s ':' | sed -e 's/^/ /'
@echo
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment