# This file contains all of the information needed for creating
# new ore property presets. For any questions not answered here,
# feel free to open a new thread on GitHub or join us on Discord
# at https://discord.gg/UNsXfvA.
{
  # This is the actual name of the ore that you are creating or
  # modifying. It will be what you type in the block registry.
  name: tutorial_ore

  # This is the name of the mod to which the ore belongs. If you
  # are creating creating your own ore using OSV, it may be
  # easier to omit this field altogether. It will technically
  # default to "minecraft," but when using resource locations in
  # the config file, "minecraft" is already the default namespace.
  # Because it is implicit, you never need to type it.
  mod: custom

  # This category contains all of the information regarding this
  # block's basic information. See Block.Properties in-code.
  block: {
    
    # This ore's resource location, i.e. technically
    # "minecraft:coal_ore."
    location: coal_ore

    # This ore's material. These are standard vanilla materials
    # with support for 2 or 3 of them being excluded.
    # Ignored when background imitation is enabled.
    material: rock

    # Whether this block entity movement.
    blocksMovement: true

    # The type of sound produced by this block.
    # Ignored when background imitation is enabled.
    soundType: stone

    # The amount of light produced by this block. 0-15.
    light: 0

    # This block's explosion resistance value.
    resistance: 15.0

    # This block's hardness value. Affects break time.
    hardness: 3.0

    # Whether mining this ore requires a tool. When background
    # imitation is enabled, this setting is determined by the
    # background block.
    requiresTool: true

    # Whether this block should have guaranteed random block
    # updates.
    ticksRandomly: false

    # This block's slipperiness. 0.6 is normal. Lower -> faster
    # movement.
    slipperiness: 0.6

    # A multiple of how fast a player should go when walking on
    # this ore type.
    speedFactor: 1.0

    # A multiple of how high a player should jump when walking on
    # this ore type.
    jumpFactor: 1.0

    # Whether these properties belong to a solid block.
    isSolid: true

    # Whether this ore type should be treated as air.
    isAir: false

    # The harvest level required for collecting this block.
    level: 1

    # The type of tool used for mining this block.
    # Ignored when background imitation is enabled.
    tool: pickaxe

    # Whether this block can change opacity.
    variableOpacity: false

    # A custom translation key to use for this type. Leave this field
    # absent if you do not want to define it.
    translationKey: null

    # Whether to copy original item and block tags for this ore type.
    copyTags: true

    # Whether this ore is allowed to spawn as a dense variant.
    # Dense variants will still exist in-game, but not spawn.
    # In particular, this is useful when using a given property
    # type inside of a `container` object.
    canBeDense: true
  }

  # This category contains all of the properties regarding this
  # block's textures.
  texture: {

    # The condensed path of the original texture. This is typed
    # as a resource location, so technically "block/coal_ore"
    # translates to "assets/minecraft/textures/block/coal_ore."
    original: block/coal_ore

    # The background texture used for extracting an overlay from
    # "original." It is also typed as a resource location.
    background: block/stone

    # Whether to use the fancier, "shaded" texture variants.
    # Pick whichever you like most for this block.
    shade: true

    # A decimal value representing the threshold of difference
    # between background and foreground accepted as an ore pixel.
    # Usually 0-3. If the standard algorithm does not work, you
    # can define this field and a different algorithm will be used.
    # *You do not need to use this field in most cases*
    threshold: null
  }

  # All of the properties pertaining to furnace recipes.
  recipe: {

    # The item produced when smelting these ores.
    result: coal

    # The amount of experience yielded.
    xp: 0.1

    # The amount of time it takes to yield an output.
    time: 200

    # The optional recipe group used by this ore type.
    # Allows multiple blocks to share the same recipes.
    group: groupNameHere
  }

  # This is either a resource location pointing to a loot
  # table, or an actual, raw loot table json. All of the
  # properties can be listed here directly, if you find that
  # easier or want to create something from scratch without
  # needing a resource pack.
  # blocks/coal_ore -> data/minecraft/loot_tables/blocks/...
  loot: blocks/coal_ore

  # An array of nested property types that can spawn inside
  # of this ore. Use this to create new kinds of variants,
  # like poor ores, or have diamond spawn inside of coal ore
  # with an extremely rare chance.
  nested: [
    {
      # The name of a different property type that can spawn
      # inside of this ore.
      type: null

      # The 0 ~ 1 chance that this variant will spawn instead
      # of the parent.
      chance: 0.09

      # Whether this nested property type must exist. If this
      # setting is enabled and the nested type is not found,
      # the game will crash *when the world loads*.
      required: false
    }
  ]

  # An array of conditions under which this block can generate.
  gen: [
    {
      # A range of heights, i.e. 0 to 128.
      height: [ 0 , 128 ]

      # The size of the ore vein spawned.
      size: 20

      # The number of tries per chunk to spawn clusters.
      # May also be written as [ 17, 17 ] to specify a range.
      count: 17

      # The 0-1 chance that any try will succeed.
      chance: 1.0

      # The decoration stage when this feature will generate.
      # Possible values include: RAW_GENERATION, LAKES,
      # LOCAL MODIFICATIONS, UNDERGROUND_STRUCTURES, SURFACE_STRUCTURES
      # STRONGHOLDS, UNDERGROUND_ORES, UNDERGROUND_DECORATION,
      # VEGETAL_DECORATION, and TOP_LAYER_MODIFICATION.
      # Not case sensitive.
      stage: VEGETAL_DECORATION

      # Whether to treat the biome lists as blacklists.
      blacklistBiomes: false

      # All of the biomes in which these conditions can be met.
      biomes: {
        
        # An array of biome categories from which to retrieve biome
        # names.
        # Tip: list all Nether or End biomes with NETHER or THE_END.
        # Not case sensitive.
        types: []

        # Raw biome registry names to be used.
        names: []
      }

      # Overrides `nested` specifically for these settings.
      # Use this to have different nested types in different
      # altitudes, biomes, or dimensions.
      nested: null
    }
  ]
}
