Page 2 of 3

Re: [Mod]Frame - lag-free non-entity item frames![frame]

Posted: Tue Jun 12, 2018 10:56
by Fixer
List of supported blocks is hardcoded? Can it autogenerate for all mods loaded by using some criteria?

Re: [Mod]Frame - lag-free non-entity item frames![frame]

Posted: Tue Jun 12, 2018 15:03
by texmex
Fixer wrote:List of supported blocks is hardcoded? Can it autogenerate for all mods loaded by using some criteria?
You should be able to use the API for creating an autogeneration loop from registered items. The problem is making sure that code runs last, I reckon.

Also, please add support for craftitems.

Re: [Mod]Frame - lag-free non-entity item frames![frame]

Posted: Tue Jun 12, 2018 15:50
by Krock
This mod registers an item frame for each item and node which you would like to have supported. The limit of ~32k registered nodes is reached quite easily on that way. However, would be possible to loop through the registered nodes (and overwrite minetest.register_node for nodes that were registered afterwards) and ignore all of them which are in the "not_in_creative_inventory" group.

Re: [Mod]Frame - lag-free non-entity item frames![frame]

Posted: Tue Jun 12, 2018 16:55
by bosapara
Water and lava source looks a few weird, any fix?

Image

Re: [Mod]Frame - lag-free non-entity item frames![frame]

Posted: Tue Jun 12, 2018 18:01
by sofar
Fixer wrote:List of supported blocks is hardcoded? Can it autogenerate for all mods loaded by using some criteria?
No, because there is no way to guarantee that you're last mod loaded, ever.

Re: [Mod]Frame - lag-free non-entity item frames![frame]

Posted: Tue Jun 12, 2018 18:03
by sofar
texmex wrote:
Fixer wrote:List of supported blocks is hardcoded? Can it autogenerate for all mods loaded by using some criteria?
You should be able to use the API for creating an autogeneration loop from registered items. The problem is making sure that code runs last, I reckon.
I specifically avoided doing this for lots of reasons. You can't add stairs or non-cubic blocks like this easily, and putting water in a frame is nonsensical (it needs to go into a bucket).
texmex wrote:Also, please add support for craftitems.
They are supported, and mods that add them can use the API to create the needed frame blocks.

Re: [Mod]Frame - lag-free non-entity item frames![frame]

Posted: Tue Jun 12, 2018 18:05
by sofar
Krock wrote:This mod registers an item frame for each item and node which you would like to have supported. The limit of ~32k registered nodes is reached quite easily on that way. However, would be possible to loop through the registered nodes (and overwrite minetest.register_node for nodes that were registered afterwards) and ignore all of them which are in the "not_in_creative_inventory" group.
I considered this, but I'd rather avoid the possible max_node overflow and offer a simple API to allow mods to create frames. This is more consistent and robust, and avoids lots of the aforementioned problems with adding them automatically.

Re: [Mod]Frame - lag-free non-entity item frames![frame]

Posted: Tue Jun 12, 2018 20:27
by texmex
Woulf it be possible to whip up an engine feature for marking a mod to load last?

Has craftitem support been added recently? Is this issue invalid? https://github.com/minetest-mods/frame/issues/4

Re: [Mod]Frame - lag-free non-entity item frames![frame]

Posted: Tue Jun 12, 2018 20:30
by sofar
texmex wrote:Woulf it be possible to whip up an engine feature for marking a mod to load last?

Has craftitem support been added recently? Is this issue invalid? https://github.com/minetest-mods/frame/issues/4
https://github.com/minetest-mods/frame
This minetest mod adds a lag-free, simple and stylish item and node frame to minetest. It can contain either nodes or craftitems.
I haven't (re) tested this claim, but it should... just work?

Re: [Mod]Frame - lag-free non-entity item frames![frame]

Posted: Tue Jun 12, 2018 21:31
by bosapara
sofar wrote:putting water in a frame is nonsensical (it needs to go into a bucket
Adding bucket with lava/water to frame doesnt work

Re: [Mod]Frame - lag-free non-entity item frames![frame]

Posted: Wed Jun 13, 2018 02:29
by csirolli
texmex wrote:Woulf it be possible to whip up an engine feature for marking a mod to load last?
What happens if a bunch of mods ask to be loaded last?

Re: [Mod]Frame - lag-free non-entity item frames![frame]

Posted: Wed Jun 13, 2018 05:43
by texmex
csirolli wrote:
texmex wrote:Woulf it be possible to whip up an engine feature for marking a mod to load last?
What happens if a bunch of mods ask to be loaded last?
Then those would load last but in a random order internally.

Re: [Mod]Frame - lag-free non-entity item frames![frame]

Posted: Wed Jun 13, 2018 21:50
by bosapara
problem with not adding of the bucket with lava/water solved with World Edit,
just replaced block with name: frame:bucket_bucket_lava and frame:bucket_bucket_water

but with default:dirt_with_rainforest_litter block this trick doesnt works

Image

Re: [Mod]Frame - lag-free non-entity item frames![frame]

Posted: Thu Jun 14, 2018 18:55
by sofar
bosapara wrote:
sofar wrote:putting water in a frame is nonsensical (it needs to go into a bucket
Adding bucket with lava/water to frame doesnt work
This is probably an interface problem in the bucket code - it likely doesn't pass the right click event to the clicked node. I'm not sure this is fixable, since it would mean fixing the bucket, not the frame mod.

Re: [Mod]Frame - lag-free non-entity item frames![frame]

Posted: Thu Jun 14, 2018 18:57
by sofar
bosapara wrote: but with default:dirt_with_rainforest_litter block this trick doesnt works
that's because that node isn't registered in the frame mod. Send a PR to add it to the list in `init.lua` and I'll merge it.

Re: [Mod]Frame - lag-free non-entity item frames![frame]

Posted: Thu Jun 14, 2018 19:03
by bosapara
sofar wrote:
bosapara wrote: but with default:dirt_with_rainforest_litter block this trick doesnt works
that's because that node isn't registered in the frame mod. Send a PR to add it to the list in `init.lua` and I'll merge it.
by some reasons even after adding didnt work, now all works (did several shutdowns)

Re: [Mod]Frame - lag-free non-entity item frames![frame]

Posted: Fri Oct 12, 2018 06:26
by texmex
Hey, I'm trying to use the mod's API in order to support more items.

Code: Select all

minetest.register_on_mods_loaded(function()
  for _, node in pairs(minetest.registered_nodes) do
  	frame.register(node.name)
  end
end)
No matter what I do i get this:

Code: Select all

WARNING[Main]: Frame registered for ":simple_potions:potion_black" but it isn't registered
If I was to omit the : I'd instead get:

Code: Select all

ERROR[Main]: ModError: Runtime error from mod 'testing' in callback on_mods_loaded(): ...inetest.app/Contents/Resources/builtin/game/register.lua:63: attempt to concatenate a nil value
ERROR[Main]: stack traceback:
ERROR[Main]: 	...inetest.app/Contents/Resources/builtin/game/register.lua:63: in function 'check_modname_prefix'
ERROR[Main]: 	...inetest.app/Contents/Resources/builtin/game/register.lua:113: in function 'register_item'
ERROR[Main]: 	...inetest.app/Contents/Resources/builtin/game/register.lua:206: in function 'register_node'
ERROR[Main]: 	...mods/frame/init.lua:152: in function 'register'
ERROR[Main]: 	...mods/testing/compatibility.lua:5: in function <...mods/testing/compatibility.lua:3>
ERROR[Main]: 	...inetest.app/Contents/Resources/builtin/game/register.lua:419: in function <...inetest.app/Contents/Resources/builtin/game/register.lua:399>
Am I using it wrong? This on Minetest 5.0.0-dev-84a5fa0.

Re: [Mod]Frame - lag-free non-entity item frames![frame]

Posted: Fri Oct 12, 2018 07:17
by sofar
You can't re-register items that were already registered before, don't do that. At a minimum, call the registration function only once per item.

The frame mod registration function doesn't handle a leading ":" character. You'll need to omit it.

The crash is weird. The registration will try and minetest.register_node("frame:simple_potions_potion_black" ... but that mail fail the check_modname_prefix somehow, but that should probably be an explicit failure than a stack trace. Worth filing a bug against minetest IMHO.

Re: [Mod]Frame - lag-free non-entity item frames![frame]

Posted: Fri Oct 12, 2018 08:00
by 12Me21
texmex wrote:Hey, I'm trying to use the mod's API in order to support more items.

Code: Select all

minetest.register_on_mods_loaded(function()
  for _, node in pairs(minetest.registered_nodes) do
  	frame.register(node.name)
  end
end)
No matter what I do i get this:

Code: Select all

WARNING[Main]: Frame registered for ":simple_potions:potion_black" but it isn't registered
If I was to omit the : I'd instead get:

Code: Select all

ERROR[Main]: ModError: Runtime error from mod 'testing' in callback on_mods_loaded(): ...inetest.app/Contents/Resources/builtin/game/register.lua:63: attempt to concatenate a nil value
ERROR[Main]: stack traceback:
ERROR[Main]: 	...inetest.app/Contents/Resources/builtin/game/register.lua:63: in function 'check_modname_prefix'
ERROR[Main]: 	...inetest.app/Contents/Resources/builtin/game/register.lua:113: in function 'register_item'
ERROR[Main]: 	...inetest.app/Contents/Resources/builtin/game/register.lua:206: in function 'register_node'
ERROR[Main]: 	...mods/frame/init.lua:152: in function 'register'
ERROR[Main]: 	...mods/testing/compatibility.lua:5: in function <...mods/testing/compatibility.lua:3>
ERROR[Main]: 	...inetest.app/Contents/Resources/builtin/game/register.lua:419: in function <...inetest.app/Contents/Resources/builtin/game/register.lua:399>
Am I using it wrong? This on Minetest 5.0.0-dev-84a5fa0.
EDIT 2:
The problem is that you are calling frame.register when the frame mod is not the currently loading mod.
frame.register uses `minetest.register_node("frame:" .. name:gsub(":", "_"), {`, which is only allowed while the game is loading the `frame` mod.

Change "frame:" to ":frame:" here and that should fix it:
https://github.com/minetest-mods/frame/ ... t.lua#L152
(and don't add ":" to the item name when calling frame.register)

(The error happens because, when checking if an item name is allowed, the game tests if the name starts with `core.get_current_modname() .. ":"`. But get_current_modname returns nil if there is no mod being loaded.
You should just get a "does not follow naming conventions" error instead, so it's not a very important bug)

Re: [Mod]Frame - lag-free non-entity item frames![frame]

Posted: Fri Oct 12, 2018 08:23
by Pyrollo
sofar wrote:
bosapara wrote:Is it possible to make sword/picks etc at frame more "3d" (1px depth) like at usual frames?
yes, but you'd get back the lag again, because that can only be done by using entities again, which is what this mod avoids.
At the opposite, I'm wondering if it is possible to have all flat, with the same image as in the inventory for cubes.

Re: [Mod]Frame - lag-free non-entity item frames![frame]

Posted: Fri Oct 12, 2018 16:11
by sofar
Pyrollo wrote:At the opposite, I'm wondering if it is possible to have all flat, with the same image as in the inventory for cubes.
Yes, entirely possible, not even that hard either.

Re: [Mod]Frame - lag-free non-entity item frames![frame]

Posted: Fri Oct 12, 2018 16:26
by sofar
12Me21 wrote:Change "frame:" to ":frame:" here and that should fix it:
https://github.com/minetest-mods/frame/ ... t.lua#L152
(and don't add ":" to the item name when calling frame.register)
this should fix it, and I added an assert to warn about incorrect name values passed to the registration:

https://github.com/minetest-mods/frame/ ... fe749f37d9

Re: [Mod]Frame - lag-free non-entity item frames![frame]

Posted: Fri Oct 12, 2018 20:25
by texmex
Thanks sofar!

Re: [Mod]Frame - lag-free non-entity item frames![frame]

Posted: Sat Oct 13, 2018 06:22
by texmex
Got it working now. For some reason I had to check for existing tiles definition beforehand though I thought that frame mod did that same check internally.

Code: Select all

minetest.register_on_mods_loaded(function()
	for _, node in pairs(minetest.registered_nodes) do
		if node.tiles then
			frame.register(node.name)
		end
	end
end)
Which items are working and which aren't is a hit and miss though:
- Animated node textures don't get cropped
- Armor items don't attach
- Wings are registered as craftitems so they don't work still

Also, I think the frames should rotate on placement so that they'll always face the player who placed it. :)

Image

Re: [Mod]Frame - lag-free non-entity item frames![frame]

Posted: Sun Oct 14, 2018 02:43
by PEAK
A suggestion:

change the selection box from:

Code: Select all

selection_box = {
	type = "wallmounted",
	wall_side = {-1/2, -1/2, -1/2, -3/8, 1/2, 1/2},
},
to:

Code: Select all

selection_box = {
	type = "wallmounted",
	wall_side = {-6/16, -6/16, -6/16, -3/8, 6/16, 6/16},
},
So you can place the frame on a chest while still having easy access to the chest behind it by clicking on the border of the frame.

Image