Index: head/games/minecraft-server/Makefile =================================================================== --- head/games/minecraft-server/Makefile (revision 399339) +++ head/games/minecraft-server/Makefile (revision 399340) @@ -1,66 +1,62 @@ # $FreeBSD$ PORTNAME= minecraft-server PORTVERSION= 1.8.8 +PORTREVISION= 1 CATEGORIES= games java MASTER_SITES= https://s3.amazonaws.com/Minecraft.Download/versions/${PORTVERSION}/ -DISTNAME= minecraft_server.${PORTVERSION}.jar -EXTRACT_SUFX= +DISTFILES= minecraft_server.${PORTVERSION}.jar EXTRACT_ONLY= MAINTAINER= freebsd@jonathanprice.org COMMENT= Dedicated server for the game Minecraft OPTIONS_SINGLE= RUN OPTIONS_SINGLE_RUN= DAEMON STANDALONE DAEMON_DESC= Run as a service STANDALONE_DESC= Run the .jar file directly OPTIONS_SUB= yes OPTIONS_DEFAULT= STANDALONE USERS= mcserver GROUPS= ${USERS} NO_BUILD= yes USE_JAVA= yes SUB_FILES= minecraft-server \ pkg-message \ pkg-deinstall SUB_LIST= VERSION=${PORTVERSION} PLIST_SUB= VERSION=${PORTVERSION} CONFIG_FILES= banned-ips.json \ banned-players.json \ eula.txt \ ops.json \ server.properties \ usercache.json \ whitelist.json -.include +DAEMON_VARS= USE_RC_SUBR=minecraft +DAEMON_RUN_DEPENDS= tmux:${PORTSDIR}/sysutils/tmux -.if ${PORT_OPTIONS:MDAEMON} -USE_RC_SUBR+= minecraft -RUN_DEPENDS+= tmux:${PORTSDIR}/sysutils/tmux -.endif - do-install: ${MKDIR} ${STAGEDIR}${PREFIX}/${PORTNAME} - ${INSTALL_DATA} ${DISTDIR}/${DISTNAME} ${STAGEDIR}${PREFIX}/${PORTNAME} + ${INSTALL_DATA} ${DISTDIR}/${DISTFILES} ${STAGEDIR}${PREFIX}/${PORTNAME} ${MKDIR} ${STAGEDIR}${ETCDIR} ${MKDIR} ${STAGEDIR}/var/db/minecraft-server ${MKDIR} ${STAGEDIR}/var/log/minecraft-server -.if ${PORT_OPTIONS:MSTANDALONE} - ${INSTALL_SCRIPT} ${WRKDIR}/minecraft-server ${STAGEDIR}${PREFIX}/bin - ${CP} ${FILESDIR}/java-args.txt ${STAGEDIR}${ETCDIR} -.endif .for file in ${CONFIG_FILES} ${LN} -s ${ETCDIR}/${file} ${STAGEDIR}${PREFIX}/${PORTNAME}/${file} .endfor ${LN} -sf /var/log/minecraft-server ${STAGEDIR}${PREFIX}/${PORTNAME}/logs ${LN} -sf /var/log/minecraft-server/debug ${STAGEDIR}${PREFIX}/${PORTNAME}/debug ${LN} -sf /var/db/minecraft-server ${STAGEDIR}${PREFIX}/${PORTNAME}/world + +post-install-STANDALONE-on: + ${INSTALL_SCRIPT} ${WRKDIR}/minecraft-server ${STAGEDIR}${PREFIX}/bin + ${CP} ${FILESDIR}/java-args.txt ${STAGEDIR}${ETCDIR} .include Index: head/games/minecraft-server/files/minecraft.in =================================================================== --- head/games/minecraft-server/files/minecraft.in (revision 399339) +++ head/games/minecraft-server/files/minecraft.in (revision 399340) @@ -1,100 +1,109 @@ #!/bin/sh # # $FreeBSD$ # PROVIDE: minecraft # REQUIRE: LOGIN # KEYWORD: shutdown # # rc.conf variables: # minecraft_enable (Default: NO) -# minecraft_mem (Default: 1024M) +# minecraft_mems (Default: 1024M) +# minecraft_memx (Default: 1024M) # minecraft_args (Default: "") . /etc/rc.subr name=minecraft rcvar=minecraft_enable desc="Dedicated server for the game Minecraft" load_rc_config $name -minecraft_mem=${minecraft_mem:-"1024M"} +minecraft_mems=${minecraft_mems:-"1024M"} +minecraft_memx=${minecraft_memx:-"1024M"} minecraft_args=${minecraft_args:-""} extra_commands="console status kill" start_cmd="${name}_start" stop_cmd="${name}_stop" console_cmd="${name}_console" status_cmd="${name}_status" kill_cmd="${name}_kill" is_running() { pgrep -qu mcserver java return $? } minecraft_start() { if is_running; then echo "${name} is already running." + elif [ ${minecraft_mems%?} -gt ${minecraft_memx%?} ]; then + echo "ERROR: minecraft_mems is set greater than minecraft_memx." + echo "ERROR: Set minecraft_memx to be equal or greater than minecraft_mems in rc.conf." else + if [ -n "${minecraft_mem}" ]; then + echo "WARNING: minecraft_mem is deprecated. Please change this to minecraft_memx." + minecraft_memx=${minecraft_mem} + fi echo "Starting ${name}." cd %%PREFIX%%/minecraft-server - su mcserver -c "%%LOCALBASE%%/bin/tmux new-session -s minecraft -d '%%LOCALBASE%%/bin/java -Xmx${minecraft_mem} -Xms${minecraft_mem} ${minecraft_args} -jar %%PREFIX%%/minecraft-server/minecraft_server.%%VERSION%%.jar nogui'" + su mcserver -c "%%LOCALBASE%%/bin/tmux new-session -s minecraft -d '%%LOCALBASE%%/bin/java -Xmx${minecraft_memx} -Xms${minecraft_mems} ${minecraft_args} -jar %%PREFIX%%/minecraft-server/minecraft_server.%%VERSION%%.jar nogui'" fi } minecraft_stop() { if is_running; then echo "Stopping ${name}." su mcserver -c "%%LOCALBASE%%/bin/tmux send-keys -t ${name} \"stop\" ENTER" i=0 while [ $i -lt 10 ]; do i=$(($i + 1)) if is_running; then sleep 1 else echo "${name} has been stopped." return fi done echo "WARN: ${name} could not be stopped or is taking longer than expected." echo "WARN: To view the console, type 'service ${name} console'" - echo "WARN: To kill $[name}, type 'service ${name} kill'" + echo "WARN: To kill ${name}, type 'service ${name} kill'" else echo "${name} is not running." fi } minecraft_console() { if ! is_running; then echo "${name} is not running." else export TERM=xterm su mcserver -c "%%LOCALBASE%%/bin/tmux attach-session -t ${name}" fi } minecraft_status() { if is_running; then echo "${name} is running." else echo "${name} is not running." fi } minecraft_kill() { if ! is_running; then echo "${name} is not running." else pkill -KILL -u mcserver java echo "${name} has been killed." fi } run_rc_command "$1" Index: head/games/minecraft-server/files/pkg-message.in =================================================================== --- head/games/minecraft-server/files/pkg-message.in (revision 399339) +++ head/games/minecraft-server/files/pkg-message.in (revision 399340) @@ -1,26 +1,27 @@ When you first run minecraft-server, it will populate the file %%ETCDIR%%/eula.txt It is required to read the EULA, and then set eula=true -- Configuration files can be found at %%ETCDIR%% -- Log and debug output files can be found at /var/log/minecraft-server/ -- World files can be found at /var/db/minecraft-server +- Configuration files can be found in %%ETCDIR%%/ +- Log and debug output files can be found in /var/log/minecraft-server/ +- World files can be found in /var/db/minecraft-server/ Without daemon option: - To run the server, run %%PREFIX%%/bin/minecraft-server - To edit java's parameters, edit %%ETCDIR%%/java-args.txt With daemon option: - The service has been installed with the name 'minecraft' -- To adjust memory usage, use MINECRAFT_MEM= in /etc/rc.conf -- To add other java parameters, use MINECRAFT_ARGS= in /etc/rc.conf +- To adjust maximum memory usage (-Xmx), use minecraft_memx= in /etc/rc.conf +- To adjust initial memory usage (-Xms), use minecraft_mems= in /etc/rc.conf +- To add other java parameters, use minecraft_args= in /etc/rc.conf - To see the interactive console, type service minecraft console Users upgrading from version < 1.8 are advised to run the server to generate new config files, and then modify them based on their existing configuration, as most files are now JSON instead of txt. Users upgrading from from 1.8 will need to re-accept the EULA. They may also wish to delete %%DATADIR%% as it is no longer used. Index: head/games/minecraft-server/pkg-plist =================================================================== --- head/games/minecraft-server/pkg-plist (revision 399339) +++ head/games/minecraft-server/pkg-plist (revision 399340) @@ -1,21 +1,21 @@ %%STANDALONE%%bin/minecraft-server @owner mcserver @group mcserver -@dir minecraft-server -@dir %%ETCDIR%% %%STANDALONE%%%%ETCDIR%%/java-args.txt minecraft-server/banned-ips.json minecraft-server/banned-players.json minecraft-server/debug minecraft-server/eula.txt minecraft-server/logs minecraft-server/minecraft_server.%%VERSION%%.jar minecraft-server/ops.json minecraft-server/server.properties minecraft-server/usercache.json minecraft-server/whitelist.json minecraft-server/world +@dir %%ETCDIR%% +@dir minecraft-server @dir /var/db/minecraft-server @dir /var/log/minecraft-server @owner @group