TheWildBackport/common/src/main/java/com/cursedcauldron/wildbackport/common/events/StructureGeneration.java
2022-08-25 17:53:18 -04:00

36 lines
1.7 KiB
Java

package com.cursedcauldron.wildbackport.common.events;
import com.cursedcauldron.wildbackport.WildBackport;
import com.cursedcauldron.wildbackport.core.mixin.access.StructureTemplatePoolAccessor;
import com.mojang.datafixers.util.Pair;
import net.minecraft.data.BuiltinRegistries;
import net.minecraft.data.worldgen.PillagerOutpostPools;
import net.minecraft.data.worldgen.ProcessorLists;
import net.minecraft.resources.ResourceLocation;
import net.minecraft.world.level.levelgen.structure.pools.StructurePoolElement;
import net.minecraft.world.level.levelgen.structure.pools.StructureTemplatePool;
import java.util.List;
//<>
public class StructureGeneration {
public static void registerAllayCages() {
PillagerOutpostPools.bootstrap();
StructureGeneration.addToPool(new ResourceLocation("pillager_outpost/features"), new ResourceLocation(WildBackport.MOD_ID, "pillager_outpost/feature_cage_with_allays"), 1);
}
private static void addToPool(ResourceLocation poolId, ResourceLocation pieceId, int weight) {
StructureTemplatePool pool = BuiltinRegistries.TEMPLATE_POOL.get(poolId);
if (pool == null) return;
StructurePoolElement piece = StructurePoolElement.legacy(pieceId.toString(), ProcessorLists.EMPTY).apply(StructureTemplatePool.Projection.RIGID);
List<StructurePoolElement> templates = ((StructureTemplatePoolAccessor)pool).getTemplates();
List<Pair<StructurePoolElement, Integer>> rawTemplates = ((StructureTemplatePoolAccessor)pool).getRawTemplates();
if (templates == null || rawTemplates == null) return;
for (int i = 0; i < weight; i++) templates.add(piece);
rawTemplates.add(Pair.of(piece, weight));
}
}