Add custom mods

- nalc modpack containing:
- nalc_lib: functions accessible by other mods
- nalc_hardtrees: Trees and other nodes becomes not hand breakable
This commit is contained in:
sys4-fr 2018-03-21 01:28:29 +01:00
parent a4aa16083e
commit 193d900a7b
7 changed files with 270 additions and 54 deletions

View File

View File

@ -0,0 +1,2 @@
nalc_lib
default

View File

@ -0,0 +1,46 @@
--[[ Auteur : sys4
Ce mod permet de :
- Ne plus casser les arbres à la main
- Supprimer haches et pioches en bois.
- Fabriquer les outils en pierre avec du silex trouvé dans le gravier
Remarque : Les sticks sont obtenables grâce au mod youngtrees de plantlife_modpack
]]
-- Suppression des haches et pioches en bois
minetest.unregister_item("default:axe_wood")
minetest.unregister_item("default:pick_wood")
-- Suppression du groupe oddly_breakable_by_hand pour les nodes en bois du mod default
local wood_nodes = {}
wood_nodes["default"] = {
"tree", "pine_tree", "jungletree", "acacia_tree", "aspen_tree",
"bush_stem", "acacia_bush_stem",
"wood", "pine_wood", "junglewood", "acacia_wood", "aspen_wood",
}
for mod, nodes in pairs(wood_nodes) do
for _,name in ipairs(nodes) do
nalc.not_hand_breakable(mod..":"..name)
end
end
-- Recette de craft pour pioche et hache avec du silex
minetest.register_craft({
output = "default:axe_stone",
recipe = {
{"default:flint", "default:flint", ""},
{"default:flint", "default:stick", ""},
{"", "default:stick", ""},
}
})
minetest.register_craft({
output = "default:pick_stone",
recipe = {
{"default:flint", "default:flint", "default:flint"},
{"", "default:stick", ""},
{"", "default:stick", ""},
}
})

View File

View File

@ -0,0 +1,28 @@
nalc = {}
-- Remove node from a group
local function remove_group(name, group)
local node = minetest.registered_nodes[name]
if node then
local groups = node.groups
if groups then
for g in pairs(groups) do
if g == group then
groups[g] = 0
minetest.log("action", "[nalc_lib] "..name.." removed from group "..group..".")
end
end
minetest.override_item(name, {groups = groups})
else
minetest.log("warning", "[nalc_lib] "..name.." has no groups, could not remove group "..group..".")
end
else
minetest.log("warning", "[nalc_lib] "..name.." not registered, could not remove group "..group..".")
end
end
-- Remove node from group "oddly_breakable_by_hand"
function nalc.not_hand_breakable(name)
remove_group(name, "oddly_breakable_by_hand")
end

View File

@ -1,5 +1,10 @@
#!/bin/bash
# Fonctions
strip() {
echo $1 | cut -d \' -f 2
}
verif() {
if [[ $? -gt 0 ]]; then
echo "Erreur ! Arrêt du script."
@ -8,18 +13,172 @@ verif() {
}
error() {
echo "ERREUR : paramètres invalides !" >&2
echo "utilisez l'option -h pour en savoir plus" >&2
echo "ERREUR : Vérifiez vos paramètres !" >&2
echo "Utilisez l'option -h pour en savoir plus" >&2
exit 1
}
usage() {
echo "Usage : ./install.sh [options]"
echo "--help ou -h : Afficher l'aide"
echo "--ssh : Authentification par ssh"
echo "--https : Authentification publique anonyme"
echo "Usage: ./install.sh [options] [--] <arg>"
echo "Options :"
echo "--help | -h : Affiche l'aide."
echo "--verbose | -v : Be verbose !"
echo "--ssh <user@host>: Identifiants ssh."
echo "--url <URL>: URL distante personnalisée."
echo -e "\tSi l'option --ssh est passée en option, il s'agira du chemin distant."
echo "Commandes :"
echo -e "\tinit : Installation par défaut. Suivez les instructions..."
echo -e "\t\tSi une installation précédente est détectée alors le script s'arrête."
echo -e "\tupgrade : Met à jour le serveur tout en sauvegardant la version précédente au cas où."
echo -e "\tclean_install : /!\ Permet de faire une installation qui supprime toute installation précédente (Perte de la map et des paramètres définitif...)."
echo -e "\tuninstall : /!\ Permet de supprimer l'installation courante (Perte de données...)."
exit 0
}
ssh() {
ssh=$(strip $1)
echo "Installation avec identifiants ssh : $ssh"
}
url() {
url=$(strip $1)
}
makeopt() {
makeopt=$(strip $1)
}
full() {
if [[ -n $URL ]]; then
echo "Full install... with "$URL
else
echo "ERREUR: Vous devez choisir l'option --ssh ou --https avec cette commande !"
usage
fi
}
clean() {
echo "clean install..."
}
install_minetest() {
if [[ -z $makeopt ]]; then
local makeopt=1
fi
if [[ -d minetest ]]; then
echo "Installation précédente de Minetest détecté."
read -p "Mettre à jour ? (y,n,clean,cancel) : " continue
if [[ $continue == "clean" ]]; then
echo "Attention ! Cela va supprimer définitivement toutes les données."
read -p "Êtes-vous certains de vouloir continuer ? (y or n) : " continue
if [[ $continue == "y" ]]; then
echo "rm -rf minetest"
echo "Répertoire minetest supprimé."
else
echo "Installation annulée. Fin"
exit 0
fi
elif [[ $continue == "y" ]]; then
echo "cd minetest"
echo "git pull"
echo "cd .."
elif [[ $continue == "cancel" ]]; then
echo "Installation annulée. Fin"
exit 0
fi
fi
if [[ ! -d minetest ]]; then
echo "git clone $URL/minetest.git"
fi
echo "Minetest va être recompilé..."
sleep 3
echo "cd minetest"
echo "cmake ."
echo "make -j$makeopt"
echo "Installation de Minetest terminé."
echo "cd .."
}
install_minetest_game() {
if [[ -d minetest/games/minetest_game ]]; then
echo "Installation précédente du jeux Minetest détecté."
read -p "Mettre à jour ? (y,n,clean,cancel)" continue
fi
}
init() {
if [[ -n $ssh && -n $url ]]; then
URL=$ssh\:$url
elif [[ -n $url ]]; then
URL=$url
else
URL="https://github.com/sys4-fr"
fi
read -p "L'installation va démarrer. Continuer ? (y or n) : " continue
if [[ $continue == "y" ]]; then
install_minetest
install_minetest_game
install_mods
post_configuration
echo "L'installation est terminé. Bravo !"
else
echo "Installation annulée. Fin."
fi
}
action() {
local arg=$(strip $1)
if [[ $arg == "init" ]]; then
init
elif [[ $arg == "clean" ]]; then
clean
else
error
fi
exit 0
}
# Pas de paramètre
#[[ $# -lt 1 ]] && error
# ou
[[ $# -lt 1 ]] && usage
# -o : Options courtes
# -l : options longues
OPT=$(getopt -o h,v,j: -l verbose,help,url:,ssh:,makeopt: -- "$@")
# éclatement de $options en $1, $2...
set -- $OPT
while true; do
case "$1" in
-v|--verbose)
# TODO
shift;;
-h|--help)
usage;;
--ssh)
ssh $2
shift 2;;
--url)
url $2
shift 2;;
-j|--makeopt)
makeopt $2
shift 2;;
--)
shift;;
*)
action $1
shift;;
esac
done
install() {
if [[ $1 == "ssh" ]]; then
read -p "Please enter <username>@<host> : " ident
@ -47,6 +206,7 @@ install() {
# On créé les liens symboliques nécessaires
cd ..
ln -s $(pwd)/minetest_game minetest/games/minetest_game
ln -s $(pwd)/custom/mods/nalc nalc-server-mods/nalc
while read -r mod
do
ln -s $(pwd)/nalc-server-mods/$mod minetest/mods/$mod
@ -69,43 +229,3 @@ install() {
echo "Mise à jour des mods..."
exec ./upgrade.sh --mods-link
}
sshinstall() {
if [[ -z `pidof ssh-agent` ]]; then
echo "Exécutez les commandes suivantes :"
echo "$ eval \`ssh-agent -s\`"
echo "$ ssh-add <chemin vers votre clé privé>"
echo "Relancez de nouveau le script : ./install.sh --ssh"
exit 0
fi
install "ssh"
}
# Pas de paramètre
[[ $# -lt 1 ]] && error
# -o : Options courtes
# -l : options longues
options=$(getopt -o h -l help,https,ssh -- "$@")
# éclatement de $options en $1, $2...
set -- $options
while true; do
case "$1" in
--ssh) sshinstall
#shift 2;;
exit 0;;
--https) install
#shift;;
exit 0;;
-h|--help) usage
exit 0;;
--)
shift
break;;
*) error
shift;;
esac
done

View File

@ -23,6 +23,7 @@ usage() {
echo "--mods-link : Met à jour les liens symboliques des mods et le fichier world.mt"
echo "--mods <mod|all> : Met à jour le(s) mod(s) depuis le dépôt distant"
echo "--minetest : Met à jour le moteur du jeux depuis le dépot distant"
echo "--game : Met à jour le jeux minetest depuis le dépot distant"
}
modslink() {
@ -78,14 +79,14 @@ modsupgrade() {
# On met à jour le dépot local des mods
cd nalc-server-mods
git pull
git submodule update --init --recursive
git submodule update --remote --recursive
verif
cd ..
else
# Mise à jour du mod spécifié en ligne de commande
cd nalc-server-mods
git pull
git submodule update --init --recursive $1
git submodule update --remote --recursive $1
verif
cd ..
fi
@ -101,8 +102,23 @@ minetestupgrade() {
cmake . -DRUN_IN_PLACE=true -DENABLE_GETTEXT=true
make -j33
cd ..
echo "Upgrade du moteur Minetest terminé."
}
gameupgrade() {
cd minetest/games/minetest_game
git pull
cd ../../..
echo "Upgrade du jeux Minetest terminé."
}
upgradeall() {
gameupgrade
modsupgrade "all"
minetestupgrade
}
sshauth() {
if [[ -z `pidof ssh-agent` ]]; then
echo "Exécutez les commandes suivantes :"
@ -126,7 +142,7 @@ httpauth() {
# -o : Options courtes
# -l : Options longues
options=$(getopt -o h -l help,https,ssh,mods-link,minetest,mods: -- "$@")
options=$(getopt -o h -l help,https,ssh,mods-link,minetest,game,mods: -- "$@")
# Éclatement de $options en $1, $2...
set -- $options
@ -143,6 +159,10 @@ while true; do
shift 2;;
--minetest) minetestupgrade
shift;;
--game) gameupgrade
shift;;
--all) upgradeall
shift;;
-h|--help) usage
exit 0;;
--)