Mojira Archive
MC-264886

Geode features ignore the invalid_blocks field

The bug

Geode features do not use the block tag from the invalid_blocks field, and instead always use the #minecraft:geode_invalid_blocks tag.

How to reproduce

Create a new world using the attached data pack. The data pack adds #minecraft:base_stone_overworld to #geode_invalid_blocks, but configures geodes to use an empty block tag (instead of #minecraft:geode_invalid_blocks) for its list of invalid blocks.

Expected behavior

Geodes should be generated, as they are configured by the data pack to use an empty block tag as their invalid block list.

Observed behavior

Geodes are not generated, since #geode_invalid_blocks (modified by the data pack to include stone, deepslate, etc.) is still being used (instead of the provided empty block tag).

Code analysis

1.20.1 with MCP-Reborn

net.minecraft.world.level.levelgen.feature.GeodeFeature.place

for(int i1 = 0; i1 < k; ++i1) {
   int j1 = geodeconfiguration.outerWallDistance.sample(randomsource);
   int k1 = geodeconfiguration.outerWallDistance.sample(randomsource);
   int l1 = geodeconfiguration.outerWallDistance.sample(randomsource);
   BlockPos blockpos1 = blockpos.offset(j1, k1, l1);
   BlockState blockstate = worldgenlevel.getBlockState(blockpos1);
   if (blockstate.isAir() || blockstate.is({*}BlockTags.GEODE_INVALID_BLOCKS{*})) {
     ++l;
     if (l > geodeconfiguration.invalidBlocksThreshold) {
       return false;
     }
   }
   list.add(Pair.of(blockpos1, geodeconfiguration.pointOffset.sample(randomsource)));
}

Changing BlockTags.GEODE_INVALID_BLOCKS to geodeconfiguration.geodeBlockSettings.invalidBlocks should fix the issue.

Fixed

Apollo

[Mojang] TommyWallberg

2023-08-17, 12:28 AM

2024-07-23, 08:18 AM

2024-07-23, 08:18 AM

4

4

Confirmed

Normal

Platform

World generation

custom-worldgen, world-generation

1.20.1, 23w32a

24w33a