-
Notifications
You must be signed in to change notification settings - Fork 64
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Feature requests + bug reports #130
Comments
Whoa, that a lot...
Implementing the "Match Any" option for 1.17- in a performant manner is a major implementation overhead as the current code was not originally designed for it, but it may be added at some point in the future. It isn't as general, but by choosing biomes at a higher scale you can effectively search for groups of similar biomes (and it's very performance friendly). So for instance, a jungle at scale 1:256 has the potential to generate any of:
To use the OR logic gate, you add it first, and then add the conditions that should be part of the expression by referencing the OR logic gate as the relative location. Here is an example: igloo_or_village.txt that you can load with File > Load session...
There was not much biome related noise in older versions. Height-maps might be added for 1.18+ to improve accuracy of structure generation, but it proves to be a difficult process. There aren't really any plans to add height-maps for older versions.
Determining structure sub-types is not really a focus of cubiomes and gets added on a case to case basis, depending on the interest and difficulty to implement. Bastion types are a good candidate, since they have a well defined starting
This had actually been a plan early on in the development, but ended focusing more on the top-16 | low-48 bit split for structures and biomes. Do you need full control over the bits by specifying a bit mask? I think it would be best if this gets its own feature request with a bit more detail on the use cases.
Copying the seed list is something I frequently need. I could add a ctrl+c to the map view, so the current seed is copied when the focus is on the map.
You can kinda do this by splitting the search area for the second village into separate areas around the first village and combine them with an OR logic gate, (Something like this: two_vills_with_portal.txt).
I'm not entirely sure I understand. You can already setup any combination of biome requirements with the inclusion/exlusion/ignored-tricheckboxes. When you specify a biome filter, all the requirements are tested at the same time, while the algorithm does its best to abort non-matching seeds as fast as possible. You already get close to the best possible performance. Excluding biomes is usually more expensive to check since the area has to be fully generated to verify that the biome doesn't generate later on in the generation. When you don't mix biome inclusions and exclusions, the search can usually be aborted earlier. If you want to have a large ocean area I would also suggest running the exclude condition at scale 1:256 to avoid the later
I'm guessing you are using an older version.
Indeed, there seems to be an issue with the pre-1.16 village generation.
World spawn cannot always be determined exactly by cubiomes since it requires a check for actual grass blocks rather than testing the biomes. So the spawn point position should always be regarded with a grain of salt. In very unfortunate circumstances the spawn point can up to 1000+ blocks off.
I'll have a look.
Checked and the ruined portal at (0, 16) for seed 1173469177906729972 in 1.18.2 seems to indeed fail to generate.
This is a known issue, that also affects woodland mansions to a lesser degree, and is described in the cubiomes readme as well as in the description for the conditions. Unfortunately, Mojang has made it much more difficult to determine when these fail to generate. |
Exact relative structure dependencies often end up restricting the lower 20 bits of the seed. The quad-hut search actually utilizes this to precompute a list of candidates. (I described this a little better over here.) I suppose it might be useful to expose an option for this to the user. Full bitwise control is not really necessary for this.
The biome generation for 1.17- and for 1.18+ are completely different and have totally different optimization potential. Generation in 1.18 is much slower, but you can (or rather have to) generate each position individually. So the exclusion filter generates positions one after the other, and aborts when an excluded biome is found. Cubiomes optimizes which positions are checked first so the exclusion can be determined more quickly. For 1.17- the layered generation has to finish the whole area before an accurate assessment can be made for the biome exclusion. This will be more or less independent on the number of biomes that you exclude. On the other hand, the inclusion of different biomes can be a lot faster in 1.17- since the generation can be aborted at early layers when the required dependencies are not met. It might be possible to also do at least some checks on early layers for exclusions, but currently cubiomes has no specific optimizations for this. However, you can chain multiple conditions for exclusions at different scales, starting with the largest. This is not 100% accurate, since you will falsely skip some seeds, but it simulates to some extent the optimizations that are done for the inclusions. |
It seems there are actually a bunch of things going on here. On the surface the algorithm for village placement has not changed since forever (except for adding more variants), and Cubiomes (as well as other tools like Chunkbase and KaptainWutax's FeatureUtils as far as I can tell) assumed this to be the case. But it turns out villages had plenty of subtle changes.
These changes have been added to cubiomes, and will be in a cubiome-viewer release in the near future.
Portals can generate in all biomes with no terrain restrictions and thus generation attempts should not fail. This is a bug in the MC code that cubiomes cannot emulate. When there are underground biomes, the game can get confused about the biome variant it chooses for the portal. The way in which this happens I suspect that there are also places with two or more ruined portals in the same chunk... |
Patch v2.2.2 should have fixed many of the structure generation issues outlined here. Spawn, ruined_portals, desert_pyramids, jungle_temples and mansions remain inaccurate to varying degrees due to block-level or surface height dependencies, and will not be fixed (any time soon). |
Village still have some inaccuracies in Patch v2.2.2. Hope there isn't structure changes in a subversion. |
I checked, and these villages fail to generate because they contain no actual houses. The starting piece can generate, but the first and only house is not in a valid biome which aborts the entire generation. I don't think cubiomes will support testing for this case, since it requires simulating the full village house generation. |
1) fixed broken system theme on linux since last version (#140) 2) fixed map artifacts at a large zoom (#135) 3) fixed UI freeze when using 48-bit block search with strongly restrictive conditions (#145) 4) fixed analysis of condition trigger not giving proper insight about its activation 5) changed area input to allow flipped coodinates (#133) 6) changed seed type indicator so it is hidden for number input (#149) 7) changed the default scale at which structures are visible so they show up on a coordinate reset (#112) 8) added customization option for the scale at which structures become visible 9) added map loading indicator 10) added "ignore reference" option to exclude the source instance in relative conditions 11) added match-any biome search for 1.17- (#130) 12) added NOT logic gate helper condition (#138) 13) added quick access to biome color editor and structure zoom to preferences dialog
The match-any option has been expanded to support 1.17 and below. |
Closing in favor of #154, since most of the issues outlined here have been addressed. |
My friend mooing_cowmilk has used cubiomes a lot and had some suggestions and bugs to report so I posted it for him here:
(also sorry if I shouldn't have posted this all in one issue)
Feature requests:
-"Match Any" feature for biomes on as many versions as possible (ie pre-1.18)
-Or feature for structures (I want a village or igloo, maybe I just don't know how to use OR logic gate)
-noise search for older versions? (or heightmap search)
-Sub type option for structure (example: igloo with basement, bastion type, etc)
-bit search? As in I know some of the hex that needs to be fixed, but searches the rest.
(this speeds up certain searches if you know the results only happen when certain hex are a value)
Edits:
-make ctrl+c when in matching seed copy a single seed and not the whole list
(or make it when you press on the seed at the top it defaults to highlight seed)
-multi structure combo (example: I want two different villages within x range but both have a ruined portal)
-only x biomes, for example if one only wants ocean biomes to cover the full area, one has to
exclude every other biome leading to a very slow biome check (57 biomes to check instead of like 6)
Bugs:
-When asking for find A then B at A, it only checks the first A it finds and not each A
(this might be fixed already)
-Wrong village gen
seed: 677791744091383061 on 1.15 thinks village @ spawn
seed: -7132857384767862461 on 1.8.9 thinks village @ spawn
-Wrong Spawnpoint:
seed: 869274373 on 1.0 thinks -20, 196 when actually -188, 64
-End Gateway locations are wrong in 1.16 (seed: 1 @ /tp @p -1085 ~ -403 exist but not to cubiomes)
-Wrong ruined portal:
seeds: 6121517793503351804
1173469177906729972 on 1.18.2 thinks there is one but not
-Desert temple/ jungle temples don't generate sometimes 1.18+ due to too low terrain but cubiomes doesn't check this?
The text was updated successfully, but these errors were encountered: