This datapack is a system I devised to scan chunks as they load, check what biome it is, and randomly pick from a pool of possible structures to spawn. Essentially, it allows for new structures to be added to the world generation relatively efficiently, which might be one of the craziest thing a datapack could possibly do. I started this datapack kinda as a personal challenge, but I wanted to make sure to push myself to release it in a polished state as modded in buildings aren't something players get to enjoy as often in these new version of the game & this pack also makes it easy for players to add their own through modular packs.
No modloader needed due to being a datapack, working in the latest versions of Minecraft Java Edition 1.15+, designed to be modular which allows for other players to make and share their own pack modules, and the frequency of structure spawns can be adjusted through an in-game menu!
- Short Trailer -
- Technical Overview Of Changes In Version 0.9 vs v0.8 -
- Download the Base pack and all the Module packs you want to install, the Base pack should come with a Read Me that includes the full installation instructions.
- Currently only Mega Mix is available as a Module for the pack, so download that.
- Installing the Datapack is as simple as dragging and dropping the unzipped Base pack and all of the Modules you want to install into your save file's "datapacks" folder, then opening the world in-game, typing /reload, and following the in-chat information. Cheats need to be enabled.
Also, to avoid complications make sure that the folder names for your Modules are alphabetically listed after the Base pack.
- You can install new modular packs at any time, just remember to type /reload into chat after modifying which are installed.
- There is also a video tutorial for how to install, which includes a little bit of troubleshooting help:
How To Create Pack Modules:
- The first step is to download the pack prefab I made: (MediaFire Download)
- This prefab will be the basis for what is needed for your module to play nice with my generator once plugged in.
- The next step is to read the tutorial & tips files that are inside the prefab's folder, these should contain all the info you need to get started on making a pack, keep in mind the limitations of what you can design are only as limited as what you can manage to do with commands. I was able to create procedural dungeons & flying islands with commands, so if you know what you are doing those limitations shouldn't be so bad.
- Completely optional, but you can also download this Debug pack, when installed it will generate pillars for every biome and it can give you a good idea for where and how commonly different biomes spawn: (MediaFire Download)
- If you have structures saved as Structure Block files but don't want to put the work into making a full pack, message me a link to your structure files with some information about how you want them to spawn and I'll add them into a Community Pack down the road!
- Also if you want, you can watch this 50 minute extensive tutorial I made which covers a lot of the same stuff the text files do, it's messy and likely not worth your time as I'm not good at these kinds of videos, but it's there if visuals help make sense of what you need to do.
Don't forget to post here/tell me when you've made a module so I can add a link to it in the list of them.
Why is it only version 0.93? Mostly because I consider it to still be beta and in need of testing, I have only tested LAN multiplayer with 1 person for a short while & I'm sure I'll find more improvements and optimizations down the road.
Current Features:
- Overworld, Nether & End chunks scanning & biome detecting.
- Full biome detection, 116 total when including custom Sky & Cave biomes.
- Seamless Module Pack Installation.
- Nether Portal & Teleportation will not break the generator.
- Allows for as many modular packs as a player installs.
- Scales to render distance.
- In-Game configuration menu including increasing/decreasing spawn chances & protecting chunks from spawning new structures.
To Do:
- Utilize Jigsaw blocks in my personal packs.
- Look into the new 1.16 datapack settings, it might be possible to put some structures directly into world gen finally?
v1.0 Progress Reports:
8/11/2020 - Small update v0.93. Pack no longer removes all forceloaded chunks every tick. That was a messy old method.
7/28/2020 - Released version 0.92, this officially contains the new cave and sky biome settings but doesn't yet utilize it for more than changing spawning frequency of the existing structures, no ice or desert caves in my Mega Mix pack yet. This version contains the new huge fortress structure, I take heavy pride in how well they came out.
7/12/2020 - Another hotfix, somehow made a mistake that didn't break 1.16 but broke 1.16.1. Currently re-balancing the spawn frequencies in Mega Mix as a break from working on the huge fortress, the fortress is nearly complete and mostly just needs interior decorating.
6/28/2020 - Uploaded hotfix v0.91 to fix bug and allow for 1.16 compatibility.
Also getting back to working on adding a few new structures to Mega Mix including a HUGE dungeon.
Added Biomes Region value to allow for Sky and Cave structures to vary without needing variations for every single biome, just a small handful of climate regions. Likely going to be v0.92.
v0.9 Progress Reports:
4/29/2020 - All my structures are updated, new structures added in, new tutorials complete, just need to make a new trailer video but that can wait. Releasing the pack!
2/25/2020 - Pack v0.9 is basically done, just need to update the prefab module and my own module packs. I've replaced the old linear-slice chunk scanning system with a new outward-spiral scanning system which scans a consistent number of chunks per second to avoid the massive lag of high render distances, this system also shuffles between players in multiplayer seemingly about 30% faster than the older system? Still need to test server stuff. It can slow down a lot on servers over 4 players still.
All the biomes are now added in, Overworld, End, and Nether, I've even prepped it with the new 1.16 biomes, which I haven't tested but it also doesn't break the 1.15 version of the pack so it's fine. Let's see what else... also fixed some block tag issues? Oh, and there is now a check that should stop it from running with no players logged in to a server.
2/25/2020 - Latest work I managed to do included some optimization, 1.15 has some weird lag issues with datapacks but the current optimization trick I added compensates for this decently. In the process of creating this optimizatoin method I also finally found a way to allow pack modules to be installed seamlessly without needing a "pack pool" file, this should make the next version of the pack as user friendly as I always wanted.
Downside: Only one structure gets spawned per tick, however this downside can only really be seen if the game is lagging heavy and needs to catch up on structures to spawn, or if you have the generator set to spawn an unholy number of structures. This downside is also an upside because it means the pack lags the game less often and it is what allows for the seamless pack modules.
2/13/2020 - With the time I've had to work on the pack I've created what I think should be all the needed predicate files and I've made decent progress wiring them in, I currently have the Land biomes working and have fully upgraded my Debug pack and am using it to test quality and accuracy so far so good. Along with testing I've also added several more biomes to the list upping the total from 104 to 110, extra stuff Minecraft doesn't have biomes for like rivers biomes on land or the edges of deserts & snow biomes where you might not want your dungeon to spawn and awkwardly overlap outside of the theming.
Next up, wiring in Ocean, Sky, and Cave biomes, luckily now I've already done most of the work for these due to having written the predicates & updated the Debug pack. No idea when the update will be done, but I sure hope it wont take too long... here I go updating a version behind again as 1.16 comes out before this is done lol.
1/30/2020 - I have researched predicates and have begun optimizing the pack for 1.15 with them. The pack's biome count/accuracy looks to be taking a huge jump from 43 to 104 while at the same time gaining optimization. This is a huge step forward for the pack and I guess it's time for me to start writing those I think 81 predicate files for this.
Due to caves not being biomes in Minecraft's biome list (yet?) along with sky heights and various other things like nether oceans aren't yet biomes I still need to run a little bit of my own biome detection, but besides that it's mostly predicates now checking which biome the generator entity is in. Really nice.
For optimization perspective, the old block-detecting system for land biomes needed to run roughly between 100 to upwards of 900ish commands, this new system lowers that down to 20 maxing out at 70 from what I can tell so far. Crazy huge optimization WHILE also increasing the accuracy to 100% matching the game's biomes.
Don't forget, if you make a module of your own, inform me so I can add a link to it in the list.
Been looking for some structure datapacks to play around with. I assume this isn't using predicates since it is for 1.14?. Do you intend to eventually optimize it for 1.15?
Also maybe provide a file that includes all your structure packs and datapack together already init so people that don't intend to add more packs don't have to go into any files?
For 1.15 specific optimization I definitely need to do some research, there's always new commands and changes to keep up with and I haven't looked too much into it as this pack was admittedly almost ready for release before 1.15 released. Taking a look at predicates, I will definitely want to research more into these as they do look very nice and I wouldn't be surprised if I could do things with them that further vastly optimize the pack.
Having a pre-install would actually be wise... Ah crud I was thinking of doing that and it slipped my mind didn't it? Post edited with one. What a silly oversight on my part.
In the long run I want to find a method for installing modular datapacks that doesn't require them to be installed manually, who knows maybe there is some amazing function I missed that'd do what I need, but my only current lead I've experimented with involved giving entities scores or tags and having the modules detect and do their thing if their specific entity got picked but I'm having issues with this method being unstable currently so I settled on the hard way for now unfortunately.
Edit: I just looked more into predicates and discovered it has a way to check biomes, and it has what looks like a number randomizer? Here I spent a bunch of time brainstorming and optimizing until I got a 4 command pseudorandomizer, and spend an extra long amount of time using block detection to guess biomes, and the next version of the game to come out apparently makes all this waaaay easier lol.
That's always the case with new version drops haha. I have been running your datapack with all your build packs on my test server that runs my in-dev RPG datapack. If you'd like to check it out shoot me a PM with your IGN so I could whitelist you. They mesh really well.
Also, just realized- is it a glitch or do we have the same join date on this site?
I'll shoot you a PM, though no promises that I'll get a chance to check it out as I can get quite busy. I should give it a look though, I've been very curious how it runs in multiplayer but don't have many good options to try it (only tested it once with someone in LAN). That's actually something I want to improve in v0.9 as right now I think the most I did for the pack was an @r selection for who it runs at each tick... this luckily means it wont get any more inefficient the more players are on a server, but it does mean with enough players it might shuffle them slow enough to start spawning structures too close to players.
I can at least improve this by adding a "round robin" type sorting to replace the randomness, so it wastes less time on repeats, but I'm scared to run it targeted at multiple players at a time just because the work the pack has to do is so heavy as-is. Gotta preserve them server tick milliseconds.
That is pretty funny if we joined around the same time, though granted I have an old account from 2011 that I couldn't figure out how to access now that the forums seem to require a Twitch log in.
Yea I also have an older account but I forgot the login information lol. Mind if I link your datapack as a compatible datapack listed on my datapack's post on the Datapack Center?
That should be fine! I should actually look into posting the pack places like that, I did design it to as best as possible play nice with other datapacks so I should look into what other packs it can and cannot work alongside.
Some v0.9 progress report type news I figure I'd share:
I have researched predicates and have begun optimizing the pack for 1.15 with them. The pack's biome count/accuracy looks to be taking a huge jump from 43 to 104 while at the same time gaining optimization. This is a huge step forward for the pack and I guess it's time for me to start writing those I think 81 predicate files for this.
Due to caves not being biomes in Minecraft's biome list (yet?) along with sky heights and various other things like nether oceans aren't yet biomes I still need to run a little bit of my own biome detection, but besides that it's mostly predicates now checking which biome the generator entity is in. Really nice.
For optimization perspective, the old block-detecting system for land biomes needed to run roughly between 100 to upwards of 900ish commands, this new system lowers that down to 20 maxing out at 70 from what I can tell so far. Crazy huge optimization WHILE also increasing the accuracy to 100% matching the game's biomes.
So far so good, also looking into micro-optimizations in sections where predicate "or" conditions can consolidate multiple checks into one and such.
Ah! Sorry for the late reply, settings for individual structures could be difficult (at least in a user friendly way) however it would be relatively easy for me to create a mini variant pack that either gets added to the pack pool, or could simply be drag-and-dropped into the folder overwriting the existing islands with bigger islands. It is tempting to do this with the patches of palm trees too as a forest of them would be neat.
1.15 Progress report time: With the time I've had to work on the pack I've created what I think should be all the needed predicate files and I've made decent progress wiring them in, I currently have the Land biomes working and have fully upgraded my Debug pack and am using it to test quality and accuracy so far so good. Along with testing I've also added several more biomes to the list upping the total from 104 to 110, extra stuff Minecraft doesn't have biomes for like rivers biomes on land or the edges of deserts & snow biomes where you might not want your dungeon to spawn and awkwardly overlap outside of the theming.
Next up, wiring in Ocean, Sky, and Cave biomes, luckily now I've already done most of the work for these due to having written the predicates & updated the Debug pack. No idea when the update will be done, but I sure hope it wont take too long... here I go updating a version behind again as 1.16 comes out before this is done lol.
Looking forward to the optimized release. I'm trying to play it alongside other datapacks and am running into a lot of lag. Does it generate structures all in one tick, or overtime as players explore the land?
I'm going to be looking into better ways of dividing it up between multiple ticks, if I recall right now it will do an entire East to West slice all in one tick, but the next slice happens a tick later. I realized after a while that this method will definitely increase the load the larger the render distance increases, but not only that for some reason while 1.15 is optimized in a lot of ways datapacks seem to chug in strange ways in that version.
Building a system for scanning the world and picking chunks to place structures can be pretty hard to balance between efficiency and accuracy, even worse when the end result is an entire building being structure-block'd into the world which at least in my current 1.15 tests might be where the majority of the slowdown happens. I think I may be able to solve a lot of problems by having the scanner work normally, while building a system that makes the structures themselves divvy up and spawn only max one per tick, interestingly my idea for this may also allow pack modules to be installed seamlessly?
That sounds great. I am also having trouble optimizing my pack when it scans blocks. Right now, I individually check blocks around the player to see if they match a block I want to replace, and if it matches it, executes at the block. I want to eventually make this into a chunk scanner instead of checking blocks around the player (which I do ever so often as the player moves). 1.15 does seem somewhat slower than 1.14 sometimes with my datapack. Hope its not really the case.
I've been gone from Minecraft for a while and am just coming back into it. I'm a big fan of structures and have a world full of random structures that I'd love to be able to spread around a world.
I don't understand a lot of the technical side of Minecraft, though, and have no idea what datapacks are or how to use them, but I'd love to be able to use something like this to see some of my stuff randomly spread across a world, or even to send some of my structures your way for you to use in your pack.
All that to say, this looks very cool and I'm definitely interested!
First off: big fan, love it, really adds a dash of flavor to the world and most importantly (from my view as an admin) the loot isn't overpowered like it is in so many datapacks and plugins.
As for the matter at hand: I am running into an issue where I get repeat generation at 0 ~ 0, over time, as I re-enter the area I find that stacks of sky islands end up getting spawned along with every other structure possible. It might be something I'm doing, (I am running a lot of stuff on this test) but, its happening.
I suppose I could let the generator generate the initial structure at 0 0 and then protect those chunks to prevent it from stacking up more as a work around.
Oh wow, that's an odd one... I can somewhat understand why it might be happening, though it definitely shouldn't be happening. I store a few entities at 0 128 0 for a slight efficiency gain of re-using them instead of spawning new ones, I'll need to check again but I don't recall seeing this bug happen in any of my own test worlds. If buildings are repeatedly spawning at 0 ~ 0 that means somehow the entities either aren't being moved to the correct location, or are somehow being triggered to run after being returned to 0 128 0...? Very bizarre.
Are you running any other datapacks? Mine should be designed to play nice with others, but I can't guarantee others are designed to play nice with mine.
(As a side positive note unrelated to this that I just wanted to mention, I finally made a breakthrough which will make packs be able to seamlessly be installed without needing to edit that "pack pool" file, so whenever I can finish v0.9 packs from then on should be more user friendly.)
Yeah, as you'll see I am trying to jam a lot of stuff together so that might be causing some breaks :T I have had one other problem popping up with the mega mix though and its this;
[18:51:49] [Server thread/INFO]: Reloading ResourceManager: Default, CaveBiomesConfig_v1.1.0c, Crabtures Mega Mix Pre Installed v0_8, Ships v9 for [1.15.1], better_outpost_v1.1, bukkit, cavebiomes-v1-1-1, datapackutilities-v2-1-2, fossil_dungeons, illager-fortresses-v5-for-1-15-1.zip, improved_village.zip, outpost.zip, woodland_mansion_v2.zip
[18:52:08] [Server-Worker-1/ERROR]: Couldn't read block tag list structures_crabmaster:ignore_detection from structures_crabmaster:tags/blocks/ignore_detection.json in data pack Crabtures Mega Mix Pre Installed v0_8
com.google.gson.JsonParseException: Unknown value 'minecraft:standing_sign'
at net.minecraft.server.v1_15_R1.Tag$a.c(SourceFile:146) ~[patched_1.15.2.jar:git-Purpur-437]
at java.util.Optional.orElseThrow(Unknown Source) ~[?:1.8.0_221]
at net.minecraft.server.v1_15_R1.Tag$a.a(SourceFile:146) ~[patched_1.15.2.jar:git-Purpur-437]
at net.minecraft.server.v1_15_R1.Tags.a(SourceFile:98) ~[patched_1.15.2.jar:git-Purpur-437]
at java.util.concurrent.CompletableFuture$AsyncSupply.run(Unknown Source) ~[?:1.8.0_221]
at java.util.concurrent.CompletableFuture$AsyncSupply.exec(Unknown Source) ~[?:1.8.0_221]
at java.util.concurrent.ForkJoinTask.doExec(Unknown Source) ~[?:1.8.0_221]
at java.util.concurrent.ForkJoinPool$WorkQueue.runTask(Unknown Source) ~[?:1.8.0_221]
at java.util.concurrent.ForkJoinPool.runWorker(Unknown Source) ~[?:1.8.0_221]
at java.util.concurrent.ForkJoinWorkerThread.run(Unknown Source) ~[?:1.8.0_221]
[18:52:09] [Server thread/INFO]: Loaded 6 recipes
Huh, it appears one of the block tag collections isn't valid. Seems I'm probably using an outdated value for signs, though checking the wiki it appears "minecraft:standing_sign" is for bedrock edition so that's kinda odd? You don't happen to be trying to run this in Bedrock? I haven't yet gone through to see what inconsistencies between Java and Bedrock datapacks I need to fix (if datapacks are even a thing for Bedrock? I haven't checked that either oops.)
Either way, "Crabtures Mega Mix Pre Installed v0_8/data/structures_crabmaster/tags/blocks/ignore_detection.json" may be an outdated file in the pack anyway, I can't recall where or if I use it so there is an off chance you miiiight be able to delete it without problem? Maaaybe?
I'll make cleaning up those files another task before releasing v0.9 in hopes of avoiding errors like this. I wish I had more time to work on it.
Running on Java 1.15.2, using purpur (a fork of Paper)
Hey, No worries Big thanks for your hard work. Side note: I keep running into that Feature-Stacking issue at 0, 0 I am going to do some testing to see if it happens when I run a world with only Crab's Structure Generator (CSG). I have a suspicion that it might be caused by the plugin I am using to generate the world chunks (I am using Chunkmaster (https://www.spigotmc.org/resources/chunkmaster.71351/)
Question: Does CSG generate structures as chunks are generated (and thus, can they be pre-generated with something like Chunkmaster?) Or, does it generate them in a radius around a player (This is how ICY's Cave Biomes datapack works - cave biomes cannot be generated in advance with a chunk generating plugin, at least not one I've found yet)
I wonder if Chunkmaster is causing structures to not get removed from 0,0 as it generates the world, basically, either because the server is running low on memory, or for some other reason.
Due to the limitations of datapacks this kind of datapack does indeed rely on a radius around a player, if Mojang gave datapacks the ability to run once per chunk load I'd switch to that method in a heartbeat but currently the method runs outward from the player until it reaches the edge of the loaded chunks. I have only tested this in Singleplayer and LAN, so I hadn't considered the possibility of what it might do on a server with no players logged in? Maybe I need to double check to ensure it wont run commands if there isn't a player to target.
I did get a chance to do some testing in Singleplayer, with no other packs or plugins installed it doesn't appear to happen so either the next version I'm working on fixes it or it is a multiplayer issue I don't currently have the best way of testing. If it is just a glitch from no players being logged on that may be easily fixable.
This datapack is a system I devised to scan chunks as they load, check what biome it is, and randomly pick from a pool of possible structures to spawn. Essentially, it allows for new structures to be added to the world generation relatively efficiently, which might be one of the craziest thing a datapack could possibly do. I started this datapack kinda as a personal challenge, but I wanted to make sure to push myself to release it in a polished state as modded in buildings aren't something players get to enjoy as often in these new version of the game & this pack also makes it easy for players to add their own through modular packs.
No modloader needed due to being a datapack, working in the latest versions of Minecraft Java Edition 1.15+, designed to be modular which allows for other players to make and share their own pack modules, and the frequency of structure spawns can be adjusted through an in-game menu!
More Screenshots (From My Modules):
Downloads & Pack Modules:
The Base Pack - Required for everything to work: (MediaFire Download)
Mega Mix - Recommended Download, all of my structures in one pack: (MediaFire Download)
Combined Base + Mega Mix Download can be found on Planet Minecraft Page.
My Seperate Pack Modules:
Biome Towers - Simple towers for every biome: (Returning Eventually?)
Procedural Places - Randomly generated dungeons & biomes: (Returning Eventually?)
Misc Buildings - Anything else that doesn't fit those themes: (Returning Eventually?)
Community Compilation Pack:
Looking for contributors!
Modules Made By Others:
None yet, please tell me if you end up making one so I can link it here!
Legacy 1.14 compatible v0.8: (MediaFire Download)
How To Install:
- Download the Base pack and all the Module packs you want to install, the Base pack should come with a Read Me that includes the full installation instructions.
- Currently only Mega Mix is available as a Module for the pack, so download that.
- Installing the Datapack is as simple as dragging and dropping the unzipped Base pack and all of the Modules you want to install into your save file's "datapacks" folder, then opening the world in-game, typing /reload, and following the in-chat information. Cheats need to be enabled.
Also, to avoid complications make sure that the folder names for your Modules are alphabetically listed after the Base pack.
- You can install new modular packs at any time, just remember to type /reload into chat after modifying which are installed.
- There is also a video tutorial for how to install, which includes a little bit of troubleshooting help:
How To Create Pack Modules:
- The first step is to download the pack prefab I made: (MediaFire Download)
- This prefab will be the basis for what is needed for your module to play nice with my generator once plugged in.
- The next step is to read the tutorial & tips files that are inside the prefab's folder, these should contain all the info you need to get started on making a pack, keep in mind the limitations of what you can design are only as limited as what you can manage to do with commands. I was able to create procedural dungeons & flying islands with commands, so if you know what you are doing those limitations shouldn't be so bad.
- Completely optional, but you can also download this Debug pack, when installed it will generate pillars for every biome and it can give you a good idea for where and how commonly different biomes spawn: (MediaFire Download)
- If you have structures saved as Structure Block files but don't want to put the work into making a full pack, message me a link to your structure files with some information about how you want them to spawn and I'll add them into a Community Pack down the road!
- Also if you want, you can watch this 50 minute extensive tutorial I made which covers a lot of the same stuff the text files do, it's messy and likely not worth your time as I'm not good at these kinds of videos, but it's there if visuals help make sense of what you need to do.
Don't forget to post here/tell me when you've made a module so I can add a link to it in the list of them.
- Look into the new 1.16 datapack settings, it might be possible to put some structures directly into world gen finally?
v1.0 Progress Reports:
8/11/2020 - Small update v0.93. Pack no longer removes all forceloaded chunks every tick. That was a messy old method.
7/28/2020 - Released version 0.92, this officially contains the new cave and sky biome settings but doesn't yet utilize it for more than changing spawning frequency of the existing structures, no ice or desert caves in my Mega Mix pack yet. This version contains the new huge fortress structure, I take heavy pride in how well they came out.
7/12/2020 - Another hotfix, somehow made a mistake that didn't break 1.16 but broke 1.16.1.
Currently re-balancing the spawn frequencies in Mega Mix as a break from working on the huge fortress, the fortress is nearly complete and mostly just needs interior decorating.
6/28/2020 - Uploaded hotfix v0.91 to fix bug and allow for 1.16 compatibility.
Also getting back to working on adding a few new structures to Mega Mix including a HUGE dungeon.
Added Biomes Region value to allow for Sky and Cave structures to vary without needing variations for every single biome, just a small handful of climate regions. Likely going to be v0.92.
v0.9 Progress Reports:
2/25/2020 - Pack v0.9 is basically done, just need to update the prefab module and my own module packs. I've replaced the old linear-slice chunk scanning system with a new outward-spiral scanning system which scans a consistent number of chunks per second to avoid the massive lag of high render distances, this system also shuffles between players in multiplayer seemingly about 30% faster than the older system? Still need to test server stuff. It can slow down a lot on servers over 4 players still.
All the biomes are now added in, Overworld, End, and Nether, I've even prepped it with the new 1.16 biomes, which I haven't tested but it also doesn't break the 1.15 version of the pack so it's fine. Let's see what else... also fixed some block tag issues? Oh, and there is now a check that should stop it from running with no players logged in to a server.
2/25/2020 - Latest work I managed to do included some optimization, 1.15 has some weird lag issues with datapacks but the current optimization trick I added compensates for this decently. In the process of creating this optimizatoin method I also finally found a way to allow pack modules to be installed seamlessly without needing a "pack pool" file, this should make the next version of the pack as user friendly as I always wanted.
Downside: Only one structure gets spawned per tick, however this downside can only really be seen if the game is lagging heavy and needs to catch up on structures to spawn, or if you have the generator set to spawn an unholy number of structures. This downside is also an upside because it means the pack lags the game less often and it is what allows for the seamless pack modules.
2/13/2020 - With the time I've had to work on the pack I've created what I think should be all the needed predicate files and I've made decent progress wiring them in, I currently have the Land biomes working and have fully upgraded my Debug pack and am using it to test quality and accuracy so far so good. Along with testing I've also added several more biomes to the list upping the total from 104 to 110, extra stuff Minecraft doesn't have biomes for like rivers biomes on land or the edges of deserts & snow biomes where you might not want your dungeon to spawn and awkwardly overlap outside of the theming.
Next up, wiring in Ocean, Sky, and Cave biomes, luckily now I've already done most of the work for these due to having written the predicates & updated the Debug pack. No idea when the update will be done, but I sure hope it wont take too long... here I go updating a version behind again as 1.16 comes out before this is done lol.
1/30/2020 - I have researched predicates and have begun optimizing the pack for 1.15 with them. The pack's biome count/accuracy looks to be taking a huge jump from 43 to 104 while at the same time gaining optimization. This is a huge step forward for the pack and I guess it's time for me to start writing those I think 81 predicate files for this.
Due to caves not being biomes in Minecraft's biome list (yet?) along with sky heights and various other things like nether oceans aren't yet biomes I still need to run a little bit of my own biome detection, but besides that it's mostly predicates now checking which biome the generator entity is in. Really nice.
For optimization perspective, the old block-detecting system for land biomes needed to run roughly between 100 to upwards of 900ish commands, this new system lowers that down to 20 maxing out at 70 from what I can tell so far. Crazy huge optimization WHILE also increasing the accuracy to 100% matching the game's biomes.
Been looking for some structure datapacks to play around with. I assume this isn't using predicates since it is for 1.14?. Do you intend to eventually optimize it for 1.15?
Also maybe provide a file that includes all your structure packs and datapack together already init so people that don't intend to add more packs don't have to go into any files?
For 1.15 specific optimization I definitely need to do some research, there's always new commands and changes to keep up with and I haven't looked too much into it as this pack was admittedly almost ready for release before 1.15 released. Taking a look at predicates, I will definitely want to research more into these as they do look very nice and I wouldn't be surprised if I could do things with them that further vastly optimize the pack.
Having a pre-install would actually be wise... Ah crud I was thinking of doing that and it slipped my mind didn't it? Post edited with one. What a silly oversight on my part.
In the long run I want to find a method for installing modular datapacks that doesn't require them to be installed manually, who knows maybe there is some amazing function I missed that'd do what I need, but my only current lead I've experimented with involved giving entities scores or tags and having the modules detect and do their thing if their specific entity got picked but I'm having issues with this method being unstable currently so I settled on the hard way for now unfortunately.
Edit: I just looked more into predicates and discovered it has a way to check biomes, and it has what looks like a number randomizer? Here I spent a bunch of time brainstorming and optimizing until I got a 4 command pseudorandomizer, and spend an extra long amount of time using block detection to guess biomes, and the next version of the game to come out apparently makes all this waaaay easier lol.
That's always the case with new version drops haha. I have been running your datapack with all your build packs on my test server that runs my in-dev RPG datapack. If you'd like to check it out shoot me a PM with your IGN so I could whitelist you. They mesh really well.
Also, just realized- is it a glitch or do we have the same join date on this site?
I'll shoot you a PM, though no promises that I'll get a chance to check it out as I can get quite busy. I should give it a look though, I've been very curious how it runs in multiplayer but don't have many good options to try it (only tested it once with someone in LAN). That's actually something I want to improve in v0.9 as right now I think the most I did for the pack was an @r selection for who it runs at each tick... this luckily means it wont get any more inefficient the more players are on a server, but it does mean with enough players it might shuffle them slow enough to start spawning structures too close to players.
I can at least improve this by adding a "round robin" type sorting to replace the randomness, so it wastes less time on repeats, but I'm scared to run it targeted at multiple players at a time just because the work the pack has to do is so heavy as-is. Gotta preserve them server tick milliseconds.
That is pretty funny if we joined around the same time, though granted I have an old account from 2011 that I couldn't figure out how to access now that the forums seem to require a Twitch log in.
Yea I also have an older account but I forgot the login information lol. Mind if I link your datapack as a compatible datapack listed on my datapack's post on the Datapack Center?
That should be fine! I should actually look into posting the pack places like that, I did design it to as best as possible play nice with other datapacks so I should look into what other packs it can and cannot work alongside.
Some v0.9 progress report type news I figure I'd share:
I have researched predicates and have begun optimizing the pack for 1.15 with them. The pack's biome count/accuracy looks to be taking a huge jump from 43 to 104 while at the same time gaining optimization. This is a huge step forward for the pack and I guess it's time for me to start writing those I think 81 predicate files for this.
Due to caves not being biomes in Minecraft's biome list (yet?) along with sky heights and various other things like nether oceans aren't yet biomes I still need to run a little bit of my own biome detection, but besides that it's mostly predicates now checking which biome the generator entity is in. Really nice.
For optimization perspective, the old block-detecting system for land biomes needed to run roughly between 100 to upwards of 900ish commands, this new system lowers that down to 20 maxing out at 70 from what I can tell so far. Crazy huge optimization WHILE also increasing the accuracy to 100% matching the game's biomes.
So far so good, also looking into micro-optimizations in sections where predicate "or" conditions can consolidate multiple checks into one and such.
downloaded this about 12 hours ago, has added that tiny bit extra crispiness to my world, im having loads of fun!
i wish in future updates that maybe you can add an option for sizes of sky islands? i personally think that would be a mad idea
Ah! Sorry for the late reply, settings for individual structures could be difficult (at least in a user friendly way) however it would be relatively easy for me to create a mini variant pack that either gets added to the pack pool, or could simply be drag-and-dropped into the folder overwriting the existing islands with bigger islands. It is tempting to do this with the patches of palm trees too as a forest of them would be neat.
1.15 Progress report time: With the time I've had to work on the pack I've created what I think should be all the needed predicate files and I've made decent progress wiring them in, I currently have the Land biomes working and have fully upgraded my Debug pack and am using it to test quality and accuracy so far so good. Along with testing I've also added several more biomes to the list upping the total from 104 to 110, extra stuff Minecraft doesn't have biomes for like rivers biomes on land or the edges of deserts & snow biomes where you might not want your dungeon to spawn and awkwardly overlap outside of the theming.
Next up, wiring in Ocean, Sky, and Cave biomes, luckily now I've already done most of the work for these due to having written the predicates & updated the Debug pack. No idea when the update will be done, but I sure hope it wont take too long... here I go updating a version behind again as 1.16 comes out before this is done lol.
Looking forward to the optimized release. I'm trying to play it alongside other datapacks and am running into a lot of lag. Does it generate structures all in one tick, or overtime as players explore the land?
I'm going to be looking into better ways of dividing it up between multiple ticks, if I recall right now it will do an entire East to West slice all in one tick, but the next slice happens a tick later. I realized after a while that this method will definitely increase the load the larger the render distance increases, but not only that for some reason while 1.15 is optimized in a lot of ways datapacks seem to chug in strange ways in that version.
Building a system for scanning the world and picking chunks to place structures can be pretty hard to balance between efficiency and accuracy, even worse when the end result is an entire building being structure-block'd into the world which at least in my current 1.15 tests might be where the majority of the slowdown happens. I think I may be able to solve a lot of problems by having the scanner work normally, while building a system that makes the structures themselves divvy up and spawn only max one per tick, interestingly my idea for this may also allow pack modules to be installed seamlessly?
That sounds great. I am also having trouble optimizing my pack when it scans blocks. Right now, I individually check blocks around the player to see if they match a block I want to replace, and if it matches it, executes at the block. I want to eventually make this into a chunk scanner instead of checking blocks around the player (which I do ever so often as the player moves). 1.15 does seem somewhat slower than 1.14 sometimes with my datapack. Hope its not really the case.
I've been gone from Minecraft for a while and am just coming back into it. I'm a big fan of structures and have a world full of random structures that I'd love to be able to spread around a world.
I don't understand a lot of the technical side of Minecraft, though, and have no idea what datapacks are or how to use them, but I'd love to be able to use something like this to see some of my stuff randomly spread across a world, or even to send some of my structures your way for you to use in your pack.
All that to say, this looks very cool and I'm definitely interested!
First off: big fan, love it, really adds a dash of flavor to the world and most importantly (from my view as an admin) the loot isn't overpowered like it is in so many datapacks and plugins.
As for the matter at hand: I am running into an issue where I get repeat generation at 0 ~ 0, over time, as I re-enter the area I find that stacks of sky islands end up getting spawned along with every other structure possible. It might be something I'm doing, (I am running a lot of stuff on this test) but, its happening.
I suppose I could let the generator generate the initial structure at 0 0 and then protect those chunks to prevent it from stacking up more as a work around.
Oh wow, that's an odd one... I can somewhat understand why it might be happening, though it definitely shouldn't be happening. I store a few entities at 0 128 0 for a slight efficiency gain of re-using them instead of spawning new ones, I'll need to check again but I don't recall seeing this bug happen in any of my own test worlds. If buildings are repeatedly spawning at 0 ~ 0 that means somehow the entities either aren't being moved to the correct location, or are somehow being triggered to run after being returned to 0 128 0...? Very bizarre.
Are you running any other datapacks? Mine should be designed to play nice with others, but I can't guarantee others are designed to play nice with mine.
(As a side positive note unrelated to this that I just wanted to mention, I finally made a breakthrough which will make packs be able to seamlessly be installed without needing to edit that "pack pool" file, so whenever I can finish v0.9 packs from then on should be more user friendly.)
Yeah, as you'll see I am trying to jam a lot of stuff together so that might be causing some breaks :T I have had one other problem popping up with the mega mix though and its this;
Huh, it appears one of the block tag collections isn't valid. Seems I'm probably using an outdated value for signs, though checking the wiki it appears "minecraft:standing_sign" is for bedrock edition so that's kinda odd? You don't happen to be trying to run this in Bedrock? I haven't yet gone through to see what inconsistencies between Java and Bedrock datapacks I need to fix (if datapacks are even a thing for Bedrock? I haven't checked that either oops.)
Either way, "Crabtures Mega Mix Pre Installed v0_8/data/structures_crabmaster/tags/blocks/ignore_detection.json" may be an outdated file in the pack anyway, I can't recall where or if I use it so there is an off chance you miiiight be able to delete it without problem? Maaaybe?
I'll make cleaning up those files another task before releasing v0.9 in hopes of avoiding errors like this. I wish I had more time to work on it.
Running on Java 1.15.2, using purpur (a fork of Paper)
Hey, No worries Big thanks for your hard work. Side note: I keep running into that Feature-Stacking issue at 0, 0 I am going to do some testing to see if it happens when I run a world with only Crab's Structure Generator (CSG). I have a suspicion that it might be caused by the plugin I am using to generate the world chunks (I am using Chunkmaster (https://www.spigotmc.org/resources/chunkmaster.71351/)
Question: Does CSG generate structures as chunks are generated (and thus, can they be pre-generated with something like Chunkmaster?) Or, does it generate them in a radius around a player (This is how ICY's Cave Biomes datapack works - cave biomes cannot be generated in advance with a chunk generating plugin, at least not one I've found yet)
I wonder if Chunkmaster is causing structures to not get removed from 0,0 as it generates the world, basically, either because the server is running low on memory, or for some other reason.
Due to the limitations of datapacks this kind of datapack does indeed rely on a radius around a player, if Mojang gave datapacks the ability to run once per chunk load I'd switch to that method in a heartbeat but currently the method runs outward from the player until it reaches the edge of the loaded chunks. I have only tested this in Singleplayer and LAN, so I hadn't considered the possibility of what it might do on a server with no players logged in? Maybe I need to double check to ensure it wont run commands if there isn't a player to target.
I did get a chance to do some testing in Singleplayer, with no other packs or plugins installed it doesn't appear to happen so either the next version I'm working on fixes it or it is a multiplayer issue I don't currently have the best way of testing. If it is just a glitch from no players being logged on that may be easily fixable.