Migrating to BCLib (WIP)

This commit is contained in:
Aleksey 2021-06-11 15:47:04 +03:00
parent 61d4a33cf6
commit 3668a4694a
184 changed files with 802 additions and 4348 deletions

View file

@ -2,10 +2,9 @@ package ru.betterend.world.biome.cave;
import net.minecraft.core.BlockPos;
import net.minecraft.world.level.block.state.BlockState;
import ru.bclib.blocks.BlockProperties;
import ru.bclib.world.biomes.BCLBiomeDef;
import ru.betterend.BetterEnd;
import ru.betterend.blocks.BlockProperties;
import ru.betterend.blocks.BlockProperties.TripleShape;
import ru.betterend.registry.EndBlocks;
import ru.betterend.registry.EndFeatures;
import ru.betterend.registry.EndParticles;
@ -44,6 +43,6 @@ public class LushAuroraCaveBiome extends EndCaveBiome {
@Override
public BlockState getCeil(BlockPos pos) {
return EndBlocks.CAVE_MOSS.defaultBlockState().setValue(BlockProperties.TRIPLE_SHAPE, TripleShape.TOP);
return EndBlocks.CAVE_MOSS.defaultBlockState().setValue(BlockProperties.TRIPLE_SHAPE, BlockProperties.TripleShape.TOP);
}
}

View file

@ -9,7 +9,7 @@ import net.minecraft.world.level.levelgen.feature.configurations.NoneFeatureConf
import ru.bclib.api.TagAPI;
import ru.bclib.util.BlocksHelper;
import ru.bclib.world.features.DefaultFeature;
import ru.betterend.blocks.BlockProperties;
import ru.betterend.blocks.EndBlockProperties;
import ru.betterend.registry.EndBlocks;
public class CavePumpkinFeature extends DefaultFeature {
@ -23,10 +23,10 @@ public class CavePumpkinFeature extends DefaultFeature {
int age = random.nextInt(4);
BlocksHelper.setWithoutUpdate(world, pos,
EndBlocks.CAVE_PUMPKIN_SEED.defaultBlockState().setValue(BlockProperties.AGE, age));
EndBlocks.CAVE_PUMPKIN_SEED.defaultBlockState().setValue(EndBlockProperties.AGE, age));
if (age > 1) {
BlocksHelper.setWithoutUpdate(world, pos.below(),
EndBlocks.CAVE_PUMPKIN.defaultBlockState().setValue(BlockProperties.SMALL, age < 3));
EndBlocks.CAVE_PUMPKIN.defaultBlockState().setValue(EndBlockProperties.SMALL, age < 3));
}
return true;

View file

@ -1,14 +1,14 @@
package ru.betterend.world.features;
import java.util.Random;
import net.minecraft.core.BlockPos;
import net.minecraft.world.level.WorldGenLevel;
import net.minecraft.world.level.block.Block;
import net.minecraft.world.level.block.state.BlockState;
import ru.bclib.blocks.BaseDoublePlantBlock;
import ru.bclib.util.BlocksHelper;
import ru.bclib.util.MHelper;
import ru.betterend.blocks.basis.DoublePlantBlock;
import java.util.Random;
public class DoublePlantFeature extends ScatterFeature {
private final Block smallPlant;
@ -30,11 +30,11 @@ public class DoublePlantFeature extends ScatterFeature {
@Override
public void generate(WorldGenLevel world, Random random, BlockPos blockPos) {
if (plant instanceof DoublePlantBlock) {
if (plant instanceof BaseDoublePlantBlock) {
int rot = random.nextInt(4);
BlockState state = plant.defaultBlockState().setValue(DoublePlantBlock.ROTATION, rot);
BlockState state = plant.defaultBlockState().setValue(BaseDoublePlantBlock.ROTATION, rot);
BlocksHelper.setWithoutUpdate(world, blockPos, state);
BlocksHelper.setWithoutUpdate(world, blockPos.above(), state.setValue(DoublePlantBlock.TOP, true));
BlocksHelper.setWithoutUpdate(world, blockPos.above(), state.setValue(BaseDoublePlantBlock.TOP, true));
}
else {
BlocksHelper.setWithoutUpdate(world, blockPos, plant);

View file

@ -1,18 +1,18 @@
package ru.betterend.world.features;
import java.util.Random;
import net.minecraft.core.BlockPos;
import net.minecraft.core.BlockPos.MutableBlockPos;
import net.minecraft.core.Direction;
import net.minecraft.world.level.WorldGenLevel;
import net.minecraft.world.level.block.Blocks;
import net.minecraft.world.level.block.state.BlockState;
import ru.bclib.blocks.BlockProperties.TripleShape;
import ru.bclib.util.BlocksHelper;
import ru.betterend.blocks.BlockProperties.TripleShape;
import ru.betterend.blocks.EndLotusLeafBlock;
import ru.betterend.registry.EndBlocks;
import java.util.Random;
public class EndLotusLeafFeature extends ScatterFeature {
public EndLotusLeafFeature(int radius) {
super(radius);

View file

@ -1,18 +1,19 @@
package ru.betterend.world.features;
import java.util.Random;
import net.minecraft.core.BlockPos;
import net.minecraft.core.Direction;
import net.minecraft.world.level.WorldGenLevel;
import net.minecraft.world.level.block.state.BlockState;
import net.minecraft.world.level.block.state.properties.BlockStateProperties;
import ru.bclib.blocks.BlockProperties;
import ru.bclib.blocks.BlockProperties.TripleShape;
import ru.bclib.util.BlocksHelper;
import ru.bclib.util.MHelper;
import ru.betterend.blocks.BlockProperties;
import ru.betterend.blocks.BlockProperties.TripleShape;
import ru.betterend.blocks.EndBlockProperties;
import ru.betterend.registry.EndBlocks;
import java.util.Random;
public class FilaluxFeature extends SkyScatterFeature {
public FilaluxFeature() {
super(10);

View file

@ -1,7 +1,5 @@
package ru.betterend.world.features;
import java.util.Random;
import net.minecraft.core.BlockPos;
import net.minecraft.core.BlockPos.MutableBlockPos;
import net.minecraft.core.Direction;
@ -12,11 +10,13 @@ import net.minecraft.world.level.block.state.properties.BlockStateProperties;
import net.minecraft.world.level.chunk.ChunkGenerator;
import net.minecraft.world.level.levelgen.Heightmap;
import net.minecraft.world.level.levelgen.feature.configurations.NoneFeatureConfiguration;
import ru.bclib.blocks.BlockProperties;
import ru.bclib.util.BlocksHelper;
import ru.bclib.world.features.DefaultFeature;
import ru.betterend.blocks.BlockProperties;
import ru.betterend.registry.EndBlocks;
import java.util.Random;
public class SilkMothNestFeature extends DefaultFeature {
private static final MutableBlockPos POS = new MutableBlockPos();
@ -26,10 +26,7 @@ public class SilkMothNestFeature extends DefaultFeature {
state = world.getBlockState(pos);
if ((state.isAir() || state.is(EndBlocks.TENANEA_OUTER_LEAVES)) && world.isEmptyBlock(pos.below())) {
for (Direction dir : BlocksHelper.HORIZONTAL) {
if (world.getBlockState(pos.below().relative(dir)).getMaterial().blocksMotion()) {
return false;
}
return true;
return !world.getBlockState(pos.below().relative(dir)).getMaterial().blocksMotion();
}
}
}

View file

@ -1,15 +1,15 @@
package ru.betterend.world.features;
import java.util.Random;
import net.minecraft.core.BlockPos;
import net.minecraft.core.Direction;
import net.minecraft.world.level.WorldGenLevel;
import net.minecraft.world.level.block.Block;
import net.minecraft.world.level.block.state.BlockState;
import net.minecraft.world.level.block.state.properties.BlockStateProperties;
import ru.bclib.blocks.BaseAttachedBlock;
import ru.bclib.util.BlocksHelper;
import ru.betterend.blocks.basis.AttachedBlock;
import java.util.Random;
public class SingleInvertedScatterFeature extends InvertedScatterFeature {
private final Block block;
@ -25,7 +25,7 @@ public class SingleInvertedScatterFeature extends InvertedScatterFeature {
return false;
}
BlockState state = block.defaultBlockState();
if (block instanceof AttachedBlock) {
if (block instanceof BaseAttachedBlock) {
state = state.setValue(BlockStateProperties.FACING, Direction.DOWN);
}
return state.canSurvive(world, blockPos);
@ -34,7 +34,7 @@ public class SingleInvertedScatterFeature extends InvertedScatterFeature {
@Override
public void generate(WorldGenLevel world, Random random, BlockPos blockPos) {
BlockState state = block.defaultBlockState();
if (block instanceof AttachedBlock) {
if (block instanceof BaseAttachedBlock) {
state = state.setValue(BlockStateProperties.FACING, Direction.DOWN);
}
BlocksHelper.setWithoutUpdate(world, blockPos, state);

View file

@ -1,16 +1,16 @@
package ru.betterend.world.features;
import java.util.Random;
import net.minecraft.core.BlockPos;
import net.minecraft.world.level.WorldGenLevel;
import net.minecraft.world.level.block.Block;
import net.minecraft.world.level.block.state.BlockState;
import ru.bclib.blocks.BaseCropBlock;
import ru.bclib.blocks.BaseDoublePlantBlock;
import ru.bclib.util.BlocksHelper;
import ru.betterend.blocks.basis.DoublePlantBlock;
import ru.betterend.blocks.basis.EndCropBlock;
import ru.betterend.blocks.basis.EndPlantWithAgeBlock;
import java.util.Random;
public class SinglePlantFeature extends ScatterFeature {
private final Block plant;
private final boolean rawHeightmap;
@ -51,14 +51,14 @@ public class SinglePlantFeature extends ScatterFeature {
@Override
public void generate(WorldGenLevel world, Random random, BlockPos blockPos) {
if (plant instanceof DoublePlantBlock) {
if (plant instanceof BaseDoublePlantBlock) {
int rot = random.nextInt(4);
BlockState state = plant.defaultBlockState().setValue(DoublePlantBlock.ROTATION, rot);
BlockState state = plant.defaultBlockState().setValue(BaseDoublePlantBlock.ROTATION, rot);
BlocksHelper.setWithoutUpdate(world, blockPos, state);
BlocksHelper.setWithoutUpdate(world, blockPos.above(), state.setValue(DoublePlantBlock.TOP, true));
BlocksHelper.setWithoutUpdate(world, blockPos.above(), state.setValue(BaseDoublePlantBlock.TOP, true));
}
else if (plant instanceof EndCropBlock) {
BlockState state = plant.defaultBlockState().setValue(EndCropBlock.AGE, 3);
else if (plant instanceof BaseCropBlock) {
BlockState state = plant.defaultBlockState().setValue(BaseCropBlock.AGE, 3);
BlocksHelper.setWithoutUpdate(world, blockPos, state);
}
else if (plant instanceof EndPlantWithAgeBlock) {

View file

@ -1,13 +1,13 @@
package ru.betterend.world.features;
import java.util.Random;
import net.minecraft.core.BlockPos;
import net.minecraft.world.level.WorldGenLevel;
import net.minecraft.world.level.block.Block;
import net.minecraft.world.level.block.state.BlockState;
import ru.bclib.blocks.BaseDoublePlantBlock;
import ru.bclib.util.BlocksHelper;
import ru.betterend.blocks.basis.DoublePlantBlock;
import java.util.Random;
public class UnderwaterPlantFeature extends UnderwaterPlantScatter {
private final Block plant;
@ -24,11 +24,11 @@ public class UnderwaterPlantFeature extends UnderwaterPlantScatter {
@Override
public void generate(WorldGenLevel world, Random random, BlockPos blockPos) {
if (plant instanceof DoublePlantBlock) {
if (plant instanceof BaseDoublePlantBlock) {
int rot = random.nextInt(4);
BlockState state = plant.defaultBlockState().setValue(DoublePlantBlock.ROTATION, rot);
BlockState state = plant.defaultBlockState().setValue(BaseDoublePlantBlock.ROTATION, rot);
BlocksHelper.setWithoutUpdate(world, blockPos, state);
BlocksHelper.setWithoutUpdate(world, blockPos.above(), state.setValue(DoublePlantBlock.TOP, true));
BlocksHelper.setWithoutUpdate(world, blockPos.above(), state.setValue(BaseDoublePlantBlock.TOP, true));
}
else {
BlocksHelper.setWithoutUpdate(world, blockPos, plant);

View file

@ -1,15 +1,15 @@
package ru.betterend.world.features;
import java.util.Random;
import net.minecraft.core.BlockPos;
import net.minecraft.world.level.WorldGenLevel;
import net.minecraft.world.level.block.Block;
import net.minecraft.world.level.block.state.BlockState;
import ru.bclib.blocks.BaseVineBlock;
import ru.bclib.blocks.BlockProperties;
import ru.bclib.blocks.BlockProperties.TripleShape;
import ru.bclib.util.BlocksHelper;
import ru.betterend.blocks.BlockProperties;
import ru.betterend.blocks.BlockProperties.TripleShape;
import ru.betterend.blocks.basis.VineBlock;
import java.util.Random;
public class VineFeature extends InvertedScatterFeature {
private final Block vineBlock;
@ -20,7 +20,7 @@ public class VineFeature extends InvertedScatterFeature {
super(6);
this.vineBlock = vineBlock;
this.maxLength = maxLength;
this.vine = vineBlock instanceof VineBlock;
this.vine = vineBlock instanceof BaseVineBlock;
}
@Override
@ -46,7 +46,7 @@ public class VineFeature extends InvertedScatterFeature {
private boolean canPlaceBlock(BlockState state, WorldGenLevel world, BlockPos blockPos) {
if (vine) {
return ((VineBlock) vineBlock).canGenerate(state, world, blockPos);
return ((BaseVineBlock) vineBlock).canGenerate(state, world, blockPos);
}
else {
return vineBlock.canSurvive(state, world, blockPos);

View file

@ -1,17 +1,17 @@
package ru.betterend.world.features;
import java.util.Random;
import net.minecraft.core.BlockPos;
import net.minecraft.core.Direction;
import net.minecraft.world.level.WorldGenLevel;
import net.minecraft.world.level.block.Block;
import net.minecraft.world.level.block.state.BlockState;
import net.minecraft.world.level.block.state.properties.BlockStateProperties;
import ru.bclib.blocks.BaseAttachedBlock;
import ru.bclib.util.BlocksHelper;
import ru.betterend.blocks.basis.AttachedBlock;
import ru.betterend.blocks.basis.EndWallPlantBlock;
import java.util.Random;
public class WallPlantFeature extends WallScatterFeature {
private final Block block;
@ -26,7 +26,7 @@ public class WallPlantFeature extends WallScatterFeature {
BlockState state = block.defaultBlockState().setValue(EndWallPlantBlock.FACING, dir);
return block.canSurvive(state, world, pos);
}
else if (block instanceof AttachedBlock) {
else if (block instanceof BaseAttachedBlock) {
BlockState state = block.defaultBlockState().setValue(BlockStateProperties.FACING, dir);
return block.canSurvive(state, world, pos);
}
@ -39,7 +39,7 @@ public class WallPlantFeature extends WallScatterFeature {
if (block instanceof EndWallPlantBlock) {
state = state.setValue(EndWallPlantBlock.FACING, dir);
}
else if (block instanceof AttachedBlock) {
else if (block instanceof BaseAttachedBlock) {
state = state.setValue(BlockStateProperties.FACING, dir);
}
BlocksHelper.setWithoutUpdate(world, pos, state);

View file

@ -1,7 +1,5 @@
package ru.betterend.world.features.bushes;
import java.util.Random;
import net.minecraft.core.BlockPos;
import net.minecraft.core.BlockPos.MutableBlockPos;
import net.minecraft.core.Direction;
@ -10,13 +8,15 @@ import net.minecraft.world.level.block.state.BlockState;
import net.minecraft.world.level.chunk.ChunkGenerator;
import net.minecraft.world.level.levelgen.feature.configurations.NoneFeatureConfiguration;
import ru.bclib.api.TagAPI;
import ru.bclib.blocks.BlockProperties;
import ru.bclib.blocks.BlockProperties.TripleShape;
import ru.bclib.util.BlocksHelper;
import ru.bclib.util.MHelper;
import ru.bclib.world.features.DefaultFeature;
import ru.betterend.blocks.BlockProperties;
import ru.betterend.blocks.BlockProperties.TripleShape;
import ru.betterend.registry.EndBlocks;
import java.util.Random;
public class LargeAmaranitaFeature extends DefaultFeature {
@Override
public boolean place(WorldGenLevel world, ChunkGenerator chunkGenerator, Random random, BlockPos pos,

View file

@ -13,7 +13,7 @@ import ru.bclib.api.TagAPI;
import ru.bclib.util.BlocksHelper;
import ru.bclib.util.MHelper;
import ru.bclib.world.features.DefaultFeature;
import ru.betterend.blocks.BlockProperties.LumecornShape;
import ru.betterend.blocks.EndBlockProperties.LumecornShape;
import ru.betterend.blocks.LumecornBlock;
import ru.betterend.registry.EndBlocks;

View file

@ -1,11 +1,6 @@
package ru.betterend.world.features.bushes;
import java.util.List;
import java.util.Random;
import java.util.function.Function;
import com.google.common.collect.Lists;
import net.minecraft.core.BlockPos;
import net.minecraft.core.BlockPos.MutableBlockPos;
import net.minecraft.core.Direction;
@ -16,6 +11,8 @@ import net.minecraft.world.level.chunk.ChunkGenerator;
import net.minecraft.world.level.levelgen.feature.configurations.NoneFeatureConfiguration;
import net.minecraft.world.level.material.Material;
import ru.bclib.api.TagAPI;
import ru.bclib.blocks.BlockProperties;
import ru.bclib.blocks.BlockProperties.TripleShape;
import ru.bclib.sdf.SDF;
import ru.bclib.sdf.operator.SDFDisplacement;
import ru.bclib.sdf.operator.SDFScale3D;
@ -25,12 +22,14 @@ import ru.bclib.sdf.primitive.SDFSphere;
import ru.bclib.util.BlocksHelper;
import ru.bclib.util.MHelper;
import ru.bclib.world.features.DefaultFeature;
import ru.betterend.blocks.BlockProperties;
import ru.betterend.blocks.BlockProperties.TripleShape;
import ru.betterend.blocks.basis.FurBlock;
import ru.betterend.noise.OpenSimplexNoise;
import ru.betterend.registry.EndBlocks;
import java.util.List;
import java.util.Random;
import java.util.function.Function;
public class TenaneaBushFeature extends DefaultFeature {
private static final Function<BlockState, Boolean> REPLACE;
private static final Direction[] DIRECTIONS = Direction.values();
@ -49,12 +48,10 @@ public class TenaneaBushFeature extends DefaultFeature {
BlockState leaves = EndBlocks.TENANEA_LEAVES.defaultBlockState();
SDF sphere = new SDFSphere().setRadius(radius).setBlock(leaves);
sphere = new SDFScale3D().setScale(1, 0.75F, 1).setSource(sphere);
sphere = new SDFDisplacement().setFunction((vec) -> {
return (float) noise.eval(vec.x() * 0.2, vec.y() * 0.2, vec.z() * 0.2) * 3;
}).setSource(sphere);
sphere = new SDFDisplacement().setFunction((vec) -> {
return MHelper.randRange(-2F, 2F, random);
}).setSource(sphere);
sphere = new SDFDisplacement().setFunction((vec) ->
(float) noise.eval(vec.x() * 0.2, vec.y() * 0.2, vec.z() * 0.2) * 3).setSource(sphere);
sphere = new SDFDisplacement().setFunction((vec) ->
MHelper.randRange(-2F, 2F, random)).setSource(sphere);
sphere = new SDFSubtraction().setSourceA(sphere)
.setSourceB(new SDFTranslate().setTranslate(0, -radius, 0).setSource(sphere));
sphere.setReplaceFunction(REPLACE);

View file

@ -1,7 +1,5 @@
package ru.betterend.world.features.terrain;
import java.util.Random;
import net.minecraft.core.BlockPos;
import net.minecraft.core.BlockPos.MutableBlockPos;
import net.minecraft.util.Mth;
@ -12,9 +10,11 @@ import net.minecraft.world.level.block.state.properties.BlockStateProperties;
import net.minecraft.world.level.chunk.ChunkGenerator;
import net.minecraft.world.level.levelgen.feature.configurations.NoneFeatureConfiguration;
import ru.bclib.api.TagAPI;
import ru.bclib.blocks.StalactiteBlock;
import ru.bclib.util.BlocksHelper;
import ru.bclib.world.features.DefaultFeature;
import ru.betterend.blocks.basis.StalactiteBlock;
import java.util.Random;
public class StalactiteFeature extends DefaultFeature {
private final boolean ceiling;

View file

@ -10,10 +10,11 @@ import net.minecraft.world.level.block.Blocks;
import net.minecraft.world.level.block.state.BlockState;
import net.minecraft.world.level.chunk.ChunkGenerator;
import net.minecraft.world.level.levelgen.feature.configurations.NoneFeatureConfiguration;
import ru.bclib.blocks.BlockProperties;
import ru.bclib.util.BlocksHelper;
import ru.bclib.util.MHelper;
import ru.bclib.world.features.DefaultFeature;
import ru.betterend.blocks.BlockProperties;
import ru.betterend.blocks.EndBlockProperties;
import ru.betterend.noise.OpenSimplexNoise;
import ru.betterend.registry.EndBlocks;

View file

@ -20,7 +20,7 @@ import ru.bclib.api.TagAPI;
import ru.bclib.util.BlocksHelper;
import ru.bclib.util.MHelper;
import ru.bclib.world.features.DefaultFeature;
import ru.betterend.blocks.BlockProperties;
import ru.betterend.blocks.EndBlockProperties;
import ru.betterend.blocks.SulphurCrystalBlock;
import ru.betterend.noise.OpenSimplexNoise;
import ru.betterend.registry.EndBlocks;
@ -177,7 +177,7 @@ public class SulphuricCaveFeature extends DefaultFeature {
private void placeBrimstone(WorldGenLevel world, BlockPos pos, Random random) {
BlockState state = getBrimstone(world, pos);
BlocksHelper.setWithoutUpdate(world, pos, state);
if (state.getValue(BlockProperties.ACTIVE)) {
if (state.getValue(EndBlockProperties.ACTIVE)) {
makeShards(world, pos, random);
}
}
@ -185,7 +185,7 @@ public class SulphuricCaveFeature extends DefaultFeature {
private BlockState getBrimstone(WorldGenLevel world, BlockPos pos) {
for (Direction dir : BlocksHelper.DIRECTIONS) {
if (world.getBlockState(pos.relative(dir)).is(Blocks.WATER)) {
return EndBlocks.BRIMSTONE.defaultBlockState().setValue(BlockProperties.ACTIVE, true);
return EndBlocks.BRIMSTONE.defaultBlockState().setValue(EndBlockProperties.ACTIVE, true);
}
}
return EndBlocks.BRIMSTONE.defaultBlockState();

View file

@ -18,7 +18,7 @@ import ru.bclib.api.TagAPI;
import ru.bclib.util.BlocksHelper;
import ru.bclib.util.MHelper;
import ru.bclib.world.features.DefaultFeature;
import ru.betterend.blocks.BlockProperties;
import ru.betterend.blocks.EndBlockProperties;
import ru.betterend.blocks.SulphurCrystalBlock;
import ru.betterend.noise.OpenSimplexNoise;
import ru.betterend.registry.EndBlocks;
@ -173,7 +173,7 @@ public class SulphuricLakeFeature extends DefaultFeature {
private void placeBrimstone(WorldGenLevel world, BlockPos pos, Random random) {
BlockState state = getBrimstone(world, pos);
BlocksHelper.setWithoutUpdate(world, pos, state);
if (state.getValue(BlockProperties.ACTIVE)) {
if (state.getValue(EndBlockProperties.ACTIVE)) {
makeShards(world, pos, random);
}
}
@ -181,7 +181,7 @@ public class SulphuricLakeFeature extends DefaultFeature {
private BlockState getBrimstone(WorldGenLevel world, BlockPos pos) {
for (Direction dir : BlocksHelper.DIRECTIONS) {
if (world.getBlockState(pos.relative(dir)).is(Blocks.WATER)) {
return EndBlocks.BRIMSTONE.defaultBlockState().setValue(BlockProperties.ACTIVE, true);
return EndBlocks.BRIMSTONE.defaultBlockState().setValue(EndBlockProperties.ACTIVE, true);
}
}
return EndBlocks.BRIMSTONE.defaultBlockState();

View file

@ -1,11 +1,6 @@
package ru.betterend.world.features.trees;
import java.util.List;
import java.util.Random;
import java.util.function.Function;
import com.mojang.math.Vector3f;
import net.minecraft.core.BlockPos;
import net.minecraft.core.BlockPos.MutableBlockPos;
import net.minecraft.core.Direction;
@ -18,15 +13,19 @@ import net.minecraft.world.level.chunk.ChunkGenerator;
import net.minecraft.world.level.levelgen.feature.configurations.NoneFeatureConfiguration;
import net.minecraft.world.level.material.Material;
import ru.bclib.api.TagAPI;
import ru.bclib.blocks.BaseAttachedBlock;
import ru.bclib.sdf.PosInfo;
import ru.bclib.sdf.SDF;
import ru.bclib.util.BlocksHelper;
import ru.bclib.util.MHelper;
import ru.bclib.util.SplineHelper;
import ru.bclib.world.features.DefaultFeature;
import ru.betterend.blocks.basis.AttachedBlock;
import ru.betterend.registry.EndBlocks;
import java.util.List;
import java.util.Random;
import java.util.function.Function;
public class GiganticAmaranitaFeature extends DefaultFeature {
private static final Function<BlockState, Boolean> REPLACE;
private static final Function<BlockState, Boolean> IGNORE;
@ -48,9 +47,7 @@ public class GiganticAmaranitaFeature extends DefaultFeature {
BlocksHelper.setWithoutUpdate(world, pos, AIR);
float radius = size * 0.17F;// MHelper.randRange(0.8F, 1.2F, random);
SDF function = SplineHelper.buildSDF(spline, radius, 0.2F, (bpos) -> {
return EndBlocks.AMARANITA_STEM.defaultBlockState();
});
SDF function = SplineHelper.buildSDF(spline, radius, 0.2F, (bpos) -> EndBlocks.AMARANITA_STEM.defaultBlockState());
Vector3f capPos = spline.get(spline.size() - 1);
makeHead(world, pos.offset(capPos.x() + 0.5F, capPos.y() + 1.5F, capPos.z() + 0.5F), Mth.floor(size / 1.6F));
@ -99,7 +96,7 @@ public class GiganticAmaranitaFeature extends DefaultFeature {
mut.move(Direction.DOWN);
if (world.getBlockState(mut).getMaterial().isReplaceable()) {
BlocksHelper.setWithoutUpdate(world, mut, EndBlocks.AMARANITA_FUR.defaultBlockState()
.setValue(AttachedBlock.FACING, Direction.DOWN));
.setValue(BaseAttachedBlock.FACING, Direction.DOWN));
}
}
}
@ -164,13 +161,13 @@ public class GiganticAmaranitaFeature extends DefaultFeature {
Direction dir = Direction.fromAxisAndDirection(axis,
distance < 0 ? AxisDirection.NEGATIVE : AxisDirection.POSITIVE);
BlocksHelper.setWithoutUpdate(world, offseted, EndBlocks.AMARANITA_FUR
.defaultBlockState().setValue(AttachedBlock.FACING, dir));
.defaultBlockState().setValue(BaseAttachedBlock.FACING, dir));
}
mut.move(Direction.DOWN);
}
if (world.getBlockState(mut).getMaterial().isReplaceable()) {
BlocksHelper.setWithoutUpdate(world, mut, EndBlocks.AMARANITA_FUR.defaultBlockState()
.setValue(AttachedBlock.FACING, Direction.DOWN));
.setValue(BaseAttachedBlock.FACING, Direction.DOWN));
}
}
}
@ -278,13 +275,13 @@ public class GiganticAmaranitaFeature extends DefaultFeature {
Direction dir = Direction.fromAxisAndDirection(axis,
distance < 0 ? AxisDirection.NEGATIVE : AxisDirection.POSITIVE);
BlocksHelper.setWithoutUpdate(world, offseted, EndBlocks.AMARANITA_FUR
.defaultBlockState().setValue(AttachedBlock.FACING, dir));
.defaultBlockState().setValue(BaseAttachedBlock.FACING, dir));
}
mut.move(Direction.DOWN);
}
if (world.getBlockState(mut).getMaterial().isReplaceable()) {
BlocksHelper.setWithoutUpdate(world, mut, EndBlocks.AMARANITA_FUR.defaultBlockState()
.setValue(AttachedBlock.FACING, Direction.DOWN));
.setValue(BaseAttachedBlock.FACING, Direction.DOWN));
}
}
}
@ -335,9 +332,7 @@ public class GiganticAmaranitaFeature extends DefaultFeature {
return state.getMaterial().isReplaceable();
};
IGNORE = (state) -> {
return EndBlocks.DRAGON_TREE.isTreeLog(state);
};
IGNORE = EndBlocks.DRAGON_TREE::isTreeLog;
POST = (info) -> {
if (!info.getStateUp().is(EndBlocks.AMARANITA_STEM) || !info.getStateDown().is(EndBlocks.AMARANITA_STEM)) {

View file

@ -17,6 +17,8 @@ import net.minecraft.world.level.chunk.ChunkGenerator;
import net.minecraft.world.level.levelgen.feature.configurations.NoneFeatureConfiguration;
import net.minecraft.world.level.material.Material;
import ru.bclib.api.TagAPI;
import ru.bclib.blocks.BlockProperties;
import ru.bclib.blocks.BlockProperties.TripleShape;
import ru.bclib.sdf.SDF;
import ru.bclib.sdf.operator.SDFDisplacement;
import ru.bclib.sdf.operator.SDFScale;
@ -28,8 +30,6 @@ import ru.bclib.util.BlocksHelper;
import ru.bclib.util.MHelper;
import ru.bclib.util.SplineHelper;
import ru.bclib.world.features.DefaultFeature;
import ru.betterend.blocks.BlockProperties;
import ru.betterend.blocks.BlockProperties.TripleShape;
import ru.betterend.blocks.basis.FurBlock;
import ru.betterend.noise.OpenSimplexNoise;
import ru.betterend.registry.EndBlocks;
@ -77,12 +77,10 @@ public class LucerniaFeature extends DefaultFeature {
sub = new SDFTranslate().setTranslate(0, -radius * 5, 0).setSource(sub);
sphere = new SDFSubtraction().setSourceA(sphere).setSourceB(sub);
sphere = new SDFScale3D().setScale(1, 0.75F, 1).setSource(sphere);
sphere = new SDFDisplacement().setFunction((vec) -> {
return (float) noise.eval(vec.x() * 0.2, vec.y() * 0.2, vec.z() * 0.2) * 2F;
}).setSource(sphere);
sphere = new SDFDisplacement().setFunction((vec) -> {
return MHelper.randRange(-1.5F, 1.5F, random);
}).setSource(sphere);
sphere = new SDFDisplacement().setFunction((vec) ->
(float) noise.eval(vec.x() * 0.2, vec.y() * 0.2, vec.z() * 0.2) * 2F).setSource(sphere);
sphere = new SDFDisplacement().setFunction((vec) ->
MHelper.randRange(-1.5F, 1.5F, random)).setSource(sphere);
MutableBlockPos mut = new MutableBlockPos();
for (Direction d1 : BlocksHelper.HORIZONTAL) {
@ -204,9 +202,7 @@ public class LucerniaFeature extends DefaultFeature {
return state.getMaterial().isReplaceable();
};
IGNORE = (state) -> {
return EndBlocks.LUCERNIA.isTreeLog(state);
};
IGNORE = EndBlocks.LUCERNIA::isTreeLog;
SPLINE = Lists.newArrayList(new Vector3f(0.00F, 0.00F, 0.00F), new Vector3f(0.10F, 0.35F, 0.00F),
new Vector3f(0.20F, 0.50F, 0.00F), new Vector3f(0.30F, 0.55F, 0.00F), new Vector3f(0.42F, 0.70F, 0.00F),

View file

@ -17,6 +17,8 @@ import net.minecraft.world.level.chunk.ChunkGenerator;
import net.minecraft.world.level.levelgen.feature.configurations.NoneFeatureConfiguration;
import net.minecraft.world.level.material.Material;
import ru.bclib.api.TagAPI;
import ru.bclib.blocks.BlockProperties;
import ru.bclib.blocks.BlockProperties.TripleShape;
import ru.bclib.sdf.SDF;
import ru.bclib.sdf.operator.SDFDisplacement;
import ru.bclib.sdf.operator.SDFScale;
@ -28,8 +30,6 @@ import ru.bclib.util.BlocksHelper;
import ru.bclib.util.MHelper;
import ru.bclib.util.SplineHelper;
import ru.bclib.world.features.DefaultFeature;
import ru.betterend.blocks.BlockProperties;
import ru.betterend.blocks.BlockProperties.TripleShape;
import ru.betterend.blocks.basis.FurBlock;
import ru.betterend.noise.OpenSimplexNoise;
import ru.betterend.registry.EndBlocks;
@ -73,12 +73,10 @@ public class TenaneaFeature extends DefaultFeature {
sub = new SDFTranslate().setTranslate(0, -radius * 5, 0).setSource(sub);
sphere = new SDFSubtraction().setSourceA(sphere).setSourceB(sub);
sphere = new SDFScale3D().setScale(1, 0.75F, 1).setSource(sphere);
sphere = new SDFDisplacement().setFunction((vec) -> {
return (float) noise.eval(vec.x() * 0.2, vec.y() * 0.2, vec.z() * 0.2) * 2F;
}).setSource(sphere);
sphere = new SDFDisplacement().setFunction((vec) -> {
return MHelper.randRange(-1.5F, 1.5F, random);
}).setSource(sphere);
sphere = new SDFDisplacement().setFunction((vec) ->
(float) noise.eval(vec.x() * 0.2, vec.y() * 0.2, vec.z() * 0.2) * 2F).setSource(sphere);
sphere = new SDFDisplacement().setFunction((vec) ->
MHelper.randRange(-1.5F, 1.5F, random)).setSource(sphere);
MutableBlockPos mut = new MutableBlockPos();
for (Direction d1 : BlocksHelper.HORIZONTAL) {
@ -185,9 +183,7 @@ public class TenaneaFeature extends DefaultFeature {
return state.getMaterial().isReplaceable();
};
IGNORE = (state) -> {
return EndBlocks.TENANEA.isTreeLog(state);
};
IGNORE = EndBlocks.TENANEA::isTreeLog;
SPLINE = Lists.newArrayList(new Vector3f(0.00F, 0.00F, 0.00F), new Vector3f(0.10F, 0.35F, 0.00F),
new Vector3f(0.20F, 0.50F, 0.00F), new Vector3f(0.30F, 0.55F, 0.00F), new Vector3f(0.42F, 0.70F, 0.00F),