Use BlocksHelper for Terrain

This commit is contained in:
Frank 2022-06-03 15:38:00 +02:00
parent 49edee32a8
commit 51a0e7cf74
4 changed files with 38 additions and 19 deletions

View file

@ -23,7 +23,6 @@ import net.minecraft.world.level.levelgen.placement.*;
import com.mojang.serialization.Codec;
import org.betterx.bclib.api.features.config.ScatterFeatureConfig;
import org.betterx.bclib.api.tag.CommonBlockTags;
import org.betterx.bclib.util.BlocksHelper;
import java.util.ArrayList;
@ -243,7 +242,7 @@ public class ScatterFeature<FC extends ScatterFeatureConfig>
BlockPos blockPos,
BlockState baseState) {
BlockState blockState = levelAccessor.getBlockState(blockPos);
if (blockState.is(CommonBlockTags.TERRAIN)) {
if (BlocksHelper.isTerrain(blockState)) {
levelAccessor.setBlock(blockPos, baseState, 2);
}
}

View file

@ -12,7 +12,7 @@ import com.mojang.datafixers.util.Function15;
import com.mojang.serialization.Codec;
import com.mojang.serialization.codecs.RecordCodecBuilder;
import org.betterx.bclib.BCLib;
import org.betterx.bclib.api.tag.CommonBlockTags;
import org.betterx.bclib.util.BlocksHelper;
import java.util.Optional;
@ -352,7 +352,7 @@ public abstract class ScatterFeatureConfig implements FeatureConfiguration {
@Override
public boolean isValidBase(BlockState state) {
return state.is(CommonBlockTags.TERRAIN);
return BlocksHelper.isTerrain(state);
}
@Override

View file

@ -10,6 +10,7 @@ import net.minecraft.world.level.levelgen.placement.PlacementModifier;
import net.minecraft.world.level.levelgen.placement.PlacementModifierType;
import com.mojang.serialization.Codec;
import org.betterx.bclib.util.BlocksHelper;
import java.util.stream.Stream;
@ -60,15 +61,11 @@ public class OnEveryLayer
for (int y = startY; y >= ctx.getMinBuildHeight() + 1; --y) {
mPos.setY(y - 1);
BlockState belowState = ctx.getBlockState(mPos);
if (!OnEveryLayer.isEmpty(belowState) && OnEveryLayer.isEmpty(nowState) && !belowState.is(Blocks.BEDROCK)) {
if (BlocksHelper.isTerrain(belowState) && BlocksHelper.isFreeOrFluid(nowState) && !belowState.is(Blocks.BEDROCK)) {
return mPos.getY() + 1;
}
nowState = belowState;
}
return Integer.MAX_VALUE;
}
private static boolean isEmpty(BlockState blockState) {
return blockState.isAir() || blockState.is(Blocks.WATER) || blockState.is(Blocks.LAVA);
}
}