Add More Sapling Oak Varieties #3081

Open
opened 2022-12-07 14:18:18 +01:00 by Ghost · 14 comments

When you grow oak trees from a sapling, they have a chance to become a medium-large or large oak tree instead of just the default ones.

MineClone 2 should make it possible to grow such large trees from a sapling. There are probably many more different examples than just this one.

When you grow oak trees from a sapling, they have a chance to become a medium-large or large oak tree instead of just the default ones. MineClone 2 should make it possible to grow such large trees from a sapling. There are probably many more different examples than just this one.
Ghost changed title from Add More Sapling Oaks to Add More Sapling Oak Varieties 2022-12-07 14:21:25 +01:00
Michieal added the
needs discussion
schematics
labels 2022-12-07 15:06:24 +01:00
Contributor

We have 4 large varieties of oak, but they're supposed to be more rare than the small ones. This is normal in Minecraft too.

Here are 2 variants shown below. But more would be nice, of course. Someone should try getting comfortable and creative with Schematic Editor. :)
two different large oak trees in MineClone2

P.S. Here are all 4 schematics:
the 4 variants of large oak in MineClone2

We have 4 large varieties of oak, but they're supposed to be more rare than the small ones. This is [normal in Minecraft](https://minecraft.fandom.com/wiki/Oak#Variants) too. Here are 2 variants shown below. But more would be nice, of course. Someone should try getting comfortable and creative with [Schematic Editor](https://content.minetest.net/packages/Wuzzy/schemedit/). :) ![two different large oak trees in MineClone2](https://i.imgur.com/21RnJgo.jpg) P.S. Here are all 4 schematics: ![the 4 variants of large oak in MineClone2](https://i.imgur.com/un820Xo.jpg)
Author

but they're supposed to be more rare than the small ones.

You should be able to force a large oak tree 100% of the time by putting a tall wall around the sapling and then letting it grow.

>but they're supposed to be more rare than the small ones. You should be able to force a large oak tree 100% of the time by putting a tall wall around the sapling and then letting it grow.
Contributor

True, that's a very convenient feature in Minecraft, useful for quick base designs. I'm not sure we have this. Have you tried and it didn't work?

True, that's a very convenient feature in Minecraft, useful for quick base designs. I'm not sure we have this. Have you tried and it didn't work?
Author

I tried and the sapling just seems to grow normal oak trees that force their leaves through the wall.

I tried and the sapling just seems to grow normal oak trees that force their leaves through the wall.
kneekoo added the
enhancement
label 2022-12-08 10:08:05 +01:00
Member

Well, there is also the infamous, super-short variety too. They are a treetop that's one oaklog node high. quite... entertaining to see. (Use seed StarCore if you have never seen them.)

Well, there is also the infamous, super-short variety too. They are a treetop that's one oaklog node high. quite... entertaining to see. (Use seed StarCore if you have never seen them.)
Contributor

You can find all the currently defined tree schematics here:
https://git.minetest.land/MineClone2/MineClone2/src/branch/master/mods/ITEMS/mcl_core/schematics

Oak tree generation registratered here:
https://git.minetest.land/MineClone2/MineClone2/src/branch/master/mods/MAPGEN/mcl_biomes/init.lua#L2975

If you're really ambitious about creating more tree variants, look into l-system trees:

https://minetest.gitlab.io/minetest/l-system-trees/
https://dev.minetest.net/Introduction_to_L-system_trees

I guess you'll find some examples of its use in minetest_game's source code.

You can find all the currently defined tree schematics here: https://git.minetest.land/MineClone2/MineClone2/src/branch/master/mods/ITEMS/mcl_core/schematics Oak tree generation registratered here: https://git.minetest.land/MineClone2/MineClone2/src/branch/master/mods/MAPGEN/mcl_biomes/init.lua#L2975 If you're really ambitious about creating more tree variants, look into l-system trees: https://minetest.gitlab.io/minetest/l-system-trees/ https://dev.minetest.net/Introduction_to_L-system_trees I guess you'll find some examples of its use in minetest_game's source code.
Member

I tried and the sapling just seems to grow normal oak trees that force their leaves through the wall.

From what I have gathered, that's because the leaves in the tree structure file aren't set to overwrite non-air nodes.

You should be able to force a large oak tree 100% of the time by putting a tall wall around the sapling and then letting it grow.

I belive that when you set down a sapling, is when it picks which one its going to be... so forcing it doesn't work because it's a random pick. (Again, from what I have observed.)

I mean, we could make the code pretty complex and go through and check for walls around it going up however high... but, it is optimized to be an general tree api so we'd have to undo that for oaks, and a couple others. (This aspect doesn't seem worth it, but who am I to judge?)

> I tried and the sapling just seems to grow normal oak trees that force their leaves through the wall. From what I have gathered, that's because the leaves in the tree structure file aren't set to overwrite non-air nodes. > You should be able to force a large oak tree 100% of the time by putting a tall wall around the sapling and then letting it grow. I belive that when you set down a sapling, is when it picks which one its going to be... so forcing it doesn't work because it's a random pick. (Again, from what I have observed.) I mean, we could make the code pretty complex and go through and check for walls around it going up however high... but, it is optimized to be an general tree api so we'd have to undo that for oaks, and a couple others. (This aspect doesn't seem worth it, but who am I to judge?)

I feel if the tree's are done a particular way to work with the way minetest does this, then it is for good reason.

I cannot justify rewriting the whole lot to support controlling what grows. That sounds like a technique that was used to manipulate mc's engine and tree generation and it's a great idea for that context, but that doesn't neccessarily apply here. It feels computationally expensive and for very little gain.

I think adding more variants could be quite cool or interesting if someone wants to commit that time to it. Then they might have to bonemeal until they get what they want.

I feel if the tree's are done a particular way to work with the way minetest does this, then it is for good reason. I cannot justify rewriting the whole lot to support controlling what grows. That sounds like a technique that was used to manipulate mc's engine and tree generation and it's a great idea for that context, but that doesn't neccessarily apply here. It feels computationally expensive and for very little gain. I think adding more variants could be quite cool or interesting if someone wants to commit that time to it. Then they might have to bonemeal until they get what they want.
Member

Well, I have only skimmed through the trees, looking for things that I needed for making the bamboo... so, I'm not super familiar with how the trees work. I mean, I could do creative mode, and build some trees by hand... but the last time I did something like that, I handed the entire demo world over to Prairie to make structures from.

Well, I have only skimmed through the trees, looking for things that I needed for making the bamboo... so, I'm not super familiar with how the trees work. I mean, I could do creative mode, and build some trees by hand... but the last time I did something like that, I handed the entire demo world over to Prairie to make structures from.
Contributor

We have to keep in mind that mineclone is implemented on the basis of the minetest engine and we are bound by its abilities and its limitations.

L-system trees are implemented in C++ so it should not be very computationally intensive to use. Obviously, trying to reimplement exact MC mechanics in lua would create severe performance issues.

We have to keep in mind that mineclone is implemented on the basis of the minetest engine and we are bound by its abilities and its limitations. L-system trees are implemented in C++ so it should not be very computationally intensive to use. Obviously, trying to reimplement exact MC mechanics in lua would create severe performance issues.

We have to keep in mind that mineclone is implemented on the basis of the minetest engine and we are bound by its abilities and its limitations.

L-system trees are implemented in C++ so it should not be very computationally intensive to use. Obviously, trying to reimplement exact MC mechanics in lua would create severe performance issues.

To clarify on my previous post, I'm not opposed to L-system trees. I don't know enough about it, and if it's supported and can improve things, it's worth considering and looking into.

I was more hesitent on the restricting growth based on what blocks/fences are around (and the checking of all these to define the trees spawning). That bit felt expensive and engine specific.

> We have to keep in mind that mineclone is implemented on the basis of the minetest engine and we are bound by its abilities and its limitations. > > L-system trees are implemented in C++ so it should not be very computationally intensive to use. Obviously, trying to reimplement exact MC mechanics in lua would create severe performance issues. To clarify on my previous post, I'm not opposed to L-system trees. I don't know enough about it, and if it's supported and can improve things, it's worth considering and looking into. I was more hesitent on the restricting growth based on what blocks/fences are around (and the checking of all these to define the trees spawning). That bit felt expensive and engine specific.
Contributor

To clarify on my previous post, I'm not opposed to L-system trees.

I guessed your intent right then. We agree that it is not a good idea to drop the schematics in favor of a tentative lua-based tree generation. I just wanted to put the notion of l-system trees out there for the people to consider as an alternative to fixed schematics.

I don't know enough about it, and if it's supported and can improve things, it's worth considering and looking into.

I'm not overly familiar with it either. I only looked into it some time ago when @cora said she wanted to use it for generating mushrooms in the nether. At the time I considered it impossible to do that because we have so many different mushroom blocks and AFAICS the l-system algorithm would not know how to place the right type of block.

Since then I had a new idea that would make this work: always place mushroom blocks with "flesh" texture only on the lower y face and "skin" on the other 5 faces. Then in the dig/destruct handler of mushroom blocks check if its neighbours are mushroom blocks and update their faces' textures accordingly.

I was more hesitent on the restricting growth based on what blocks/fences are around (and the checking of all these to define the trees spawning). That bit felt expensive and engine specific.

General Minecraft gameplay look and feel are nice goals, but full glitch and tweak compatibility is clearly not in order.

> To clarify on my previous post, I'm not opposed to L-system trees. I guessed your intent right then. We agree that it is not a good idea to drop the schematics in favor of a tentative lua-based tree generation. I just wanted to put the notion of l-system trees out there for the people to consider as an alternative to fixed schematics. > I don't know enough about it, and if it's supported and can improve things, it's worth considering and looking into. I'm not overly familiar with it either. I only looked into it some time ago when @cora said she wanted to use it for generating mushrooms in the nether. At the time I considered it impossible to do that because we have so many different mushroom blocks and AFAICS the l-system algorithm would not know how to place the right type of block. Since then I had a new idea that would make this work: always place mushroom blocks with "flesh" texture only on the lower y face and "skin" on the other 5 faces. Then in the dig/destruct handler of mushroom blocks check if its neighbours are mushroom blocks and update their faces' textures accordingly. > I was more hesitent on the restricting growth based on what blocks/fences are around (and the checking of all these to define the trees spawning). That bit felt expensive and engine specific. General Minecraft gameplay look and feel are nice goals, but full glitch and tweak compatibility is clearly not in order.
Contributor

I was more hesitent on the restricting growth based on what blocks/fences are around (and the checking of all these to define the trees spawning). That bit felt expensive and engine specific.

This is what the wiki says:

A tree can be forced into a fancy configuration if a "brace" of non-solid blocks (e.g. glass or slabs) is placed around where the trunk would be, one block off the ground.

Considering that checking for non-solid blocks only makes sense to be performed when a tree grows from a sapling (not generally when waiting), there's probably a way to avoid making this expensive.

It's only a "nice to have", but very useful when you start a new base and don't want to waste time chopping down a lot of trees until you get the ones you want for your design. Fluff, but very nice fluff. :)

> I was more hesitent on the restricting growth based on what blocks/fences are around (and the checking of all these to define the trees spawning). That bit felt expensive and engine specific. This is what the [wiki](https://minecraft.fandom.com/wiki/Oak#Variants) says: > A tree can be forced into a fancy configuration if a "brace" of non-solid blocks (e.g. glass or slabs) is placed around where the trunk would be, one block off the ground. Considering that checking for non-solid blocks only makes sense to be performed when a tree grows from a sapling *(not generally when waiting)*, there's probably a way to avoid making this expensive. It's only a "nice to have", but very useful when you start a new base and don't want to waste time chopping down a lot of trees until you get the ones you want for your design. Fluff, but very nice fluff. :)
Contributor

It's only a "nice to have", but very useful when you start a new base and don't want to waste time chopping down a lot of trees until you get the ones you want for your design. Fluff, but very nice fluff. :)

I'm thrilled at the prospect of seeing an outline of a scheme that would make this work in actual practice.

> It's only a "nice to have", but very useful when you start a new base and don't want to waste time chopping down a lot of trees until you get the ones you want for your design. Fluff, but very nice fluff. :) I'm thrilled at the prospect of seeing an outline of a scheme that would make this work in actual practice.
Sign in to join this conversation.
No Milestone
No project
No Assignees
5 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: VoxeLibre/VoxeLibre#3081
No description provided.