2020-02-25 15:14:56 +01:00
|
|
|
package de.ellpeck.naturesaura.gen;
|
|
|
|
|
2020-09-22 03:17:02 +02:00
|
|
|
import com.mojang.serialization.Codec;
|
2020-02-25 15:14:56 +01:00
|
|
|
import de.ellpeck.naturesaura.blocks.tiles.TileEntityAuraBloom;
|
2020-02-25 15:56:46 +01:00
|
|
|
import net.minecraft.block.Block;
|
2020-02-25 15:14:56 +01:00
|
|
|
import net.minecraft.block.BlockState;
|
|
|
|
import net.minecraft.tileentity.TileEntity;
|
|
|
|
import net.minecraft.util.math.BlockPos;
|
|
|
|
import net.minecraft.util.math.MathHelper;
|
2020-09-22 03:17:02 +02:00
|
|
|
import net.minecraft.world.ISeedReader;
|
2020-02-25 15:14:56 +01:00
|
|
|
import net.minecraft.world.IWorld;
|
|
|
|
import net.minecraft.world.gen.ChunkGenerator;
|
|
|
|
import net.minecraft.world.gen.Heightmap;
|
|
|
|
import net.minecraft.world.gen.feature.Feature;
|
|
|
|
import net.minecraft.world.gen.feature.IFeatureConfig;
|
|
|
|
import net.minecraft.world.gen.feature.NoFeatureConfig;
|
|
|
|
|
|
|
|
import java.util.Random;
|
|
|
|
|
|
|
|
public class WorldGenAuraBloom extends Feature<NoFeatureConfig> {
|
2020-02-25 15:56:46 +01:00
|
|
|
|
|
|
|
private final Block block;
|
|
|
|
|
|
|
|
public WorldGenAuraBloom(Block block) {
|
2020-09-22 03:17:02 +02:00
|
|
|
super(Codec.unit(IFeatureConfig.NO_FEATURE_CONFIG));
|
2020-02-25 15:56:46 +01:00
|
|
|
this.block = block;
|
2020-02-25 15:14:56 +01:00
|
|
|
}
|
|
|
|
|
|
|
|
@Override
|
2020-09-22 03:17:02 +02:00
|
|
|
public boolean func_241855_a(ISeedReader worldIn, ChunkGenerator gen, Random rand, BlockPos pos, NoFeatureConfig p_241855_5_) {
|
2020-02-25 15:14:56 +01:00
|
|
|
if (rand.nextInt(60) != 0)
|
|
|
|
return false;
|
|
|
|
|
|
|
|
int startX = pos.getX() + rand.nextInt(16);
|
|
|
|
int startZ = pos.getZ() + rand.nextInt(16);
|
|
|
|
boolean any = false;
|
|
|
|
for (int i = MathHelper.nextInt(rand, 3, 8); i > 0; i--) {
|
|
|
|
int offX = startX + MathHelper.nextInt(rand, -5, 5);
|
|
|
|
int offZ = startZ + MathHelper.nextInt(rand, -5, 5);
|
|
|
|
BlockPos placePos = new BlockPos(offX, worldIn.getHeight(Heightmap.Type.MOTION_BLOCKING_NO_LEAVES, offX, offZ), offZ);
|
2020-02-25 15:56:46 +01:00
|
|
|
BlockState state = this.block.getDefaultState();
|
|
|
|
if (this.block.isValidPosition(state, worldIn, placePos)) {
|
2020-02-25 15:14:56 +01:00
|
|
|
worldIn.setBlockState(placePos, state, 3);
|
|
|
|
|
|
|
|
TileEntity tile = worldIn.getTileEntity(placePos);
|
|
|
|
if (tile instanceof TileEntityAuraBloom)
|
|
|
|
((TileEntityAuraBloom) tile).justGenerated = true;
|
|
|
|
any = true;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
return any;
|
|
|
|
}
|
|
|
|
}
|