Started by
CobraLily19
on
Topic category: Troubleshooting, bugs, and solutions
I have 4 end biomes that take up too much space in the end and don't allow vanilla end biomes, and when I put them to the default value of 1, they sandwich together messily. I am using Nerdy's End plugin and I am currently on Mcreator 2024.4. Thanks!
continuing where i left off yesterday, the vanilla end biomes that make up the outer islands are actually sub biomes. what i did was i turned 3 of the 4 sub biomes into unique, individual biomes, leaving 1 to be just the "vanilla end biome". you'll want each of the biome files as well to modify the sky colors and add particle effects, as well as add chorus plant generation to the rest of the outer end biomes. in the file "end.json" which i mentioned yesterday, if you look through it you should see something that says ||"temperature": 0,|| replace that with
"temperature": {"type": "minecraft:shifted_noise",
"noise": "minecraft:temperature",
"shift_x": "minecraft:shift_x",
"shift_y": 0,
"shift_z": "minecraft:shift_z",
"xz_scale": 0.25,
"y_scale": 0
},
this will allow the biome generation to have a bit of variation in size, shape, and position instead of the basic vanilla ringed generation. the central island will remain as "the_end" biome.
a bit below that you should see something called ||"surface_rule": {...|| with a big sequence of code underneath. this is where modifying the surface cover material takes place, which can be quite confusing and easy to mess up. ill get to that if you want to use this method and set up everything else ive mentioned so far.
when i say surface cover i mean like grass blocks and stuff to clarify
Yo I apologize for the late response I was on vacation, but thank you for this! I'll update you if I need help with the surface rules ig.
By the way, I don't know if this is important but, I want my biomes to be rare (Which I can already do) but when they do spawn, they are like really massive, almost like gargantuan oasis in the barren end. Kinda like Alex's Cave's biome gen for example.
Ok I'm on the surface rules part, but it doesn't seem to be lots of code underneath for me... I am guessing I replace "minecraft:block" with my mod namespace and my block name of choice.
"surface_rule": {"type": "minecraft:block",
"result_state": {
"Name": "minecraft:end_stone"
}
there isn't much there initially because the end doesn't utilize any surface gen rules, since there are no surface blocks. implementing the custom biome surface covering can get pretty lengthy, so ill paste a trimmed up example.
"surface_rule": { "type": "minecraft:sequence", "sequence": [ { "type": "minecraft:condition", "if_true": { "type": "minecraft:biome", "biome_is": [ "minecraft:end_highlands" ] }, "then_run": { "type": "minecraft:sequence", "sequence": [ { "type": "minecraft:condition", "if_true": { "type": "minecraft:stone_depth", "surface_type": "floor", "add_surface_depth": false, "secondary_depth_range": 0, "offset": 0 }, "then_run": { "type": "minecraft:sequence", "sequence": [ { "type": "minecraft:condition", "if_true": { "type": "minecraft:water", "offset": -1, "surface_depth_multiplier": 0, "add_stone_depth": false }, "then_run": { "type": "minecraft:block", "result_state": { "Name": "voxels_end_update_mod:veloett_grass" } } }, { "type": "minecraft:block", "result_state": { "Name": "minecraft:end_stone" } } ] } }, { "type": "minecraft:condition", "if_true": { "type": "minecraft:stone_depth", "surface_type": "floor", "add_surface_depth": true, "secondary_depth_range": 0, "offset": 0 }, "then_run": { "type": "minecraft:block", "result_state": { "Name": "minecraft:end_stone" } } } ] } } ] }you can use this for a basis. this will change the top layer block of the specified biome to whatever specified block, in this case here, Veloett Grass.
where the sequence code for the first biome ends, add another below it for the next biome.
repeat this for each of the biomes.
You are the goat!
One more question (could be a really dumb one) but how do you actually apply this to the biomes?
Also one more thing, don't the surface rules from the biome just get applied? Why do we need to use surface rules if we can just use the surface customizer in our biome element?
Also what I meant by apply was like how to apply the entirety of the end.json's settings on the end biome of choice so that the changes also apply?
when custom writing the biomes and dimensions, the ground covering also needs to be applied manually, since the biome file doesn't contain this data, it's the noise settings file that does. also technically with this method, no new biomes are actually added, were simply rewriting and rearranging the vanilla sub-biomes, as they're basically all the same thing.
as long as the "end.json" file is in resources/data/minecraft/worldgen/noise_settings, and each of the biome surface rule sequences are set up properly, you should see all the changes apply.
to add like particle effects and stuff, get the vanilla end biome files and put them in resources/data/minecraft/worldgen/biome
with further modifications, you can actually add more biomes into the End, but doing so will make the Main Island use the outer End's biome gen
do I have to rewrite everything in my biome? (I really hope not)
My problem is not truly with the biome's terrain but where and how it generates. They either take up a lot of space and overwrite vanilla biomes, or they squish together into ugly strips. I want them to be spread apart and rare, but should be really large when the player does find one.
and 1 more thing, I keep getting an error? I probably messed something up but here's the code:
{
"aquifers_enabled": false,
"default_block": {
"Name": "minecraft:end_stone"
},
"default_fluid": {
"Name": "minecraft:air"
},
"disable_mob_generation": true,
"legacy_random_source": true,
"noise": {
"height": 128,
"min_y": 0,
"size_horizontal": 2,
"size_vertical": 1
},
"noise_router": {
"barrier": 0.0,
"continents": 0.0,
"depth": 0.0,
"erosion": {
"type": "minecraft:cache_2d",
"argument": {
"type": "minecraft:end_islands"
}
},
"final_density": {
"type": "minecraft:squeeze",
"argument": {
"type": "minecraft:mul",
"argument1": 0.64,
"argument2": {
"type": "minecraft:interpolated",
"argument": {
"type": "minecraft:blend_density",
"argument": {
"type": "minecraft:add",
"argument1": -0.234375,
"argument2": {
"type": "minecraft:mul",
"argument1": {
"type": "minecraft:y_clamped_gradient",
"from_value": 0.0,
"from_y": 4,
"to_value": 1.0,
"to_y": 32
},
"argument2": {
"type": "minecraft:add",
"argument1": 0.234375,
"argument2": {
"type": "minecraft:add",
"argument1": -23.4375,
"argument2": {
"type": "minecraft:mul",
"argument1": {
"type": "minecraft:y_clamped_gradient",
"from_value": 1.0,
"from_y": 56,
"to_value": 0.0,
"to_y": 312
},
"argument2": {
"type": "minecraft:add",
"argument1": 23.4375,
"argument2": "minecraft:end/sloped_cheese"
}
}
}
}
}
}
}
}
}
},
"fluid_level_floodedness": 0.0,
"fluid_level_spread": 0.0,
"initial_density_without_jaggedness": {
"type": "minecraft:add",
"argument1": -0.234375,
"argument2": {
"type": "minecraft:mul",
"argument1": {
"type": "minecraft:y_clamped_gradient",
"from_value": 0.0,
"from_y": 4,
"to_value": 1.0,
"to_y": 32
},
"argument2": {
"type": "minecraft:add",
"argument1": 0.234375,
"argument2": {
"type": "minecraft:add",
"argument1": -23.4375,
"argument2": {
"type": "minecraft:mul",
"argument1": {
"type": "minecraft:y_clamped_gradient",
"from_value": 1.0,
"from_y": 56,
"to_value": 0.0,
"to_y": 312
},
"argument2": {
"type": "minecraft:add",
"argument1": 23.4375,
"argument2": {
"type": "minecraft:add",
"argument1": -0.703125,
"argument2": {
"type": "minecraft:cache_2d",
"argument": {
"type": "minecraft:end_islands"
}
}
}
}
}
}
}
}
},
"lava": 0.0,
"ridges": 0.0,
"temperature": {
"type": "minecraft:shifted_noise",
"noise": "minecraft:temperature",
"shift_x": "minecraft:shift_x",
"shift_y": 0,
"shift_z": "minecraft:shift_z",
"xz_scale": 0.25,
"y_scale": 0
},
"vegetation": 0.0,
"vein_gap": 0.0,
"vein_ridged": 0.0,
"vein_toggle": 0.0
},
"ore_veins_enabled": false,
"sea_level": 0,
"spawn_target": [],
"surface_rule": {
"type": "minecraft:sequence",
"sequence": [
{
"type": "minecraft:condition",
"if_true": {
"type": "minecraft:biome",
"biome_is": [
"lusher_end:end_ash_plains"
]
},
"then_run": {
"type": "minecraft:sequence",
"sequence": [
{
"type": "minecraft:condition",
"if_true": {
"type": "minecraft:stone_depth",
"surface_type": "floor",
"add_surface_depth": false,
"secondary_depth_range": 0,
"offset": 0
},
"then_run": {
"type": "minecraft:sequence",
"sequence": [
{
"type": "minecraft:condition",
"if_true": {
"type": "minecraft:water",
"offset": -1,
"surface_depth_multiplier": 0,
"add_stone_depth": false
},
"then_run": {
"type": "minecraft:block",
"result_state": {
"Name": "lusher_end:ash_slate"
}
}
},
{
"type": "minecraft:block",
"result_state": {
"Name": "minecraft:end_stone"
}
}
]
}
},
{
"type": "minecraft:condition",
"if_true": {
"type": "minecraft:stone_depth",
"surface_type": "floor",
"add_surface_depth": true,
"secondary_depth_range": 0,
"offset": 0
},
"then_run": {
"type": "minecraft:block",
"result_state": {
"Name": "minecraft:end_stone"
}
}
}
]
}
}
]
}
"surface_rule": {
"type": "minecraft:sequence",
"sequence": [
{
"type": "minecraft:condition",
"if_true": {
"type": "minecraft:biome",
"biome_is": [
"lusher_end:elyium_fields"
]
},
"then_run": {
"type": "minecraft:sequence",
"sequence": [
{
"type": "minecraft:condition",
"if_true": {
"type": "minecraft:stone_depth",
"surface_type": "floor",
"add_surface_depth": false,
"secondary_depth_range": 0,
"offset": 0
},
"then_run": {
"type": "minecraft:sequence",
"sequence": [
{
"type": "minecraft:condition",
"if_true": {
"type": "minecraft:water",
"offset": -1,
"surface_depth_multiplier": 0,
"add_stone_depth": false
},
"then_run": {
"type": "minecraft:block",
"result_state": {
"Name": "lusher_end:end_elyium"
}
}
},
{
"type": "minecraft:block",
"result_state": {
"Name": "minecraft:end_stone"
}
}
]
}
},
{
"type": "minecraft:condition",
"if_true": {
"type": "minecraft:stone_depth",
"surface_type": "floor",
"add_surface_depth": true,
"secondary_depth_range": 0,
"offset": 0
},
"then_run": {
"type": "minecraft:block",
"result_state": {
"Name": "minecraft:end_stone"
}
}
}
]
}
}
]
}
"surface_rule": {
"type": "minecraft:sequence",
"sequence": [
{
"type": "minecraft:condition",
"if_true": {
"type": "minecraft:biome",
"biome_is": [
"lusher_end:end_grove"
]
},
"then_run": {
"type": "minecraft:sequence",
"sequence": [
{
"type": "minecraft:condition",
"if_true": {
"type": "minecraft:stone_depth",
"surface_type": "floor",
"add_surface_depth": false,
"secondary_depth_range": 0,
"offset": 0
},
"then_run": {
"type": "minecraft:sequence",
"sequence": [
{
"type": "minecraft:condition",
"if_true": {
"type": "minecraft:water",
"offset": -1,
"surface_depth_multiplier": 0,
"add_stone_depth": false
},
"then_run": {
"type": "minecraft:block",
"result_state": {
"Name": "lusher_end:end_mud"
}
}
},
{
"type": "minecraft:block",
"result_state": {
"Name": "minecraft:end_stone"
}
}
]
}
},
{
"type": "minecraft:condition",
"if_true": {
"type": "minecraft:stone_depth",
"surface_type": "floor",
"add_surface_depth": true,
"secondary_depth_range": 0,
"offset": 0
},
"then_run": {
"type": "minecraft:block",
"result_state": {
"Name": "minecraft:end_stone"
}
}
}
]
}
}
]
}
"surface_rule": {
"type": "minecraft:sequence",
"sequence": [
{
"type": "minecraft:condition",
"if_true": {
"type": "minecraft:biome",
"biome_is": [
"lusher_end:end_meadows"
]
},
"then_run": {
"type": "minecraft:sequence",
"sequence": [
{
"type": "minecraft:condition",
"if_true": {
"type": "minecraft:stone_depth",
"surface_type": "floor",
"add_surface_depth": false,
"secondary_depth_range": 0,
"offset": 0
},
"then_run": {
"type": "minecraft:sequence",
"sequence": [
{
"type": "minecraft:condition",
"if_true": {
"type": "minecraft:water",
"offset": -1,
"surface_depth_multiplier": 0,
"add_stone_depth": false
},
"then_run": {
"type": "minecraft:block",
"result_state": {
"Name": "lusher_end:end_grass"
}
}
},
{
"type": "minecraft:block",
"result_state": {
"Name": "minecraft:end_stone"
}
}
]
}
},
{
"type": "minecraft:condition",
"if_true": {
"type": "minecraft:stone_depth",
"surface_type": "floor",
"add_surface_depth": true,
"secondary_depth_range": 0,
"offset": 0
},
"then_run": {
"type": "minecraft:block",
"result_state": {
"Name": "minecraft:end_stone"
}
}
}
]
}
}
]
}
}
}
}