diff --git a/roles/minetest/defaults/main.yml b/roles/minetest/defaults/main.yml index 4ef7f52f3..40dcac9ae 100644 --- a/roles/minetest/defaults/main.yml +++ b/roles/minetest/defaults/main.yml @@ -1,8 +1,16 @@ +# These are set in github.com/iiab/iiab/blob/master/vars/default_vars.yml +# They may be overridden in local_vars + # minetest_install: False # minetest_enabled: False # minetest_port: 30000 # minetest_server_admin: Admin -# All above are set in: github.com/iiab/iiab/blob/master/vars/default_vars.yml -# If nec, change them by editing /etc/iiab/local_vars.yml prior to installing! -minetest_default_runas_user: Debian-minetest -minetest_default_runas_group: games + +# minetest_default_game: only carbone-ng and minetest are supported +minetest_default_game: carbone-ng +minetest_flat_world: False + +# These should not be touched unless minetest packages change + +minetest_config_file: /etc/minetest/minetest.conf +minetest_world_dir: /library/games/minetest/worlds/world diff --git a/roles/minetest/tasks/calc_vars.yml b/roles/minetest/tasks/calc_vars.yml index 5f91fbf59..a6fa9340f 100644 --- a/roles/minetest/tasks/calc_vars.yml +++ b/roles/minetest/tasks/calc_vars.yml @@ -3,11 +3,21 @@ - name: Set some facts for RPi set_fact: minetest_server_bin: /library/games/minetest/bin/minetestserver - minetest_world_dir: /library/games/minetest/worlds/world - minetest_game_dir: /library/games/minetest/games/minetest_game + minetest_working_dir: /library/games/minetest # only works if server run as root minetest_runas_user: root minetest_runas_group: root when: is_rpi -# For other installs TBD +# For other installs +- name: Set some facts for other platforms + set_fact: + minetest_server_bin: /usr/lib/minetest/minetestserver + minetest_working_dir: /usr/share/games/minetest + minetest_runas_user: Debian-minetest + minetest_runas_group: games + when: not is_rpi + +- name: Set some facts for all + set_fact: + minetest_game_dir: "{{ minetest_working_dir }}/games/{{ minetest_default_game }}" diff --git a/roles/minetest/tasks/main.yml b/roles/minetest/tasks/main.yml index 85a99df9d..1e0841794 100644 --- a/roles/minetest/tasks/main.yml +++ b/roles/minetest/tasks/main.yml @@ -1,3 +1,6 @@ +# Calculate local variables +- include_tasks: calc_vars.yml + - name: Check for minetest world file ({{ minetest_world_dir }}/world.mt) stat: path: "{{ minetest_world_dir }}/world.mt" @@ -12,15 +15,36 @@ mode: 0755 with_items: - /library/games - when: minetest_install # rpi only - include_tasks: rpi_minetest_install.yml - when: minetest_install and not minetest_world.stat.exists and is_rpi + when: not minetest_world.stat.exists and is_rpi # not rpi - include_tasks: minetest_install.yml - when: minetest_install and not minetest_world.stat.exists and not is_rpi + when: not minetest_world.stat.exists and not is_rpi + +- git: + repo: https://github.com/Calinou/carbone-ng.git + dest: "{{ minetest_game_dir }}" + depth: 1 + when: minetest_default_game == "carbone-ng" + +- name: Give minetest user ownership of carbone-ng + file: + state: directory + path: "{{ minetest_game_dir }}" + recurse: yes + owner: "{{ minetest_runas_user }}" + group: "{{ minetest_runas_group }}" + mode: 0755 + when: minetest_default_game == "carbone-ng" + +# Install games +#- include: minetest_install_games.yml +# with_items: +# - name: carbone-ng +# url: https://github.com/Calinou/carbone-ng # Install mods - include: minetest_install_mods.yml @@ -39,7 +63,13 @@ url: https://github.com/minetest-mods/pipeworks/archive/master.zip - name: Minetest-WorldEdit url: https://github.com/Uberi/Minetest-WorldEdit/archive/master.zip - when: minetest_install + when: minetest_default_game == "minetest" + +- name: Remove mod from carbone-ng that prevents our Admin name + file: + state: absent + path: "{{ minetest_game_dir }}/mods/name_restrictions" + when: minetest_default_game == "carbone-ng" # enable or disable - name: Enable & Restart 'minetest-server' service @@ -48,7 +78,7 @@ name: minetest-server enabled: yes state: restarted - when: minetest_install and minetest_enabled + when: minetest_enabled - name: Disable 'minetest-server' service systemd: @@ -56,7 +86,7 @@ name: minetest-server enabled: no state: stopped - when: minetest_install and not minetest_enabled + when: not minetest_enabled - name: Add 'minetest' variable values to {{ iiab_ini_file }} ini_file: diff --git a/roles/minetest/tasks/minetest_install.yml b/roles/minetest/tasks/minetest_install.yml index f539d689f..354907526 100644 --- a/roles/minetest/tasks/minetest_install.yml +++ b/roles/minetest/tasks/minetest_install.yml @@ -1,5 +1,4 @@ # For non-rpi installs -# Still a work in progress - name: Install Minetest package package: @@ -16,13 +15,23 @@ - { regexp: '^name = ', line: 'name = Admin' } - { regexp: '^creative_mode = ', line: 'creative_mode = true' } - { regexp: '^port = ', line: 'port = {{ minetest_port }}' } + - { regexp: '^default_game = ', line: 'default_game = {{ minetest_default_game }}' } + +- name: Set mapgen engine to flat if enabled + lineinfile: + path: /etc/minetest/minetest.conf + regexp: "{{ item.regexp }}" + line: "{{ item.line }}" + with_items: + - { regexp: '^mg_name = ', line: 'mg_name = flat' } + when: minetest_flat_world - name: Create /library/games/minetest/worlds/world file: state: directory path: "{{ item }}" - owner: "{{ minetest_default_runas_user }}" - group: "{{ minetest_default_runas_group }}" + owner: "{{ minetest_runas_user }}" + group: "{{ minetest_runas_group }}" mode: 0755 with_items: - "{{ minetest_world_dir }}" diff --git a/roles/minetest/tasks/rpi_minetest_install.yml b/roles/minetest/tasks/rpi_minetest_install.yml index a87d58c40..ab299daeb 100644 --- a/roles/minetest/tasks/rpi_minetest_install.yml +++ b/roles/minetest/tasks/rpi_minetest_install.yml @@ -11,6 +11,7 @@ dest: "{{ downloads_dir }}/{{ minetest_rpi_src }}" timeout: "{{ download_timeout }}" +# we need to create these for rpi, but package creates them for other OSes - name: Create dirs /etc/minetest and /library/games file: state: directory diff --git a/roles/minetest/templates/minetest.conf.j2 b/roles/minetest/templates/minetest.conf.j2 index e99777f14..6878e0d8a 100644 --- a/roles/minetest/templates/minetest.conf.j2 +++ b/roles/minetest/templates/minetest.conf.j2 @@ -9,7 +9,7 @@ server_name = Internet in a Box Minetest Server server_announce = false # Default game (default when creating a new world) -default_game = minetest +default_game = {{ minetest_default_game }} # Maximum number of players connected simultaneously max_users = 15 @@ -30,3 +30,7 @@ default_privs = interact, shout, teleport, settime, privs # For mods spawn_friendly_mobs = true spawn_hostile_mobs = false + +{% if minetest_flat_world %} +mg_name = flat +{% endif %}