Aero reports: "/mods" command gives a link t ... #1747

Closed
opened 2022-04-14 09:19:18 +00:00 by yourland-report · 20 comments

Aero reports a bug:

"/mods" command gives a link to a place/website that contains all the mods (and maybe a download zip). Optional: a book/poster at spawn (or library) and the command says "you can find it in a book/poster in spawn/library"

Player position:

{
	y = 23.5,
	x = -5358.2509765625,
	z = -4798.7646484375
}

Player look:

{
	y = -0.41071882843971,
	x = -0.91101467609406,
	z = 0.036908738315105
}

Player information:

{
	min_rtt = 0.16099999845028,
	max_rtt = 1.0629999637604,
	connection_uptime = 1307,
	max_jitter = 0.88399994373322,
	minor = 5,
	major = 5,
	ip_version = 6,
	formspec_version = 5,
	patch = 0,
	protocol_version = 40,
	serialization_version = 29,
	lang_code = "",
	version_string = "5.5.0",
	avg_rtt = 0.20700000226498,
	state = "Active",
	avg_jitter = 0.026000007987022,
	min_jitter = 0
}

Player meta:

{
	fields = {
		["3d_armor_inventory"] = "return {\"3d_armor:helmet_crystal 1 17240\", \"3d_armor:chestplate_crystal 1 17240\", \"3d_armor:leggings_crystal 1 17240\", \"3d_armor:boots_crystal 1 17240\", \"shields:shield_rainbow 1 6896\", \"\"}",
		played_time = "782714",
		jointime = "1639572830",
		yl_commons_player_joined = "1649926674",
		["stamina:exhaustion"] = "110.5",
		["signslib:pos"] = "(2545,-2,977)",
		digged_nodes = "94038",
		bitten = "0",
		["unified_inventory:bags"] = "return {\"unified_inventory:bag_large\", \"unified_inventory:bag_large\", \"unified_inventory:bag_large\", \"unified_inventory:bag_large\"}",
		partychat = "party",
		yl_church = "return {[\"last_death\"] = {[\"y\"] = 19, [\"x\"] = -4964, [\"z\"] = -4978}, [\"last_death_portal\"] = 1649921516, [\"last_heal\"] = 1646398016}",
		["stamina:poisoned"] = "no",
		["stamina:level"] = "15",
		punch_count = "8354",
		arenalib_infobox_arenaID = "0",
		inflicted_damage = "129394",
		crafted = "3678",
		yl_commons_thankyou = "16",
		placed_nodes = "15787",
		xp = "49976",
		died = "279",
		hud_state = "on",
		repellant = "0",
		yl_commons_player_created = "1639572830"
	}
}

Log identifier


[MOD] yl_report log identifier = 8SogmYaLQEJL03xEr6zRT2pBSsESeijw

Profiler save:

profile-20220414T111918.json_prettyEE

Status:

# Server: version: 5.5.0-yl | game: Minetest Game | uptime: 59min 45s | max lag: 2.5s | clients: Cyps, dweek, Bailiff, Bla, pitman, Aero, Segmentation_Fault, debiankaios, Service, TobiasGaming, Chache, Boot, Arc999, Bishiro, AliasAlreadyTaken

Teleport command:

/teleport xyz -5358 24 -4799

Compass command:

/give_compass Construction 8SogmYaLQEJL03xEr6zRT2pBSsESeijw D2691E -5358 24 -4799
Aero reports a bug: > "/mods" command gives a link to a place/website that contains all the mods (and maybe a download zip). Optional: a book/poster at spawn (or library) and the command says "you can find it in a book/poster in spawn/library" Player position: ``` { y = 23.5, x = -5358.2509765625, z = -4798.7646484375 } ``` Player look: ``` { y = -0.41071882843971, x = -0.91101467609406, z = 0.036908738315105 } ``` Player information: ``` { min_rtt = 0.16099999845028, max_rtt = 1.0629999637604, connection_uptime = 1307, max_jitter = 0.88399994373322, minor = 5, major = 5, ip_version = 6, formspec_version = 5, patch = 0, protocol_version = 40, serialization_version = 29, lang_code = "", version_string = "5.5.0", avg_rtt = 0.20700000226498, state = "Active", avg_jitter = 0.026000007987022, min_jitter = 0 } ``` Player meta: ``` { fields = { ["3d_armor_inventory"] = "return {\"3d_armor:helmet_crystal 1 17240\", \"3d_armor:chestplate_crystal 1 17240\", \"3d_armor:leggings_crystal 1 17240\", \"3d_armor:boots_crystal 1 17240\", \"shields:shield_rainbow 1 6896\", \"\"}", played_time = "782714", jointime = "1639572830", yl_commons_player_joined = "1649926674", ["stamina:exhaustion"] = "110.5", ["signslib:pos"] = "(2545,-2,977)", digged_nodes = "94038", bitten = "0", ["unified_inventory:bags"] = "return {\"unified_inventory:bag_large\", \"unified_inventory:bag_large\", \"unified_inventory:bag_large\", \"unified_inventory:bag_large\"}", partychat = "party", yl_church = "return {[\"last_death\"] = {[\"y\"] = 19, [\"x\"] = -4964, [\"z\"] = -4978}, [\"last_death_portal\"] = 1649921516, [\"last_heal\"] = 1646398016}", ["stamina:poisoned"] = "no", ["stamina:level"] = "15", punch_count = "8354", arenalib_infobox_arenaID = "0", inflicted_damage = "129394", crafted = "3678", yl_commons_thankyou = "16", placed_nodes = "15787", xp = "49976", died = "279", hud_state = "on", repellant = "0", yl_commons_player_created = "1639572830" } } ``` Log identifier ``` [MOD] yl_report log identifier = 8SogmYaLQEJL03xEr6zRT2pBSsESeijw ``` Profiler save: ``` profile-20220414T111918.json_prettyEE ``` Status: ``` # Server: version: 5.5.0-yl | game: Minetest Game | uptime: 59min 45s | max lag: 2.5s | clients: Cyps, dweek, Bailiff, Bla, pitman, Aero, Segmentation_Fault, debiankaios, Service, TobiasGaming, Chache, Boot, Arc999, Bishiro, AliasAlreadyTaken ``` Teleport command: ``` /teleport xyz -5358 24 -4799 ``` Compass command: ``` /give_compass Construction 8SogmYaLQEJL03xEr6zRT2pBSsESeijw D2691E -5358 24 -4799 ```
AliasAlreadyTaken was assigned by yourland-report 2022-04-14 09:19:18 +00:00
AliasAlreadyTaken added the
1. kind/enhancement
label 2022-04-14 09:33:07 +00:00
flux added this to the flux's TODO list project 2022-07-02 20:41:32 +00:00
Member

i'd love it if /mods brought up a UI like /help does, w/ info from the mod.conf files. might do this and PR upstream.

i'd love it if `/mods` brought up a UI like `/help` does, w/ info from the mod.conf files. might do this and PR upstream.

I tried adding a "information" value to each of the yl_ mods and suggest using the template for all new mods, but we can hardly press this standard on others.

Template: https://gitea.your-land.de/your-land/yl_template

I tried adding a "information" value to each of the yl_ mods and suggest using the template for all new mods, but we can hardly press this standard on others. Template: https://gitea.your-land.de/your-land/yl_template
flux self-assigned this 2022-10-26 22:16:41 +00:00
Member

exhibit A: https://github.com/minetest/minetest/pull/12843

exhibit B: https://content.minetest.net/packages/rheo/modinfo/

however, mine doesn't allow you to follow links... can that even be done?

exhibit A: https://github.com/minetest/minetest/pull/12843 exhibit B: https://content.minetest.net/packages/rheo/modinfo/ however, mine doesn't allow you to follow links... can that even be done?
Member

copying the URL can now be done (it is not automated link tho)

de9f73fab5

copying the URL can now be done (it is not automated link tho) https://github.com/fluxionary/minetest-modinfo/commit/de9f73fab5755610a1f6bef26840e2a7e8e0290a
flux added the
4. step/ready to QA test
label 2022-10-26 23:29:30 +00:00
Member

then again, there's work to be done in order to get URLs for most mods.

then again, there's work to be done in order to get URLs for *most* mods.
flux added this to the 1.1.117 milestone 2022-11-18 22:46:52 +00:00

Content DB has a query-able API https://content.minetest.net/help/api/

And there's https://gitea.your-land.de/whosit/version_command

Until we can force everyone to comply with our standards, /mods still points to a wall of text.

Let's override /mods to point to either point to the URL https://your-land.de/additional/yl_mods.txt directly or to the faq entry "mods"

Content DB has a query-able API https://content.minetest.net/help/api/ And there's https://gitea.your-land.de/whosit/version_command Until we can force everyone to comply with our standards, /mods still points to a wall of text. Let's override /mods to point to either point to the URL https://your-land.de/additional/yl_mods.txt directly or to the faq entry "mods"
AliasAlreadyTaken removed this from the 1.1.117 milestone 2023-01-18 14:48:44 +00:00
Member

Content DB has a query-able API https://content.minetest.net/help/api/

oh, i didn't even realize it had an API, it'd be really cool to use that, though it might need some manual hinting when there's multiple forks.

And there's https://gitea.your-land.de/whosit/version_command

Let's override /mods to point to either point to the URL https://your-land.de/additional/yl_mods.txt directly or to the faq entry "mods"

i'm not in favor of a solution that requires maintaining a separate file, unless that file is automatically generated. otherwise, that falls out of date quickly and is less than useful.

Until we can force everyone to comply with our standards, /mods still points to a wall of text.

if i RFC some sort of additional standards for mod.conf files, and people react to it favorably, i'd bet we could convince a lot of major mod makers to use it, particularly if i supply the PRs.

> Content DB has a query-able API https://content.minetest.net/help/api/ oh, i didn't even realize it had an API, it'd be really cool to use that, though it might need some manual hinting when there's multiple forks. > And there's https://gitea.your-land.de/whosit/version_command > > Let's override /mods to point to either point to the URL https://your-land.de/additional/yl_mods.txt directly or to the faq entry "mods" i'm not in favor of a solution that requires maintaining a separate file, unless that file is automatically generated. otherwise, that falls out of date quickly and is less than useful. > Until we can force everyone to comply with our standards, /mods still points to a wall of text. if i RFC some sort of additional standards for `mod.conf` files, and people react to it favorably, i'd bet we could convince a lot of major mod makers to use it, particularly if i supply the PRs.

Content DB has a query-able API https://content.minetest.net/help/api/

oh, i didn't even realize it had an API, it'd be really cool to use that, though it might need some manual hinting when there's multiple forks.

Plus it won't work for mods that are not on CDB. Like most yl mods are, like some adopted mods, forks and ... a modname is not a good unique key.

And there's https://gitea.your-land.de/whosit/version_command

Let's override /mods to point to either point to the URL https://your-land.de/additional/yl_mods.txt directly or to the faq entry "mods"

i'm not in favor of a solution that requires maintaining a separate file, unless that file is automatically generated. otherwise, that falls out of date quickly and is less than useful.

It needs to be generated after every serverstart, because that' when the technical decision is made which mods are in and which ones are out. We cannot simply iterate over the mods that exist on the server: Whatever core.get_modnames tells us. Then we need to find them on file, read their git repo and mod.conf

That's nothing a mod itself can solve. mods aren't allowed to read or even write the mod folder :D (We could disable modsecurity for this mod, but that's a bug nono, a mod should never demand that)

Until we can force everyone to comply with our standards, /mods still points to a wall of text.

if i RFC some sort of additional standards for mod.conf files, and people react to it favorably, i'd bet we could convince a lot of major mod makers to use it, particularly if i supply the PRs.

Adding it in a structured way to some file of the mod, be it mod.conf or any other in a machine readable way would be very much preferred.

> > Content DB has a query-able API https://content.minetest.net/help/api/ > > oh, i didn't even realize it had an API, it'd be really cool to use that, though it might need some manual hinting when there's multiple forks. Plus it won't work for mods that are not on CDB. Like most yl mods are, like some adopted mods, forks and ... a modname is not a good unique key. > > And there's https://gitea.your-land.de/whosit/version_command > > > > Let's override /mods to point to either point to the URL https://your-land.de/additional/yl_mods.txt directly or to the faq entry "mods" > > i'm not in favor of a solution that requires maintaining a separate file, unless that file is automatically generated. otherwise, that falls out of date quickly and is less than useful. It needs to be generated after every serverstart, because that' when the technical decision is made which mods are in and which ones are out. We cannot simply iterate over the mods that exist on the server: Whatever core.get_modnames tells us. Then we need to find them on file, read their git repo and mod.conf That's nothing a mod itself can solve. mods aren't allowed to read or even write the mod folder :D (We could disable modsecurity for this mod, but that's a bug nono, a mod should never demand that) > > Until we can force everyone to comply with our standards, /mods still points to a wall of text. > > if i RFC some sort of additional standards for `mod.conf` files, and people react to it favorably, i'd bet we could convince a lot of major mod makers to use it, particularly if i supply the PRs. Adding it in a structured way to some file of the mod, be it mod.conf or any other in a machine readable way would be very much preferred.

For now I'd favour an in-mod information block like so:

https://gitea.your-land.de/your-land/yl_template/src/branch/master/init.lua#L16

For now I'd favour an in-mod information block like so: https://gitea.your-land.de/your-land/yl_template/src/branch/master/init.lua#L16

Looking at minetest-modinfo, the only reason this mod requires modsecurity is access to mod.conf?

Apparently there is a function Settings() that allows readaccess to mod.conf and depends.txt:

//lua local t = Settings(minetest.get_modpath("yl_cinema") .. "/mod.conf"):get_names() core.chat_send_all(dump(t))
Looking at minetest-modinfo, the only reason this mod requires modsecurity is access to mod.conf? Apparently there is a function Settings() that allows readaccess to mod.conf and depends.txt: ``` //lua local t = Settings(minetest.get_modpath("yl_cinema") .. "/mod.conf"):get_names() core.chat_send_all(dump(t)) ```
Member

from the documentation (because i forgot why myself):

requires access to the insecure environment in order to read modpack configuration.

related, somewhat: https://github.com/minetest/minetest/issues/12857

from the documentation (because i forgot why myself): > requires access to the insecure environment in order to read modpack configuration. related, somewhat: https://github.com/minetest/minetest/issues/12857
Member

i suppose if access to the insecure environment is enough of a sticking point, i could make it optional and just not gather info from modpack.conf. it looks like the only thing i'm actually extracting from that file is the description, anyway.

i suppose if access to the insecure environment is enough of a sticking point, i could make it optional and just not gather info from modpack.conf. it looks like the only thing i'm actually extracting from that file is the description, anyway.

Allowing insecure environment is one of the few things YL can't do.

Is that info from the modpack vital information? Can you read the mod.conf files from inside the modpacks? If so, I'd say ignore modpacks altogether and only display single mods.

Maybe we need to do that in two passes. One step in python or bash that would create a readable JSON file in the worldfolder and then some mod that would read out this JSON and display ingame.

Allowing insecure environment is one of the few things YL can't do. Is that info from the modpack vital information? Can you read the mod.conf files from inside the modpacks? If so, I'd say ignore modpacks altogether and only display single mods. Maybe we need to do that in two passes. One step in python or bash that would create a readable JSON file in the worldfolder and then some mod that would read out this JSON and display ingame.
Member

oh, i'm also using the insecure environment to deduce which mods belong to which modpack, so they can be grouped together. but that also doesn't actually require an insecure environment - i can just use file paths to figure things out. that's not a quick fix though.

Allowing insecure environment is one of the few things YL can't do.

why not? i'd hoped to eventually create a custom API for interacting w/ sqlite and postgres databases, which would require additional compiled modules and access to the insecure environment.

oh, i'm also using the insecure environment to deduce which mods belong to which modpack, so they can be grouped together. but that also doesn't actually require an insecure environment - i can just use file paths to figure things out. that's not a quick fix though. > Allowing insecure environment is one of the few things YL can't do. why not? i'd hoped to eventually create a custom API for interacting w/ sqlite and postgres databases, which would require additional compiled modules and access to the insecure environment.
Member

removed the insecure environment: 4cc83cb5c0

removed the insecure environment: https://github.com/fluxionary/minetest-modinfo/commit/4cc83cb5c0c8c4a598d70455b8cb1c8178e58957
AliasAlreadyTaken added this to the 1.1.122 milestone 2023-12-09 00:31:24 +00:00
AliasAlreadyTaken added the
ugh/QA OK
label 2023-12-09 00:31:30 +00:00

QA

  1. Looks very nice and helps identify oddities in the mostly neglected mod.conf files. Highlights:

bones: Still mentions AGPL and the description reads "DEATH DOES NOT STAIN". Looking at upstream bones, there's LGPL mentioned. What's going on? Oh, the upstream has a LOT more commits than yl_stable!

castle_gates: apparently it has a linebreak in the description?

castle_masonry: apparently it also has a linebreak in the description?

cottages: The derscription is so long it runs out of the line. Maybe in such a case a tooltip might help?

mailbox was done by MisterE, but somehow mentions ME as author??

mesecons_debug notes as license: ????

worldedit: has a table reference as version

YL itself is the worst offender. Sometimes the author is Alias, sometimes it is AliasAlreadyTaken. Teh version is usually 0.0.1

yl_unified_trash has still the yl_template stuff in it

yl_xmas: description is "Some" ??

  1. Everyone uses a different versioning scheme

  2. Maybe we should push for the git repo URL noted in mod.conf as well: That was the initial use case

  3. We can't do "what branch and commit are we on" in this, without shell access, right?

Even though a couple of things were found, I'd like to OK this :D

QA 1. Looks very nice and helps identify oddities in the mostly neglected mod.conf files. Highlights: bones: Still mentions AGPL and the description reads "DEATH DOES NOT STAIN". Looking at upstream bones, there's LGPL mentioned. What's going on? Oh, the upstream has a LOT more commits than yl_stable! castle_gates: apparently it has a linebreak in the description? castle_masonry: apparently it also has a linebreak in the description? cottages: The derscription is so long it runs out of the line. Maybe in such a case a tooltip might help? mailbox was done by MisterE, but somehow mentions ME as author?? mesecons_debug notes as license: ???? worldedit: has a table reference as version YL itself is the worst offender. Sometimes the author is Alias, sometimes it is AliasAlreadyTaken. Teh version is usually 0.0.1 yl_unified_trash has still the yl_template stuff in it yl_xmas: description is "Some" ?? 2. Everyone uses a different versioning scheme 3. Maybe we should push for the git repo URL noted in mod.conf as well: That was the initial use case 4. We can't do "what branch and commit are we on" in this, without shell access, right? Even though a couple of things were found, I'd like to OK this :D
  1. We can't do "what branch and commit are we on" in this, without shell access, right?

simply reading .git/FETCH_HEAD could work

> 4. We can't do "what branch and commit are we on" in this, without shell access, right? simply reading `.git/FETCH_HEAD` could work
Member

bones: Still mentions AGPL

my fork does? where? i can't find any mentions w/ grep.

> bones: Still mentions AGPL my fork does? where? i can't find any mentions w/ grep.

bones: Still mentions AGPL

my fork does? where? i can't find any mentions w/ grep.

No, it does not anymore, but that's how I found yl_stable bones mod was behind/out of sync.

> > bones: Still mentions AGPL > > my fork does? where? i can't find any mentions w/ grep. No, it does not anymore, but that's how I found yl_stable bones mod was behind/out of sync.
flux added
5. result/fixed
and removed
4. step/ready to QA test
labels 2023-12-17 22:47:20 +00:00
flux removed this from the flux's TODO list project 2023-12-17 22:47:22 +00:00
AliasAlreadyTaken was unassigned by flux 2023-12-17 22:47:24 +00:00
flux removed their assignment 2023-12-17 22:47:24 +00:00
Member

this is live!

this is live!
flux closed this issue 2023-12-17 22:47:33 +00:00
Sign in to join this conversation.
No Milestone
No project
No Assignees
4 Participants
Notifications
Due Date
The due date is invalid or out of range. Please use the format 'yyyy-mm-dd'.

No due date set.

Dependencies

No dependencies set.

Reference: your-land/bugtracker#1747
No description provided.