From c03108539c9b20559e31cc8c23c48a6b2fce7e47 Mon Sep 17 00:00:00 2001 From: sys4 Date: Sun, 14 Jun 2020 11:35:38 +0200 Subject: [PATCH] =?UTF-8?q?Ajout=20settings=20moretrees=20(dev)=20+=20guid?= =?UTF-8?q?e=20serveur=20(loin=20d'=C3=AAtre=20termin=C3=A9)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- doc/Guide/architecture.png | Bin 0 -> 89499 bytes doc/Guide/index.html | 887 +++++++++++++++++++++++++++++++ doc/Guide/index.org | 167 ++++++ doc/Guide/out.txt | 16 + doc/vegetation_gen.org | 60 +++ upgrade.sh | 67 +-- world/moretrees_settings-dev.txt | 135 +++++ 7 files changed, 1300 insertions(+), 32 deletions(-) create mode 100644 doc/Guide/architecture.png create mode 100644 doc/Guide/index.html create mode 100644 doc/Guide/index.org create mode 100644 doc/Guide/out.txt create mode 100644 doc/vegetation_gen.org create mode 100644 world/moretrees_settings-dev.txt diff --git a/doc/Guide/architecture.png b/doc/Guide/architecture.png new file mode 100644 index 0000000000000000000000000000000000000000..0d4a2567759920cb29de78dfde99b6161c0284e8 GIT binary patch literal 89499 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 z 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 literal 0 HcmV?d00001 diff --git a/doc/Guide/index.html b/doc/Guide/index.html new file mode 100644 index 0000000..09f3cf8 --- /dev/null +++ b/doc/Guide/index.html @@ -0,0 +1,887 @@ + + + + + + + + + + + + + +

+ +
+

1 Guide détaillé de l'utilisation du serveur NALC

+
+

+Ce guide explique comment installer et utiliser les scripts du serveur NALC pour sa gestion au quotidien par les administrateurs du serveur. +En dernière partie le guide explique les bonnes pratiques à adopter pour contribuer au développement du serveur NALC. +

+
+
+

1.1 Architecture et fichiers principaux du serveur

+
+

+Avant de commencer, voici une illustration de l'architecture du serveur une fois installé. +

+ + +
+

architecture.png +

+
+ +

+Ne prenez pas peur par la complexité apparente du schéma, la pluspart des opérations que vous aurez à gérer se feront à travers les scripts qui vous faciliterons la tâche. +

+ +

+Nous reviendrons plus en détail sur certaines parties au moment opportun. +

+
+
+
+

1.2 Installation

+
+
+
+

1.2.1 Pré-requis

+
+ +
+
+
+

1.2.2 Ce que je recommande pour avoir de bonnes performances

+
+
    +
  • PostgreSQL pour le backend de la MAP et des Utilisateurs.
  • +
  • Redis pour le backend de la MAP est une bonne alternative, mais elle ne sera pas traitée dans ce guide. Cependant j'avais fait une vidéo d'installation d'un serveur Minetest avec le backend Redis disponible ici : https://www.youtube.com/watch?v=cz_-Q0Uct1c
  • +
  • Utiliser les librairies fournis par le système plûtot que celle incluse avec Minetest, comme Luajit par exemple.
  • +
+
+
+
+

1.2.3 Créer un utilisateur dédié

+
+

+Je recommande de créer un utilisateur dédié que nous nommerons "minetest" dans ce guide. Cela permettra une meilleure organisation ; et du point de vue sécurité c'est pas mal aussi. +

+ +

+Lancez un Terminal en root et entrez les commandes suivantes : +

+
+# useradd -m -U minetest -s /bin/bash minetest
+# passwd minetest
+
+ +

+Maintenant vous pouvez suivre le reste du guide avec l'utilisateur minetest. +

+
+
+
+

1.2.4 Télécharger les sources du serveur

+
+

+Depuis un terminal nous allons rapatrier le code source du serveur avec git : +

+
+cd ~
+git clone --depth 1 https://sys4.fr/gitea/nalc/nalc-server.git
+
+

+Après un court laps de temps, vous devriez avoir le répertoire /home/minetest/nalc-server créé dont le contenue est le suivant : +

+ + + +++ ++ ++ ++ ++ ++ ++ ++ ++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
total136       
-rwxr-xr-x1sys4sys411017déc.14:33backup.sh
drwxr-xr-x3sys4sys440968déc.14:14doc
-rwxr-xr-x1sys4sys496508déc.01:14install.sh
-rw-r–r--1sys4sys4345707déc.14:33LICENSE
-rw-r–r--1sys4sys4103887déc.14:33minetest-1.0.conf
-rw-r–r--1sys4sys4105097déc.14:33minetest-1.1.conf
-rw-r–r--1sys4sys4105797déc.14:33minetest-dev.conf
-rw-r–r--1sys4sys4105097déc.14:33minetest-stable.conf
-rw-r–r--1sys4sys42617déc.14:33README.md
-rwxr-xr-x1sys4sys414687déc.14:33shutdown.sh
-rw-r–r--1sys4sys46917déc.14:33start.sh.example
-rwxr-xr-x1sys4sys475898déc.01:14upgrade.sh
drwxr-xr-x2sys4sys440967déc.14:33world
-rw-r–r--1sys4sys4627déc.14:33worldmt-1.0.conf
-rw-r–r--1sys4sys4857déc.14:33worldmt-1.1.conf
+
+
+ +
+

1.2.5 Installer le serveur

+
+

+Maintenant il nous faut mettre en place tout le nécessaires pour avoir un serveur fonctionnel comme illustré dans l'image 1 et dont le contenu doit ressembler à ça : +

+ + + +++ ++ ++ ++ ++ ++ ++ ++ ++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
total172       
-rwxr-xr-x1sys4sys411017déc.17:25backup.sh
drwxr-xr-x2sys4sys440967déc.17:25doc
-rwxr-xr-x1sys4sys4113018déc.00:30install.sh
-rw-r–r--1sys4sys4345707déc.17:25LICENSE
drwxr-xr-x2sys4sys440967déc.17:51logs
drwxr-xr-x23sys4sys440968déc.00:31minetest
-rw-r–r--1sys4sys4103887déc.17:25minetest-1.0.conf
-rw-r–r--1sys4sys4105097déc.17:25minetest-1.1.conf
-rw-r–r--1sys4sys4105797déc.17:25minetest-dev.conf
-rw-r–r--1sys4sys4105158déc.00:46minetest-stable.conf
drwxr-xr-x5sys4sys440967déc.23:48nalcgame
drwxr-xr-x144sys4sys440967déc.23:49nalc-server-mods
-rw-r–r--1sys4sys42617déc.17:25README.md
-rwxr-xr-x1sys4sys414987déc.17:35shutdown.sh
-rwxr–r--1sys4sys47297déc.18:08start.sh
-rwxr–r--1sys4sys47227déc.17:53start.sh~
-rw-r–r--1sys4sys46917déc.17:25start.sh.example
-rwxr-xr-x1sys4sys475898déc.00:12upgrade.sh
drwxr-xr-x2sys4sys440967déc.17:25world
-rw-r–r--1sys4sys480288déc.00:41world.mt
-rw-r–r--1sys4sys4627déc.17:25worldmt-1.0.conf
-rw-r–r--1sys4sys4857déc.17:25worldmt-1.1.conf
-rw-r–r--1sys4sys4858déc.00:41world.mt.bak
+
+
+
+
+
+
+

Created: 2019-12-08 dim. 18:38

+

Validate

+
+ + diff --git a/doc/Guide/index.org b/doc/Guide/index.org new file mode 100644 index 0000000..06e6255 --- /dev/null +++ b/doc/Guide/index.org @@ -0,0 +1,167 @@ +* Guide détaillé de l'utilisation du serveur NALC +Ce guide explique comment installer et utiliser les scripts du serveur NALC pour sa gestion au quotidien par les administrateurs du serveur. +En dernière partie le guide explique les bonnes pratiques à adopter pour contribuer au développement du serveur NALC. +** Architecture et fichiers principaux du serveur +Avant de commencer, voici une illustration de l'architecture du serveur une fois installé. + +#+begin_src plantuml :file architecture.png + folder "nalc-server" as nalcserver { + Component install.sh + Component upgrade.sh + Component start.sh + Component shutdown.sh + Component backup.sh + Component "worldmt-$version.conf" as wmtver + Component "<&flag>world.mt" as worldmt + Component "minetest-$version.conf" as mtver + folder doc + folder logs + folder backup + folder world + folder "<&flag>nalc_game" as nalc_game + folder "nalc-server-mods" as nalcservermods { + folder "<&flag>mod1" as mod1 + folder "<&flag>mod2" as mod2 + folder "<&flag>modN..." as modn + } + folder minetest { + Component "minetest.conf" as mtconf + folder games { + Component "<&people>nalc_game" as nalcgamelink + } + folder worlds { + folder "nalc-$version" as nalc_world { + Component "<&people>world.mt" as worldmtlink + } + } + folder mods { + Component "<&people>mod1" as mod1l + Component "<&people>mod2" as mod2l + Component "<&people>modn..." as modnl + } + } + } + + worldmtlink ..> worldmt :<> + nalcgamelink ..> nalc_game :<> + mod1l ..> mod1 :<> + mod2l ..> mod2 :<> + modnl ..> modn :<> + + wmtver --> worldmt : Copie + mtver --> mtconf : Copie + world --> nalc_world : Copie du contenue + + legend right + <&flag> Dossier ou fichier source + <&people> Lien symbolique vers <&flag> + endlegend + + node "Serveur Gitea Sys4" as gitea { + Component "Dépôt nalc-server-mods" as depot_nalc + Component "Dépôt nalc_game" as depot_nalc_game + Component "Dépôt nalc-serveur" as depot_nalc_serveur + } + node "Serveur Gitlab de Minetest" as gitlab { + Component "Dépôt minetest" as depot_minetest + } + + interface "https ou ssh" as intergitea + interface "https" as intergitlab + + nalcserver ..> intergitea : utilise + nalcservermods ..> intergitea : utilise + nalc_game ..> intergitea : utilise + + minetest ..> intergitlab : utilise + + intergitea - gitea + intergitlab - gitlab +#+end_src + +#+RESULTS: +[[file:architecture.png]] + +Ne prenez pas peur par la complexité apparente du schéma, la pluspart des opérations que vous aurez à gérer se feront à travers les scripts qui vous faciliterons la tâche. + +Nous reviendrons plus en détail sur certaines parties au moment opportun. +** Installation +*** Pré-requis + - Système d'exploitation : GNU/Linux avec interpréteur BASH, + - git, + - Librairies et dépendances de Minetest : + Consulter les pré-requis sur cette page : [[https://github.com/minetest/minetest/blob/master/README.md]] +*** Ce que je recommande pour avoir de bonnes performances + - *PostgreSQL* pour le backend de la MAP et des Utilisateurs. + - *Redis* pour le backend de la MAP est une bonne alternative, mais elle ne sera pas traitée dans ce guide. Cependant j'avais fait une vidéo d'installation d'un serveur Minetest avec le backend Redis disponible ici : [[https://www.youtube.com/watch?v=cz_-Q0Uct1c]] + - Utiliser les librairies fournis par le système plûtot que celle incluse avec Minetest, comme Luajit par exemple. +*** Créer un utilisateur dédié +Je recommande de créer un utilisateur dédié que nous nommerons "minetest" dans ce guide. Cela permettra une meilleure organisation ; et du point de vue sécurité c'est pas mal aussi. + +Lancez un Terminal en root et entrez les commandes suivantes : +#+begin_example :src shell + # useradd -m -U minetest -s /bin/bash minetest + # passwd minetest +#+end_example + +Maintenant vous pouvez suivre le reste du guide avec l'utilisateur minetest. +*** Télécharger les sources du serveur +Depuis un terminal nous allons rapatrier le code source du serveur avec git : +#+begin_example :src shell + cd ~ + git clone --depth 1 https://sys4.fr/gitea/nalc/nalc-server.git +#+end_example +Après un court laps de temps, vous devriez avoir le répertoire /home/minetest/nalc-server créé dont le contenue est le suivant : +#+begin_src sh :exports results + ls -l ../.. +#+end_src + +#+RESULTS: +| total | 136 | | | | | | | | +| -rwxr-xr-x | 1 | sys4 | sys4 | 1101 | 7 | déc. | 14:33 | backup.sh | +| drwxr-xr-x | 3 | sys4 | sys4 | 4096 | 8 | déc. | 14:14 | doc | +| -rwxr-xr-x | 1 | sys4 | sys4 | 9650 | 8 | déc. | 01:14 | install.sh | +| -rw-r--r-- | 1 | sys4 | sys4 | 34570 | 7 | déc. | 14:33 | LICENSE | +| -rw-r--r-- | 1 | sys4 | sys4 | 10388 | 7 | déc. | 14:33 | minetest-1.0.conf | +| -rw-r--r-- | 1 | sys4 | sys4 | 10509 | 7 | déc. | 14:33 | minetest-1.1.conf | +| -rw-r--r-- | 1 | sys4 | sys4 | 10579 | 7 | déc. | 14:33 | minetest-dev.conf | +| -rw-r--r-- | 1 | sys4 | sys4 | 10509 | 7 | déc. | 14:33 | minetest-stable.conf | +| -rw-r--r-- | 1 | sys4 | sys4 | 261 | 7 | déc. | 14:33 | README.md | +| -rwxr-xr-x | 1 | sys4 | sys4 | 1468 | 7 | déc. | 14:33 | shutdown.sh | +| -rw-r--r-- | 1 | sys4 | sys4 | 691 | 7 | déc. | 14:33 | start.sh.example | +| -rwxr-xr-x | 1 | sys4 | sys4 | 7589 | 8 | déc. | 01:14 | upgrade.sh | +| drwxr-xr-x | 2 | sys4 | sys4 | 4096 | 7 | déc. | 14:33 | world | +| -rw-r--r-- | 1 | sys4 | sys4 | 62 | 7 | déc. | 14:33 | worldmt-1.0.conf | +| -rw-r--r-- | 1 | sys4 | sys4 | 85 | 7 | déc. | 14:33 | worldmt-1.1.conf | + +*** Installer le serveur +Maintenant il nous faut mettre en place tout le nécessaires pour avoir un serveur fonctionnel comme illustré dans l'image 1 et dont le contenu doit ressembler à ça : +#+begin_src sh :exports results + ls -l ../../../tests/nalc-server +#+end_src + +#+RESULTS: +| total | 172 | | | | | | | | +| -rwxr-xr-x | 1 | sys4 | sys4 | 1101 | 7 | déc. | 17:25 | backup.sh | +| drwxr-xr-x | 2 | sys4 | sys4 | 4096 | 7 | déc. | 17:25 | doc | +| -rwxr-xr-x | 1 | sys4 | sys4 | 11301 | 8 | déc. | 00:30 | install.sh | +| -rw-r--r-- | 1 | sys4 | sys4 | 34570 | 7 | déc. | 17:25 | LICENSE | +| drwxr-xr-x | 2 | sys4 | sys4 | 4096 | 7 | déc. | 17:51 | logs | +| drwxr-xr-x | 23 | sys4 | sys4 | 4096 | 8 | déc. | 00:31 | minetest | +| -rw-r--r-- | 1 | sys4 | sys4 | 10388 | 7 | déc. | 17:25 | minetest-1.0.conf | +| -rw-r--r-- | 1 | sys4 | sys4 | 10509 | 7 | déc. | 17:25 | minetest-1.1.conf | +| -rw-r--r-- | 1 | sys4 | sys4 | 10579 | 7 | déc. | 17:25 | minetest-dev.conf | +| -rw-r--r-- | 1 | sys4 | sys4 | 10515 | 8 | déc. | 00:46 | minetest-stable.conf | +| drwxr-xr-x | 5 | sys4 | sys4 | 4096 | 7 | déc. | 23:48 | nalc_game | +| drwxr-xr-x | 144 | sys4 | sys4 | 4096 | 7 | déc. | 23:49 | nalc-server-mods | +| -rw-r--r-- | 1 | sys4 | sys4 | 261 | 7 | déc. | 17:25 | README.md | +| -rwxr-xr-x | 1 | sys4 | sys4 | 1498 | 7 | déc. | 17:35 | shutdown.sh | +| -rwxr--r-- | 1 | sys4 | sys4 | 729 | 7 | déc. | 18:08 | start.sh | +| -rwxr--r-- | 1 | sys4 | sys4 | 722 | 7 | déc. | 17:53 | start.sh~ | +| -rw-r--r-- | 1 | sys4 | sys4 | 691 | 7 | déc. | 17:25 | start.sh.example | +| -rwxr-xr-x | 1 | sys4 | sys4 | 7589 | 8 | déc. | 00:12 | upgrade.sh | +| drwxr-xr-x | 2 | sys4 | sys4 | 4096 | 7 | déc. | 17:25 | world | +| -rw-r--r-- | 1 | sys4 | sys4 | 8028 | 8 | déc. | 00:41 | world.mt | +| -rw-r--r-- | 1 | sys4 | sys4 | 62 | 7 | déc. | 17:25 | worldmt-1.0.conf | +| -rw-r--r-- | 1 | sys4 | sys4 | 85 | 7 | déc. | 17:25 | worldmt-1.1.conf | +| -rw-r--r-- | 1 | sys4 | sys4 | 85 | 8 | déc. | 00:41 | world.mt.bak | diff --git a/doc/Guide/out.txt b/doc/Guide/out.txt new file mode 100644 index 0000000..b1d7960 --- /dev/null +++ b/doc/Guide/out.txt @@ -0,0 +1,16 @@ +total 136 +-rwxr-xr-x 1 sys4 sys4 1101 7 déc. 14:33 backup.sh +drwxr-xr-x 3 sys4 sys4 4096 8 déc. 14:14 doc +-rwxr-xr-x 1 sys4 sys4 9650 8 déc. 01:14 install.sh +-rw-r--r-- 1 sys4 sys4 34570 7 déc. 14:33 LICENSE +-rw-r--r-- 1 sys4 sys4 10388 7 déc. 14:33 minetest-1.0.conf +-rw-r--r-- 1 sys4 sys4 10509 7 déc. 14:33 minetest-1.1.conf +-rw-r--r-- 1 sys4 sys4 10579 7 déc. 14:33 minetest-dev.conf +-rw-r--r-- 1 sys4 sys4 10509 7 déc. 14:33 minetest-stable.conf +-rw-r--r-- 1 sys4 sys4 261 7 déc. 14:33 README.md +-rwxr-xr-x 1 sys4 sys4 1468 7 déc. 14:33 shutdown.sh +-rw-r--r-- 1 sys4 sys4 691 7 déc. 14:33 start.sh.example +-rwxr-xr-x 1 sys4 sys4 7589 8 déc. 01:14 upgrade.sh +drwxr-xr-x 2 sys4 sys4 4096 7 déc. 14:33 world +-rw-r--r-- 1 sys4 sys4 62 7 déc. 14:33 worldmt-1.0.conf +-rw-r--r-- 1 sys4 sys4 85 7 déc. 14:33 worldmt-1.1.conf diff --git a/doc/vegetation_gen.org b/doc/vegetation_gen.org new file mode 100644 index 0000000..a3c3f60 --- /dev/null +++ b/doc/vegetation_gen.org @@ -0,0 +1,60 @@ +| Nom arbre | Températures | Humidité | Altitude | Biome | +|----------------+--------------+----------+-----------------+-------------------------------------------------------------------------------------------------------------------------------------------------------| +| Apple tree | 5 - 32°C | 60-100 | 48-200 | *Tempéré froid humide, deciduous_forest, mixed_mushroom_cold, coniferous_forest | +| Oak | | | | *Méditéranéen, deciduous_forest, rainforest, savanna, mixed_mushroom_hot, mixed_mushroom_deciduous, mixed_mushroom_cold, coniferous_forest, grassland | +| sequoia | | | 150-210 | Coniferous_forest | +| palm | 75 | | | Desert_Ocean, Sandstone_desert_ocean, *Méditeranean_shore, Deciduous_forest_shore, | +| date | 75 | | | Desert_Ocean, Sandstone_desert_ocean, *Méditeranean_shore, Deciduous_forest_shore, | +| Cedar | | | 70-100 | coniferous_forest, mediterranean | +| rubber | | | | rainforest, mixed_mushroom_hot, savanna_shore | +| willow | | | | Grassland, deciduous_forest, coniferous_forest, mixed_mushroom_cold | +| birch | | | | Grassland, deciduous_forest, coniferous_forest, mixed_mushroom_cold | +| spruce | | | 40-200(tempéré) | Taiga, coniferous_forest, mixed_mushroom_cold, pine_forest, snow_biome_forest, snow_biome_lush | +| jungletree | | | | À supprimer. | +| fir | | | 40-200(tempéré) | Taiga, coniferous_forest, mixed_mushroom_cold, pine_forest, snow_biome_forest | +| poplar(_small) | | | | Grassland, deciduous_forest, coniferous_forest, mixed_mushroom_cold, | + +| Biome | Arbres | +|--------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------| +| snow_biome_alpine | - | +| snow_biome_forest | spruce, fir(SPWN; très rare) | +| taiga | spruce, fir(SPWN; très rare) | +| snow_biome_lush | spruce, fir(ALT: 0-31000) | +| pine_forest | Cedar,spruce,fir | +| mixed_mushroom_hot | rubber | +| Mushroom_forest | - | +| Mixed Mushroom Deciduous | AppleTree(ALT:48-200,SPAWN:rare); Oak; Cedar(ALT:100 SPAWN:rare); willow(SPAWN: rare); birch(SPAWN: rare); Spruce&fir(ALT: 40-200, SPAWM: rare) Poplar_small(SPWN: rare) | +| deciduous Forest | AppleTree(ALT:48-200,SPAWN:rare); Oak; Cedar(ALT:100 SPAWN:rare); willow(SPAWN: rare); birch(SPAWN: rare); Spruce&fir(ALT: 40-200, SPAWM: rare) Poplar_small(SPWN: rare) | +| Mixed Mushroom Cold | AppleTree(ALT:48-200,SPAWN:très rare); Oak(SPWN: rare); Cedar(ALT:50 SPAWN:rare); birch; Spruce&fir | +| Coniferous_Forest | AppleTree(ALT:48-200,SPAWN:très rare); Oak(SPWN: rare); Cedar(ALT:50 SPAWN:rare); birch; Spruce&fir | +| Grassland | Birch(SPAWN: rare), oak,apple(SPAWN: tres rare) | +| Desert | Palm,Date(ALT:0-3) | +| Desert sandstone | Palm,Date(ALT:0-3) | +| Desert ocean | Palm,Date | +| Sandstone desert ocean | Palm,Date | +| Savanna | rubber(SPWN: Rare ALT: 0-5) | +| Savanna Shore | Datier, rubber(SPWN: Rare ALT: 0-5) | +| Rainforest | Rubber | +| Rainforest_swamp | Palm, rubber | +| Mediterranean | Cedar(ALT: 100), oak(ALT: 10-80: SPAWN: rare mais par paquets) | +| Mediterranean shore | Datier | +| Deciduous Cold | Poplar,poplar_small,willow | +| Deciduous Cold Humid | Poplar,poplar_small(SPAWN: dense), willow | + + +* Nouveaux biomes + - Biome méditéranéen + - Température : 77 + - Humidité : 50 + - Altitude : 3-50 + - Biome méditéranéen plage + - Température : 77 + - Humidité : 50 + - Altitude : 0-3 + - deciduous_cold + - Température : 55 + - Humidité : 69 + - 3-300 + - deciduous_cold_humid + - Température : 55 + - Humidité : 111 diff --git a/upgrade.sh b/upgrade.sh index 5f33abd..79cb856 100755 --- a/upgrade.sh +++ b/upgrade.sh @@ -170,7 +170,7 @@ update_world() { fi if [[ $WORLD_FILE == "all" ]]; then - WORLD_FILE="news technic fbn fbnp bitchange christmas randommsg worldmt" + WORLD_FILE="moretrees news technic fbn fbnp bitchange christmas randommsg worldmt" fi for w_file in $WORLD_FILE; do @@ -178,37 +178,40 @@ update_world() { local file_dest="" local do_copy=1 case $w_file in - news) - file_dest=$world_dest/news.txt - file=$world_repos/news-$BRANCH.txt;; - technic) - file_dest=$world_dest/technic.conf - file=$world_repos/technic-$BRANCH.conf;; - fbn) - file_dest=$world_dest/forbidden_names.txt - file=$world_repos/forbidden_names-$BRANCH.txt;; - fbnp) - file_dest=$world_dest/forbidden_names_patterns.txt - file=$world_repos/forbidden_names_patterns-$BRANCH.txt;; - bitchange) - file_dest=$world_dest/bitchange_config.txt - file=$world_repos/bitchange_config-$BRANCH.txt;; - christmas) - file_dest=$world_dest/christmas_craft.conf - file=$world_repos/christmas_craft-$BRANCH.conf;; - randommsg) - file_dest=$world_dest/random_messages - file=$world_repos/random_messages-$BRANCH;; - worldmt) - do_copy=0 - regen_worldmt - rm -f $world_dest/world.mt - ln -s $serverpath/world.mt $world_dest/world.mt;; - mtconf) # Exception ici car n'est pas un fichier world. Doit être appelé seul. - file_dest=$serverpath/minetest/minetest.conf - file=$serverpath/minetest-$BRANCH.conf;; - *) - error;; + moretrees) + file_dest=$world_dest/moretrees_settings.txt + file=$world_repos/moretrees_settings-$BRANCH.txt;; + news) + file_dest=$world_dest/news.txt + file=$world_repos/news-$BRANCH.txt;; + technic) + file_dest=$world_dest/technic.conf + file=$world_repos/technic-$BRANCH.conf;; + fbn) + file_dest=$world_dest/forbidden_names.txt + file=$world_repos/forbidden_names-$BRANCH.txt;; + fbnp) + file_dest=$world_dest/forbidden_names_patterns.txt + file=$world_repos/forbidden_names_patterns-$BRANCH.txt;; + bitchange) + file_dest=$world_dest/bitchange_config.txt + file=$world_repos/bitchange_config-$BRANCH.txt;; + christmas) + file_dest=$world_dest/christmas_craft.conf + file=$world_repos/christmas_craft-$BRANCH.conf;; + randommsg) + file_dest=$world_dest/random_messages + file=$world_repos/random_messages-$BRANCH;; + worldmt) + do_copy=0 + regen_worldmt + rm -f $world_dest/world.mt + ln -s $serverpath/world.mt $world_dest/world.mt;; + mtconf) # Exception ici car n'est pas un fichier world. Doit être appelé seul. +file_dest=$serverpath/minetest/minetest.conf +file=$serverpath/minetest-$BRANCH.conf;; +*) + error;; esac if [[ $do_copy -eq 1 ]]; then diff --git a/world/moretrees_settings-dev.txt b/world/moretrees_settings-dev.txt new file mode 100644 index 0000000..485ad3d --- /dev/null +++ b/world/moretrees_settings-dev.txt @@ -0,0 +1,135 @@ +-- Global configuration variables + +-- Enable the various kinds of trees. + +moretrees.enable_apple_tree = false +moretrees.enable_oak = false +moretrees.enable_sequoia = false +moretrees.enable_palm = false +moretrees.enable_date_palm = false +moretrees.enable_cedar = false +moretrees.enable_rubber_tree = false +moretrees.enable_willow = false +moretrees.enable_birch = false +moretrees.enable_spruce = false +moretrees.enable_jungle_tree = false +moretrees.enable_fir = false +moretrees.enable_poplar = false +moretrees.enable_beech = false + +-- set this to true to make moretrees spawn saplings at mapgen time instead +-- of fully-grown trees, which will grow into full trees after a very short +-- delay. This reduces mapgen lag in some situations, and fixes situations +-- where the mapgen conflicts with the tree generator. + +moretrees.spawn_saplings = true + +-- Set this to true to allow defining stairs/slabs/etc. If Moreblocks is +-- installed, this will use that mod's Stairs Plus component. Otherwise, it +-- will use the default stairs mod in minetest_game, if present + +moretrees.enable_stairs = true + +-- If this variable is set to true, register fences for moretrees wood + +moretrees.enable_fences = true + +-- Set this to true if you want the plantlike drawtype for leaves, which +-- improves some peoples' framerates without resorting to making leaf nodes opaque. +-- Affects default leaves and default jungle leaves also. + +moretrees.plantlike_leaves = true + +-- Enable this if you want moretrees to redefine default apples so that they +-- fall when leaves decay/are dug. + +moretrees.enable_redefine_apple = true + +-- Set this to true to enable leaf decay of all trees except the default ones. + +moretrees.enable_leafdecay = true + +-- various related settings to configure leaf decay. + +moretrees.leafdecay_delay = 2 +moretrees.leafdecay_chance = 5 +moretrees.leafdecay_radius = 5 +moretrees.palm_leafdecay_radius = 10 + +-- Change these settings if you want default trees to be gradually cut down +-- above the elevation where firs normally generate. + +moretrees.firs_remove_default_trees = false +moretrees.firs_remove_interval = 2 +moretrees.firs_remove_chance = 150 + +-- Cocos palm settings + +moretrees.coconuts_regrow = true +moretrees.coconuts_convert_existing_palms = true -- Converting existing palm trees will make coconuts regrow on them as well + -- Else, they will only regrow on newly-spawned palms + -- However, conversion is not an exact science, and although an attempt is + -- made to detect whether a trunk belongs to an actual palm, some coconut trunks + -- and some coconuts may be incorrectly converted. +moretrees.coconut_flower_interval = 59 +moretrees.coconut_flower_chance = 67 +moretrees.coconut_grow_interval = 2 * moretrees.coconut_flower_interval * moretrees.coconut_flower_chance + -- Actual interval will randomly vary between 67% and 133% of this value + -- 2 * 59 * 67 ~ 2 hours. So flowers become coconuts in about 6 hours +moretrees.coconut_item_drop_ichance = 10 -- inverse probability of ripe coconuts dropping as items (instead of disappearing) + +-- Date palm settings + +-- Suggested configuration alternatives: +-- - Dates grow only when pollinated: +-- - Set dates_regrow_pollinated to true +-- - Set dates_regrow_unpollinated_percent to 0 +-- - Dates grow without pollination. Pollination disabled: +-- - Set dates_regrow_pollinated to false +-- - Set dates_regrow_unpollinated_percent to some larger positive value, e.g. 95 +-- - Dates grow, but more and faster if male flowers are nearby +-- - Set dates_regrow_pollinated to true +-- - Set dates_regrow_unpollinated_percent to some small positive value, e.g. 33 +-- - Optional but recommended: Reduce the pollination distance, e.g. to 30 + +-- Note that it should not be necessary to disable pollination for performance +-- reasons. A lot of effort has gone into ensuring that date growing will not cause lag. +-- +-- If lag is suspected, use the chat command '/dates_stats' to obtain the male dates +-- search time, as well as the counts of total number of searches requested and the +-- number of searches actually performed. + +moretrees.dates_regrow_pollinated = true -- Enable pollination. If enabled, male trees are required for dates to grow. + -- If disabled, dates_regrow_unpollinated_percent must be non-zero for dates to regrow. +moretrees.dates_regrow_unpollinated_percent = 0 -- Percentage of female dates becoming dates without being pollinated. + -- If 0, dates_regrow_pollinated must be enabled for dates to grow. +moretrees.dates_female_percent = 57 -- Ratio of female to male trees - tune this to improve # of generated trees that actually bear fruit + -- ~57% gives near optimal results for groups of 3 random trees, while it is only slightly suboptimal + -- for groups of 2 and 4 random trees (~2% less fruit than optimal). + -- Optimal values per group size: 2: 50%, 3: 57.78%, 4: 63%, 5: 66.9%, 6: 69.9%, [...], 12: 79.8% + -- So 57% is optimal for small groups of trees. As larger groups have more female palms anyway, a + -- less than optimal proportion of female to male trees is not a problem. +moretrees.dates_pollination_distance = 120 +moretrees.dates_blossom_search_time_treshold = 1000 -- If average male blossom search time (in microseconds) exceeds this, start limiting the search load. +moretrees.dates_blossom_search_iload = 10 -- Inverse fraction of CPU time that male blossom searching search may consume. + -- As searching a large area (radius: dates_pollination_distance/3 per attempt) can cause lag, + -- this limits the search frequency server-wide so that the impact on server lag is minimised + -- For personal servers, this can be set lower, or even to 1 or 0 (0 disables load limiting). + -- Obtain the current average search time using /dates_stats +moretrees.dates_flower_interval = 59 +moretrees.dates_flower_chance = 181 +moretrees.dates_grow_interval = 2 * moretrees.dates_flower_interval * moretrees.dates_flower_chance + -- As date palms have a high yield, don't grow dates too fast + -- The actual interval will vary randomly between 67% and 133% of this value. + -- 2 * 59 * 181 ~ 6 hours. So by default flowers become dates in about one (human) day. +moretrees.dates_item_drop_ichance = 10 -- inverse probability of ripe dates dropping as items (instead of disappearing) + +-- Sapling settings + +moretrees.sapling_interval = 100 +moretrees.sapling_chance = 5 + +-- If this variable is set to true, drop leaves out as entities during leaf +-- decay, rather than just disappearing them. + +moretrees.decay_leaves_as_items = false