]> git.lizzy.rs Git - elidragon_v2.git/commitdiff
Merge pull request #1 from HimbeerserverDE/master
authorElias Fleckenstein <54945686+EliasFleckenstein03@users.noreply.github.com>
Sat, 20 Feb 2021 10:25:59 +0000 (11:25 +0100)
committerGitHub <noreply@github.com>
Sat, 20 Feb 2021 10:25:59 +0000 (11:25 +0100)
Minor setup script fixes + tidy multiserver config

19 files changed:
README
mods/elidragon_luckyblock/init.lua [new file with mode: 0644]
mods/elidragon_luckyblock/mod.conf [new file with mode: 0644]
mods/elidragon_luckyblock/textures/elidragon_luckyblock.png [new file with mode: 0644]
mods/elidragon_schems/init.lua [new file with mode: 0644]
mods/elidragon_schems/mod.conf [new file with mode: 0644]
mods/elidragon_tp/init.lua [new file with mode: 0644]
mods/elidragon_tp/mod.conf [new file with mode: 0644]
mods/elidragon_tp/sounds/elidragon_tp_whoosh.ogg [new file with mode: 0755]
scripts/common.sh [new file with mode: 0644]
scripts/console.sh
scripts/internal.sh [deleted file]
scripts/restart.sh
scripts/setup.sh
scripts/start.sh
worlds/creative/world.mt
worlds/lobby/world.mt
worlds/skyblock/world.mt
worlds/survival/world.mt

diff --git a/README b/README
index 38648dd822170d2a57d40a5b2b585aba4724d9c6..c33aec8ca71902ad8d6dc6b2526b99ac121388d5 100644 (file)
--- a/README
+++ b/README
@@ -14,7 +14,7 @@ Elidragon v2 runs on top of the latest git version of MineClone2, and the lastes
 Quick guide for installation and running
 ----------------------------------------
 
-ElidragonV2 requires a GNU/Linux system to run. The setup and update scripts rely on apt and sudo. Go 1.15 or higher is required.
+Elidragon v2 requires a GNU/Linux system to run. The setup and update scripts rely on apt and sudo. Go 1.15 or higher is required.
 
 1. Create a new user using adduser and switch to it. The user should be able to use sudo.
 2. git clone this repository into that user's home directory and rename it to .minetest
diff --git a/mods/elidragon_luckyblock/init.lua b/mods/elidragon_luckyblock/init.lua
new file mode 100644 (file)
index 0000000..8ec18b8
--- /dev/null
@@ -0,0 +1,78 @@
+local grouplist = elidragon.grouplist
+
+local old_on_dig = minetest.registered_nodes["lucky_block:lucky_block"].on_dig
+
+minetest.override_item("lucky_block:lucky_block", {
+       tiles = {"elidragon_luckyblock.png"},
+       inventory_image = minetest.inventorycube("elidragon_luckyblock.png"),
+       light_source = nil,
+       on_dig = function(pos, node, digger)
+               if not minetest.is_protected(pos, digger:get_player_name()) then old_on_dig(pos, node, digger) end
+       end
+})
+
+minetest.override_item("lucky_block:void_mirror", {
+       tiles = {"default_glass.png^[brighten"},
+})
+
+minetest.register_alias_force("lucky_block:super_lucky_block", "lucky_block:lucky_block")
+
+local armor_parts = {"head", "torso", "legs", "feet"}
+local armor_list = {}
+for _, n in pairs(armor_parts) do
+       armor_list[n] = grouplist.register("armor_" .. n)
+end
+local head_list = grouplist.register("head")
+
+lucky_block:add_blocks({
+       {"cus", function (pos, player)
+               minetest.set_node(pos, {name = "mcl_armor_stand:armor_stand"})
+               local nodedef = minetest.registered_nodes["mcl_armor_stand:armor_stand"]
+               local node = minetest.get_node(pos)
+               local armor_pieces = {}
+               for _, n in ipairs(armor_parts) do
+                       local piece_list = armor_list[n]
+                       table.insert(armor_pieces, ItemStack(piece_list[math.random(#piece_list)]))
+               end
+               local function equip_armor(i)
+                       local piece = armor_pieces[i]
+                       if not piece then return end
+                       nodedef.on_rightclick(pos, node, player, ItemStack(piece))
+                       minetest.after(0.5, equip_armor, i + 1)
+               end
+               minetest.after(0.5, equip_armor, 1)
+       end},
+       {"dro", {"mcl_core:goldblock", "mcl_core:gold_ingot", "mcl_core:gold_nugget"}, 256},
+       {"dro", {"mcl_core:dirt", "mcl_core:sand", "mcl_core:gravel"}, 64},
+       {"spw", "mobs_mc:zombie", 5},
+       {"spw", "mobs_mc:husk", 5},
+       {"spw", "mobs_mc:spider", 4},
+       {"spw", "mobs_mc:cave_spider", 4},
+       {"spw", "mobs_mc:skeleton", 2},
+       {"spw", "mobs_mc:stray", 2},
+       {"spw", "mobs_mc:creeper", 1},
+       {"spw", "mobs_mc:creeper_charged", 1},
+       {"spw", "mobs_mc:enderman", 1},
+       {"spw", "mobs_mc:mooshroom", 1},
+       {"spw", "mobs_mc:slime_big", 1},
+       {"spw", "mobs_mc:bat", 10},
+       {"spw", "mobs_mc:chicken", 3},
+       {"spw", "mobs_mc:cow", 1},
+       {"spw", "mobs_mc:horse", 1},
+       {"spw", "mobs_mc:llama", 1},
+       {"spw", "mobs_mc:ocelot", 1},
+       {"spw", "mobs_mc:parrot", 1},
+       {"spw", "mobs_mc:pig", 1},
+       {"spw", "mobs_mc:rabbit", 3},
+       {"spw", "mobs_mc:sheep", 1},
+       {"spw", "mobs_mc:wolf", 1},
+       {"nod", "mcl_cake:cake"},
+       {"nod", "mcl_farming:pumpkin"},
+       {"dro", ("music_record"), 1},
+       {"dro", grouplist.register("horse_armor"), 1},
+       {"nod", grouplist.register("glazed_terracotta")},
+       {"nod", grouplist.register("hardened_clay")},
+       {"nod", grouplist.register("concrete")},
+})
+
+elidragon.lucky_block = {}
diff --git a/mods/elidragon_luckyblock/mod.conf b/mods/elidragon_luckyblock/mod.conf
new file mode 100644 (file)
index 0000000..6083e0a
--- /dev/null
@@ -0,0 +1,4 @@
+name = elidragon_luckyblock
+author = Fleckenstein
+description = Patch luckyblock to work with MineClone2 properly
+depends = elidragon, elidragon_grouplist, lucky_block
diff --git a/mods/elidragon_luckyblock/textures/elidragon_luckyblock.png b/mods/elidragon_luckyblock/textures/elidragon_luckyblock.png
new file mode 100644 (file)
index 0000000..e2e070a
Binary files /dev/null and b/mods/elidragon_luckyblock/textures/elidragon_luckyblock.png differ
diff --git a/mods/elidragon_schems/init.lua b/mods/elidragon_schems/init.lua
new file mode 100644 (file)
index 0000000..58b44e7
--- /dev/null
@@ -0,0 +1,45 @@
+local schems = {}
+schems.loaded = {}
+
+function schems.get(name)
+       return schems.loaded[name].data
+end
+
+function schems.get_raw(name)
+       return schems.loaded[name].raw
+end
+
+function schems.load(name)
+       local schem = {}
+       local file = io.open(minetest.get_modpath(minetest.get_current_modname()) .. "/schems/" .. name .. ".we", "r")
+       schem.raw = file:read()
+       file:seek("set")
+       local _, _, contents = file:read("*number", 1, "*all")
+       file:close()
+       schem.data = minetest.deserialize(contents)
+       schems.loaded[name] = schem
+end
+
+function schems.check(pos, name)
+       local schem = schems.get(name)
+       for _, n in ipairs(schem) do
+               if minetest.get_node(vector.add(pos, n)).name ~= n.name then
+                       return false
+               end
+       end
+       return true
+end
+
+function schems.remove(pos, name)
+       local schem = schems.get(name)
+       for _, n in ipairs(schem) do
+               minetest.remove_node(vector.add(pos, n))
+       end
+end
+
+function schems.add_schem(pos, schemname)
+       local schem_raw = schems.get_raw(schemname)
+       worldedit.deserialize(pos, schem_raw)
+end
+
+elidragon.schems = schems
diff --git a/mods/elidragon_schems/mod.conf b/mods/elidragon_schems/mod.conf
new file mode 100644 (file)
index 0000000..5ced035
--- /dev/null
@@ -0,0 +1,4 @@
+name = elidragon_schems
+author = Fleckenstein
+description = A small schem API for Elidragon v2, runs on top of worldedit
+depends = elidragon, worldedit
diff --git a/mods/elidragon_tp/init.lua b/mods/elidragon_tp/init.lua
new file mode 100644 (file)
index 0000000..1940131
--- /dev/null
@@ -0,0 +1,17 @@
+elidragon.request.register({
+       name = "tp",
+       main_cmd = "tpa",
+       description = "teleport",
+       progressive = "teleporting",
+       preposition = "to",
+       func = function(target, name)
+               local player = minetest.get_player_by_name(name)
+               local pos = player:get_pos()
+               local target_pos = minetest.get_player_by_name(target):get_pos()
+               minetest.sound_play("elidragon_tp_whoosh", {pos = pos, gain = 0.5, max_hear_distance = 10})
+               minetest.sound_play("elidragon_tp_whoosh", {pos = target_pos, gain = 0.5, max_hear_distance = 10})
+               player:set_pos(elidragon.util.find_free_position_near(target_pos))
+       end,
+})
+
+elidragon.tp = {}
diff --git a/mods/elidragon_tp/mod.conf b/mods/elidragon_tp/mod.conf
new file mode 100644 (file)
index 0000000..79ab2ce
--- /dev/null
@@ -0,0 +1,4 @@
+name = elidragon_tp
+author = Fleckenstein
+description = A teleport request system for Elidragon v2
+depends = elidragon, elidragon_request, elidragon_util
diff --git a/mods/elidragon_tp/sounds/elidragon_tp_whoosh.ogg b/mods/elidragon_tp/sounds/elidragon_tp_whoosh.ogg
new file mode 100755 (executable)
index 0000000..99ea7cd
Binary files /dev/null and b/mods/elidragon_tp/sounds/elidragon_tp_whoosh.ogg differ
diff --git a/scripts/common.sh b/scripts/common.sh
new file mode 100644 (file)
index 0000000..0b4887a
--- /dev/null
@@ -0,0 +1,92 @@
+# common functions used by Elidragon v2 scripts
+
+function world_lock {
+       echo "/tmp/ElidragonV2_$1_lock"
+}
+
+function world_screenname {
+       echo "Elidragon v2 - $1"
+}
+
+function kill_world {
+       kill `cat \`world_lock $1\``
+}
+
+function is_running {
+       return $(test -f `world_lock $1`)
+}
+
+function loop_worlds {
+       WORLDS=`ls worlds`
+       for WORLD in $WORLDS; do
+               $1 $WORLD
+       done
+}
+
+function assert_running {
+       if ! is_running $1; then
+               echo "\e[31mWorld $1 is not running\e[0m"
+               if [ -z "$2" ]; then
+                       exit 1
+               else
+                       return 1
+               fi
+       fi
+}
+
+function assert_not_running {
+       if is_running $1; then
+               echo -e "\e[31mWorld $1 is already running\e[0m"
+               if [ -z "$2" ]; then
+                       exit 1
+               else
+                       return 1
+               fi
+       fi
+}
+
+function start_world {
+       echo -n "Starting $1... "
+       if assert_not_running $1 "true"; then
+               LOCK=`world_lock $1`
+
+               screen -dmS `world_screenname $1` bash -c "
+                       while is_running $1; do
+                               bash -c \"
+                                       echo \\$\\$ > $LOCK
+                                       exec minetest --server --terminal --world worlds/$1 --config worlds/$1/minetest.conf --logfile worlds/$1/debug.txt 
+                               \"
+                       done
+                       rm $LOCK
+               "
+
+               echo "\e[32mDone\e[0m"
+       fi
+}
+
+function stop_world {
+       echo -n "Stopping $1..."
+       if assert_running $1 "true"; then
+               kill_world $1
+               rm `world_lock $1`
+
+               echo "\e[32mDone\e[0m"
+       fi
+}
+
+function restart_world {
+       echo -n "Restarting $1..."
+       if assert_running $1 "true"; then
+               kill_world $1
+
+               echo "\e[32mDone\e[0m"
+       fi
+}
+
+function run_one_or_all {
+       if [ -z "$2" ]; then
+               loop_worlds $1
+       else
+               $1 $2
+       fi
+}
index 6751c0cda443a29461dbf3a20defcda41277553f..77d876db16bd233c9192fb0ff500dcfbb1193307 100755 (executable)
@@ -3,7 +3,7 @@
 # Attach to the console of a world
 # Arguments: <worldname>
 
-source scripts/internal.sh
+source scripts/common.sh
 
 assert_running $1
 screen -r `world_screenname $1`
diff --git a/scripts/internal.sh b/scripts/internal.sh
deleted file mode 100644 (file)
index 6792af1..0000000
+++ /dev/null
@@ -1,92 +0,0 @@
-# internal functions used by Elidragon v2 scripts
-
-function world_lock {
-       echo "/tmp/ElidragonV2_$1_lock"
-}
-
-function world_screenname {
-       echo "Elidragon v2 - $1"
-}
-
-function kill_world {
-       kill `cat \`world_lock $1\``
-}
-
-function is_running {
-       return $(test -f `world_lock $1`)
-}
-
-function loop_worlds {
-       WORLDS=`ls worlds`
-       for WORLD in $WORLDS; do
-               $1 $WORLD
-       done
-}
-
-function assert_running {
-       if ! is_running $1; then
-               echo "\e[31mWorld $1 is not running\e[0m"
-               if [ -z "$2" ]; then
-                       exit 1
-               else
-                       return 1
-               fi
-       fi
-}
-
-function assert_not_running {
-       if is_running $1; then
-               echo -e "\e[31mWorld $1 is already running\e[0m"
-               if [ -z "$2" ]; then
-                       exit 1
-               else
-                       return 1
-               fi
-       fi
-}
-
-function start_world {
-       echo -n "Starting $1... "
-       if assert_not_running $1 "true"; then
-               LOCK=`world_lock $1`
-
-               screen -dmS `world_screenname $1` bash -c "
-                       while is_running $1; do
-                               bash -c \"
-                                       echo \\$\\$ > $LOCK
-                                       exec minetest --server --terminal --world worlds/$1 --config worlds/$1/minetest.conf --logfile worlds/$1/debug.txt 
-                               \"
-                       done
-                       rm $LOCK
-               "
-
-               echo "\e[32mDone\e[0m"
-       fi
-}
-
-function stop_world {
-       echo -n "Stopping $1..."
-       if assert_running $1 "true"; then
-               kill_world $1
-               rm `world_lock $1`
-
-               echo "\e[32mDone\e[0m"
-       fi
-}
-
-function restart_world {
-       echo -n "Restarting $1..."
-       if assert_running $1 "true"; then
-               kill_world $1
-
-               echo "\e[32mDone\e[0m"
-       fi
-}
-
-function run_one_or_all {
-       if [ -z "$2" ]; then
-               loop_worlds $1
-       else
-               $1 $2
-       fi
-}
index a39e4548c3894f077803fb052a66f0f5e46e69e3..f1e0f3a04998fc48ab218c57721a7e0d1e62819c 100755 (executable)
@@ -3,6 +3,6 @@
 # Restart one or all worlds
 # Arguments: [<worldname>]
 
-source scripts/internal.sh
+source source scripts/common.sh
 
 run_one_or_all restart_world $1
index 8c7aa2f51f17c72474012f18908780f9118eb231..37460abb5cad4d2c74c77fa1be95316121418e52 100755 (executable)
@@ -10,7 +10,7 @@ sudo add-apt-repository ppa:minetestdevs/stable
 sudo apt-get update -y
 
 # Install minetest and screen
-apt install minetest screen -y
+sudo apt install minetest screen -y
 
 # Install multiserver and its dependencies
 go get github.com/HimbeerserverDE/multiserver
index 96cc2fe46a028fad2bcb1928604cbe7aaa7c897c..254b3a775962d8eb849837f221128f3b3b0aa986 100755 (executable)
@@ -3,6 +3,6 @@
 # Start one or all worlds
 # Arguments: [<worldname>]
 
-source scripts/internal.sh
+source source scripts/common.sh
 
 run_one_or_all start_world $1
index e914a60b45c61c59a74cca119edb71159561d215..efe07fc53a4c6d2bda7d3595a51ad8267a72c492 100644 (file)
@@ -4,3 +4,20 @@ creative_mode = true
 gameid = MineClone2
 auth_backend = sqlite3
 player_backend = sqlite3
+load_mod_default = false
+load_mod_elidragon = true
+load_mod_elidragon_grouplist = false
+load_mod_elidragon_luckyblock = false
+load_mod_elidragon_random = false
+load_mod_elidragon_request = true
+load_mod_elidragon_schems = false
+load_mod_elidragon_tp = true
+load_mod_elidragon_util = true
+load_mod_lucky_block = false
+load_mod_mcl_wither_spawning = true
+load_mod_worldedit = true
+load_mod_worldedit_brush = true
+load_mod_worldedit_commands = true
+load_mod_worldedit_gui = false
+load_mod_worldedit_shortcommands = true
+load_mod_multiserver = true
index 5ec9b7224c6b2a4c6e530932d5db1df650102806..42a4beafeb62f0ab9cf998cb03a773277979f89e 100644 (file)
@@ -4,3 +4,20 @@ creative_mode = false
 gameid = MineClone2
 auth_backend = sqlite3
 player_backend = sqlite3
+load_mod_default = false
+load_mod_elidragon = true
+load_mod_elidragon_grouplist = false
+load_mod_elidragon_luckyblock = false
+load_mod_elidragon_random = false
+load_mod_elidragon_request = false
+load_mod_elidragon_schems = false
+load_mod_elidragon_tp = false
+load_mod_elidragon_util = false
+load_mod_lucky_block = false
+load_mod_mcl_wither_spawning = true
+load_mod_worldedit = true
+load_mod_worldedit_brush = true
+load_mod_worldedit_commands = true
+load_mod_worldedit_gui = false
+load_mod_worldedit_shortcommands = true
+load_mod_multiserver = true
index 5ec9b7224c6b2a4c6e530932d5db1df650102806..b57c962decbab62e0bd08d6ff250c150c8ccd73a 100644 (file)
@@ -4,3 +4,20 @@ creative_mode = false
 gameid = MineClone2
 auth_backend = sqlite3
 player_backend = sqlite3
+load_mod_default = true
+load_mod_elidragon = true
+load_mod_elidragon_grouplist = true
+load_mod_elidragon_luckyblock = true
+load_mod_elidragon_random = false
+load_mod_elidragon_request = true
+load_mod_elidragon_schems = false
+load_mod_elidragon_tp = true
+load_mod_elidragon_util = true
+load_mod_lucky_block = true
+load_mod_mcl_wither_spawning = true
+load_mod_worldedit = true
+load_mod_worldedit_brush = true
+load_mod_worldedit_commands = true
+load_mod_worldedit_gui = false
+load_mod_worldedit_shortcommands = true
+load_mod_multiserver = true
index 5ec9b7224c6b2a4c6e530932d5db1df650102806..b5631187b37b7631c0e2f97266b3d6531584e20e 100644 (file)
@@ -4,3 +4,20 @@ creative_mode = false
 gameid = MineClone2
 auth_backend = sqlite3
 player_backend = sqlite3
+load_mod_default = false
+load_mod_elidragon = true
+load_mod_elidragon_grouplist = false
+load_mod_elidragon_luckyblock = false
+load_mod_elidragon_random = false
+load_mod_elidragon_request = true
+load_mod_elidragon_schems = false
+load_mod_elidragon_tp = true
+load_mod_elidragon_util = true
+load_mod_lucky_block = false
+load_mod_mcl_wither_spawning = true
+load_mod_worldedit = true
+load_mod_worldedit_brush = true
+load_mod_worldedit_commands = true
+load_mod_worldedit_gui = false
+load_mod_worldedit_shortcommands = true
+load_mod_multiserver = true