Customization - AstralOrdana/Immersive-Weathering GitHub Wiki

The mod is highly configurable and includes many ways to customize it. This page will tell you how!

If something here isn't working, please come ask about it in the Discord server

Configs

Many aspects of the mod can be toggled or disabled; this is mostly handled by config files. All configs are commented with descriptions that explain what they do, so check those out by finding yours to see what options are available for the version you have.

There are two ways to view and edit configs:

Use a Configs Mod

Install Configured or Cloth Config to edit configs from the in-game menus. (This is often the easier option for people new to tinkering with how their mods work, or who want a more convenient interface.)

Edit the Files Directly

Config files can also be opened with a text editor, such as Visual Studio Code (or even Notepad or TextEdit).

The two config files for Immersive Weathering are named immersive_weathering-client.toml (which changes visual and audio options only) and immersive_weathering-common.toml (which changes the mod's mechanics).

If you are looking for the config files, those will be in a folder within the instance folder (something like Minecraft/Instances/[Instance Name]/config). In the CurseForge app you can open the instance folder by clicking the three vertical dots (⋮) icon and selecting "Open Folder" from the dropdown.

image A screenshot of the dropdown menu in the CurseForge app showing where to find the "Open Folder" option

Datapacks

Be warned: the sections below will go very in-depth since those will cover as much of this system as possible. If you find yourself lost, you can bring questions, comments, or suggestions on how to improve this wiki to the Discord server for the mod.

Datapacks are a powerful Vanilla tool that exposes in-game internals through an easy-to-use interface that allows players to change many aspects of the game through simple text (.json) files. Datapacks are the server-side equivalent of resource packs that change mechanical aspects of the game (the "data") rather than visual and audio aspects of the game (the "assets").

If you have never made a datapack for Minecraft before, there are many tutorials online. The basic process is to create a folder and fill it up with text files in the right location and with the right format and file extensions (mainly .mcmeta and .json).

The easiest way to make sure you have the right folder structure and files is to base your datapack on the one included in the mod itself. To view the built-in datapack, unpack the mod's .jar file using WinRar or by changing the file extension to .zip and unzipping it, and then open the data folder. You can then directly copy that and create your own datapack starting from there. You will only need to keep the files you edited in your new pack.

You can also view many of the files contained in the mod's datapack in the GitHub repository here: https://github.com/AstralOrdana/Immersive-Weathering/tree/1.19.2-multiloader/common/src/main/resources/data However, these may be different from the version you currently have installed.

The built-in Immersive Weathering datapacks contain vanilla information (including worldgen and loot tables), compatibility files, and also folders for the two unique systems added by this mod, both fully Data-Driven and thus entirely customizable: block growths and fluid generators.

Next, we'll go in-depth into what each entry of the .json files for those types that are unique to Immersive Weathering; block growths and fluid generators

Notes:

  • Jsons will often have optional values, these will be denoted with [o]
  • Not every single variation will be touched on here, so it is still better to defer to the built-in datapack

Fluid Generators

  • Located in data/immersive_weathering/fluid_generators
  • These .json files are used to define custom fluid behaviors.
  • You can use files here to:
    • Create new cobblestone-generator-like behaviors for any arbitrary fluid or condition, similar to the included Fluid Generators
    • Disable included fluid generators (WIP)

Here is an example of how you could structure a fluid generator file to make a vanilla Cobblestone generator:

{
  "adjacent_blocks": {
    "sides": [
      {
        "block_state": {
          "Properties": {
            "bites": "0"
          },
          "Name": "minecraft:cake"
        },
        "predicate_type": "minecraft:blockstate_match"
      }
    ],
    "up": {
      "block_state": {
        "Name": "minecraft:glass"
      },
      "predicate_type": "minecraft:blockstate_match"
    }
  },
  "fluid": "minecraft:lava",
  "generate": {
    "Name": "minecraft:acacia_log",
    "Properties": {
      "axis": "y"
    }
  }
}

Parameters

  • type: can be either target_self, used for behavior where the fluid itself will turn into something else or target_other where the fluid will instead make a neighboring block turn into something else
  • fluid: the fluid which will have this behavior
  • generates: what blockstate will be placed
  • adjacent_blocks: exclusive to the target_self type. Contains a map of rule tests (from vanilla, see its official wiki) whose keys can be sides, up, down or any. In practice these will be checks that will be run on thei neighboring blocks and will determine if this behavior will generate or not. Note that sides and any are not a single object but a list of rule tests which will all have to be met
  • target: exclusive to the target_other type. Contains a rule test that will determine which block this behavior targets
  • [o] additional_checks: contains a list of position tests (see block growth section) which can add additional checks to this behavior
  • [o] priority: self explanatory, allows some behavior to run before others in case both conditions are met

Block Growths

  • Located in data/immersive_weathering/block_growths
  • These jsons are used to define custom tick behaviors that blocks can run. These can for example happen from random tick, rain tick, lightning strike...
  • In a nutshell block growths are certain behavior which mainly happen at random and which cause other block to get placed/replaced from an original source block which has run this behavior

World Generation

Because worldgen files are part of vanilla Minecraft, we won't go into detail here. Instead, the following sections are an outline of where to find the files and some resources you may find helpful in editing those:

Configured Feature

  • Located in data/immersive_weathering/worldgen/configured_feature
  • Contains information on how the actual feature looks
  • To disable the generation of a specific feature in the mod in every biome (no longer working as of the latest MC and IW versions, sorry!):
{
  "feature": "immersive_weathering:FEATURE_NAME",
  "placement": [
    {
     "type": "minecraft:no_op",
     "config": {}
    }
  ]
}
  • Replace FEATURE_NAME with the name of the feature (for example dry_lakebed)
  • Save it with the filename of the feature you wish to replace (for example, dry_lakebed.json) in the Configured Feature folder

Placed Feature

  • Located in data/immersive_weathering/worldgen/placed_feature
  • Determine how often and where a feature spawns within the allowed biomes

Biome Placement

  • Biome tags for Immersive Weathering are defined in data\immersive_weathering\tags\worldgen\biome
  • Add to or overwrite these tags to change what biomes different features appear in

Noise-Based Count

This works like Perlin noise, except that everywhere you see black, a feature can spawn. The following notes relate back to this concept:

  • noise_to_count_ratio - how scattered the placement is; if you increase the noise to count ratio, then stuff can start to spawn also in gray but never in white and when black you get 2 spawn chances instead of 1
  • noise_factor will zoom in the noise, making for wider black and white peaks and valleys resulting in areas with features and areas with none whatsoever
  • noise_offset shifts values up and down, so black becomes less black and white more white

Rarity Filter

If you want a precise change to spawn per chunk, use this instead of Noise Based Count