forked from nalc/nalc-server
		
	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:
		
							
								
								
									
										0
									
								
								custom/mods/nalc/modpack.txt
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										0
									
								
								custom/mods/nalc/modpack.txt
									
									
									
									
									
										Normal file
									
								
							
							
								
								
									
										2
									
								
								custom/mods/nalc/nalc_hardtrees/depends.txt
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										2
									
								
								custom/mods/nalc/nalc_hardtrees/depends.txt
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,2 @@
 | 
			
		||||
nalc_lib
 | 
			
		||||
default
 | 
			
		||||
							
								
								
									
										46
									
								
								custom/mods/nalc/nalc_hardtrees/init.lua
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										46
									
								
								custom/mods/nalc/nalc_hardtrees/init.lua
									
									
									
									
									
										Normal 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", ""},
 | 
			
		||||
	}
 | 
			
		||||
})
 | 
			
		||||
							
								
								
									
										0
									
								
								custom/mods/nalc/nalc_lib/depends.txt
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										0
									
								
								custom/mods/nalc/nalc_lib/depends.txt
									
									
									
									
									
										Normal file
									
								
							
							
								
								
									
										28
									
								
								custom/mods/nalc/nalc_lib/init.lua
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										28
									
								
								custom/mods/nalc/nalc_lib/init.lua
									
									
									
									
									
										Normal 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
 | 
			
		||||
							
								
								
									
										212
									
								
								install.sh
									
									
									
									
									
								
							
							
						
						
									
										212
									
								
								install.sh
									
									
									
									
									
								
							@@ -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
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										26
									
								
								upgrade.sh
									
									
									
									
									
								
							
							
						
						
									
										26
									
								
								upgrade.sh
									
									
									
									
									
								
							@@ -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;;
 | 
			
		||||
		  --)
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user