minecraft-src/net/minecraft/data/worldgen/StructureSets.java
2025-07-04 01:41:11 +03:00

171 lines
7.5 KiB
Java

package net.minecraft.data.worldgen;
import java.util.List;
import java.util.Optional;
import net.minecraft.core.Holder;
import net.minecraft.core.HolderGetter;
import net.minecraft.core.Vec3i;
import net.minecraft.core.registries.Registries;
import net.minecraft.tags.BiomeTags;
import net.minecraft.world.level.biome.Biome;
import net.minecraft.world.level.levelgen.structure.BuiltinStructureSets;
import net.minecraft.world.level.levelgen.structure.BuiltinStructures;
import net.minecraft.world.level.levelgen.structure.Structure;
import net.minecraft.world.level.levelgen.structure.StructureSet;
import net.minecraft.world.level.levelgen.structure.placement.ConcentricRingsStructurePlacement;
import net.minecraft.world.level.levelgen.structure.placement.RandomSpreadStructurePlacement;
import net.minecraft.world.level.levelgen.structure.placement.RandomSpreadType;
import net.minecraft.world.level.levelgen.structure.placement.StructurePlacement;
public interface StructureSets {
static void bootstrap(BootstrapContext<StructureSet> context) {
HolderGetter<Structure> holderGetter = context.lookup(Registries.STRUCTURE);
HolderGetter<Biome> holderGetter2 = context.lookup(Registries.BIOME);
Holder.Reference<StructureSet> reference = context.register(
BuiltinStructureSets.VILLAGES,
new StructureSet(
List.of(
StructureSet.entry(holderGetter.getOrThrow(BuiltinStructures.VILLAGE_PLAINS)),
StructureSet.entry(holderGetter.getOrThrow(BuiltinStructures.VILLAGE_DESERT)),
StructureSet.entry(holderGetter.getOrThrow(BuiltinStructures.VILLAGE_SAVANNA)),
StructureSet.entry(holderGetter.getOrThrow(BuiltinStructures.VILLAGE_SNOWY)),
StructureSet.entry(holderGetter.getOrThrow(BuiltinStructures.VILLAGE_TAIGA))
),
new RandomSpreadStructurePlacement(34, 8, RandomSpreadType.LINEAR, 10387312)
)
);
context.register(
BuiltinStructureSets.DESERT_PYRAMIDS,
new StructureSet(holderGetter.getOrThrow(BuiltinStructures.DESERT_PYRAMID), new RandomSpreadStructurePlacement(32, 8, RandomSpreadType.LINEAR, 14357617))
);
context.register(
BuiltinStructureSets.IGLOOS,
new StructureSet(holderGetter.getOrThrow(BuiltinStructures.IGLOO), new RandomSpreadStructurePlacement(32, 8, RandomSpreadType.LINEAR, 14357618))
);
context.register(
BuiltinStructureSets.JUNGLE_TEMPLES,
new StructureSet(holderGetter.getOrThrow(BuiltinStructures.JUNGLE_TEMPLE), new RandomSpreadStructurePlacement(32, 8, RandomSpreadType.LINEAR, 14357619))
);
context.register(
BuiltinStructureSets.SWAMP_HUTS,
new StructureSet(holderGetter.getOrThrow(BuiltinStructures.SWAMP_HUT), new RandomSpreadStructurePlacement(32, 8, RandomSpreadType.LINEAR, 14357620))
);
context.register(
BuiltinStructureSets.PILLAGER_OUTPOSTS,
new StructureSet(
holderGetter.getOrThrow(BuiltinStructures.PILLAGER_OUTPOST),
new RandomSpreadStructurePlacement(
Vec3i.ZERO,
StructurePlacement.FrequencyReductionMethod.LEGACY_TYPE_1,
0.2F,
165745296,
Optional.of(new StructurePlacement.ExclusionZone(reference, 10)),
32,
8,
RandomSpreadType.LINEAR
)
)
);
context.register(
BuiltinStructureSets.ANCIENT_CITIES,
new StructureSet(holderGetter.getOrThrow(BuiltinStructures.ANCIENT_CITY), new RandomSpreadStructurePlacement(24, 8, RandomSpreadType.LINEAR, 20083232))
);
context.register(
BuiltinStructureSets.OCEAN_MONUMENTS,
new StructureSet(holderGetter.getOrThrow(BuiltinStructures.OCEAN_MONUMENT), new RandomSpreadStructurePlacement(32, 5, RandomSpreadType.TRIANGULAR, 10387313))
);
context.register(
BuiltinStructureSets.WOODLAND_MANSIONS,
new StructureSet(
holderGetter.getOrThrow(BuiltinStructures.WOODLAND_MANSION), new RandomSpreadStructurePlacement(80, 20, RandomSpreadType.TRIANGULAR, 10387319)
)
);
context.register(
BuiltinStructureSets.BURIED_TREASURES,
new StructureSet(
holderGetter.getOrThrow(BuiltinStructures.BURIED_TREASURE),
new RandomSpreadStructurePlacement(
new Vec3i(9, 0, 9), StructurePlacement.FrequencyReductionMethod.LEGACY_TYPE_2, 0.01F, 0, Optional.empty(), 1, 0, RandomSpreadType.LINEAR
)
)
);
context.register(
BuiltinStructureSets.MINESHAFTS,
new StructureSet(
List.of(
StructureSet.entry(holderGetter.getOrThrow(BuiltinStructures.MINESHAFT)), StructureSet.entry(holderGetter.getOrThrow(BuiltinStructures.MINESHAFT_MESA))
),
new RandomSpreadStructurePlacement(
Vec3i.ZERO, StructurePlacement.FrequencyReductionMethod.LEGACY_TYPE_3, 0.004F, 0, Optional.empty(), 1, 0, RandomSpreadType.LINEAR
)
)
);
context.register(
BuiltinStructureSets.RUINED_PORTALS,
new StructureSet(
List.of(
StructureSet.entry(holderGetter.getOrThrow(BuiltinStructures.RUINED_PORTAL_STANDARD)),
StructureSet.entry(holderGetter.getOrThrow(BuiltinStructures.RUINED_PORTAL_DESERT)),
StructureSet.entry(holderGetter.getOrThrow(BuiltinStructures.RUINED_PORTAL_JUNGLE)),
StructureSet.entry(holderGetter.getOrThrow(BuiltinStructures.RUINED_PORTAL_SWAMP)),
StructureSet.entry(holderGetter.getOrThrow(BuiltinStructures.RUINED_PORTAL_MOUNTAIN)),
StructureSet.entry(holderGetter.getOrThrow(BuiltinStructures.RUINED_PORTAL_OCEAN)),
StructureSet.entry(holderGetter.getOrThrow(BuiltinStructures.RUINED_PORTAL_NETHER))
),
new RandomSpreadStructurePlacement(40, 15, RandomSpreadType.LINEAR, 34222645)
)
);
context.register(
BuiltinStructureSets.SHIPWRECKS,
new StructureSet(
List.of(
StructureSet.entry(holderGetter.getOrThrow(BuiltinStructures.SHIPWRECK)), StructureSet.entry(holderGetter.getOrThrow(BuiltinStructures.SHIPWRECK_BEACHED))
),
new RandomSpreadStructurePlacement(24, 4, RandomSpreadType.LINEAR, 165745295)
)
);
context.register(
BuiltinStructureSets.OCEAN_RUINS,
new StructureSet(
List.of(
StructureSet.entry(holderGetter.getOrThrow(BuiltinStructures.OCEAN_RUIN_COLD)),
StructureSet.entry(holderGetter.getOrThrow(BuiltinStructures.OCEAN_RUIN_WARM))
),
new RandomSpreadStructurePlacement(20, 8, RandomSpreadType.LINEAR, 14357621)
)
);
context.register(
BuiltinStructureSets.NETHER_COMPLEXES,
new StructureSet(
List.of(
StructureSet.entry(holderGetter.getOrThrow(BuiltinStructures.FORTRESS), 2),
StructureSet.entry(holderGetter.getOrThrow(BuiltinStructures.BASTION_REMNANT), 3)
),
new RandomSpreadStructurePlacement(27, 4, RandomSpreadType.LINEAR, 30084232)
)
);
context.register(
BuiltinStructureSets.NETHER_FOSSILS,
new StructureSet(holderGetter.getOrThrow(BuiltinStructures.NETHER_FOSSIL), new RandomSpreadStructurePlacement(2, 1, RandomSpreadType.LINEAR, 14357921))
);
context.register(
BuiltinStructureSets.END_CITIES,
new StructureSet(holderGetter.getOrThrow(BuiltinStructures.END_CITY), new RandomSpreadStructurePlacement(20, 11, RandomSpreadType.TRIANGULAR, 10387313))
);
context.register(
BuiltinStructureSets.STRONGHOLDS,
new StructureSet(
holderGetter.getOrThrow(BuiltinStructures.STRONGHOLD),
new ConcentricRingsStructurePlacement(32, 3, 128, holderGetter2.getOrThrow(BiomeTags.STRONGHOLD_BIASED_TO))
)
);
context.register(
BuiltinStructureSets.TRAIL_RUINS,
new StructureSet(holderGetter.getOrThrow(BuiltinStructures.TRAIL_RUINS), new RandomSpreadStructurePlacement(34, 8, RandomSpreadType.LINEAR, 83469867))
);
context.register(
BuiltinStructureSets.TRIAL_CHAMBERS,
new StructureSet(holderGetter.getOrThrow(BuiltinStructures.TRIAL_CHAMBERS), new RandomSpreadStructurePlacement(34, 12, RandomSpreadType.LINEAR, 94251327))
);
}
}