GeyserMC / Geyser

A bridge/proxy allowing you to connect to Minecraft: Java Edition servers with Minecraft: Bedrock Edition.
https://geysermc.org
MIT License
4.61k stars 660 forks source link

Custom Grass/Leaf colors #3645

Open DUDEbehindDUDE opened 1 year ago

DUDEbehindDUDE commented 1 year ago

What feature do you want to see added?

In Java edition, the color of grass, leaves, and I believe water as well can be defined in custom biomes. Currently, grass and leaf colors of new biomes added by datapacks/mods aren't reflected in bedrock. This is really apparent in some datapacks such as Terralith. For example, here is Terralith's "moonlight grove" on Java vs how it looks on Bedrock: image image

Here is another comparison between Java and Bedrock respectively in the "forested highlands" biome (also from Terralith) with the temperate highlands in the background: image image

Water color also probably has the same problem too, but I haven't tested that.

Are there any alternatives?

Resource packs, maybe? But I don't know where to begin on this.

Kas-tle commented 1 year ago

Honestly I'm not entirely sure about this. For leaf colors, there's not much we can do at this time. Perhaps we could do some weirdness with custom blocks for the leaf colors, though this would be quite specialized and likely require some sort of extension if we ever did allow it. See https://github.com/GeyserMC/Geyser/pull/3505.

For water color, this would require more investigation. Though it seems water color is sent over the network for biomes, I am not entirely sure the client respects this. For reference, over the network these currently look like:

{
  "bamboo_jungle": {
    "ash": 0.0f,
    "blue_spores": 0.0f,
    "depth": 0.1f,
    "downfall": 0.9f,
    "height": 0.2f,
    "minecraft:climate": {
      "ash": 0.0f,
      "blue_spores": 0.0f,
      "downfall": 0.9f,
      "red_spores": 0.0f,
      "snow_accumulation_max": 0.125f,
      "snow_accumulation_min": 0.0f,
      "temperature": 0.95f,
      "white_ash": 0.0f
    },
    "minecraft:overworld_generation_rules": {
      "extended_edge_transformation": [
        {
          "condition": "{"all_of":[{"operator":1,"subject":0,"test":"has_biome_tag","value":"jungle"},{"operator":1,"subject":0,"test":"has_biome_tag","value":"ocean"},{"any_of":[{"operator":1,"subject":0,"test":"has_biome_tag","value":"forest"},{"operator":0,"subject":0,"test":"has_biome_tag","value":"cold"},{"operator":0,"subject":0,"test":"has_biome_tag","value":"hills"},{"operator":0,"subject":0,"test":"has_biome_tag","value":"mega"},{"operator":0,"subject":0,"test":"has_biome_tag","value":"mutated"},{"operator":0,"subject":0,"test":"has_biome_tag","value":"birch"}]}]}
          ",
          "min_passing_neighbors": 1i,
          "transforms_into": [
            {
              "biome": "jungle_edge",
              "weight": 1i
            }
          ]
        }
      ],
      "hills_transformation": [
        {
          "biome": "bamboo_jungle_hills",
          "weight": 1i
        }
      ]
    },
    "name_hash": "bamboo_jungle",
    "rain": 1b,
    "red_spores": 0.0f,
    "tags": [
      "animal",
      "bamboo",
      "jungle",
      "monster",
      "overworld"
    ],
    "temperature": 0.95f,
    "waterColorA": 0.65f,
    "waterColorB": 0.7725491f,
    "waterColorG": 0.63529414f,
    "waterColorR": 0.078431375f,
    "waterTransparency": 0.65f,
    "white_ash": 0.0f
  }
}

However, confusingly there is also a file called biome_client.json that ships with the vanilla resources and seems to contain, among other things, water surface color. See https://github.com/Mojang/bedrock-samples/blob/main/resource_pack/biomes_client.json.

So I would say grass and leaf colors is missing client feature, while water might be doable with some investigation (though if it's defined through biomes_client.json we'd either have to generate a resource pack on the fly or the server would need to provide one).

Camotoy commented 1 year ago

Yes, water colors are definitely possible (I have some very old proof-of-concept code for it). I am also not aware of leaf/grass colors being customizable on Bedrock, so I never bothered moving forward with the water color support.

Wildhooray commented 3 months ago

Maybe Geyser auto creating a texterpack when the server checks the datapacks and sees custom biome mappings.