@ -78,6 +78,8 @@ gamespec['add_mods']: List[Dict[str, any]] = [
# Worldgen
{ ' name ' : " bakedclay " , ' repo ' : [ " https://notabug.org/tenplus1/bakedclay.git " ,
" https://codeberg.org/tenplus1/bakedclay.git " ] } ,
{ ' name ' : " bedrock2 " , ' repo ' : " https://codeberg.org/Wuzzy/minetest_bedrock2.git " ,
' settings ' : OrderedDict ( bedrock2_y = - 128 ) } ,
{ ' name ' : " biome_lib " , ' repo ' : " https://github.com/mt-mods/biome_lib.git " } ,
# {'name': "birthstones", 'repo': "https://github.com/Poikilos/birthstones.git"}, # commented to reduce inventory overload
{ ' name ' : " bushes_soil " , ' repo ' : " https://github.com/Poikilos/bushes_soil.git " } ,
@ -95,6 +97,7 @@ gamespec['add_mods']: List[Dict[str, any]] = [
# {'name': "moreblocks", 'repo': "https://github.com/minetest-mods/moreblocks.git",
# 'why-not': "permanently changes default stairs. Has many registrations. Has its own ropes (vine-like ones).",
# 'why': "Can use place_rotated. Has stairsplus."},
# TODO: Make a mod to auto-convert corners on place&harvest (for stairsio items merged into mtg)
{ ' name ' : " rope_bridges " , ' repo ' : " https://github.com/sfence/rope_bridges.git " } ,
# TODO: ^ Make rope_bridges use x_farming if moreblocks not present (can also use ropes or vines mods)
# {'name': "moreores", 'repo': "https://github.com/minetest-mods/moreores.git",
@ -153,6 +156,13 @@ gamespec['add_mods']: List[Dict[str, any]] = [
# TODO: May be contribute graphics for the "Planned Features" list. Maybe 3D.
# ── Gameplay / Items ───────────────────────────────────────
# TODO: from https://content.luanti.org/packages/PetiAPocok/minetest_extended/ add:
# TODO: snowball (or use minetest-mods/throwing or x_bows and fork https://codeberg.org/TPH/exile_snow or simpler https://content.luanti.org/packages/ComputeGraphics/snowball/ so snow drops it)
# TODO: ice and snow melting by furnace (also torch/fire if not in mtg)
# TODO: craft for green dye from cactus
# TODO: Chests drop the items what are inside of it when broke
# TODO: furnaces drop the items what are inside of it when broke
# TODO: Improved mese monster texture
{ ' name ' : " 3d_armor " , ' repo ' : [ " https://github.com/stujones11/minetest-3d_armor.git " ,
" https://github.com/minetest-mods/3d_armor.git " ] } ,
{ ' name ' : " anvil " , ' repo ' : " https://github.com/minetest-mods/anvil.git " } ,
@ -178,8 +188,9 @@ gamespec['add_mods']: List[Dict[str, any]] = [
{ ' name ' : " flowerpot " , ' repo ' : " https://github.com/minetest-mods/flowerpot.git " ,
' what ' : " Works with most plants, and lightweight as in no entity " } ,
# ^ Make sure it works with x_farming--Make compat mod if necessary. See api.md.
{ ' name ' : " homedecor_modpack " , ' repo ' : " https://github.com/mt-mods/homedecor_modpack.git " } ,
{ ' name ' : " homedecor_ua " , ' repo ' : " https://github.com/Poikilos/homedecor_ua.git " } ,
{ ' name ' : " frame " , ' repo ' : " https://github.com/minetest-mods/frame.git " } ,
# {'name': "homedecor_modpack", 'repo': "https://github.com/mt-mods/homedecor_modpack.git"},
# {'name': "homedecor_ua", 'repo': "https://github.com/Poikilos/homedecor_ua.git"},
{ ' name ' : " item_drop " , ' repo ' : " https://github.com/minetest-mods/item_drop.git " ,
' settings ' : { ' item_drop.pickup_radius ' : " 1.425 " } } ,
{ ' name ' : " mesecons_carts " , ' repo ' : " https://cheapiesystems.com/git/mesecons_carts.git " } ,
@ -192,20 +203,22 @@ gamespec['add_mods']: List[Dict[str, any]] = [
# TODO: ^ Simplify Painted 3D Armor and just make banners combine with shields
{ ' name ' : " ropes " , ' repo ' : " https://github.com/minetest-mods/ropes.git " ,
' why-not ' : " Use ropes from x_farming instead. " } ,
{ ' name ' : " sling " , ' repo ' : " https://github.com/minetest-mods/sling.git " } ,
# {'name': "sling", 'repo': "https://github.com/minetest-mods/sling.git"} ,
{ ' name ' : " signs_lib " , ' repo ' : " https://github.com/mt-mods/signs_lib.git " } ,
{ ' name ' : " slimenodes " , ' repo ' : " https://github.com/Poikilos/slimenodes.git " } ,
{ ' name ' : " sounding_line " , ' repo ' : " https://github.com/minetest-mods/sounding_line.git " } ,
# {'name': "stamina", 'repo': "https://codeberg.org/tenplus1/stamina.git",
# 'comment': "Patches item_eat to affect saturation instead of health.",
# 'help-dev': "Changes ItemStack before register_on_item_eat callbacks, but they can use 6th param for original ItemStack",
# 'privs': {'invincible':['no_hunger']}},
# 'privs': {'invincible': ['no_hunger']}},
# TODO: ^ Modify stamina to depend on hunger_ng *or* hbhunger, which many mods use (usually hunger_ng, but often either)
# {'name': "sponge", 'repo': "https://github.com/BenjieFiftysix/sponge"},
# TODO: ^ Test, make sure is in worldgen. Integrate with marinara?
{ ' name ' : " throwing " , ' repo ' : " https://github.com/minetest-mods/throwing.git " } ,
{ ' name ' : " throwing_arrows " , ' repo ' : " https://github.com/minetest-mods/throwing_arrows.git " ,
' settings ' : { ' throwing.enable_arrow ' : " true " } } ,
# {'name': "throwing_arrows", 'repo': "https://github.com/minetest-mods/throwing_arrows.git",
# 'settings': {'throwing.enable_arrow': "true"}},
{ ' name ' : " x_bows " , ' repo ' : " https://bitbucket.org/minetest_gamers/x_bows.git " ,
' why ' : " Makes arrows stick into things " } ,
{ ' name ' : " travelnet " , ' repo ' : " https://github.com/Sokomine/travelnet.git " } ,
# {'name': "ts_furniture", 'repo': "https://github.com/minetest-mods/ts_furniture.git"},
# TODO: ^ Make sitting work for steps (and slabs?) instead.
@ -227,9 +240,11 @@ gamespec['add_mods']: List[Dict[str, any]] = [
' what ' : " Additional farming including giant cacti, bonemeal, empty soup bowl, placeable food " ,
' why ' : " better graphics than farming redo " } ,
# TODO: ^ Make sure x_farming works with: minetest_game/farming, hunger_ng
# TODO: ^ Add white dye from bonemeal recipe if not present
{ ' name ' : " xdecor " , ' repo ' : " https://codeberg.org/Wuzzy/xdecor-libre.git " } ,
# TODO: ^ Remove shaped nodes.
# TODO: ^ Make kc_modpack unregister the enchanting table and register a table for its system
# TODO: Add version of vessels with jars from minetest_extended?
# ── Player UX ──────────────────────────────────────────────
{ ' name ' : " ambience " , ' repo ' : [ " https://notabug.org/tenplus1/ambience.git " ,
@ -237,6 +252,7 @@ gamespec['add_mods']: List[Dict[str, any]] = [
{ ' name ' : " effervescence " , ' repo ' : " https://github.com/EmptyStar/effervescence.git " } ,
# TODO: ^ designed for Asuna, so may need work for: naturalbiomes, livingjungle, plantlife_modpack
{ ' name ' : " environment_music " , ' repo ' : " https://github.com/Poikilos/environment_music.git " } ,
{ ' name ' : " fire_plus " , ' repo ' : " https://github.com/Dumpster-Studios/fire_plus.git " } ,
{ ' name ' : " hbsprint " , ' repo ' : " https://github.com/minetest-mods/hbsprint.git " } ,
{ ' name ' : " hunger_ng " , ' repo ' : [ " https://gitlab.com/4w/hunger_ng.git " ,
" https://git.0x7be.net/dirk/hunger_ng " ] ,
@ -249,12 +265,17 @@ gamespec['add_mods']: List[Dict[str, any]] = [
' exclude ' : [ " music_default " , " music_dfcaverns " ] ,
' what ' : " music_api such as for Poikilos ' environment_music " } ,
{ ' name ' : " player_monoids " , ' repo ' : " https://github.com/minetest-mods/player_monoids.git " } ,
{ ' name ' : " playeranim " , ' repo ' : " https://github.com/minetest-mods/playeranim.git " ,
' what ' : " Makes the head, and the right arm when you ' re mining, face the way you ' re facing " } ,
# {'name': "playeranim", 'repo': "https://github.com/minetest-mods/playeranim.git",
# 'what': "Makes the head, and the right arm when you're mining, face the way you're facing"},
{ ' name ' : " bodyanim " , ' repo ' : " https://github.com/dacctal/luanti-bodyanim.git " ,
' description ' : " Player bodies follow their walk direction, and player heads follow their look direction. Based on Lone_Wolf ' s headanim " } ,
# TODO: ^ Make sneak animation for bodyanim
{ ' name ' : " playereffects " , ' repo ' : " https://github.com/sys4-fr/playereffects " } ,
{ ' name ' : " playerlist " , ' repo ' : " https://github.com/LizzyFleckenstein03/playerlist.git " ,
' what ' : " Show player list on sneak. Has color API and ping. " ,
' content_url ' : " https://content.luanti.org/packages/AiTechEye/invisible/ " } ,
# {'name': "skinsdb", 'repo': "https://github.com/minetest-mods/skinsdb.git"},
# {'name': "sprint", 'repo': "https://github.com/GunshipPenguin/sprint.git"},
# TODO: ^ Make sure stamina mod fully implements sprint
# {'name': "unified_inventory",'repo': [
# "https://github.com/minetest-mods/unified_inventory.git",
# "https://github.com/MinetestForFun/unified_inventory" # fork with "nicer interface"
@ -264,12 +285,19 @@ gamespec['add_mods']: List[Dict[str, any]] = [
# 'why-not': "Now included in minetest_game"},
# {'name': "bags", 'repo': "https://github.com/cornernote/minetest-bags.git"},
{ ' name ' : " prestibags " , ' repo ' : " https://github.com/Poikilos/prestibags.git " } ,
# TODO: make dyed_prestibags (See also https://codeberg.org/Codiac/prestibags)
# {'name': "woodcutting", 'repo': "https://github.com/minetest-mods/woodcutting.git",
# 'what': "harvest tree while sneak pressed to gather whole tree"},
# {'name': "radiant_damage", 'repo': "https://github.com/minetest-mods/radiant_damage.git"},
# TODO: ^ Make walking on hardened lava cause damage
{ ' name ' : " invisible " , ' repo ' : " https://github.com/AiTechEye/invisible.git " ,
' items ' : { ' moderator ' : [ ' invisible:tool ' ] } , # i is alias for invisible:tool
' privs ' : { ' moderator ' : [ ' invisible ' ] } } ,
# NOTE: ^ See also visible_sneak
{ ' name ' : " unified_stamina " , ' repo ' : " https://github.com/t-affeldt/unified_stamina.git " ,
' why ' : " Works with various stamina mods including hbsprint " } ,
{ ' name ' : " visible_sneak " , ' repo ' : " https://github.com/wireva/visible_sneak.git " }
# TODO: ^ Make sure can sneak under things (1.5 m), otherwise switch to https://content.luanti.org/packages/zempik10/good_sneaking/ and fix non-moving legs
# ── Legacy / Special ───────────────────────────────────────
# {'name': "animal_materials_legacy"},
@ -425,7 +453,7 @@ def update_conf(path, new_settings):
f " No ' = ' in { rawL . rstrip ( ) } " )
dst . write ( rawL )
continue
parts = line . split ( line , 1 )
parts = line . split ( " = " , 1 )
parts [ 0 ] = parts [ 0 ] . strip ( )
if not parts [ 0 ] :
logger . warning (