Jump to content

Recommended Posts

Posted (edited)

Hey :)

 

I'm trying to make a custom biome and so far it's going pretty great. I need some help with the surface rules. 
https://prnt.sc/XOYbI89RvBzg This is what the mountains look like. I want to have a smoother transition betewen grass and stone and between stone and snow, optimally I would like to have snow only at the top 10 blocks or something like that.
I'm assuming I have to use some noise_threshold for the smoother transitions, but I don't know how to quite do that.
And for top 10 blocks of the biome, I also can't find something. I found the y block check with the anchor "below_top", but apparently that is relative to the building limit.
So... that's my problem. I'm hoping someone can help me, thanks in advance :)

 

https://github.com/robinroloff/alpinemod/

Edited by Robin Roloff
Included github repo link
Posted

I'm assuming you are using the Terrablender API for this (if not please tell me how you added a new biome to the Overworld without that, since it looks like that's the only way 🤣).
Anyway you coul always look at how vanilla does declare these Surface Rules, specifically the one for the mountain biomes (I think they are actually defined in the JSON file, but from the code you can get an idea of how these conditions works).

One condition I can think would be interesting is the SurfaceRules.VerticalGradientConditionSource condition. Judging from the name you can guess that this is the condition used to create some gradients. For instance, if we look at the Overworld noise settings file (worldgen/noise_settings/overworld.json), this is used to generate the Bedrock layer at the bottom of the World and make it transitioning from Bedrock to Deepslate to not have it flat
 

{
  "type": "minecraft:condition",
    "if_true": {
      "type": "minecraft:vertical_gradient",
        "false_at_and_above": {
          "above_bottom": 5
        },
          "random_name": "minecraft:bedrock_floor",
            "true_at_and_below": {
              "above_bottom": 0
            }
    },
      "then_run": {
        "type": "minecraft:block",
          "result_state": {
            "Name": "minecraft:bedrock"
          }
      }
}

And a similar condition is also applied to generate the Deepslate transition from Stone starting from Y level 8 to Y level 0 (notice the "false_at_and_above" and "true_at_and_below" properties)

{
  "type": "minecraft:condition",
    "if_true": {
      "type": "minecraft:vertical_gradient",
        "false_at_and_above": {
          "absolute": 8
        },
          "random_name": "minecraft:deepslate",
            "true_at_and_below": {
              "absolute": 0
            }
    },
      "then_run": {
        "type": "minecraft:block",
          "result_state": {
            "Name": "minecraft:deepslate",
              "Properties": {
                "axis": "y"
              }
          }
      }
}

So starting from this you can get an idea of how to create smooth transitions between your "biome layers".  Now, to generate blocks only at the top 10 blocks of the biome right now I can't think about any vanilla biome that does a similar thing, but maybe looking at how the Badlands or the Snowy Slope biome are constructed may be a good ay to follow

Don't blame me if i always ask for your help. I just want to learn to be better :)

Posted
10 hours ago, JimiIT92 said:

I'm assuming you are using the Terrablender API for this (if not please tell me how you added a new biome to the Overworld without that, since it looks like that's the only way 🤣).
Anyway you coul always look at how vanilla does declare these Surface Rules, specifically the one for the mountain biomes (I think they are actually defined in the JSON file, but from the code you can get an idea of how these conditions works).

One condition I can think would be interesting is the SurfaceRules.VerticalGradientConditionSource condition. Judging from the name you can guess that this is the condition used to create some gradients. For instance, if we look at the Overworld noise settings file (worldgen/noise_settings/overworld.json), this is used to generate the Bedrock layer at the bottom of the World and make it transitioning from Bedrock to Deepslate to not have it flat
 

{
  "type": "minecraft:condition",
    "if_true": {
      "type": "minecraft:vertical_gradient",
        "false_at_and_above": {
          "above_bottom": 5
        },
          "random_name": "minecraft:bedrock_floor",
            "true_at_and_below": {
              "above_bottom": 0
            }
    },
      "then_run": {
        "type": "minecraft:block",
          "result_state": {
            "Name": "minecraft:bedrock"
          }
      }
}

And a similar condition is also applied to generate the Deepslate transition from Stone starting from Y level 8 to Y level 0 (notice the "false_at_and_above" and "true_at_and_below" properties)

{
  "type": "minecraft:condition",
    "if_true": {
      "type": "minecraft:vertical_gradient",
        "false_at_and_above": {
          "absolute": 8
        },
          "random_name": "minecraft:deepslate",
            "true_at_and_below": {
              "absolute": 0
            }
    },
      "then_run": {
        "type": "minecraft:block",
          "result_state": {
            "Name": "minecraft:deepslate",
              "Properties": {
                "axis": "y"
              }
          }
      }
}

So starting from this you can get an idea of how to create smooth transitions between your "biome layers".  Now, to generate blocks only at the top 10 blocks of the biome right now I can't think about any vanilla biome that does a similar thing, but maybe looking at how the Badlands or the Snowy Slope biome are constructed may be a good ay to follow

It seems like I've forgotten to include my repo link... sorry. Yes I am using TerraBlender. I've included the link in the main post now.
Anyway: Thanks for your help, I will see if I get something to work :)

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Unfortunately, your content contains terms that we do not allow. Please edit your content to remove the highlighted words below.
Reply to this topic...

×   Pasted as rich text.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Announcements



  • Recently Browsing

    • No registered users viewing this page.
  • Posts

    • Im trying to build my mod using shade since i use the luaj library however i keep getting this error Reason: Task ':reobfJar' uses this output of task ':shadowJar' without declaring an explicit or implicit dependency. This can lead to incorrect results being produced, depending on what order the tasks are executed. So i try adding reobfJar.dependsOn shadowJar  Could not get unknown property 'reobfJar' for object of type org.gradle.api.internal.artifacts.dsl.dependencies.DefaultDependencyHandler. my gradle file plugins { id 'eclipse' id 'idea' id 'maven-publish' id 'net.minecraftforge.gradle' version '[6.0,6.2)' id 'com.github.johnrengelman.shadow' version '7.1.2' id 'org.spongepowered.mixin' version '0.7.+' } apply plugin: 'net.minecraftforge.gradle' apply plugin: 'org.spongepowered.mixin' apply plugin: 'com.github.johnrengelman.shadow' version = mod_version group = mod_group_id base { archivesName = mod_id } // Mojang ships Java 17 to end users in 1.18+, so your mod should target Java 17. java.toolchain.languageVersion = JavaLanguageVersion.of(17) //jarJar.enable() println "Java: ${System.getProperty 'java.version'}, JVM: ${System.getProperty 'java.vm.version'} (${System.getProperty 'java.vendor'}), Arch: ${System.getProperty 'os.arch'}" minecraft { mappings channel: mapping_channel, version: mapping_version copyIdeResources = true runs { configureEach { workingDirectory project.file('run') property 'forge.logging.markers', 'REGISTRIES' property 'forge.logging.console.level', 'debug' arg "-mixin.config=derp.mixin.json" mods { "${mod_id}" { source sourceSets.main } } } client { // Comma-separated list of namespaces to load gametests from. Empty = all namespaces. property 'forge.enabledGameTestNamespaces', mod_id } server { property 'forge.enabledGameTestNamespaces', mod_id args '--nogui' } gameTestServer { property 'forge.enabledGameTestNamespaces', mod_id } data { workingDirectory project.file('run-data') args '--mod', mod_id, '--all', '--output', file('src/generated/resources/'), '--existing', file('src/main/resources/') } } } sourceSets.main.resources { srcDir 'src/generated/resources' } repositories { flatDir { dirs './libs' } maven { url = "https://jitpack.io" } } configurations { shade implementation.extendsFrom shade } dependencies { minecraft "net.minecraftforge:forge:${minecraft_version}-${forge_version}" implementation 'org.luaj:luaj-jse-3.0.2' implementation fg.deobf("com.github.Virtuoel:Pehkui:${pehkui_version}") annotationProcessor 'org.spongepowered:mixin:0.8.5:processor' minecraftLibrary 'luaj:luaj-jse:3.0.2' shade 'luaj:luaj-jse:3.0.2' } // Example for how to get properties into the manifest for reading at runtime. tasks.named('jar', Jar).configure { manifest { attributes([ 'Specification-Title' : mod_id, 'Specification-Vendor' : mod_authors, 'Specification-Version' : '1', // We are version 1 of ourselves 'Implementation-Title' : project.name, 'Implementation-Version' : project.jar.archiveVersion, 'Implementation-Vendor' : mod_authors, 'Implementation-Timestamp': new Date().format("yyyy-MM-dd'T'HH:mm:ssZ"), "TweakClass" : "org.spongepowered.asm.launch.MixinTweaker", "TweakOrder" : 0, "MixinConfigs" : "derp.mixin.json" ]) } rename 'mixin.refmap.json', 'derp.mixin-refmap.json' } shadowJar { archiveClassifier = '' configurations = [project.configurations.shade] finalizedBy 'reobfShadowJar' } assemble.dependsOn shadowJar reobf { re shadowJar {} } publishing { publications { mavenJava(MavenPublication) { artifact jar } } repositories { maven { url "file://${project.projectDir}/mcmodsrepo" } } }  
    • All versions of Minecraft Forge suddenly black screen even without mods (tried reinstalling original Minecraft, Java, updating drivers doesn't work)
    • When i join minecraft all ok, when i join world all working fine, but when i open indentity menu, i get this The game crashed whilst unexpected error Error: java.lang.NullPointerException: Cannot invoke "top.ribs.scguns.common.Gun$Projectile.getDamage()" because "this.projectile" is null crash report here https://paste.ee/p/0vKaf
  • Topics

×
×
  • Create New...

Important Information

By using this site, you agree to our Terms of Use.