diff --git a/buildstable.bash b/buildstable.bash new file mode 100644 index 0000000..5606319 --- /dev/null +++ b/buildstable.bash @@ -0,0 +1,17 @@ +#!/bin/bash +# wget https://github.com/minetest/minetest/archive/master.tar.gz +wget https://github.com/minetest/minetest/archive/refs/tags/5.6.1.tar.gz +tar xf 5.6.1.tar.gz +cd minetest-5.6.1 +cd games/ +wget https://github.com/minetest/minetest_game/archive/master.tar.gz +tar xf master.tar.gz +mv minetest_game-master minetest_game +cd .. +cd lib/ +wget https://github.com/minetest/irrlicht/archive/master.tar.gz +tar xf master.tar.gz +mv irrlicht-master irrlichtmt +cd .. +cmake . -DRUN_IN_PLACE=TRUE -DBUILD_SERVER=TRUE -DBUILD_CLIENT=FALSE +make -j$(nproc) diff --git a/server.bash b/server.bash new file mode 100644 index 0000000..31e5afb --- /dev/null +++ b/server.bash @@ -0,0 +1,29 @@ +#!/bin/bash + +# script to start and stop minetest server + + +if [[ $1 == "start" ]] +then + echo "STARTING" + /home/kake26/minetest-5.6.1/bin/minetestserver --quiet --logfile /home/kake26/minetest/minetest.log --config /home/kake26/minetest/conf/minetest.conf --world /home/kake26/minetest/minetest-server/.minetest/worlds/world2/ & + pid=$! + echo $pid > /home/kake26/minetest/mintest.pid +fi + +if pidof minetestserver +then + # Horribly cheap but works + echo "OK" +else + # Seriously why not + /home/kake26/minetest-5.6.1/bin/minetestserver --quiet --logfile /home/kake26/minetest/minetest.log --config /home/kake26/minetest/conf/minetest.conf --world /home/kake26/minetest/minetest-server/.minetest/worlds/world2/ & +fi + +if [[ $1 == "stop" ]] +then + echo "STOPING" + $(pidof minetestserver | xargs kill -s INT) +fi +exit 0 + diff --git a/update.pl b/update.pl new file mode 100644 index 0000000..7128678 --- /dev/null +++ b/update.pl @@ -0,0 +1,99 @@ +#!/usr/bin/perl + +# This was a bash script until I determined the level of invoking the ancient gods of the console required to make +# that work would be just too much + +use Storable; +#use Data::Dumper; + +# I know declaring a empty hash is 100% unnessecary but I am anyway +%conf = {}; # this will be stored used to keep track of stuff + +$updfile = "index.json"; # I could use JSON here, but it might be easier to abuse jq +$updlsturl = "https://content.minetest.net/api/packages/"; # give use a json file of everything available +$modpath = "/home/kake26/.minetest/mods/"; # where your server stores its mods + +sub chk_update () { + +print "Checking for updates...\n"; + +foreach my $key (keys %{ $conf->{"mods"}}) { # the fing arrow -> sigh could have saved so much time + + print "Checking mod $key \n"; + + # So we can now check against index2.json + + $author2 = `jq -c '.[] | select(.name =="$key") | .author' index2.json`; + $author2 =~ s/\"//g; + + $release2 = `jq -c '.[] | select(.name =="$key") | .release' index2.json`; + $release2 =~ s/\"//g; + + chomp($author2); + chomp($release2); + + if ($conf->{"mods"}{$key}{"release"} != $release2) { + print "Mod $key current release: " . $release2 . " installed: " . $conf->{"mods"}{$key}{"release"} ."!\n"; + # we should trigger the updater here + + &do_update($key,$release2,$author2); + }else{ + print "Mod $key up to date\n"; + } + +} +} + +sub get_ready (){ +$mods = `find $modpath -type d -maxdepth 1 -print`; # -print is there for a reason, find saved a huge amount of time +@mods = split("\n",$mods); +foreach(@mods){ + @tmods = split("\/",$_); + $tmname = pop(@tmods); + if ($tmname eq "mods"){ + next; + } + # At this point we should have a mod's name + $author = `jq -c '.[] | select(.name =="$tmname") | .author' index.json`; #jq is a time saver + $author =~ s/\"//g; + chomp($author); + $release = `jq -c '.[] | select(.name =="$tmname") | .release' index.json`; + $release =~ s/\"//g; + chomp($release); + $conf{"mods"}{$tmname}{"author"} = $author; + $conf{"mods"}{$tmname}{"release"} = $release; +} +store \%conf, 'mods'; +return; +} + +sub get_file () { +# get the +system("wget -O index2.json $updlsturl"); +return; +} + +sub do_update ($mod,$ver,$author) { +# https://content.minetest.net/packages/TenPlus1/mob_horse/download/ +# https://content.minetest.net/packages/jp/i3/releases/14157/download/ + $mod = $_[0]; + $ver = $_[1]; + $author = $_[2]; + + system("wget -O $mod.zip https://content.minetest.net/packages/$author/$mod/releases/$ver/download/"); + system("unzip -o $mod.zip"); + # print "Update info $mod $ver $author\n"; +} + +# Maybe get ready and check update should be called every time + +if (-e "mods"){ + # load data + print "Loading data\n"; + $conf = retrieve('mods'); + chk_update(); +}else{ + get_ready(); + # chk_update expects a hash retrived from storables so program needs to be run again after this + #chk_update(); +}