This repository has been archived on 2023-11-26. You can view files and clone it, but cannot push or open issues or pull requests.
RelicCraft/src/main/java/com/thebrokenrail/reliccraft/structure/TimeTempleFeature.java

53 lines
2.2 KiB
Java

package com.thebrokenrail.reliccraft.structure;
import com.mojang.serialization.Codec;
import net.minecraft.structure.StructureManager;
import net.minecraft.structure.StructureStart;
import net.minecraft.util.BlockRotation;
import net.minecraft.util.math.BlockBox;
import net.minecraft.util.math.BlockPos;
import net.minecraft.util.math.ChunkPos;
import net.minecraft.world.biome.Biome;
import net.minecraft.world.biome.source.BiomeSource;
import net.minecraft.world.gen.ChunkRandom;
import net.minecraft.world.gen.chunk.ChunkGenerator;
import net.minecraft.world.gen.feature.DefaultFeatureConfig;
import net.minecraft.world.gen.feature.StructureFeature;
import java.util.Random;
public class TimeTempleFeature extends StructureFeature<DefaultFeatureConfig> {
public TimeTempleFeature(Codec<DefaultFeatureConfig> codec) {
super(codec);
}
@Override
public StructureStartFactory<DefaultFeatureConfig> getStructureStartFactory() {
return Start::new;
}
protected boolean shouldStartAt(ChunkGenerator chunkGenerator, BiomeSource biomeSource, long l, ChunkRandom chunkRandom, int i, int j, Biome biome, ChunkPos chunkPos, DefaultFeatureConfig defaultFeatureConfig) {
int k = i >> 4;
int m = j >> 4;
chunkRandom.setSeed((long) (k ^ m << 4) ^ l);
chunkRandom.nextInt();
return chunkRandom.nextInt(5) == 0;
}
public static class Start extends StructureStart<DefaultFeatureConfig> {
public Start(StructureFeature<DefaultFeatureConfig> feature, int chunkX, int chunkZ, BlockBox box, int references, long seed) {
super(feature, chunkX, chunkZ, box, references, seed);
}
@Override
public void init(ChunkGenerator chunkGenerator, StructureManager structureManager, int x, int z, Biome biome, DefaultFeatureConfig featureConfig) {
int i = x * 16;
int j = z * 16;
BlockPos blockPos = new BlockPos(i, 90, j);
BlockRotation blockRotation = BlockRotation.values()[random.nextInt(BlockRotation.values().length)];
TimeTempleGenerator.addPieces(structureManager, blockPos, blockRotation, children);
setBoundingBoxFromChildren();
}
}
}