Some changes for 1.18.2

This commit is contained in:
Frank 2022-07-01 00:50:19 +02:00
parent 65e9140812
commit 753d0dd658
78 changed files with 232 additions and 237 deletions

View file

@ -4,7 +4,7 @@ org.gradle.jvmargs=-Xmx2G
loom_version=0.12-SNAPSHOT loom_version=0.12-SNAPSHOT
# Fabric Properties # Fabric Properties
# check these on https://fabricmc.net/versions.html # check these on https://fabricmc.net/versions.html
minecraft_version=1.19 minecraft_version=1.18.2
loader_version=0.14.8 loader_version=0.14.8
fabric_version=0.57.0+1.19 fabric_version=0.57.0+1.19
# Mod Properties # Mod Properties

View file

@ -5,7 +5,6 @@ import org.betterx.bclib.util.WeightedList;
import net.minecraft.core.BlockPos; import net.minecraft.core.BlockPos;
import net.minecraft.resources.ResourceLocation; import net.minecraft.resources.ResourceLocation;
import net.minecraft.util.RandomSource;
import net.minecraft.world.level.Level; import net.minecraft.world.level.Level;
import net.minecraft.world.level.block.Block; import net.minecraft.world.level.block.Block;
@ -13,6 +12,7 @@ import com.google.common.collect.Maps;
import com.google.common.collect.Sets; import com.google.common.collect.Sets;
import java.util.Map; import java.util.Map;
import java.util.Random;
import java.util.Set; import java.util.Set;
import java.util.function.BiConsumer; import java.util.function.BiConsumer;
@ -162,7 +162,7 @@ public class BonemealAPI {
public static BiConsumer<Level, BlockPos> getLandGrass( public static BiConsumer<Level, BlockPos> getLandGrass(
ResourceLocation biomeID, ResourceLocation biomeID,
Block terrain, Block terrain,
RandomSource random Random random
) { ) {
Map<Block, WeightedList<BiConsumer<Level, BlockPos>>> map = LAND_GRASS_BIOMES.get(biomeID); Map<Block, WeightedList<BiConsumer<Level, BlockPos>>> map = LAND_GRASS_BIOMES.get(biomeID);
WeightedList<BiConsumer<Level, BlockPos>> list; WeightedList<BiConsumer<Level, BlockPos>> list;
@ -180,7 +180,7 @@ public class BonemealAPI {
public static BiConsumer<Level, BlockPos> getWaterGrass( public static BiConsumer<Level, BlockPos> getWaterGrass(
ResourceLocation biomeID, ResourceLocation biomeID,
Block terrain, Block terrain,
RandomSource random Random random
) { ) {
Map<Block, WeightedList<BiConsumer<Level, BlockPos>>> map = WATER_GRASS_BIOMES.get(biomeID); Map<Block, WeightedList<BiConsumer<Level, BlockPos>>> map = WATER_GRASS_BIOMES.get(biomeID);
WeightedList<BiConsumer<Level, BlockPos>> list; WeightedList<BiConsumer<Level, BlockPos>> list;

View file

@ -217,7 +217,7 @@ public class BCLChunkGenerator extends NoiseBasedChunkGenerator implements Resto
// old.disableMobGeneration(), // old.disableMobGeneration(),
// old.aquifersEnabled(), // old.aquifersEnabled(),
// old.oreVeinsEnabled(), // old.oreVeinsEnabled(),
// old.useLegacyRandomSource() // old.useLegacyRandom()
// ); // );
// //
// //

View file

@ -7,7 +7,6 @@ import org.betterx.bclib.interfaces.TriConsumer;
import org.betterx.bclib.noise.OpenSimplexNoise; import org.betterx.bclib.noise.OpenSimplexNoise;
import org.betterx.bclib.util.MHelper; import org.betterx.bclib.util.MHelper;
import net.minecraft.util.RandomSource;
import net.minecraft.world.level.ChunkPos; import net.minecraft.world.level.ChunkPos;
import net.minecraft.world.level.levelgen.WorldgenRandom; import net.minecraft.world.level.levelgen.WorldgenRandom;
@ -81,7 +80,7 @@ public class HexBiomeMap implements BiomeMap {
final ChunkPos pos = new ChunkPos(cx, cz); final ChunkPos pos = new ChunkPos(cx, cz);
HexBiomeChunk chunk = chunks.get(pos); HexBiomeChunk chunk = chunks.get(pos);
if (chunk == null) { if (chunk == null) {
WorldgenRandom random = new WorldgenRandom(RandomSource.create(MHelper.getSeed(seed, cx, cz))); WorldgenRandom random = new WorldgenRandom(Random.create(MHelper.getSeed(seed, cx, cz)));
chunk = new HexBiomeChunk(random, picker); chunk = new HexBiomeChunk(random, picker);
if (update && processor != null) { if (update && processor != null) {
processor.accept(cx, cz, chunk.getSide()); processor.accept(cx, cz, chunk.getSide());

View file

@ -8,7 +8,7 @@ import org.betterx.bclib.noise.OpenSimplexNoise;
import org.betterx.bclib.util.MHelper; import org.betterx.bclib.util.MHelper;
import net.minecraft.world.level.ChunkPos; import net.minecraft.world.level.ChunkPos;
import net.minecraft.world.level.levelgen.LegacyRandomSource; import net.minecraft.world.level.levelgen.LegacyRandom;
import net.minecraft.world.level.levelgen.WorldgenRandom; import net.minecraft.world.level.levelgen.WorldgenRandom;
import com.google.common.collect.Maps; import com.google.common.collect.Maps;
@ -29,7 +29,7 @@ public class SquareBiomeMap implements BiomeMap {
private TriConsumer<Integer, Integer, Integer> processor; private TriConsumer<Integer, Integer, Integer> processor;
public SquareBiomeMap(long seed, int size, BiomePicker picker) { public SquareBiomeMap(long seed, int size, BiomePicker picker) {
random = new WorldgenRandom(new LegacyRandomSource(seed)); random = new WorldgenRandom(new LegacyRandom(seed));
noiseX = new OpenSimplexNoise(random.nextLong()); noiseX = new OpenSimplexNoise(random.nextLong());
noiseZ = new OpenSimplexNoise(random.nextLong()); noiseZ = new OpenSimplexNoise(random.nextLong());
this.sizeXZ = size; this.sizeXZ = size;

View file

@ -23,8 +23,6 @@ import net.minecraft.world.level.chunk.ChunkGenerator;
import net.minecraft.world.level.dimension.DimensionType; import net.minecraft.world.level.dimension.DimensionType;
import net.minecraft.world.level.dimension.LevelStem; import net.minecraft.world.level.dimension.LevelStem;
import net.minecraft.world.level.levelgen.WorldGenSettings; import net.minecraft.world.level.levelgen.WorldGenSettings;
import net.minecraft.world.level.levelgen.presets.WorldPreset;
import net.minecraft.world.level.levelgen.presets.WorldPresets;
import java.util.HashMap; import java.util.HashMap;
import java.util.List; import java.util.List;

View file

@ -32,7 +32,6 @@ import net.minecraft.world.level.biome.MobSpawnSettings.SpawnerData;
import net.minecraft.world.level.block.state.BlockState; import net.minecraft.world.level.block.state.BlockState;
import net.minecraft.world.level.chunk.ChunkAccess; import net.minecraft.world.level.chunk.ChunkAccess;
import net.minecraft.world.level.chunk.PalettedContainer; import net.minecraft.world.level.chunk.PalettedContainer;
import net.minecraft.world.level.chunk.PalettedContainerRO;
import net.minecraft.world.level.dimension.LevelStem; import net.minecraft.world.level.dimension.LevelStem;
import net.minecraft.world.level.levelgen.GenerationStep.Decoration; import net.minecraft.world.level.levelgen.GenerationStep.Decoration;
import net.minecraft.world.level.levelgen.feature.ConfiguredFeature; import net.minecraft.world.level.levelgen.feature.ConfiguredFeature;
@ -152,7 +151,7 @@ public class BiomeAPI {
TagManager.BIOMES.add(BiomeTags.IS_NETHER, bclbiome.getBiome()); TagManager.BIOMES.add(BiomeTags.IS_NETHER, bclbiome.getBiome());
TagManager.BIOMES.add(CommonBiomeTags.IN_NETHER, bclbiome.getBiome()); TagManager.BIOMES.add(CommonBiomeTags.IN_NETHER, bclbiome.getBiome());
} else if (dim != null && dim.is(BiomeType.END)) { } else if (dim != null && dim.is(BiomeType.END)) {
TagManager.BIOMES.add(BiomeTags.IS_END, bclbiome.getBiome()); TagManager.BIOMES.add(CommonBiomeTags.IN_END, bclbiome.getBiome());
} }
bclbiome.afterRegistration(); bclbiome.afterRegistration();
@ -440,10 +439,10 @@ public class BiomeAPI {
public static Holder<Biome> getBiomeHolder(Biome biome) { public static Holder<Biome> getBiomeHolder(Biome biome) {
if (InternalBiomeAPI.biomeRegistry != null) { if (InternalBiomeAPI.biomeRegistry != null) {
Optional<ResourceKey<Biome>> key = InternalBiomeAPI.biomeRegistry.getResourceKey(biome); Optional<ResourceKey<Biome>> key = InternalBiomeAPI.biomeRegistry.getResourceKey(biome);
if (key.isPresent()) return InternalBiomeAPI.biomeRegistry.getOrCreateHolderOrThrow(key.get()); if (key.isPresent()) return InternalBiomeAPI.biomeRegistry.getOrCreateHolder(key.get());
} }
return BuiltinRegistries.BIOME.getOrCreateHolderOrThrow(BiomeAPI.getBiomeKey(biome)); return BuiltinRegistries.BIOME.getOrCreateHolder(BiomeAPI.getBiomeKey(biome));
} }
public static Holder<Biome> getBiomeHolder(ResourceLocation biome) { public static Holder<Biome> getBiomeHolder(ResourceLocation biome) {
@ -500,7 +499,7 @@ public class BiomeAPI {
@Nullable @Nullable
public static Holder<Biome> getFromRegistry(ResourceKey<Biome> key) { public static Holder<Biome> getFromRegistry(ResourceKey<Biome> key) {
return BuiltinRegistries.BIOME.getOrCreateHolderOrThrow(key); return BuiltinRegistries.BIOME.getOrCreateHolder(key);
} }
public static boolean isDatapackBiome(ResourceLocation biomeID) { public static boolean isDatapackBiome(ResourceLocation biomeID) {
@ -786,12 +785,8 @@ public class BiomeAPI {
*/ */
public static void setBiome(ChunkAccess chunk, BlockPos pos, Holder<Biome> biome) { public static void setBiome(ChunkAccess chunk, BlockPos pos, Holder<Biome> biome) {
int sectionY = (pos.getY() - chunk.getMinBuildHeight()) >> 4; int sectionY = (pos.getY() - chunk.getMinBuildHeight()) >> 4;
PalettedContainerRO<Holder<Biome>> biomes = chunk.getSection(sectionY).getBiomes(); PalettedContainer<Holder<Biome>> palette = chunk.getSection(sectionY).getBiomes();
if (biomes instanceof PalettedContainer<Holder<Biome>> palette) { palette.set((pos.getX() & 15) >> 2, (pos.getY() & 15) >> 2, (pos.getZ() & 15) >> 2, biome);
palette.set((pos.getX() & 15) >> 2, (pos.getY() & 15) >> 2, (pos.getZ() & 15) >> 2, biome);
} else {
BCLib.LOGGER.warning("Unable to change Biome at " + pos);
}
} }
/** /**

View file

@ -21,7 +21,6 @@ import net.minecraft.data.worldgen.placement.PlacementUtils;
import net.minecraft.resources.ResourceKey; import net.minecraft.resources.ResourceKey;
import net.minecraft.resources.ResourceLocation; import net.minecraft.resources.ResourceLocation;
import net.minecraft.server.level.ServerLevel; import net.minecraft.server.level.ServerLevel;
import net.minecraft.util.RandomSource;
import net.minecraft.world.level.levelgen.GenerationStep.Decoration; import net.minecraft.world.level.levelgen.GenerationStep.Decoration;
import net.minecraft.world.level.levelgen.feature.ConfiguredFeature; import net.minecraft.world.level.levelgen.feature.ConfiguredFeature;
import net.minecraft.world.level.levelgen.feature.Feature; import net.minecraft.world.level.levelgen.feature.Feature;
@ -35,6 +34,7 @@ import net.minecraft.world.level.levelgen.placement.PlacementModifier;
import java.util.Map; import java.util.Map;
import java.util.Optional; import java.util.Optional;
import java.util.Random;
/** /**
* @param <F> * @param <F>
@ -237,7 +237,7 @@ public class BCLFeature<F extends Feature<FC>, FC extends FeatureConfiguration>
return proxy.getConfiguration(); return proxy.getConfiguration();
} }
public boolean place(ServerLevel level, BlockPos pos, RandomSource random) { public boolean place(ServerLevel level, BlockPos pos, Random random) {
return place(this.getFeature(), this.getConfiguration(), level, pos, random); return place(this.getFeature(), this.getConfiguration(), level, pos, random);
} }
@ -246,7 +246,7 @@ public class BCLFeature<F extends Feature<FC>, FC extends FeatureConfiguration>
FeatureConfiguration config, FeatureConfiguration config,
ServerLevel level, ServerLevel level,
BlockPos pos, BlockPos pos,
RandomSource random Random random
) { ) {
if (config instanceof RandomPatchConfiguration rnd) { if (config instanceof RandomPatchConfiguration rnd) {
var configured = rnd.feature().value().feature().value(); var configured = rnd.feature().value().feature().value();
@ -273,7 +273,7 @@ public class BCLFeature<F extends Feature<FC>, FC extends FeatureConfiguration>
Feature<NoneFeatureConfiguration> feature, Feature<NoneFeatureConfiguration> feature,
ServerLevel level, ServerLevel level,
BlockPos pos, BlockPos pos,
RandomSource random Random random
) { ) {
return placeUnbound(feature, FeatureConfiguration.NONE, level, pos, random); return placeUnbound(feature, FeatureConfiguration.NONE, level, pos, random);
} }
@ -283,7 +283,7 @@ public class BCLFeature<F extends Feature<FC>, FC extends FeatureConfiguration>
FC config, FC config,
ServerLevel level, ServerLevel level,
BlockPos pos, BlockPos pos,
RandomSource random Random random
) { ) {
return placeUnbound(feature, config, level, pos, random); return placeUnbound(feature, config, level, pos, random);
} }

View file

@ -8,7 +8,6 @@ import com.mojang.datafixers.util.Function15;
import com.mojang.serialization.Codec; import com.mojang.serialization.Codec;
import com.mojang.serialization.codecs.RecordCodecBuilder; import com.mojang.serialization.codecs.RecordCodecBuilder;
import net.minecraft.core.BlockPos; import net.minecraft.core.BlockPos;
import net.minecraft.util.RandomSource;
import net.minecraft.util.valueproviders.ConstantInt; import net.minecraft.util.valueproviders.ConstantInt;
import net.minecraft.util.valueproviders.IntProvider; import net.minecraft.util.valueproviders.IntProvider;
import net.minecraft.util.valueproviders.UniformInt; import net.minecraft.util.valueproviders.UniformInt;
@ -18,6 +17,7 @@ import net.minecraft.world.level.levelgen.feature.configurations.FeatureConfigur
import net.minecraft.world.level.levelgen.feature.stateproviders.BlockStateProvider; import net.minecraft.world.level.levelgen.feature.stateproviders.BlockStateProvider;
import java.util.Optional; import java.util.Optional;
import java.util.Random;
public abstract class ScatterFeatureConfig implements FeatureConfiguration { public abstract class ScatterFeatureConfig implements FeatureConfiguration {
public interface Instancer<T extends ScatterFeatureConfig> extends Function15<BlockStateProvider, Optional<BlockStateProvider>, Optional<BlockStateProvider>, Optional<BlockState>, Float, Float, Float, Float, Integer, Integer, Float, Float, Float, Boolean, IntProvider, T> { public interface Instancer<T extends ScatterFeatureConfig> extends Function15<BlockStateProvider, Optional<BlockStateProvider>, Optional<BlockStateProvider>, Optional<BlockState>, Float, Float, Float, Float, Integer, Integer, Float, Float, Float, Boolean, IntProvider, T> {
@ -76,13 +76,13 @@ public abstract class ScatterFeatureConfig implements FeatureConfiguration {
} }
public boolean isFloor(RandomSource random) { public boolean isFloor(Random random) {
return random.nextFloat() < floorChance; return random.nextFloat() < floorChance;
} }
public abstract boolean isValidBase(BlockState state); public abstract boolean isValidBase(BlockState state);
public abstract BlockState createBlock(int height, int maxHeight, RandomSource random, BlockPos pos); public abstract BlockState createBlock(int height, int maxHeight, Random random, BlockPos pos);
public static <T extends ScatterFeatureConfig> Codec<T> buildCodec(Instancer<T> instancer) { public static <T extends ScatterFeatureConfig> Codec<T> buildCodec(Instancer<T> instancer) {
return RecordCodecBuilder.create((instance) -> instance return RecordCodecBuilder.create((instance) -> instance
@ -420,7 +420,7 @@ public abstract class ScatterFeatureConfig implements FeatureConfiguration {
} }
@Override @Override
public BlockState createBlock(int height, int maxHeight, RandomSource random, BlockPos pos) { public BlockState createBlock(int height, int maxHeight, Random random, BlockPos pos) {
if (height == 0) return this.bottomBlock.getState(random, pos); if (height == 0) return this.bottomBlock.getState(random, pos);
return height == maxHeight return height == maxHeight
? this.tipBlock.getState(random, pos) ? this.tipBlock.getState(random, pos)
@ -480,7 +480,7 @@ public abstract class ScatterFeatureConfig implements FeatureConfiguration {
} }
@Override @Override
public BlockState createBlock(int height, int maxHeight, RandomSource random, BlockPos pos) { public BlockState createBlock(int height, int maxHeight, Random random, BlockPos pos) {
if (height == 0) return this.bottomBlock.getState(random, pos); if (height == 0) return this.bottomBlock.getState(random, pos);
if (height == 1) return this.clusterBlock.getState(random, pos); if (height == 1) return this.clusterBlock.getState(random, pos);
return this.tipBlock.getState(random, pos); return this.tipBlock.getState(random, pos);
@ -538,7 +538,7 @@ public abstract class ScatterFeatureConfig implements FeatureConfiguration {
} }
@Override @Override
public BlockState createBlock(int height, int maxHeight, RandomSource random, BlockPos pos) { public BlockState createBlock(int height, int maxHeight, Random random, BlockPos pos) {
if (height == maxHeight) return this.tipBlock.getState(random, pos); if (height == maxHeight) return this.tipBlock.getState(random, pos);
if (height == maxHeight - 1) return this.clusterBlock.getState(random, pos); if (height == maxHeight - 1) return this.clusterBlock.getState(random, pos);
return this.bottomBlock.getState(random, pos); return this.bottomBlock.getState(random, pos);

View file

@ -7,7 +7,6 @@ import org.betterx.bclib.util.BlocksHelper;
import com.mojang.serialization.Codec; import com.mojang.serialization.Codec;
import net.minecraft.core.BlockPos; import net.minecraft.core.BlockPos;
import net.minecraft.core.Direction; import net.minecraft.core.Direction;
import net.minecraft.util.RandomSource;
import net.minecraft.world.level.LevelAccessor; import net.minecraft.world.level.LevelAccessor;
import net.minecraft.world.level.ServerLevelAccessor; import net.minecraft.world.level.ServerLevelAccessor;
import net.minecraft.world.level.WorldGenLevel; import net.minecraft.world.level.WorldGenLevel;
@ -16,6 +15,7 @@ import net.minecraft.world.level.levelgen.feature.Feature;
import net.minecraft.world.level.levelgen.feature.FeaturePlaceContext; import net.minecraft.world.level.levelgen.feature.FeaturePlaceContext;
import java.util.Optional; import java.util.Optional;
import java.util.Random;
@Deprecated(forRemoval = true) @Deprecated(forRemoval = true)
public class ScatterFeature<FC extends ScatterFeatureConfig> public class ScatterFeature<FC extends ScatterFeatureConfig>
@ -29,7 +29,7 @@ public class ScatterFeature<FC extends ScatterFeatureConfig>
public boolean place(FeaturePlaceContext<FC> featurePlaceContext) { public boolean place(FeaturePlaceContext<FC> featurePlaceContext) {
final WorldGenLevel level = featurePlaceContext.level(); final WorldGenLevel level = featurePlaceContext.level();
final BlockPos origin = featurePlaceContext.origin(); final BlockPos origin = featurePlaceContext.origin();
final RandomSource random = featurePlaceContext.random(); final Random random = featurePlaceContext.random();
ScatterFeatureConfig config = featurePlaceContext.config(); ScatterFeatureConfig config = featurePlaceContext.config();
Optional<Direction> direction = getTipDirection(level, origin, random, config); Optional<Direction> direction = getTipDirection(level, origin, random, config);
@ -52,7 +52,7 @@ public class ScatterFeature<FC extends ScatterFeatureConfig>
Direction direction, Direction direction,
int centerHeight, int centerHeight,
ScatterFeatureConfig config, ScatterFeatureConfig config,
RandomSource random Random random
) { ) {
if (config.isValidBase(level.getBlockState(basePos))) { if (config.isValidBase(level.getBlockState(basePos))) {
final Direction surfaceDirection = direction.getOpposite(); final Direction surfaceDirection = direction.getOpposite();
@ -131,7 +131,7 @@ public class ScatterFeature<FC extends ScatterFeatureConfig>
Direction direction, Direction direction,
int height, int height,
ScatterFeatureConfig config, ScatterFeatureConfig config,
RandomSource random, Random random,
boolean force boolean force
) { ) {
if (force || BlocksHelper.isFreeSpace(level, origin, direction, height, BlocksHelper::isFree)) { if (force || BlocksHelper.isFreeSpace(level, origin, direction, height, BlocksHelper::isFree)) {
@ -149,7 +149,7 @@ public class ScatterFeature<FC extends ScatterFeatureConfig>
Direction direction, Direction direction,
int height, int height,
ScatterFeatureConfig config, ScatterFeatureConfig config,
RandomSource random Random random
) { ) {
final BlockPos.MutableBlockPos POS = origin.mutable(); final BlockPos.MutableBlockPos POS = origin.mutable();
@ -163,14 +163,14 @@ public class ScatterFeature<FC extends ScatterFeatureConfig>
private Optional<Direction> getTipDirection( private Optional<Direction> getTipDirection(
LevelAccessor levelAccessor, LevelAccessor levelAccessor,
BlockPos blockPos, BlockPos blockPos,
RandomSource randomSource, Random Random,
ScatterFeatureConfig config ScatterFeatureConfig config
) { ) {
boolean onCeil = config.floorChance < 1 && config.isValidBase(levelAccessor.getBlockState(blockPos.above())); boolean onCeil = config.floorChance < 1 && config.isValidBase(levelAccessor.getBlockState(blockPos.above()));
boolean onFloor = config.floorChance > 0 && config.isValidBase(levelAccessor.getBlockState(blockPos.below())); boolean onFloor = config.floorChance > 0 && config.isValidBase(levelAccessor.getBlockState(blockPos.below()));
if (onCeil && onFloor) { if (onCeil && onFloor) {
return Optional.of(config.isFloor(randomSource) ? Direction.DOWN : Direction.UP); return Optional.of(config.isFloor(Random) ? Direction.DOWN : Direction.UP);
} }
if (onCeil) { if (onCeil) {
return Optional.of(Direction.DOWN); return Optional.of(Direction.DOWN);
@ -183,24 +183,24 @@ public class ScatterFeature<FC extends ScatterFeatureConfig>
private void createPatchOfBaseBlocks( private void createPatchOfBaseBlocks(
LevelAccessor levelAccessor, LevelAccessor levelAccessor,
RandomSource randomSource, Random Random,
BlockPos blockPos, BlockPos blockPos,
ScatterFeatureConfig config ScatterFeatureConfig config
) { ) {
if (config.baseState.isPresent() && config.baseReplaceChance > 0 && randomSource.nextFloat() < config.baseReplaceChance) { if (config.baseState.isPresent() && config.baseReplaceChance > 0 && Random.nextFloat() < config.baseReplaceChance) {
final BlockState baseState = config.baseState.get(); final BlockState baseState = config.baseState.get();
BlockPos pos; BlockPos pos;
for (Direction direction : Direction.Plane.HORIZONTAL) { for (Direction direction : Direction.Plane.HORIZONTAL) {
if (randomSource.nextFloat() > config.chanceOfDirectionalSpread) continue; if (Random.nextFloat() > config.chanceOfDirectionalSpread) continue;
pos = blockPos.relative(direction); pos = blockPos.relative(direction);
placeBaseBlockIfPossible(levelAccessor, pos, baseState); placeBaseBlockIfPossible(levelAccessor, pos, baseState);
if (randomSource.nextFloat() > config.chanceOfSpreadRadius2) continue; if (Random.nextFloat() > config.chanceOfSpreadRadius2) continue;
pos = pos.relative(Direction.getRandom(randomSource)); pos = pos.relative(Direction.getRandom(Random));
placeBaseBlockIfPossible(levelAccessor, pos, baseState); placeBaseBlockIfPossible(levelAccessor, pos, baseState);
if (randomSource.nextFloat() > config.chanceOfSpreadRadius3) continue; if (Random.nextFloat() > config.chanceOfSpreadRadius3) continue;
pos = pos.relative(Direction.getRandom(randomSource)); pos = pos.relative(Direction.getRandom(Random));
placeBaseBlockIfPossible(levelAccessor, pos, baseState); placeBaseBlockIfPossible(levelAccessor, pos, baseState);
} }
placeBaseBlockIfPossible(levelAccessor, blockPos, baseState); placeBaseBlockIfPossible(levelAccessor, blockPos, baseState);
@ -222,7 +222,7 @@ public class ScatterFeature<FC extends ScatterFeatureConfig>
public boolean grow( public boolean grow(
ServerLevelAccessor level, ServerLevelAccessor level,
BlockPos origin, BlockPos origin,
RandomSource random, Random random,
FC config FC config
) { ) {
Optional<Direction> oDirection = getTipDirection(level, origin, random, config); Optional<Direction> oDirection = getTipDirection(level, origin, random, config);

View file

@ -1,7 +1,6 @@
package org.betterx.bclib.api.v2.levelgen.features.features; package org.betterx.bclib.api.v2.levelgen.features.features;
import net.minecraft.core.BlockPos; import net.minecraft.core.BlockPos;
import net.minecraft.util.RandomSource;
import net.minecraft.world.level.WorldGenLevel; import net.minecraft.world.level.WorldGenLevel;
import net.minecraft.world.level.chunk.ChunkGenerator; import net.minecraft.world.level.chunk.ChunkGenerator;
import net.minecraft.world.level.levelgen.feature.Feature; import net.minecraft.world.level.levelgen.feature.Feature;
@ -10,6 +9,8 @@ import net.minecraft.world.level.levelgen.feature.WeightedPlacedFeature;
import net.minecraft.world.level.levelgen.feature.configurations.RandomFeatureConfiguration; import net.minecraft.world.level.levelgen.feature.configurations.RandomFeatureConfiguration;
import net.minecraft.world.level.levelgen.placement.PlacedFeature; import net.minecraft.world.level.levelgen.placement.PlacedFeature;
import java.util.Random;
@Deprecated(forRemoval = true) @Deprecated(forRemoval = true)
public class WeightedRandomSelectorFeature extends Feature<RandomFeatureConfiguration> { public class WeightedRandomSelectorFeature extends Feature<RandomFeatureConfiguration> {
@ -21,7 +22,7 @@ public class WeightedRandomSelectorFeature extends Feature<RandomFeatureConfigur
final WorldGenLevel level = ctx.level(); final WorldGenLevel level = ctx.level();
final ChunkGenerator generator = ctx.chunkGenerator(); final ChunkGenerator generator = ctx.chunkGenerator();
final RandomFeatureConfiguration cfg = ctx.config(); final RandomFeatureConfiguration cfg = ctx.config();
final RandomSource random = ctx.random(); final Random random = ctx.random();
final BlockPos pos = ctx.origin(); final BlockPos pos = ctx.origin();
PlacedFeature selected = cfg.defaultFeature.value(); PlacedFeature selected = cfg.defaultFeature.value();

View file

@ -3,12 +3,13 @@ package org.betterx.bclib.api.v2.levelgen.features.placement;
import com.mojang.serialization.Codec; import com.mojang.serialization.Codec;
import com.mojang.serialization.codecs.RecordCodecBuilder; import com.mojang.serialization.codecs.RecordCodecBuilder;
import net.minecraft.core.BlockPos; import net.minecraft.core.BlockPos;
import net.minecraft.util.RandomSource;
import net.minecraft.world.level.WorldGenLevel; import net.minecraft.world.level.WorldGenLevel;
import net.minecraft.world.level.levelgen.placement.PlacementContext; import net.minecraft.world.level.levelgen.placement.PlacementContext;
import net.minecraft.world.level.levelgen.placement.PlacementFilter; import net.minecraft.world.level.levelgen.placement.PlacementFilter;
import net.minecraft.world.level.levelgen.placement.PlacementModifierType; import net.minecraft.world.level.levelgen.placement.PlacementModifierType;
import java.util.Random;
/** /**
* Tests if there is air at two locations above the tested block position * Tests if there is air at two locations above the tested block position
*/ */
@ -62,7 +63,7 @@ public class IsEmptyAboveSampledFilter extends PlacementFilter {
@Override @Override
protected boolean shouldPlace(PlacementContext ctx, RandomSource random, BlockPos pos) { protected boolean shouldPlace(PlacementContext ctx, Random random, BlockPos pos) {
WorldGenLevel level = ctx.getLevel(); WorldGenLevel level = ctx.getLevel();
return level.isEmptyBlock(pos.above(distance1)) return level.isEmptyBlock(pos.above(distance1))
&& (distance1 == distance2 || level.isEmptyBlock(pos.above(distance2))); && (distance1 == distance2 || level.isEmptyBlock(pos.above(distance2)));

View file

@ -6,12 +6,13 @@ import com.mojang.serialization.Codec;
import com.mojang.serialization.codecs.RecordCodecBuilder; import com.mojang.serialization.codecs.RecordCodecBuilder;
import net.minecraft.core.BlockPos; import net.minecraft.core.BlockPos;
import net.minecraft.core.Direction; import net.minecraft.core.Direction;
import net.minecraft.util.RandomSource;
import net.minecraft.world.level.levelgen.placement.PlacementContext; import net.minecraft.world.level.levelgen.placement.PlacementContext;
import net.minecraft.world.level.levelgen.placement.PlacementFilter; import net.minecraft.world.level.levelgen.placement.PlacementFilter;
import net.minecraft.world.level.levelgen.placement.PlacementModifier; import net.minecraft.world.level.levelgen.placement.PlacementModifier;
import net.minecraft.world.level.levelgen.placement.PlacementModifierType; import net.minecraft.world.level.levelgen.placement.PlacementModifierType;
import java.util.Random;
@Deprecated(forRemoval = true) @Deprecated(forRemoval = true)
public class MinEmptyFilter extends PlacementFilter { public class MinEmptyFilter extends PlacementFilter {
private static final MinEmptyFilter DOWN = new MinEmptyFilter(Direction.DOWN, 2); private static final MinEmptyFilter DOWN = new MinEmptyFilter(Direction.DOWN, 2);
@ -48,7 +49,7 @@ public class MinEmptyFilter extends PlacementFilter {
} }
@Override @Override
protected boolean shouldPlace(PlacementContext ctx, RandomSource randomSource, BlockPos pos) { protected boolean shouldPlace(PlacementContext ctx, Random Random, BlockPos pos) {
return BlocksHelper.isFreeSpace( return BlocksHelper.isFreeSpace(
ctx.getLevel(), ctx.getLevel(),
pos.relative(direction), pos.relative(direction),

View file

@ -7,19 +7,18 @@ import net.minecraft.resources.ResourceLocation;
import net.minecraft.tags.TagKey; import net.minecraft.tags.TagKey;
import net.minecraft.world.level.biome.Biome; import net.minecraft.world.level.biome.Biome;
import net.minecraft.world.level.levelgen.GenerationStep; import net.minecraft.world.level.levelgen.GenerationStep;
import net.minecraft.world.level.levelgen.structure.Structure; import net.minecraft.world.level.levelgen.feature.StructureFeature;
import net.minecraft.world.level.levelgen.structure.TerrainAdjustment;
import net.minecraft.world.level.levelgen.structure.placement.RandomSpreadStructurePlacement; import net.minecraft.world.level.levelgen.structure.placement.RandomSpreadStructurePlacement;
import net.minecraft.world.level.levelgen.structure.placement.RandomSpreadType; import net.minecraft.world.level.levelgen.structure.placement.RandomSpreadType;
import net.minecraft.world.level.levelgen.structure.placement.StructurePlacement; import net.minecraft.world.level.levelgen.structure.placement.StructurePlacement;
import java.util.function.Function; import java.util.function.Function;
public class BCLStructureBuilder<S extends Structure> { public class BCLStructureBuilder<S extends StructureFeature> {
private static final BCLStructureBuilder INSTANCE = new BCLStructureBuilder(); private static final BCLStructureBuilder INSTANCE = new BCLStructureBuilder();
private ResourceLocation structureID; private ResourceLocation structureID;
private Function<Structure.StructureSettings, S> structureBuilder; private Function<StructureSettings, S> structureBuilder;
private GenerationStep.Decoration step; private GenerationStep.Decoration step;

View file

@ -9,7 +9,6 @@ import net.minecraft.nbt.CompoundTag;
import net.minecraft.nbt.NbtIo; import net.minecraft.nbt.NbtIo;
import net.minecraft.resources.ResourceLocation; import net.minecraft.resources.ResourceLocation;
import net.minecraft.server.MinecraftServer; import net.minecraft.server.MinecraftServer;
import net.minecraft.util.RandomSource;
import net.minecraft.world.level.ServerLevelAccessor; import net.minecraft.world.level.ServerLevelAccessor;
import net.minecraft.world.level.block.Block; import net.minecraft.world.level.block.Block;
import net.minecraft.world.level.block.Mirror; import net.minecraft.world.level.block.Mirror;
@ -23,6 +22,7 @@ import com.google.common.collect.Maps;
import java.io.IOException; import java.io.IOException;
import java.io.InputStream; import java.io.InputStream;
import java.util.Map; import java.util.Map;
import java.util.Random;
public class StructureNBT { public class StructureNBT {
public final ResourceLocation location; public final ResourceLocation location;
@ -39,11 +39,11 @@ public class StructureNBT {
this.structure = structure; this.structure = structure;
} }
public static Rotation getRandomRotation(RandomSource random) { public static Rotation getRandomRotation(Random random) {
return Rotation.getRandom(random); return Rotation.getRandom(random);
} }
public static Mirror getRandomMirror(RandomSource random) { public static Mirror getRandomMirror(Random random) {
return Mirror.values()[random.nextInt(3)]; return Mirror.values()[random.nextInt(3)];
} }

View file

@ -7,7 +7,6 @@ import com.mojang.serialization.codecs.RecordCodecBuilder;
import net.minecraft.core.BlockPos; import net.minecraft.core.BlockPos;
import net.minecraft.core.BlockPos.MutableBlockPos; import net.minecraft.core.BlockPos.MutableBlockPos;
import net.minecraft.resources.ResourceLocation; import net.minecraft.resources.ResourceLocation;
import net.minecraft.util.RandomSource;
import net.minecraft.world.level.LevelAccessor; import net.minecraft.world.level.LevelAccessor;
import net.minecraft.world.level.ServerLevelAccessor; import net.minecraft.world.level.ServerLevelAccessor;
import net.minecraft.world.level.block.Blocks; import net.minecraft.world.level.block.Blocks;
@ -18,6 +17,7 @@ import net.minecraft.world.level.levelgen.structure.BoundingBox;
import com.google.common.collect.Maps; import com.google.common.collect.Maps;
import java.util.Map; import java.util.Map;
import java.util.Random;
public class StructureWorldNBT extends StructureNBT { public class StructureWorldNBT extends StructureNBT {
public static final Codec<StructureWorldNBT> CODEC = public static final Codec<StructureWorldNBT> CODEC =
@ -76,7 +76,7 @@ public class StructureWorldNBT extends StructureNBT {
public boolean generateIfPlaceable( public boolean generateIfPlaceable(
ServerLevelAccessor level, ServerLevelAccessor level,
BlockPos pos, BlockPos pos,
RandomSource random Random random
) { ) {
return generateIfPlaceable( return generateIfPlaceable(
level, level,

View file

@ -6,7 +6,6 @@ import net.minecraft.core.BlockPos;
import net.minecraft.core.Registry; import net.minecraft.core.Registry;
import net.minecraft.nbt.CompoundTag; import net.minecraft.nbt.CompoundTag;
import net.minecraft.resources.ResourceLocation; import net.minecraft.resources.ResourceLocation;
import net.minecraft.util.RandomSource;
import net.minecraft.world.level.ServerLevelAccessor; import net.minecraft.world.level.ServerLevelAccessor;
import net.minecraft.world.level.block.Mirror; import net.minecraft.world.level.block.Mirror;
import net.minecraft.world.level.block.Rotation; import net.minecraft.world.level.block.Rotation;
@ -15,9 +14,11 @@ import net.minecraft.world.level.levelgen.structure.TemplateStructurePiece;
import net.minecraft.world.level.levelgen.structure.pieces.StructurePieceSerializationContext; import net.minecraft.world.level.levelgen.structure.pieces.StructurePieceSerializationContext;
import net.minecraft.world.level.levelgen.structure.pieces.StructurePieceType; import net.minecraft.world.level.levelgen.structure.pieces.StructurePieceType;
import net.minecraft.world.level.levelgen.structure.templatesystem.BlockIgnoreProcessor; import net.minecraft.world.level.levelgen.structure.templatesystem.BlockIgnoreProcessor;
import net.minecraft.world.level.levelgen.structure.templatesystem.StructureManager;
import net.minecraft.world.level.levelgen.structure.templatesystem.StructurePlaceSettings; import net.minecraft.world.level.levelgen.structure.templatesystem.StructurePlaceSettings;
import net.minecraft.world.level.levelgen.structure.templatesystem.StructureTemplate; import net.minecraft.world.level.levelgen.structure.templatesystem.StructureTemplate;
import net.minecraft.world.level.levelgen.structure.templatesystem.StructureTemplateManager;
import java.util.Random;
public class TemplatePiece extends TemplateStructurePiece { public class TemplatePiece extends TemplateStructurePiece {
public static final StructurePieceType INSTANCE = setTemplatePieceId( public static final StructurePieceType INSTANCE = setTemplatePieceId(
@ -43,7 +44,7 @@ public class TemplatePiece extends TemplateStructurePiece {
public TemplatePiece( public TemplatePiece(
StructureTemplateManager structureTemplateManager, StructureManager structureTemplateManager,
ResourceLocation resourceLocation, ResourceLocation resourceLocation,
BlockPos centerPos, BlockPos centerPos,
Rotation rotation, Rotation rotation,
@ -61,7 +62,7 @@ public class TemplatePiece extends TemplateStructurePiece {
); );
} }
public TemplatePiece(StructureTemplateManager structureTemplateManager, CompoundTag compoundTag) { public TemplatePiece(StructureManager structureTemplateManager, CompoundTag compoundTag) {
super( super(
INSTANCE, INSTANCE,
compoundTag, compoundTag,
@ -114,7 +115,7 @@ public class TemplatePiece extends TemplateStructurePiece {
String string, String string,
BlockPos blockPos, BlockPos blockPos,
ServerLevelAccessor serverLevelAccessor, ServerLevelAccessor serverLevelAccessor,
RandomSource randomSource, Random Random,
BoundingBox boundingBox BoundingBox boundingBox
) { ) {

View file

@ -5,7 +5,6 @@ import com.mojang.serialization.codecs.RecordCodecBuilder;
import net.minecraft.core.BlockPos; import net.minecraft.core.BlockPos;
import net.minecraft.resources.ResourceLocation; import net.minecraft.resources.ResourceLocation;
import net.minecraft.util.ExtraCodecs; import net.minecraft.util.ExtraCodecs;
import net.minecraft.util.RandomSource;
import net.minecraft.world.level.ChunkPos; import net.minecraft.world.level.ChunkPos;
import net.minecraft.world.level.NoiseColumn; import net.minecraft.world.level.NoiseColumn;
import net.minecraft.world.level.block.Blocks; import net.minecraft.world.level.block.Blocks;
@ -13,6 +12,7 @@ import net.minecraft.world.level.block.Mirror;
import net.minecraft.world.level.block.Rotation; import net.minecraft.world.level.block.Rotation;
import net.minecraft.world.level.block.state.BlockState; import net.minecraft.world.level.block.state.BlockState;
import net.minecraft.world.level.levelgen.WorldGenerationContext; import net.minecraft.world.level.levelgen.WorldGenerationContext;
import net.minecraft.world.level.levelgen.feature.StructureFeature;
import net.minecraft.world.level.levelgen.structure.BoundingBox; import net.minecraft.world.level.levelgen.structure.BoundingBox;
import net.minecraft.world.level.levelgen.structure.Structure; import net.minecraft.world.level.levelgen.structure.Structure;
import net.minecraft.world.level.levelgen.structure.templatesystem.StructureTemplate; import net.minecraft.world.level.levelgen.structure.templatesystem.StructureTemplate;
@ -21,11 +21,12 @@ import com.google.common.collect.ImmutableList;
import java.util.List; import java.util.List;
import java.util.Optional; import java.util.Optional;
import java.util.Random;
import java.util.function.BiFunction; import java.util.function.BiFunction;
import java.util.function.BiPredicate; import java.util.function.BiPredicate;
import java.util.stream.Collectors; import java.util.stream.Collectors;
public abstract class TemplateStructure extends Structure { public abstract class TemplateStructure extends StructureFeature {
protected final List<Config> configs; protected final List<Config> configs;
public static <T extends TemplateStructure> Codec<T> simpleTemplateCodec(BiFunction<StructureSettings, List<Config>, T> instancer) { public static <T extends TemplateStructure> Codec<T> simpleTemplateCodec(BiFunction<StructureSettings, List<Config>, T> instancer) {
@ -59,7 +60,7 @@ public abstract class TemplateStructure extends Structure {
this.configs = configs; this.configs = configs;
} }
protected Config randomConfig(RandomSource random) { protected Config randomConfig(Random random) {
if (this.configs.size() > 1) { if (this.configs.size() > 1) {
final float chanceSum = configs.parallelStream().map(c -> c.chance()).reduce(0.0f, (p, c) -> p + c); final float chanceSum = configs.parallelStream().map(c -> c.chance()).reduce(0.0f, (p, c) -> p + c);
float rnd = random.nextFloat() * chanceSum; float rnd = random.nextFloat() * chanceSum;

View file

@ -8,13 +8,13 @@ import com.mojang.serialization.Codec;
import com.mojang.serialization.codecs.RecordCodecBuilder; import com.mojang.serialization.codecs.RecordCodecBuilder;
import net.minecraft.core.Registry; import net.minecraft.core.Registry;
import net.minecraft.resources.ResourceKey; import net.minecraft.resources.ResourceKey;
import net.minecraft.util.KeyDispatchDataCodec;
import net.minecraft.util.RandomSource;
import net.minecraft.util.valueproviders.FloatProvider; import net.minecraft.util.valueproviders.FloatProvider;
import net.minecraft.util.valueproviders.UniformFloat; import net.minecraft.util.valueproviders.UniformFloat;
import net.minecraft.world.level.levelgen.SurfaceRules; import net.minecraft.world.level.levelgen.SurfaceRules;
import net.minecraft.world.level.levelgen.synth.NormalNoise; import net.minecraft.world.level.levelgen.synth.NormalNoise;
import java.util.Random;
public class RoughNoiseCondition implements SurfaceRules.ConditionSource { public class RoughNoiseCondition implements SurfaceRules.ConditionSource {
public static final Codec<RoughNoiseCondition> CODEC = RecordCodecBuilder.create(instance -> instance public static final Codec<RoughNoiseCondition> CODEC = RecordCodecBuilder.create(instance -> instance
.group( .group(
@ -33,8 +33,6 @@ public class RoughNoiseCondition implements SurfaceRules.ConditionSource {
) )
)); ));
public static final KeyDispatchDataCodec<RoughNoiseCondition> KEY_CODEC = KeyDispatchDataCodec.of(CODEC);
private final ResourceKey<NormalNoise.NoiseParameters> noise; private final ResourceKey<NormalNoise.NoiseParameters> noise;
private final double minThreshold; private final double minThreshold;
private final double maxThreshold; private final double maxThreshold;
@ -77,17 +75,17 @@ public class RoughNoiseCondition implements SurfaceRules.ConditionSource {
} }
@Override @Override
public KeyDispatchDataCodec<? extends SurfaceRules.ConditionSource> codec() { public Codec<? extends SurfaceRules.ConditionSource> codec() {
return KEY_CODEC; return CODEC;
} }
@Override @Override
public SurfaceRules.Condition apply(final SurfaceRules.Context context2) { public SurfaceRules.Condition apply(final SurfaceRules.Context context2) {
final SurfaceRulesContextAccessor ctx = SurfaceRulesContextAccessor.class.cast(context2); final SurfaceRulesContextAccessor ctx = SurfaceRulesContextAccessor.class.cast(context2);
final NormalNoise normalNoise = ctx.getRandomState().getOrCreateNoise(this.noise); final NormalNoise normalNoise = ctx.getRandomState().getOrCreateNoise(this.noise);
final RandomSource roughnessSource = ctx.getRandomState() final Random roughnessSource = ctx.getRandomState()
.getOrCreateRandomFactory(Noises.ROUGHNESS_NOISE.location()) .getOrCreateRandomFactory(Noises.ROUGHNESS_NOISE.location())
.fromHashOf(Noises.ROUGHNESS_NOISE.location()); .fromHashOf(Noises.ROUGHNESS_NOISE.location());
class NoiseThresholdCondition extends SurfaceRules.LazyCondition { class NoiseThresholdCondition extends SurfaceRules.LazyCondition {
NoiseThresholdCondition() { NoiseThresholdCondition() {

View file

@ -5,16 +5,15 @@ import org.betterx.bclib.noise.OpenSimplexNoise;
import com.mojang.serialization.Codec; import com.mojang.serialization.Codec;
import com.mojang.serialization.codecs.RecordCodecBuilder; import com.mojang.serialization.codecs.RecordCodecBuilder;
import net.minecraft.util.KeyDispatchDataCodec;
import net.minecraft.util.RandomSource;
import net.minecraft.util.valueproviders.ConstantFloat; import net.minecraft.util.valueproviders.ConstantFloat;
import net.minecraft.util.valueproviders.FloatProvider; import net.minecraft.util.valueproviders.FloatProvider;
import net.minecraft.world.level.levelgen.SurfaceRules; import net.minecraft.world.level.levelgen.SurfaceRules;
import net.minecraft.world.level.levelgen.ThreadSafeLegacyRandomSource; import net.minecraft.world.level.levelgen.ThreadSafeLegacyRandom;
import com.google.common.collect.Maps; import com.google.common.collect.Maps;
import java.util.Map; import java.util.Map;
import java.util.Random;
public class ThresholdCondition extends SurfaceNoiseCondition { public class ThresholdCondition extends SurfaceNoiseCondition {
private static final Map<Long, Context> NOISES = Maps.newHashMap(); private static final Map<Long, Context> NOISES = Maps.newHashMap();
@ -27,7 +26,6 @@ public class ThresholdCondition extends SurfaceNoiseCondition {
Codec.DOUBLE.fieldOf("scale_z").orElse(0.1).forGetter(p -> p.scaleZ) Codec.DOUBLE.fieldOf("scale_z").orElse(0.1).forGetter(p -> p.scaleZ)
) )
.apply(instance, ThresholdCondition::new)); .apply(instance, ThresholdCondition::new));
public static final KeyDispatchDataCodec<ThresholdCondition> KEY_CODEC = KeyDispatchDataCodec.of(CODEC);
private final Context noiseContext; private final Context noiseContext;
private final double threshold; private final double threshold;
private final FloatProvider range; private final FloatProvider range;
@ -58,13 +56,13 @@ public class ThresholdCondition extends SurfaceNoiseCondition {
} }
@Override @Override
public KeyDispatchDataCodec<? extends SurfaceRules.ConditionSource> codec() { public Codec<? extends SurfaceRules.ConditionSource> codec() {
return KEY_CODEC; return CODEC;
} }
static class Context { static class Context {
public final OpenSimplexNoise noise; public final OpenSimplexNoise noise;
public final RandomSource random; public final Random random;
public final long seed; public final long seed;
public double lastX = Integer.MIN_VALUE; public double lastX = Integer.MIN_VALUE;
@ -74,7 +72,7 @@ public class ThresholdCondition extends SurfaceNoiseCondition {
Context(long seed) { Context(long seed) {
this.seed = seed; this.seed = seed;
this.noise = new OpenSimplexNoise(seed); this.noise = new OpenSimplexNoise(seed);
this.random = new ThreadSafeLegacyRandomSource(seed * 2); this.random = new ThreadSafeLegacyRandom(seed * 2);
} }
} }
} }

View file

@ -6,15 +6,15 @@ import org.betterx.bclib.noise.OpenSimplexNoise;
import com.mojang.serialization.Codec; import com.mojang.serialization.Codec;
import com.mojang.serialization.codecs.RecordCodecBuilder; import com.mojang.serialization.codecs.RecordCodecBuilder;
import net.minecraft.util.KeyDispatchDataCodec; import net.minecraft.util.KeyDispatchDataCodec;
import net.minecraft.util.RandomSource;
import net.minecraft.util.valueproviders.ConstantFloat; import net.minecraft.util.valueproviders.ConstantFloat;
import net.minecraft.util.valueproviders.FloatProvider; import net.minecraft.util.valueproviders.FloatProvider;
import net.minecraft.world.level.levelgen.SurfaceRules; import net.minecraft.world.level.levelgen.SurfaceRules;
import net.minecraft.world.level.levelgen.ThreadSafeLegacyRandomSource; import net.minecraft.world.level.levelgen.ThreadSafeLegacyRandom;
import com.google.common.collect.Maps; import com.google.common.collect.Maps;
import java.util.Map; import java.util.Map;
import java.util.Random;
public class VolumeThresholdCondition extends VolumeNoiseCondition { public class VolumeThresholdCondition extends VolumeNoiseCondition {
private static final Map<Long, VolumeThresholdCondition.Context> NOISES = Maps.newHashMap(); private static final Map<Long, VolumeThresholdCondition.Context> NOISES = Maps.newHashMap();
@ -89,7 +89,7 @@ public class VolumeThresholdCondition extends VolumeNoiseCondition {
public static class Context { public static class Context {
public final OpenSimplexNoise noise; public final OpenSimplexNoise noise;
public final RandomSource random; public final Random random;
public final long seed; public final long seed;
double lastX = Integer.MIN_VALUE; double lastX = Integer.MIN_VALUE;
@ -100,7 +100,7 @@ public class VolumeThresholdCondition extends VolumeNoiseCondition {
Context(long seed) { Context(long seed) {
this.seed = seed; this.seed = seed;
this.noise = new OpenSimplexNoise(seed); this.noise = new OpenSimplexNoise(seed);
this.random = new ThreadSafeLegacyRandomSource(seed * 3 + 1); this.random = new ThreadSafeLegacyRandom(seed * 3 + 1);
} }
} }
} }

View file

@ -3,12 +3,12 @@ package org.betterx.bclib.api.v2.spawning;
import org.betterx.bclib.interfaces.SpawnRule; import org.betterx.bclib.interfaces.SpawnRule;
import net.minecraft.core.BlockPos; import net.minecraft.core.BlockPos;
import net.minecraft.util.RandomSource;
import net.minecraft.world.entity.EntityType; import net.minecraft.world.entity.EntityType;
import net.minecraft.world.entity.Mob; import net.minecraft.world.entity.Mob;
import net.minecraft.world.entity.MobSpawnType; import net.minecraft.world.entity.MobSpawnType;
import net.minecraft.world.level.LevelAccessor; import net.minecraft.world.level.LevelAccessor;
import java.util.Random;
import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.NotNull;
public class SpawnRuleEntry<M extends Mob> implements Comparable<SpawnRuleEntry> { public class SpawnRuleEntry<M extends Mob> implements Comparable<SpawnRuleEntry> {
@ -25,7 +25,7 @@ public class SpawnRuleEntry<M extends Mob> implements Comparable<SpawnRuleEntry>
LevelAccessor world, LevelAccessor world,
MobSpawnType spawnReason, MobSpawnType spawnReason,
BlockPos pos, BlockPos pos,
RandomSource random Random random
) { ) {
return rule.canSpawn(type, world, spawnReason, pos, random); return rule.canSpawn(type, world, spawnReason, pos, random);
} }

View file

@ -4,7 +4,6 @@ import net.minecraft.core.BlockPos;
import net.minecraft.core.Holder; import net.minecraft.core.Holder;
import net.minecraft.resources.ResourceLocation; import net.minecraft.resources.ResourceLocation;
import net.minecraft.server.level.ServerLevel; import net.minecraft.server.level.ServerLevel;
import net.minecraft.util.RandomSource;
import net.minecraft.world.level.levelgen.feature.ConfiguredFeature; import net.minecraft.world.level.levelgen.feature.ConfiguredFeature;
import net.minecraft.world.level.levelgen.feature.Feature; import net.minecraft.world.level.levelgen.feature.Feature;
import net.minecraft.world.level.levelgen.feature.FeaturePlaceContext; import net.minecraft.world.level.levelgen.feature.FeaturePlaceContext;
@ -15,6 +14,7 @@ import net.minecraft.world.level.levelgen.feature.configurations.RandomPatchConf
import java.util.HashMap; import java.util.HashMap;
import java.util.Map; import java.util.Map;
import java.util.Optional; import java.util.Optional;
import java.util.Random;
public class BCLConfigureFeature<F extends Feature<FC>, FC extends FeatureConfiguration> { public class BCLConfigureFeature<F extends Feature<FC>, FC extends FeatureConfiguration> {
private static final Map<Holder<ConfiguredFeature<?, ?>>, BCLConfigureFeature<?, ?>> KNOWN = new HashMap<>(); private static final Map<Holder<ConfiguredFeature<?, ?>>, BCLConfigureFeature<?, ?>> KNOWN = new HashMap<>();
@ -54,7 +54,7 @@ public class BCLConfigureFeature<F extends Feature<FC>, FC extends FeatureConfig
); );
} }
public boolean placeInWorld(ServerLevel level, BlockPos pos, RandomSource random) { public boolean placeInWorld(ServerLevel level, BlockPos pos, Random random) {
return placeInWorld(getFeature(), getConfiguration(), level, pos, random); return placeInWorld(getFeature(), getConfiguration(), level, pos, random);
} }
@ -63,7 +63,7 @@ public class BCLConfigureFeature<F extends Feature<FC>, FC extends FeatureConfig
FeatureConfiguration config, FeatureConfiguration config,
ServerLevel level, ServerLevel level,
BlockPos pos, BlockPos pos,
RandomSource random Random random
) { ) {
if (config instanceof RandomPatchConfiguration rnd) { if (config instanceof RandomPatchConfiguration rnd) {
var configured = rnd.feature().value().feature().value(); var configured = rnd.feature().value().feature().value();
@ -90,7 +90,7 @@ public class BCLConfigureFeature<F extends Feature<FC>, FC extends FeatureConfig
Feature<NoneFeatureConfiguration> feature, Feature<NoneFeatureConfiguration> feature,
ServerLevel level, ServerLevel level,
BlockPos pos, BlockPos pos,
RandomSource random Random random
) { ) {
return placeUnboundInWorld(feature, FeatureConfiguration.NONE, level, pos, random); return placeUnboundInWorld(feature, FeatureConfiguration.NONE, level, pos, random);
} }
@ -100,7 +100,7 @@ public class BCLConfigureFeature<F extends Feature<FC>, FC extends FeatureConfig
FC config, FC config,
ServerLevel level, ServerLevel level,
BlockPos pos, BlockPos pos,
RandomSource random Random random
) { ) {
return placeUnboundInWorld(feature, config, level, pos, random); return placeUnboundInWorld(feature, config, level, pos, random);
} }

View file

@ -1,15 +1,16 @@
package org.betterx.bclib.api.v3.levelgen.features; package org.betterx.bclib.api.v3.levelgen.features;
import net.minecraft.core.BlockPos; import net.minecraft.core.BlockPos;
import net.minecraft.util.RandomSource;
import net.minecraft.world.level.ServerLevelAccessor; import net.minecraft.world.level.ServerLevelAccessor;
import net.minecraft.world.level.levelgen.feature.configurations.FeatureConfiguration; import net.minecraft.world.level.levelgen.feature.configurations.FeatureConfiguration;
import java.util.Random;
public interface UserGrowableFeature<FC extends FeatureConfiguration> { public interface UserGrowableFeature<FC extends FeatureConfiguration> {
boolean grow( boolean grow(
ServerLevelAccessor level, ServerLevelAccessor level,
BlockPos pos, BlockPos pos,
RandomSource random, Random random,
FC configuration FC configuration
); );
} }

View file

@ -6,7 +6,6 @@ import com.mojang.serialization.Codec;
import com.mojang.serialization.codecs.RecordCodecBuilder; import com.mojang.serialization.codecs.RecordCodecBuilder;
import net.minecraft.core.BlockPos; import net.minecraft.core.BlockPos;
import net.minecraft.core.Direction; import net.minecraft.core.Direction;
import net.minecraft.util.RandomSource;
import net.minecraft.util.StringRepresentable; import net.minecraft.util.StringRepresentable;
import net.minecraft.util.valueproviders.IntProvider; import net.minecraft.util.valueproviders.IntProvider;
import net.minecraft.world.level.WorldGenLevel; import net.minecraft.world.level.WorldGenLevel;
@ -15,10 +14,12 @@ import net.minecraft.world.level.levelgen.blockpredicates.BlockPredicate;
import net.minecraft.world.level.levelgen.feature.configurations.FeatureConfiguration; import net.minecraft.world.level.levelgen.feature.configurations.FeatureConfiguration;
import net.minecraft.world.level.levelgen.feature.stateproviders.BlockStateProvider; import net.minecraft.world.level.levelgen.feature.stateproviders.BlockStateProvider;
import java.util.Random;
public class PillarFeatureConfig implements FeatureConfiguration { public class PillarFeatureConfig implements FeatureConfiguration {
@FunctionalInterface @FunctionalInterface
public interface StateTransform { public interface StateTransform {
BlockState apply(int height, int maxHeight, BlockState inputState, BlockPos pos, RandomSource rnd); BlockState apply(int height, int maxHeight, BlockState inputState, BlockPos pos, Random rnd);
} }
@FunctionalInterface @FunctionalInterface
@ -31,7 +32,7 @@ public class PillarFeatureConfig implements FeatureConfiguration {
BlockPos abovePos, BlockPos abovePos,
WorldGenLevel level, WorldGenLevel level,
BlockPredicate allowedPlacement, BlockPredicate allowedPlacement,
RandomSource rnd Random rnd
); );
} }
@ -129,7 +130,7 @@ public class PillarFeatureConfig implements FeatureConfiguration {
this.allowedPlacement = allowedPlacement; this.allowedPlacement = allowedPlacement;
} }
public BlockState transform(int currentHeight, int maxHeight, BlockPos pos, RandomSource rnd) { public BlockState transform(int currentHeight, int maxHeight, BlockPos pos, Random rnd) {
BlockState state = stateProvider.getState(rnd, pos); BlockState state = stateProvider.getState(rnd, pos);
return transformer.stateTransform.apply(currentHeight, maxHeight, state, pos, rnd); return transformer.stateTransform.apply(currentHeight, maxHeight, state, pos, rnd);
} }

View file

@ -2,7 +2,6 @@ package org.betterx.bclib.api.v3.levelgen.features.config;
import com.mojang.serialization.codecs.RecordCodecBuilder; import com.mojang.serialization.codecs.RecordCodecBuilder;
import net.minecraft.core.BlockPos; import net.minecraft.core.BlockPos;
import net.minecraft.util.RandomSource;
import net.minecraft.util.random.SimpleWeightedRandomList; import net.minecraft.util.random.SimpleWeightedRandomList;
import net.minecraft.world.level.WorldGenLevel; import net.minecraft.world.level.WorldGenLevel;
import net.minecraft.world.level.block.Block; import net.minecraft.world.level.block.Block;
@ -13,6 +12,7 @@ import net.minecraft.world.level.levelgen.feature.stateproviders.BlockStateProvi
import net.minecraft.world.level.levelgen.feature.stateproviders.WeightedStateProvider; import net.minecraft.world.level.levelgen.feature.stateproviders.WeightedStateProvider;
import java.util.List; import java.util.List;
import java.util.Random;
public abstract class PlaceBlockFeatureConfig implements FeatureConfiguration { public abstract class PlaceBlockFeatureConfig implements FeatureConfiguration {
@ -59,7 +59,7 @@ public abstract class PlaceBlockFeatureConfig implements FeatureConfiguration {
this.stateProvider = blocks; this.stateProvider = blocks;
} }
public BlockState getRandomBlock(RandomSource random, BlockPos pos) { public BlockState getRandomBlock(Random random, BlockPos pos) {
return this.stateProvider.getState(random, pos); return this.stateProvider.getState(random, pos);
} }

View file

@ -4,7 +4,6 @@ import org.betterx.bclib.api.v3.levelgen.features.config.ConditionFeatureConfig;
import net.minecraft.core.BlockPos; import net.minecraft.core.BlockPos;
import net.minecraft.core.Holder; import net.minecraft.core.Holder;
import net.minecraft.util.RandomSource;
import net.minecraft.world.level.WorldGenLevel; import net.minecraft.world.level.WorldGenLevel;
import net.minecraft.world.level.levelgen.feature.Feature; import net.minecraft.world.level.levelgen.feature.Feature;
import net.minecraft.world.level.levelgen.feature.FeaturePlaceContext; import net.minecraft.world.level.levelgen.feature.FeaturePlaceContext;
@ -12,6 +11,7 @@ import net.minecraft.world.level.levelgen.placement.PlacedFeature;
import net.minecraft.world.level.levelgen.placement.PlacementContext; import net.minecraft.world.level.levelgen.placement.PlacementContext;
import java.util.Optional; import java.util.Optional;
import java.util.Random;
import java.util.stream.Stream; import java.util.stream.Stream;
public class ConditionFeature extends Feature<ConditionFeatureConfig> { public class ConditionFeature extends Feature<ConditionFeatureConfig> {
@ -23,7 +23,7 @@ public class ConditionFeature extends Feature<ConditionFeatureConfig> {
public boolean place(FeaturePlaceContext<ConditionFeatureConfig> ctx) { public boolean place(FeaturePlaceContext<ConditionFeatureConfig> ctx) {
final ConditionFeatureConfig cfg = ctx.config(); final ConditionFeatureConfig cfg = ctx.config();
final WorldGenLevel level = ctx.level(); final WorldGenLevel level = ctx.level();
final RandomSource random = ctx.random(); final Random random = ctx.random();
final BlockPos pos = ctx.origin(); final BlockPos pos = ctx.origin();
final PlacementContext c = new PlacementContext(level, ctx.chunkGenerator(), Optional.empty()); final PlacementContext c = new PlacementContext(level, ctx.chunkGenerator(), Optional.empty());

View file

@ -4,12 +4,13 @@ import org.betterx.bclib.api.v3.levelgen.features.config.PillarFeatureConfig;
import org.betterx.bclib.util.BlocksHelper; import org.betterx.bclib.util.BlocksHelper;
import net.minecraft.core.BlockPos; import net.minecraft.core.BlockPos;
import net.minecraft.util.RandomSource;
import net.minecraft.world.level.WorldGenLevel; import net.minecraft.world.level.WorldGenLevel;
import net.minecraft.world.level.block.state.BlockState; import net.minecraft.world.level.block.state.BlockState;
import net.minecraft.world.level.levelgen.feature.Feature; import net.minecraft.world.level.levelgen.feature.Feature;
import net.minecraft.world.level.levelgen.feature.FeaturePlaceContext; import net.minecraft.world.level.levelgen.feature.FeaturePlaceContext;
import java.util.Random;
public class PillarFeature extends Feature<PillarFeatureConfig> { public class PillarFeature extends Feature<PillarFeatureConfig> {
public PillarFeature() { public PillarFeature() {
super(PillarFeatureConfig.CODEC); super(PillarFeatureConfig.CODEC);
@ -21,7 +22,7 @@ public class PillarFeature extends Feature<PillarFeatureConfig> {
int height; int height;
final WorldGenLevel level = featurePlaceContext.level(); final WorldGenLevel level = featurePlaceContext.level();
final PillarFeatureConfig config = featurePlaceContext.config(); final PillarFeatureConfig config = featurePlaceContext.config();
final RandomSource rnd = featurePlaceContext.random(); final Random rnd = featurePlaceContext.random();
int maxHeight = config.maxHeight.sample(rnd); int maxHeight = config.maxHeight.sample(rnd);
int minHeight = config.minHeight.sample(rnd); int minHeight = config.minHeight.sample(rnd);
BlockPos.MutableBlockPos posnow = featurePlaceContext.origin().mutable(); BlockPos.MutableBlockPos posnow = featurePlaceContext.origin().mutable();

View file

@ -8,11 +8,12 @@ import org.betterx.bclib.api.v3.levelgen.features.config.TemplateFeatureConfig;
import com.mojang.serialization.Codec; import com.mojang.serialization.Codec;
import net.minecraft.resources.ResourceLocation; import net.minecraft.resources.ResourceLocation;
import net.minecraft.util.RandomSource;
import net.minecraft.world.level.levelgen.GenerationStep; import net.minecraft.world.level.levelgen.GenerationStep;
import net.minecraft.world.level.levelgen.feature.Feature; import net.minecraft.world.level.levelgen.feature.Feature;
import net.minecraft.world.level.levelgen.feature.FeaturePlaceContext; import net.minecraft.world.level.levelgen.feature.FeaturePlaceContext;
import java.util.Random;
public class TemplateFeature<FC extends TemplateFeatureConfig> extends Feature<FC> { public class TemplateFeature<FC extends TemplateFeatureConfig> extends Feature<FC> {
public static <T extends TemplateFeatureConfig> BCLFeature createAndRegisterRare( public static <T extends TemplateFeatureConfig> BCLFeature createAndRegisterRare(
@ -57,7 +58,7 @@ public class TemplateFeature<FC extends TemplateFeatureConfig> extends Feature<F
super(codec); super(codec);
} }
protected StructureWorldNBT randomStructure(TemplateFeatureConfig cfg, RandomSource random) { protected StructureWorldNBT randomStructure(TemplateFeatureConfig cfg, Random random) {
if (cfg.structures.size() > 1) { if (cfg.structures.size() > 1) {
final float chanceSum = cfg.structures.parallelStream().map(c -> c.chance).reduce(0.0f, (p, c) -> p + c); final float chanceSum = cfg.structures.parallelStream().map(c -> c.chance).reduce(0.0f, (p, c) -> p + c);

View file

@ -2,11 +2,11 @@ package org.betterx.bclib.api.v3.levelgen.features.placement;
import com.mojang.serialization.Codec; import com.mojang.serialization.Codec;
import net.minecraft.core.BlockPos; import net.minecraft.core.BlockPos;
import net.minecraft.util.RandomSource;
import net.minecraft.world.level.levelgen.placement.PlacementContext; import net.minecraft.world.level.levelgen.placement.PlacementContext;
import net.minecraft.world.level.levelgen.placement.PlacementModifier; import net.minecraft.world.level.levelgen.placement.PlacementModifier;
import net.minecraft.world.level.levelgen.placement.PlacementModifierType; import net.minecraft.world.level.levelgen.placement.PlacementModifierType;
import java.util.Random;
import java.util.stream.IntStream; import java.util.stream.IntStream;
import java.util.stream.Stream; import java.util.stream.Stream;
@ -17,7 +17,7 @@ public class All extends PlacementModifier {
@Override @Override
public Stream<BlockPos> getPositions( public Stream<BlockPos> getPositions(
PlacementContext placementContext, PlacementContext placementContext,
RandomSource randomSource, Random Random,
BlockPos blockPos BlockPos blockPos
) { ) {
return IntStream.range(0, 16 * 16 - 1).mapToObj(i -> blockPos.offset(i & 0xF, 0, i >> 4)); return IntStream.range(0, 16 * 16 - 1).mapToObj(i -> blockPos.offset(i & 0xF, 0, i >> 4));

View file

@ -2,11 +2,11 @@ package org.betterx.bclib.api.v3.levelgen.features.placement;
import com.mojang.serialization.Codec; import com.mojang.serialization.Codec;
import net.minecraft.core.BlockPos; import net.minecraft.core.BlockPos;
import net.minecraft.util.RandomSource;
import net.minecraft.world.level.levelgen.placement.PlacementContext; import net.minecraft.world.level.levelgen.placement.PlacementContext;
import net.minecraft.world.level.levelgen.placement.PlacementModifier; import net.minecraft.world.level.levelgen.placement.PlacementModifier;
import net.minecraft.world.level.levelgen.placement.PlacementModifierType; import net.minecraft.world.level.levelgen.placement.PlacementModifierType;
import java.util.Random;
import java.util.stream.Stream; import java.util.stream.Stream;
public class Debug extends PlacementModifier { public class Debug extends PlacementModifier {
@ -16,7 +16,7 @@ public class Debug extends PlacementModifier {
@Override @Override
public Stream<BlockPos> getPositions( public Stream<BlockPos> getPositions(
PlacementContext placementContext, PlacementContext placementContext,
RandomSource randomSource, Random Random,
BlockPos blockPos BlockPos blockPos
) { ) {
return Stream.of(blockPos); return Stream.of(blockPos);

View file

@ -4,13 +4,13 @@ import com.mojang.serialization.Codec;
import com.mojang.serialization.codecs.RecordCodecBuilder; import com.mojang.serialization.codecs.RecordCodecBuilder;
import net.minecraft.core.BlockPos; import net.minecraft.core.BlockPos;
import net.minecraft.core.Direction; import net.minecraft.core.Direction;
import net.minecraft.util.RandomSource;
import net.minecraft.util.valueproviders.IntProvider; import net.minecraft.util.valueproviders.IntProvider;
import net.minecraft.util.valueproviders.UniformInt; import net.minecraft.util.valueproviders.UniformInt;
import net.minecraft.world.level.levelgen.placement.PlacementContext; import net.minecraft.world.level.levelgen.placement.PlacementContext;
import net.minecraft.world.level.levelgen.placement.PlacementModifier; import net.minecraft.world.level.levelgen.placement.PlacementModifier;
import net.minecraft.world.level.levelgen.placement.PlacementModifierType; import net.minecraft.world.level.levelgen.placement.PlacementModifierType;
import java.util.Random;
import java.util.stream.Stream; import java.util.stream.Stream;
public class Extend extends PlacementModifier { public class Extend extends PlacementModifier {
@ -38,7 +38,7 @@ public class Extend extends PlacementModifier {
@Override @Override
public Stream<BlockPos> getPositions( public Stream<BlockPos> getPositions(
PlacementContext placementContext, PlacementContext placementContext,
RandomSource random, Random random,
BlockPos blockPos BlockPos blockPos
) { ) {
var builder = Stream.<BlockPos>builder(); var builder = Stream.<BlockPos>builder();

View file

@ -8,7 +8,6 @@ import net.minecraft.core.BlockPos;
import net.minecraft.core.Direction; import net.minecraft.core.Direction;
import net.minecraft.core.SectionPos; import net.minecraft.core.SectionPos;
import net.minecraft.util.ExtraCodecs; import net.minecraft.util.ExtraCodecs;
import net.minecraft.util.RandomSource;
import net.minecraft.util.valueproviders.IntProvider; import net.minecraft.util.valueproviders.IntProvider;
import net.minecraft.util.valueproviders.UniformInt; import net.minecraft.util.valueproviders.UniformInt;
import net.minecraft.world.level.levelgen.placement.PlacementContext; import net.minecraft.world.level.levelgen.placement.PlacementContext;
@ -16,6 +15,7 @@ import net.minecraft.world.level.levelgen.placement.PlacementModifier;
import net.minecraft.world.level.levelgen.placement.PlacementModifierType; import net.minecraft.world.level.levelgen.placement.PlacementModifierType;
import java.util.List; import java.util.List;
import java.util.Random;
import java.util.stream.Stream; import java.util.stream.Stream;
public class FindSolidInDirection extends PlacementModifier { public class FindSolidInDirection extends PlacementModifier {
@ -93,19 +93,19 @@ public class FindSolidInDirection extends PlacementModifier {
return new FindSolidInDirection(Direction.UP, dist, offset); return new FindSolidInDirection(Direction.UP, dist, offset);
} }
public Direction randomDirection(RandomSource random) { public Direction randomDirection(Random random) {
return direction.get(provider.sample(random)); return direction.get(provider.sample(random));
} }
@Override @Override
public Stream<BlockPos> getPositions( public Stream<BlockPos> getPositions(
PlacementContext placementContext, PlacementContext placementContext,
RandomSource randomSource, Random Random,
BlockPos blockPos BlockPos blockPos
) { ) {
var builder = Stream.<BlockPos>builder(); var builder = Stream.<BlockPos>builder();
if (randomSelect) { if (randomSelect) {
submitSingle(placementContext, blockPos, builder, randomDirection(randomSource)); submitSingle(placementContext, blockPos, builder, randomDirection(Random));
} else { } else {
for (Direction d : direction) { for (Direction d : direction) {
submitSingle(placementContext, blockPos, builder, d); submitSingle(placementContext, blockPos, builder, d);

View file

@ -4,12 +4,12 @@ import com.mojang.serialization.Codec;
import com.mojang.serialization.codecs.RecordCodecBuilder; import com.mojang.serialization.codecs.RecordCodecBuilder;
import net.minecraft.core.BlockPos; import net.minecraft.core.BlockPos;
import net.minecraft.util.ExtraCodecs; import net.minecraft.util.ExtraCodecs;
import net.minecraft.util.RandomSource;
import net.minecraft.world.level.levelgen.placement.PlacementContext; import net.minecraft.world.level.levelgen.placement.PlacementContext;
import net.minecraft.world.level.levelgen.placement.PlacementModifier; import net.minecraft.world.level.levelgen.placement.PlacementModifier;
import net.minecraft.world.level.levelgen.placement.PlacementModifierType; import net.minecraft.world.level.levelgen.placement.PlacementModifierType;
import java.util.List; import java.util.List;
import java.util.Random;
import java.util.stream.Stream; import java.util.stream.Stream;
public class ForAll extends PlacementModifier { public class ForAll extends PlacementModifier {
@ -30,12 +30,12 @@ public class ForAll extends PlacementModifier {
@Override @Override
public Stream<BlockPos> getPositions( public Stream<BlockPos> getPositions(
PlacementContext placementContext, PlacementContext placementContext,
RandomSource randomSource, Random Random,
BlockPos blockPos BlockPos blockPos
) { ) {
Stream.Builder<BlockPos> stream = Stream.builder(); Stream.Builder<BlockPos> stream = Stream.builder();
for (PlacementModifier p : modifiers) { for (PlacementModifier p : modifiers) {
p.getPositions(placementContext, randomSource, blockPos).forEach(pp -> stream.add(pp)); p.getPositions(placementContext, Random, blockPos).forEach(pp -> stream.add(pp));
} }
return stream.build(); return stream.build();
} }

View file

@ -5,7 +5,6 @@ import com.mojang.serialization.codecs.RecordCodecBuilder;
import net.minecraft.core.BlockPos; import net.minecraft.core.BlockPos;
import net.minecraft.core.Direction; import net.minecraft.core.Direction;
import net.minecraft.core.Vec3i; import net.minecraft.core.Vec3i;
import net.minecraft.util.RandomSource;
import net.minecraft.world.level.WorldGenLevel; import net.minecraft.world.level.WorldGenLevel;
import net.minecraft.world.level.levelgen.blockpredicates.BlockPredicate; import net.minecraft.world.level.levelgen.blockpredicates.BlockPredicate;
import net.minecraft.world.level.levelgen.placement.PlacementContext; import net.minecraft.world.level.levelgen.placement.PlacementContext;
@ -13,6 +12,7 @@ import net.minecraft.world.level.levelgen.placement.PlacementFilter;
import net.minecraft.world.level.levelgen.placement.PlacementModifierType; import net.minecraft.world.level.levelgen.placement.PlacementModifierType;
import java.util.Optional; import java.util.Optional;
import java.util.Random;
public class Is extends PlacementFilter { public class Is extends PlacementFilter {
public static final Codec<Is> CODEC = RecordCodecBuilder.create((instance) -> instance public static final Codec<Is> CODEC = RecordCodecBuilder.create((instance) -> instance
@ -47,7 +47,7 @@ public class Is extends PlacementFilter {
} }
@Override @Override
protected boolean shouldPlace(PlacementContext ctx, RandomSource random, BlockPos pos) { protected boolean shouldPlace(PlacementContext ctx, Random random, BlockPos pos) {
WorldGenLevel level = ctx.getLevel(); WorldGenLevel level = ctx.getLevel();
return predicate.test(level, offset.map(v -> pos.offset(v.getX(), v.getY(), v.getZ())).orElse(pos)); return predicate.test(level, offset.map(v -> pos.offset(v.getX(), v.getY(), v.getZ())).orElse(pos));
} }

View file

@ -3,7 +3,6 @@ package org.betterx.bclib.api.v3.levelgen.features.placement;
import com.mojang.serialization.Codec; import com.mojang.serialization.Codec;
import com.mojang.serialization.codecs.RecordCodecBuilder; import com.mojang.serialization.codecs.RecordCodecBuilder;
import net.minecraft.core.BlockPos; import net.minecraft.core.BlockPos;
import net.minecraft.util.RandomSource;
import net.minecraft.world.level.WorldGenLevel; import net.minecraft.world.level.WorldGenLevel;
import net.minecraft.world.level.levelgen.blockpredicates.BlockPredicate; import net.minecraft.world.level.levelgen.blockpredicates.BlockPredicate;
import net.minecraft.world.level.levelgen.placement.PlacementContext; import net.minecraft.world.level.levelgen.placement.PlacementContext;
@ -11,6 +10,7 @@ import net.minecraft.world.level.levelgen.placement.PlacementFilter;
import net.minecraft.world.level.levelgen.placement.PlacementModifierType; import net.minecraft.world.level.levelgen.placement.PlacementModifierType;
import java.util.Optional; import java.util.Optional;
import java.util.Random;
public class IsBasin extends PlacementFilter { public class IsBasin extends PlacementFilter {
public static final Codec<IsBasin> CODEC = RecordCodecBuilder.create((instance) -> instance public static final Codec<IsBasin> CODEC = RecordCodecBuilder.create((instance) -> instance
@ -46,7 +46,7 @@ public class IsBasin extends PlacementFilter {
} }
@Override @Override
protected boolean shouldPlace(PlacementContext ctx, RandomSource random, BlockPos pos) { protected boolean shouldPlace(PlacementContext ctx, Random random, BlockPos pos) {
WorldGenLevel level = ctx.getLevel(); WorldGenLevel level = ctx.getLevel();
if (topPredicate.isPresent() && !topPredicate.get().test(level, pos.above())) return false; if (topPredicate.isPresent() && !topPredicate.get().test(level, pos.above())) return false;

View file

@ -4,7 +4,6 @@ import com.mojang.serialization.Codec;
import com.mojang.serialization.codecs.RecordCodecBuilder; import com.mojang.serialization.codecs.RecordCodecBuilder;
import net.minecraft.core.BlockPos; import net.minecraft.core.BlockPos;
import net.minecraft.core.Vec3i; import net.minecraft.core.Vec3i;
import net.minecraft.util.RandomSource;
import net.minecraft.world.level.WorldGenLevel; import net.minecraft.world.level.WorldGenLevel;
import net.minecraft.world.level.levelgen.blockpredicates.BlockPredicate; import net.minecraft.world.level.levelgen.blockpredicates.BlockPredicate;
import net.minecraft.world.level.levelgen.placement.PlacementContext; import net.minecraft.world.level.levelgen.placement.PlacementContext;
@ -12,6 +11,7 @@ import net.minecraft.world.level.levelgen.placement.PlacementFilter;
import net.minecraft.world.level.levelgen.placement.PlacementModifierType; import net.minecraft.world.level.levelgen.placement.PlacementModifierType;
import java.util.Optional; import java.util.Optional;
import java.util.Random;
import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.NotNull;
public class IsNextTo extends PlacementFilter { public class IsNextTo extends PlacementFilter {
@ -47,7 +47,7 @@ public class IsNextTo extends PlacementFilter {
} }
@Override @Override
protected boolean shouldPlace(PlacementContext ctx, RandomSource random, BlockPos pos) { protected boolean shouldPlace(PlacementContext ctx, Random random, BlockPos pos) {
WorldGenLevel level = ctx.getLevel(); WorldGenLevel level = ctx.getLevel();
pos = pos.offset(this.offset); pos = pos.offset(this.offset);

View file

@ -7,12 +7,13 @@ import com.mojang.serialization.codecs.RecordCodecBuilder;
import net.minecraft.core.BlockPos; import net.minecraft.core.BlockPos;
import net.minecraft.core.Registry; import net.minecraft.core.Registry;
import net.minecraft.resources.ResourceKey; import net.minecraft.resources.ResourceKey;
import net.minecraft.util.RandomSource;
import net.minecraft.world.level.levelgen.placement.PlacementContext; import net.minecraft.world.level.levelgen.placement.PlacementContext;
import net.minecraft.world.level.levelgen.placement.PlacementFilter; import net.minecraft.world.level.levelgen.placement.PlacementFilter;
import net.minecraft.world.level.levelgen.placement.PlacementModifierType; import net.minecraft.world.level.levelgen.placement.PlacementModifierType;
import net.minecraft.world.level.levelgen.synth.NormalNoise; import net.minecraft.world.level.levelgen.synth.NormalNoise;
import java.util.Random;
public class NoiseFilter extends PlacementFilter { public class NoiseFilter extends PlacementFilter {
public static final Codec<NoiseFilter> CODEC = RecordCodecBuilder.create(instance -> instance public static final Codec<NoiseFilter> CODEC = RecordCodecBuilder.create(instance -> instance
.group( .group(
@ -47,7 +48,7 @@ public class NoiseFilter extends PlacementFilter {
} }
@Override @Override
protected boolean shouldPlace(PlacementContext ctx, RandomSource random, BlockPos pos) { protected boolean shouldPlace(PlacementContext ctx, Random random, BlockPos pos) {
final NormalNoise normalNoise = Noises.getOrCreateNoise(ctx.getLevel().registryAccess(), random, this.noise); final NormalNoise normalNoise = Noises.getOrCreateNoise(ctx.getLevel().registryAccess(), random, this.noise);
final double v = normalNoise.getValue(pos.getX() * scaleXZ, pos.getY() * scaleY, pos.getZ() * scaleXZ); final double v = normalNoise.getValue(pos.getX() * scaleXZ, pos.getY() * scaleY, pos.getZ() * scaleXZ);
return v > minNoiseLevel && v < maxNoiseLevel; return v > minNoiseLevel && v < maxNoiseLevel;

View file

@ -5,7 +5,6 @@ import com.mojang.serialization.codecs.RecordCodecBuilder;
import net.minecraft.core.BlockPos; import net.minecraft.core.BlockPos;
import net.minecraft.core.Direction; import net.minecraft.core.Direction;
import net.minecraft.core.Vec3i; import net.minecraft.core.Vec3i;
import net.minecraft.util.RandomSource;
import net.minecraft.world.level.levelgen.placement.PlacementContext; import net.minecraft.world.level.levelgen.placement.PlacementContext;
import net.minecraft.world.level.levelgen.placement.PlacementModifier; import net.minecraft.world.level.levelgen.placement.PlacementModifier;
import net.minecraft.world.level.levelgen.placement.PlacementModifierType; import net.minecraft.world.level.levelgen.placement.PlacementModifierType;
@ -13,6 +12,7 @@ import net.minecraft.world.level.levelgen.placement.PlacementModifierType;
import com.google.common.collect.Maps; import com.google.common.collect.Maps;
import java.util.Map; import java.util.Map;
import java.util.Random;
import java.util.stream.Stream; import java.util.stream.Stream;
public class Offset extends PlacementModifier { public class Offset extends PlacementModifier {
@ -38,7 +38,7 @@ public class Offset extends PlacementModifier {
@Override @Override
public Stream<BlockPos> getPositions( public Stream<BlockPos> getPositions(
PlacementContext placementContext, PlacementContext placementContext,
RandomSource randomSource, Random Random,
BlockPos blockPos BlockPos blockPos
) { ) {
return Stream.of(blockPos.offset(offset)); return Stream.of(blockPos.offset(offset));

View file

@ -5,7 +5,6 @@ import org.betterx.bclib.util.BlocksHelper;
import com.mojang.serialization.Codec; import com.mojang.serialization.Codec;
import com.mojang.serialization.codecs.RecordCodecBuilder; import com.mojang.serialization.codecs.RecordCodecBuilder;
import net.minecraft.core.BlockPos; import net.minecraft.core.BlockPos;
import net.minecraft.util.RandomSource;
import net.minecraft.world.level.block.Blocks; import net.minecraft.world.level.block.Blocks;
import net.minecraft.world.level.block.state.BlockState; import net.minecraft.world.level.block.state.BlockState;
import net.minecraft.world.level.levelgen.Heightmap; import net.minecraft.world.level.levelgen.Heightmap;
@ -14,6 +13,7 @@ import net.minecraft.world.level.levelgen.placement.PlacementModifier;
import net.minecraft.world.level.levelgen.placement.PlacementModifierType; import net.minecraft.world.level.levelgen.placement.PlacementModifierType;
import java.util.Optional; import java.util.Optional;
import java.util.Random;
import java.util.stream.Stream; import java.util.stream.Stream;
public class OnEveryLayer public class OnEveryLayer
@ -47,7 +47,7 @@ public class OnEveryLayer
@Override @Override
public Stream<BlockPos> getPositions( public Stream<BlockPos> getPositions(
PlacementContext ctx, PlacementContext ctx,
RandomSource random, Random random,
BlockPos pos BlockPos pos
) { ) {

View file

@ -4,7 +4,6 @@ import com.mojang.serialization.Codec;
import com.mojang.serialization.codecs.RecordCodecBuilder; import com.mojang.serialization.codecs.RecordCodecBuilder;
import net.minecraft.core.BlockPos; import net.minecraft.core.BlockPos;
import net.minecraft.util.ExtraCodecs; import net.minecraft.util.ExtraCodecs;
import net.minecraft.util.RandomSource;
import net.minecraft.world.level.levelgen.placement.PlacementContext; import net.minecraft.world.level.levelgen.placement.PlacementContext;
import net.minecraft.world.level.levelgen.placement.PlacementModifier; import net.minecraft.world.level.levelgen.placement.PlacementModifier;
import net.minecraft.world.level.levelgen.placement.PlacementModifierType; import net.minecraft.world.level.levelgen.placement.PlacementModifierType;
@ -12,6 +11,7 @@ import net.minecraft.world.level.levelgen.placement.PlacementModifierType;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.Arrays; import java.util.Arrays;
import java.util.List; import java.util.List;
import java.util.Random;
import java.util.stream.Stream; import java.util.stream.Stream;
public class Stencil extends PlacementModifier { public class Stencil extends PlacementModifier {
@ -46,7 +46,7 @@ public class Stencil extends PlacementModifier {
@Override @Override
public Stream<BlockPos> getPositions( public Stream<BlockPos> getPositions(
PlacementContext placementContext, PlacementContext placementContext,
RandomSource randomSource, Random Random,
BlockPos blockPos BlockPos blockPos
) { ) {
List<BlockPos> pos = new ArrayList<>(16 * 16); List<BlockPos> pos = new ArrayList<>(16 * 16);

View file

@ -5,7 +5,6 @@ import org.betterx.bclib.util.BlocksHelper;
import com.mojang.serialization.Codec; import com.mojang.serialization.Codec;
import com.mojang.serialization.codecs.RecordCodecBuilder; import com.mojang.serialization.codecs.RecordCodecBuilder;
import net.minecraft.core.BlockPos; import net.minecraft.core.BlockPos;
import net.minecraft.util.RandomSource;
import net.minecraft.world.level.block.Blocks; import net.minecraft.world.level.block.Blocks;
import net.minecraft.world.level.block.state.BlockState; import net.minecraft.world.level.block.state.BlockState;
import net.minecraft.world.level.levelgen.Heightmap; import net.minecraft.world.level.levelgen.Heightmap;
@ -14,6 +13,7 @@ import net.minecraft.world.level.levelgen.placement.PlacementModifier;
import net.minecraft.world.level.levelgen.placement.PlacementModifierType; import net.minecraft.world.level.levelgen.placement.PlacementModifierType;
import java.util.Optional; import java.util.Optional;
import java.util.Random;
import java.util.stream.Stream; import java.util.stream.Stream;
public class UnderEveryLayer public class UnderEveryLayer
@ -47,7 +47,7 @@ public class UnderEveryLayer
@Override @Override
public Stream<BlockPos> getPositions( public Stream<BlockPos> getPositions(
PlacementContext ctx, PlacementContext ctx,
RandomSource random, Random random,
BlockPos pos BlockPos pos
) { ) {

View file

@ -10,7 +10,6 @@ import org.betterx.bclib.items.BaseAnvilItem;
import net.minecraft.client.renderer.block.model.BlockModel; import net.minecraft.client.renderer.block.model.BlockModel;
import net.minecraft.client.resources.model.UnbakedModel; import net.minecraft.client.resources.model.UnbakedModel;
import net.minecraft.resources.ResourceLocation; import net.minecraft.resources.ResourceLocation;
import net.minecraft.util.RandomSource;
import net.minecraft.world.item.BlockItem; import net.minecraft.world.item.BlockItem;
import net.minecraft.world.item.ItemStack; import net.minecraft.world.item.ItemStack;
import net.minecraft.world.item.PickaxeItem; import net.minecraft.world.item.PickaxeItem;
@ -33,10 +32,7 @@ import net.fabricmc.fabric.api.object.builder.v1.block.FabricBlockSettings;
import com.google.common.collect.Lists; import com.google.common.collect.Lists;
import com.google.common.collect.Maps; import com.google.common.collect.Maps;
import java.util.Collections; import java.util.*;
import java.util.List;
import java.util.Map;
import java.util.Optional;
import org.jetbrains.annotations.Nullable; import org.jetbrains.annotations.Nullable;
public abstract class BaseAnvilBlock extends AnvilBlock implements BlockModelProvider, CustomItemProvider { public abstract class BaseAnvilBlock extends AnvilBlock implements BlockModelProvider, CustomItemProvider {
@ -124,7 +120,7 @@ public abstract class BaseAnvilBlock extends AnvilBlock implements BlockModelPro
return 3; return 3;
} }
public BlockState damageAnvilUse(BlockState state, RandomSource random) { public BlockState damageAnvilUse(BlockState state, Random random) {
IntegerProperty durability = getDurabilityProp(); IntegerProperty durability = getDurabilityProp();
int value = state.getValue(durability); int value = state.getValue(durability);
if (value < getMaxDurability() && random.nextInt(8) == 0) { if (value < getMaxDurability() && random.nextInt(8) == 0) {

View file

@ -15,7 +15,6 @@ import net.minecraft.core.Direction;
import net.minecraft.resources.ResourceLocation; import net.minecraft.resources.ResourceLocation;
import net.minecraft.server.level.ServerLevel; import net.minecraft.server.level.ServerLevel;
import net.minecraft.stats.Stats; import net.minecraft.stats.Stats;
import net.minecraft.util.RandomSource;
import net.minecraft.world.InteractionHand; import net.minecraft.world.InteractionHand;
import net.minecraft.world.InteractionResult; import net.minecraft.world.InteractionResult;
import net.minecraft.world.entity.LivingEntity; import net.minecraft.world.entity.LivingEntity;
@ -39,6 +38,7 @@ import net.fabricmc.fabric.api.object.builder.v1.block.FabricBlockSettings;
import java.util.List; import java.util.List;
import java.util.Map; import java.util.Map;
import java.util.Optional; import java.util.Optional;
import java.util.Random;
import org.jetbrains.annotations.Nullable; import org.jetbrains.annotations.Nullable;
public class BaseBarrelBlock extends BarrelBlock implements BlockModelProvider { public class BaseBarrelBlock extends BarrelBlock implements BlockModelProvider {
@ -87,7 +87,7 @@ public class BaseBarrelBlock extends BarrelBlock implements BlockModelProvider {
} }
@Override @Override
public void tick(BlockState state, ServerLevel world, BlockPos pos, RandomSource random) { public void tick(BlockState state, ServerLevel world, BlockPos pos, Random random) {
BlockEntity blockEntity = world.getBlockEntity(pos); BlockEntity blockEntity = world.getBlockEntity(pos);
if (blockEntity instanceof BaseBarrelBlockEntity) { if (blockEntity instanceof BaseBarrelBlockEntity) {
((BaseBarrelBlockEntity) blockEntity).recheckOpen(); ((BaseBarrelBlockEntity) blockEntity).recheckOpen();

View file

@ -6,7 +6,6 @@ import org.betterx.bclib.util.MHelper;
import net.minecraft.core.BlockPos; import net.minecraft.core.BlockPos;
import net.minecraft.server.level.ServerLevel; import net.minecraft.server.level.ServerLevel;
import net.minecraft.util.Mth; import net.minecraft.util.Mth;
import net.minecraft.util.RandomSource;
import net.minecraft.world.item.Item; import net.minecraft.world.item.Item;
import net.minecraft.world.item.ItemStack; import net.minecraft.world.item.ItemStack;
import net.minecraft.world.item.enchantment.EnchantmentHelper; import net.minecraft.world.item.enchantment.EnchantmentHelper;
@ -27,6 +26,7 @@ import com.google.common.collect.Lists;
import java.util.Collections; import java.util.Collections;
import java.util.List; import java.util.List;
import java.util.Random;
public class BaseCropBlock extends BasePlantBlock { public class BaseCropBlock extends BasePlantBlock {
public static final IntegerProperty AGE = IntegerProperty.create("age", 0, 3); public static final IntegerProperty AGE = IntegerProperty.create("age", 0, 3);
@ -81,7 +81,7 @@ public class BaseCropBlock extends BasePlantBlock {
} }
@Override @Override
public void performBonemeal(ServerLevel level, RandomSource random, BlockPos pos, BlockState state) { public void performBonemeal(ServerLevel level, Random random, BlockPos pos, BlockState state) {
int age = state.getValue(AGE); int age = state.getValue(AGE);
if (age < 3) { if (age < 3) {
BlocksHelper.setWithUpdate(level, pos, state.setValue(AGE, age + 1)); BlocksHelper.setWithUpdate(level, pos, state.setValue(AGE, age + 1));
@ -94,13 +94,13 @@ public class BaseCropBlock extends BasePlantBlock {
} }
@Override @Override
public boolean isBonemealSuccess(Level level, RandomSource random, BlockPos pos, BlockState state) { public boolean isBonemealSuccess(Level level, Random random, BlockPos pos, BlockState state) {
return state.getValue(AGE) < 3; return state.getValue(AGE) < 3;
} }
@Override @Override
@SuppressWarnings("deprecation") @SuppressWarnings("deprecation")
public void tick(BlockState state, ServerLevel world, BlockPos pos, RandomSource random) { public void tick(BlockState state, ServerLevel world, BlockPos pos, Random random) {
super.tick(state, world, pos, random); super.tick(state, world, pos, random);
if (isBonemealSuccess(world, random, pos, state) && random.nextInt(8) == 0) { if (isBonemealSuccess(world, random, pos, state) && random.nextInt(8) == 0) {
performBonemeal(world, random, pos, state); performBonemeal(world, random, pos, state);

View file

@ -8,7 +8,6 @@ import org.betterx.bclib.util.BlocksHelper;
import net.minecraft.core.BlockPos; import net.minecraft.core.BlockPos;
import net.minecraft.core.Direction; import net.minecraft.core.Direction;
import net.minecraft.server.level.ServerLevel; import net.minecraft.server.level.ServerLevel;
import net.minecraft.util.RandomSource;
import net.minecraft.world.entity.LivingEntity; import net.minecraft.world.entity.LivingEntity;
import net.minecraft.world.entity.item.ItemEntity; import net.minecraft.world.entity.item.ItemEntity;
import net.minecraft.world.item.ItemStack; import net.minecraft.world.item.ItemStack;
@ -39,6 +38,7 @@ import net.fabricmc.fabric.api.object.builder.v1.block.FabricBlockSettings;
import com.google.common.collect.Lists; import com.google.common.collect.Lists;
import java.util.List; import java.util.List;
import java.util.Random;
public abstract class BaseDoublePlantBlock extends BaseBlockNotFull implements RenderLayerProvider, BonemealableBlock { public abstract class BaseDoublePlantBlock extends BaseBlockNotFull implements RenderLayerProvider, BonemealableBlock {
private static final VoxelShape SHAPE = box(4, 2, 4, 12, 16, 12); private static final VoxelShape SHAPE = box(4, 2, 4, 12, 16, 12);
@ -142,12 +142,12 @@ public abstract class BaseDoublePlantBlock extends BaseBlockNotFull implements R
} }
@Override @Override
public boolean isBonemealSuccess(Level level, RandomSource random, BlockPos pos, BlockState state) { public boolean isBonemealSuccess(Level level, Random random, BlockPos pos, BlockState state) {
return true; return true;
} }
@Override @Override
public void performBonemeal(ServerLevel level, RandomSource random, BlockPos pos, BlockState state) { public void performBonemeal(ServerLevel level, Random random, BlockPos pos, BlockState state) {
ItemEntity item = new ItemEntity( ItemEntity item = new ItemEntity(
level, level,
pos.getX() + 0.5, pos.getX() + 0.5,

View file

@ -13,7 +13,6 @@ import net.minecraft.core.BlockPos;
import net.minecraft.core.Direction; import net.minecraft.core.Direction;
import net.minecraft.resources.ResourceLocation; import net.minecraft.resources.ResourceLocation;
import net.minecraft.server.level.ServerLevel; import net.minecraft.server.level.ServerLevel;
import net.minecraft.util.RandomSource;
import net.minecraft.world.entity.item.ItemEntity; import net.minecraft.world.entity.item.ItemEntity;
import net.minecraft.world.item.ItemStack; import net.minecraft.world.item.ItemStack;
import net.minecraft.world.item.enchantment.EnchantmentHelper; import net.minecraft.world.item.enchantment.EnchantmentHelper;
@ -42,6 +41,7 @@ import com.google.common.collect.Lists;
import java.util.List; import java.util.List;
import java.util.Optional; import java.util.Optional;
import java.util.Random;
import org.jetbrains.annotations.Nullable; import org.jetbrains.annotations.Nullable;
public abstract class BasePlantBlock extends BaseBlockNotFull implements RenderLayerProvider, BonemealableBlock { public abstract class BasePlantBlock extends BaseBlockNotFull implements RenderLayerProvider, BonemealableBlock {
@ -175,12 +175,12 @@ public abstract class BasePlantBlock extends BaseBlockNotFull implements RenderL
} }
@Override @Override
public boolean isBonemealSuccess(Level level, RandomSource random, BlockPos pos, BlockState state) { public boolean isBonemealSuccess(Level level, Random random, BlockPos pos, BlockState state) {
return true; return true;
} }
@Override @Override
public void performBonemeal(ServerLevel level, RandomSource random, BlockPos pos, BlockState state) { public void performBonemeal(ServerLevel level, Random random, BlockPos pos, BlockState state) {
ItemEntity item = new ItemEntity( ItemEntity item = new ItemEntity(
level, level,
pos.getX() + 0.5, pos.getX() + 0.5,

View file

@ -2,7 +2,6 @@ package org.betterx.bclib.blocks;
import net.minecraft.core.BlockPos; import net.minecraft.core.BlockPos;
import net.minecraft.server.level.ServerLevel; import net.minecraft.server.level.ServerLevel;
import net.minecraft.util.RandomSource;
import net.minecraft.world.level.Level; import net.minecraft.world.level.Level;
import net.minecraft.world.level.WorldGenLevel; import net.minecraft.world.level.WorldGenLevel;
import net.minecraft.world.level.block.Block; import net.minecraft.world.level.block.Block;
@ -10,6 +9,7 @@ import net.minecraft.world.level.block.state.BlockState;
import net.minecraft.world.level.block.state.StateDefinition; import net.minecraft.world.level.block.state.StateDefinition;
import net.minecraft.world.level.block.state.properties.IntegerProperty; import net.minecraft.world.level.block.state.properties.IntegerProperty;
import java.util.Random;
import java.util.function.Function; import java.util.function.Function;
public abstract class BasePlantWithAgeBlock extends BasePlantBlock { public abstract class BasePlantWithAgeBlock extends BasePlantBlock {
@ -33,10 +33,10 @@ public abstract class BasePlantWithAgeBlock extends BasePlantBlock {
stateManager.add(AGE); stateManager.add(AGE);
} }
public abstract void growAdult(WorldGenLevel world, RandomSource random, BlockPos pos); public abstract void growAdult(WorldGenLevel world, Random random, BlockPos pos);
@Override @Override
public void performBonemeal(ServerLevel level, RandomSource random, BlockPos pos, BlockState state) { public void performBonemeal(ServerLevel level, Random random, BlockPos pos, BlockState state) {
int age = state.getValue(AGE); int age = state.getValue(AGE);
if (age < 3) { if (age < 3) {
level.setBlockAndUpdate(pos, state.setValue(AGE, age + 1)); level.setBlockAndUpdate(pos, state.setValue(AGE, age + 1));
@ -46,13 +46,13 @@ public abstract class BasePlantWithAgeBlock extends BasePlantBlock {
} }
@Override @Override
public boolean isBonemealSuccess(Level level, RandomSource random, BlockPos pos, BlockState state) { public boolean isBonemealSuccess(Level level, Random random, BlockPos pos, BlockState state) {
return true; return true;
} }
@Override @Override
@SuppressWarnings("deprecation") @SuppressWarnings("deprecation")
public void tick(BlockState state, ServerLevel world, BlockPos pos, RandomSource random) { public void tick(BlockState state, ServerLevel world, BlockPos pos, Random random) {
super.tick(state, world, pos, random); super.tick(state, world, pos, random);
if (random.nextInt(8) == 0) { if (random.nextInt(8) == 0) {
performBonemeal(world, random, pos, state); performBonemeal(world, random, pos, state);

View file

@ -17,7 +17,6 @@ import net.minecraft.server.level.ServerLevel;
import net.minecraft.server.level.ServerPlayer; import net.minecraft.server.level.ServerPlayer;
import net.minecraft.sounds.SoundEvents; import net.minecraft.sounds.SoundEvents;
import net.minecraft.sounds.SoundSource; import net.minecraft.sounds.SoundSource;
import net.minecraft.util.RandomSource;
import net.minecraft.world.InteractionHand; import net.minecraft.world.InteractionHand;
import net.minecraft.world.InteractionResult; import net.minecraft.world.InteractionResult;
import net.minecraft.world.entity.player.Player; import net.minecraft.world.entity.player.Player;
@ -42,10 +41,7 @@ import net.fabricmc.fabric.api.object.builder.v1.block.FabricBlockSettings;
import com.google.common.collect.Maps; import com.google.common.collect.Maps;
import java.util.Collections; import java.util.*;
import java.util.List;
import java.util.Map;
import java.util.Optional;
import org.jetbrains.annotations.Nullable; import org.jetbrains.annotations.Nullable;
@SuppressWarnings("deprecation") @SuppressWarnings("deprecation")
@ -103,7 +99,7 @@ public class BaseTerrainBlock extends BaseBlock {
} }
@Override @Override
public void randomTick(BlockState state, ServerLevel world, BlockPos pos, RandomSource random) { public void randomTick(BlockState state, ServerLevel world, BlockPos pos, Random random) {
if (random.nextInt(16) == 0 && !canStay(state, world, pos)) { if (random.nextInt(16) == 0 && !canStay(state, world, pos)) {
world.setBlockAndUpdate(pos, getBaseBlock().defaultBlockState()); world.setBlockAndUpdate(pos, getBaseBlock().defaultBlockState());
} }

View file

@ -10,7 +10,6 @@ import net.minecraft.core.BlockPos;
import net.minecraft.core.Direction; import net.minecraft.core.Direction;
import net.minecraft.server.level.ServerLevel; import net.minecraft.server.level.ServerLevel;
import net.minecraft.tags.BlockTags; import net.minecraft.tags.BlockTags;
import net.minecraft.util.RandomSource;
import net.minecraft.world.item.ItemStack; import net.minecraft.world.item.ItemStack;
import net.minecraft.world.item.enchantment.EnchantmentHelper; import net.minecraft.world.item.enchantment.EnchantmentHelper;
import net.minecraft.world.item.enchantment.Enchantments; import net.minecraft.world.item.enchantment.Enchantments;
@ -38,6 +37,7 @@ import net.fabricmc.fabric.api.object.builder.v1.block.FabricBlockSettings;
import com.google.common.collect.Lists; import com.google.common.collect.Lists;
import java.util.List; import java.util.List;
import java.util.Random;
import java.util.function.Function; import java.util.function.Function;
@SuppressWarnings("deprecation") @SuppressWarnings("deprecation")
@ -145,7 +145,7 @@ public class BaseVineBlock extends BaseBlockNotFull implements RenderLayerProvid
} }
@Override @Override
public boolean isBonemealSuccess(Level level, RandomSource random, BlockPos pos, BlockState state) { public boolean isBonemealSuccess(Level level, Random random, BlockPos pos, BlockState state) {
while (level.getBlockState(pos).getBlock() == this) { while (level.getBlockState(pos).getBlock() == this) {
pos = pos.below(); pos = pos.below();
} }
@ -153,7 +153,7 @@ public class BaseVineBlock extends BaseBlockNotFull implements RenderLayerProvid
} }
@Override @Override
public void performBonemeal(ServerLevel level, RandomSource random, BlockPos pos, BlockState state) { public void performBonemeal(ServerLevel level, Random random, BlockPos pos, BlockState state) {
while (level.getBlockState(pos).getBlock() == this) { while (level.getBlockState(pos).getBlock() == this) {
pos = pos.below(); pos = pos.below();
} }

View file

@ -14,7 +14,6 @@ import net.minecraft.core.BlockPos;
import net.minecraft.core.Direction; import net.minecraft.core.Direction;
import net.minecraft.resources.ResourceLocation; import net.minecraft.resources.ResourceLocation;
import net.minecraft.server.level.ServerLevel; import net.minecraft.server.level.ServerLevel;
import net.minecraft.util.RandomSource;
import net.minecraft.world.item.ItemStack; import net.minecraft.world.item.ItemStack;
import net.minecraft.world.level.BlockGetter; import net.minecraft.world.level.BlockGetter;
import net.minecraft.world.level.Level; import net.minecraft.world.level.Level;
@ -40,6 +39,7 @@ import net.fabricmc.fabric.api.object.builder.v1.block.FabricBlockSettings;
import java.util.Collections; import java.util.Collections;
import java.util.List; import java.util.List;
import java.util.Optional; import java.util.Optional;
import java.util.Random;
import java.util.function.Function; import java.util.function.Function;
import org.jetbrains.annotations.Nullable; import org.jetbrains.annotations.Nullable;
@ -153,24 +153,24 @@ public class FeatureSaplingBlock<F extends Feature<FC>, FC extends FeatureConfig
} }
@Override @Override
public boolean isBonemealSuccess(Level level, RandomSource random, BlockPos pos, BlockState state) { public boolean isBonemealSuccess(Level level, Random random, BlockPos pos, BlockState state) {
return random.nextInt(16) == 0; return random.nextInt(16) == 0;
} }
@Override @Override
public void advanceTree(ServerLevel world, BlockPos pos, BlockState blockState, RandomSource random) { public void advanceTree(ServerLevel world, BlockPos pos, BlockState blockState, Random random) {
var conf = getConfiguredFeature(blockState); var conf = getConfiguredFeature(blockState);
if (conf == null) getFeature(blockState).place(world, pos, random); if (conf == null) getFeature(blockState).place(world, pos, random);
else conf.placeInWorld(world, pos, random); else conf.placeInWorld(world, pos, random);
} }
@Override @Override
public void randomTick(BlockState state, ServerLevel world, BlockPos pos, RandomSource random) { public void randomTick(BlockState state, ServerLevel world, BlockPos pos, Random random) {
this.tick(state, world, pos, random); this.tick(state, world, pos, random);
} }
@Override @Override
public void tick(BlockState state, ServerLevel world, BlockPos pos, RandomSource random) { public void tick(BlockState state, ServerLevel world, BlockPos pos, Random random) {
super.tick(state, world, pos, random); super.tick(state, world, pos, random);
if (isBonemealSuccess(world, random, pos, state)) { if (isBonemealSuccess(world, random, pos, state)) {
performBonemeal(world, random, pos, state); performBonemeal(world, random, pos, state);

View file

@ -14,7 +14,6 @@ import net.minecraft.core.BlockPos;
import net.minecraft.core.Direction; import net.minecraft.core.Direction;
import net.minecraft.resources.ResourceLocation; import net.minecraft.resources.ResourceLocation;
import net.minecraft.server.level.ServerLevel; import net.minecraft.server.level.ServerLevel;
import net.minecraft.util.RandomSource;
import net.minecraft.world.InteractionHand; import net.minecraft.world.InteractionHand;
import net.minecraft.world.InteractionResult; import net.minecraft.world.InteractionResult;
import net.minecraft.world.entity.player.Player; import net.minecraft.world.entity.player.Player;
@ -38,6 +37,7 @@ import com.google.common.collect.Maps;
import java.util.List; import java.util.List;
import java.util.Map; import java.util.Map;
import java.util.Optional; import java.util.Optional;
import java.util.Random;
import org.jetbrains.annotations.Nullable; import org.jetbrains.annotations.Nullable;
public class TripleTerrainBlock extends BaseTerrainBlock { public class TripleTerrainBlock extends BaseTerrainBlock {
@ -84,7 +84,7 @@ public class TripleTerrainBlock extends BaseTerrainBlock {
} }
@Override @Override
public void randomTick(BlockState state, ServerLevel world, BlockPos pos, RandomSource random) { public void randomTick(BlockState state, ServerLevel world, BlockPos pos, Random random) {
TripleShape shape = state.getValue(SHAPE); TripleShape shape = state.getValue(SHAPE);
if (shape == TripleShape.BOTTOM) { if (shape == TripleShape.BOTTOM) {
super.randomTick(state, world, pos, random); super.randomTick(state, world, pos, random);

View file

@ -7,7 +7,6 @@ import org.betterx.bclib.items.tool.BaseShearsItem;
import net.minecraft.core.BlockPos; import net.minecraft.core.BlockPos;
import net.minecraft.core.Direction; import net.minecraft.core.Direction;
import net.minecraft.server.level.ServerLevel; import net.minecraft.server.level.ServerLevel;
import net.minecraft.util.RandomSource;
import net.minecraft.world.entity.item.ItemEntity; import net.minecraft.world.entity.item.ItemEntity;
import net.minecraft.world.item.ItemStack; import net.minecraft.world.item.ItemStack;
import net.minecraft.world.item.enchantment.EnchantmentHelper; import net.minecraft.world.item.enchantment.EnchantmentHelper;
@ -37,6 +36,7 @@ import net.fabricmc.fabric.api.object.builder.v1.block.FabricBlockSettings;
import com.google.common.collect.Lists; import com.google.common.collect.Lists;
import java.util.List; import java.util.List;
import java.util.Random;
import java.util.function.Function; import java.util.function.Function;
public abstract class UnderwaterPlantBlock extends BaseBlockNotFull implements RenderLayerProvider, BonemealableBlock, LiquidBlockContainer { public abstract class UnderwaterPlantBlock extends BaseBlockNotFull implements RenderLayerProvider, BonemealableBlock, LiquidBlockContainer {
@ -156,12 +156,12 @@ public abstract class UnderwaterPlantBlock extends BaseBlockNotFull implements R
} }
@Override @Override
public boolean isBonemealSuccess(Level level, RandomSource random, BlockPos pos, BlockState state) { public boolean isBonemealSuccess(Level level, Random random, BlockPos pos, BlockState state) {
return true; return true;
} }
@Override @Override
public void performBonemeal(ServerLevel level, RandomSource random, BlockPos pos, BlockState state) { public void performBonemeal(ServerLevel level, Random random, BlockPos pos, BlockState state) {
ItemEntity item = new ItemEntity( ItemEntity item = new ItemEntity(
level, level,
pos.getX() + 0.5, pos.getX() + 0.5,

View file

@ -2,13 +2,14 @@ package org.betterx.bclib.blocks;
import net.minecraft.core.BlockPos; import net.minecraft.core.BlockPos;
import net.minecraft.server.level.ServerLevel; import net.minecraft.server.level.ServerLevel;
import net.minecraft.util.RandomSource;
import net.minecraft.world.level.WorldGenLevel; import net.minecraft.world.level.WorldGenLevel;
import net.minecraft.world.level.block.Block; import net.minecraft.world.level.block.Block;
import net.minecraft.world.level.block.state.BlockState; import net.minecraft.world.level.block.state.BlockState;
import net.minecraft.world.level.block.state.StateDefinition; import net.minecraft.world.level.block.state.StateDefinition;
import net.minecraft.world.level.block.state.properties.IntegerProperty; import net.minecraft.world.level.block.state.properties.IntegerProperty;
import java.util.Random;
public abstract class UnderwaterPlantWithAgeBlock extends UnderwaterPlantBlock { public abstract class UnderwaterPlantWithAgeBlock extends UnderwaterPlantBlock {
public static final IntegerProperty AGE = BlockProperties.AGE; public static final IntegerProperty AGE = BlockProperties.AGE;
@ -21,10 +22,10 @@ public abstract class UnderwaterPlantWithAgeBlock extends UnderwaterPlantBlock {
stateManager.add(AGE); stateManager.add(AGE);
} }
public abstract void grow(WorldGenLevel world, RandomSource random, BlockPos pos); public abstract void grow(WorldGenLevel world, Random random, BlockPos pos);
@Override @Override
public void performBonemeal(ServerLevel world, RandomSource random, BlockPos pos, BlockState state) { public void performBonemeal(ServerLevel world, Random random, BlockPos pos, BlockState state) {
if (random.nextInt(4) == 0) { if (random.nextInt(4) == 0) {
int age = state.getValue(AGE); int age = state.getValue(AGE);
if (age < 3) { if (age < 3) {
@ -37,7 +38,7 @@ public abstract class UnderwaterPlantWithAgeBlock extends UnderwaterPlantBlock {
@Override @Override
@SuppressWarnings("deprecation") @SuppressWarnings("deprecation")
public void tick(BlockState state, ServerLevel world, BlockPos pos, RandomSource random) { public void tick(BlockState state, ServerLevel world, BlockPos pos, Random random) {
super.tick(state, world, pos, random); super.tick(state, world, pos, random);
if (isBonemealSuccess(world, random, pos, state)) { if (isBonemealSuccess(world, random, pos, state)) {
performBonemeal(world, random, pos, state); performBonemeal(world, random, pos, state);

View file

@ -16,7 +16,6 @@ import net.minecraft.client.resources.model.*;
import net.minecraft.core.Direction; import net.minecraft.core.Direction;
import net.minecraft.resources.ResourceLocation; import net.minecraft.resources.ResourceLocation;
import net.minecraft.server.packs.resources.Resource; import net.minecraft.server.packs.resources.Resource;
import net.minecraft.util.RandomSource;
import net.minecraft.world.level.block.state.BlockState; import net.minecraft.world.level.block.state.BlockState;
import net.fabricmc.api.EnvType; import net.fabricmc.api.EnvType;
@ -121,7 +120,7 @@ public class OBJBlockModel implements UnbakedModel, BakedModel {
public List<BakedQuad> getQuads( public List<BakedQuad> getQuads(
@Nullable BlockState blockState, @Nullable BlockState blockState,
@Nullable Direction direction, @Nullable Direction direction,
RandomSource random Random random
) { ) {
return direction == null ? quadsBaked : quadsBakedMap.get(direction); return direction == null ? quadsBaked : quadsBakedMap.get(direction);
} }

View file

@ -1,12 +1,13 @@
package org.betterx.bclib.interfaces; package org.betterx.bclib.interfaces;
import net.minecraft.core.BlockPos; import net.minecraft.core.BlockPos;
import net.minecraft.util.RandomSource;
import net.minecraft.world.entity.EntityType; import net.minecraft.world.entity.EntityType;
import net.minecraft.world.entity.Mob; import net.minecraft.world.entity.Mob;
import net.minecraft.world.entity.MobSpawnType; import net.minecraft.world.entity.MobSpawnType;
import net.minecraft.world.level.LevelAccessor; import net.minecraft.world.level.LevelAccessor;
import java.util.Random;
@FunctionalInterface @FunctionalInterface
public interface SpawnRule<M extends Mob> { public interface SpawnRule<M extends Mob> {
boolean canSpawn( boolean canSpawn(
@ -14,6 +15,6 @@ public interface SpawnRule<M extends Mob> {
LevelAccessor world, LevelAccessor world,
MobSpawnType spawnReason, MobSpawnType spawnReason,
BlockPos pos, BlockPos pos,
RandomSource random Random random
); );
} }

View file

@ -7,11 +7,11 @@ import net.minecraft.core.Registry;
import net.minecraft.core.RegistryAccess; import net.minecraft.core.RegistryAccess;
import net.minecraft.resources.ResourceKey; import net.minecraft.resources.ResourceKey;
import net.minecraft.resources.ResourceLocation; import net.minecraft.resources.ResourceLocation;
import net.minecraft.util.RandomSource;
import net.minecraft.world.level.levelgen.synth.NormalNoise; import net.minecraft.world.level.levelgen.synth.NormalNoise;
import java.util.HashMap; import java.util.HashMap;
import java.util.Map; import java.util.Map;
import java.util.Random;
public class Noises { public class Noises {
private static final Map<ResourceKey<NormalNoise.NoiseParameters>, NormalNoise> noiseIntances = new HashMap<>(); private static final Map<ResourceKey<NormalNoise.NoiseParameters>, NormalNoise> noiseIntances = new HashMap<>();
@ -24,19 +24,19 @@ public class Noises {
public static NormalNoise createNoise( public static NormalNoise createNoise(
Registry<NormalNoise.NoiseParameters> registry, Registry<NormalNoise.NoiseParameters> registry,
RandomSource randomSource, Random Random,
ResourceKey<NormalNoise.NoiseParameters> resourceKey ResourceKey<NormalNoise.NoiseParameters> resourceKey
) { ) {
Holder<NormalNoise.NoiseParameters> holder = registry.getHolderOrThrow(resourceKey); Holder<NormalNoise.NoiseParameters> holder = registry.getHolderOrThrow(resourceKey);
return NormalNoise.create(randomSource, holder.value()); return NormalNoise.create(Random, holder.value());
} }
public static NormalNoise getOrCreateNoise( public static NormalNoise getOrCreateNoise(
RegistryAccess registryAccess, RegistryAccess registryAccess,
RandomSource randomSource, Random Random,
ResourceKey<NormalNoise.NoiseParameters> noise ResourceKey<NormalNoise.NoiseParameters> noise
) { ) {
final Registry<NormalNoise.NoiseParameters> registry = registryAccess.registryOrThrow(Registry.NOISE_REGISTRY); final Registry<NormalNoise.NoiseParameters> registry = registryAccess.registryOrThrow(Registry.NOISE_REGISTRY);
return noiseIntances.computeIfAbsent(noise, (key) -> createNoise(registry, randomSource, noise)); return noiseIntances.computeIfAbsent(noise, (key) -> createNoise(registry, Random, noise));
} }
} }

View file

@ -5,7 +5,6 @@ import org.betterx.worlds.together.tag.v3.CommonBlockTags;
import net.minecraft.core.BlockPos; import net.minecraft.core.BlockPos;
import net.minecraft.core.BlockPos.MutableBlockPos; import net.minecraft.core.BlockPos.MutableBlockPos;
import net.minecraft.core.Direction; import net.minecraft.core.Direction;
import net.minecraft.util.RandomSource;
import net.minecraft.world.level.BlockGetter; import net.minecraft.world.level.BlockGetter;
import net.minecraft.world.level.ClipContext.Fluid; import net.minecraft.world.level.ClipContext.Fluid;
import net.minecraft.world.level.LevelAccessor; import net.minecraft.world.level.LevelAccessor;
@ -157,7 +156,7 @@ public class BlocksHelper {
* @param random - {@link Random}. * @param random - {@link Random}.
* @return {@link Direction}. * @return {@link Direction}.
*/ */
public static Direction randomHorizontal(RandomSource random) { public static Direction randomHorizontal(Random random) {
return HORIZONTAL[random.nextInt(4)]; return HORIZONTAL[random.nextInt(4)];
} }
@ -167,7 +166,7 @@ public class BlocksHelper {
* @param random - {@link Random}. * @param random - {@link Random}.
* @return {@link Direction}. * @return {@link Direction}.
*/ */
public static Direction randomDirection(RandomSource random) { public static Direction randomDirection(Random random) {
return DIRECTIONS[random.nextInt(6)]; return DIRECTIONS[random.nextInt(6)];
} }

View file

@ -2,8 +2,7 @@ package org.betterx.bclib.util;
import com.mojang.math.Vector3f; import com.mojang.math.Vector3f;
import net.minecraft.core.Vec3i; import net.minecraft.core.Vec3i;
import net.minecraft.util.RandomSource; import net.minecraft.world.level.levelgen.LegacyRandom;
import net.minecraft.world.level.levelgen.LegacyRandomSource;
import java.util.Random; import java.util.Random;
@ -13,17 +12,17 @@ public class MHelper {
public static final float PHI = (float) (Math.PI * (3 - Math.sqrt(5))); public static final float PHI = (float) (Math.PI * (3 - Math.sqrt(5)));
public static final float PI2 = (float) (Math.PI * 2); public static final float PI2 = (float) (Math.PI * 2);
public static final Random RANDOM = new Random(); public static final Random RANDOM = new Random();
public static final RandomSource RANDOM_SOURCE = new LegacyRandomSource(RANDOM.nextLong()); public static final Random RANDOM_SOURCE = new LegacyRandom(RANDOM.nextLong());
public static int randRange(int min, int max, RandomSource random) { public static int randRange(int min, int max, Random random) {
return min + random.nextInt(max - min + 1); return min + random.nextInt(max - min + 1);
} }
public static double randRange(double min, double max, RandomSource random) { public static double randRange(double min, double max, Random random) {
return min + random.nextDouble() * (max - min); return min + random.nextDouble() * (max - min);
} }
public static float randRange(float min, float max, RandomSource random) { public static float randRange(float min, float max, Random random) {
return min + random.nextFloat() * (max - min); return min + random.nextFloat() * (max - min);
} }
@ -143,7 +142,7 @@ public class MHelper {
return h ^ (h >> 16); return h ^ (h >> 16);
} }
public static <T> void shuffle(T[] array, RandomSource random) { public static <T> void shuffle(T[] array, Random random) {
for (int i = 0; i < array.length; i++) { for (int i = 0; i < array.length; i++) {
int i2 = random.nextInt(array.length); int i2 = random.nextInt(array.length);
T element = array[i]; T element = array[i];
@ -198,14 +197,14 @@ public class MHelper {
return (float) Math.acos(dot / Math.sqrt(length1 * length2)); return (float) Math.acos(dot / Math.sqrt(length1 * length2));
} }
public static Vector3f randomHorizontal(RandomSource random) { public static Vector3f randomHorizontal(Random random) {
float angleY = randRange(0, PI2, random); float angleY = randRange(0, PI2, random);
float vx = (float) Math.sin(angleY); float vx = (float) Math.sin(angleY);
float vz = (float) Math.cos(angleY); float vz = (float) Math.cos(angleY);
return new Vector3f(vx, 0, vz); return new Vector3f(vx, 0, vz);
} }
public static Vec3i[] getOffsets(RandomSource random) { public static Vec3i[] getOffsets(Random random) {
shuffle(RANDOM_OFFSETS, random); shuffle(RANDOM_OFFSETS, random);
return RANDOM_OFFSETS; return RANDOM_OFFSETS;
} }

View file

@ -8,7 +8,6 @@ import com.mojang.math.Vector3f;
import net.minecraft.core.BlockPos; import net.minecraft.core.BlockPos;
import net.minecraft.core.BlockPos.MutableBlockPos; import net.minecraft.core.BlockPos.MutableBlockPos;
import net.minecraft.util.Mth; import net.minecraft.util.Mth;
import net.minecraft.util.RandomSource;
import net.minecraft.world.level.WorldGenLevel; import net.minecraft.world.level.WorldGenLevel;
import net.minecraft.world.level.block.state.BlockState; import net.minecraft.world.level.block.state.BlockState;
@ -16,6 +15,7 @@ import com.google.common.collect.Lists;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.List; import java.util.List;
import java.util.Random;
import java.util.function.Function; import java.util.function.Function;
public class SplineHelper { public class SplineHelper {
@ -57,7 +57,7 @@ public class SplineHelper {
return new Vector3f(x, y, z); return new Vector3f(x, y, z);
} }
public static void offsetParts(List<Vector3f> spline, RandomSource random, float dx, float dy, float dz) { public static void offsetParts(List<Vector3f> spline, Random random, float dx, float dy, float dz) {
int count = spline.size(); int count = spline.size();
for (int i = 1; i < count; i++) { for (int i = 1; i < count; i++) {
Vector3f pos = spline.get(i); Vector3f pos = spline.get(i);

View file

@ -5,7 +5,6 @@ import net.minecraft.core.Vec3i;
import net.minecraft.nbt.CompoundTag; import net.minecraft.nbt.CompoundTag;
import net.minecraft.nbt.NbtIo; import net.minecraft.nbt.NbtIo;
import net.minecraft.resources.ResourceLocation; import net.minecraft.resources.ResourceLocation;
import net.minecraft.util.RandomSource;
import net.minecraft.world.level.WorldGenLevel; import net.minecraft.world.level.WorldGenLevel;
import net.minecraft.world.level.block.Mirror; import net.minecraft.world.level.block.Mirror;
import net.minecraft.world.level.block.Rotation; import net.minecraft.world.level.block.Rotation;
@ -18,6 +17,7 @@ import java.io.File;
import java.io.IOException; import java.io.IOException;
import java.io.InputStream; import java.io.InputStream;
import java.util.Enumeration; import java.util.Enumeration;
import java.util.Random;
import java.util.zip.ZipEntry; import java.util.zip.ZipEntry;
import java.util.zip.ZipFile; import java.util.zip.ZipFile;
@ -88,7 +88,7 @@ public class StructureHelper {
StructureTemplate structure, StructureTemplate structure,
Rotation rotation, Rotation rotation,
Mirror mirror, Mirror mirror,
RandomSource random Random random
) { ) {
placeCenteredBottom(world, pos, structure, rotation, mirror, makeBox(pos), random); placeCenteredBottom(world, pos, structure, rotation, mirror, makeBox(pos), random);
} }
@ -100,7 +100,7 @@ public class StructureHelper {
Rotation rotation, Rotation rotation,
Mirror mirror, Mirror mirror,
BoundingBox bounds, BoundingBox bounds,
RandomSource random Random random
) { ) {
BlockPos offset = offsetPos(pos, structure, rotation, mirror); BlockPos offset = offsetPos(pos, structure, rotation, mirror);
StructurePlaceSettings placementData = new StructurePlaceSettings().setRotation(rotation) StructurePlaceSettings placementData = new StructurePlaceSettings().setRotation(rotation)

View file

@ -1,7 +1,5 @@
package org.betterx.bclib.util; package org.betterx.bclib.util;
import net.minecraft.util.RandomSource;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.List; import java.util.List;
import java.util.Random; import java.util.Random;
@ -30,7 +28,7 @@ public class WeightedList<T> {
* @param random - {@link Random}. * @param random - {@link Random}.
* @return {@link T} value. * @return {@link T} value.
*/ */
public T get(RandomSource random) { public T get(Random random) {
if (maxWeight < 1) { if (maxWeight < 1) {
return null; return null;
} }

View file

@ -1,5 +1,6 @@
package org.betterx.worlds.together.levelgen; package org.betterx.worlds.together.levelgen;
import org.betterx.bclib.util.MHelper;
import org.betterx.worlds.together.WorldsTogether; import org.betterx.worlds.together.WorldsTogether;
import org.betterx.worlds.together.biomesource.BiomeSourceWithConfig; import org.betterx.worlds.together.biomesource.BiomeSourceWithConfig;
import org.betterx.worlds.together.chunkgenerator.EnforceableChunkGenerator; import org.betterx.worlds.together.chunkgenerator.EnforceableChunkGenerator;
@ -9,19 +10,18 @@ import org.betterx.worlds.together.worldPreset.TogetherWorldPreset;
import org.betterx.worlds.together.worldPreset.WorldPresets; import org.betterx.worlds.together.worldPreset.WorldPresets;
import com.mojang.datafixers.util.Pair; import com.mojang.datafixers.util.Pair;
import net.minecraft.client.gui.screens.worldselection.WorldPreset;
import net.minecraft.core.Holder; import net.minecraft.core.Holder;
import net.minecraft.core.Registry; import net.minecraft.core.Registry;
import net.minecraft.core.RegistryAccess; import net.minecraft.core.RegistryAccess;
import net.minecraft.nbt.CompoundTag; import net.minecraft.nbt.CompoundTag;
import net.minecraft.resources.ResourceKey; import net.minecraft.resources.ResourceKey;
import net.minecraft.util.RandomSource;
import net.minecraft.world.level.biome.Biome; import net.minecraft.world.level.biome.Biome;
import net.minecraft.world.level.chunk.ChunkGenerator; import net.minecraft.world.level.chunk.ChunkGenerator;
import net.minecraft.world.level.dimension.DimensionType; import net.minecraft.world.level.dimension.DimensionType;
import net.minecraft.world.level.dimension.LevelStem; import net.minecraft.world.level.dimension.LevelStem;
import net.minecraft.world.level.levelgen.NoiseGeneratorSettings; import net.minecraft.world.level.levelgen.NoiseGeneratorSettings;
import net.minecraft.world.level.levelgen.WorldGenSettings; import net.minecraft.world.level.levelgen.WorldGenSettings;
import net.minecraft.world.level.levelgen.presets.WorldPreset;
import net.minecraft.world.level.levelgen.structure.StructureSet; import net.minecraft.world.level.levelgen.structure.StructureSet;
import net.minecraft.world.level.levelgen.synth.NormalNoise; import net.minecraft.world.level.levelgen.synth.NormalNoise;
@ -76,7 +76,7 @@ public class WorldGenUtil {
} }
public static WorldGenSettings createDefaultWorldFromPreset(RegistryAccess registryAccess) { public static WorldGenSettings createDefaultWorldFromPreset(RegistryAccess registryAccess) {
return createDefaultWorldFromPreset(registryAccess, RandomSource.create().nextLong()); return createDefaultWorldFromPreset(registryAccess, MHelper.RANDOM.nextLong());
} }
public static CompoundTag getPresetsNbt() { public static CompoundTag getPresetsNbt() {

View file

@ -8,12 +8,12 @@ import com.mojang.datafixers.util.Pair;
import net.minecraft.client.gui.screens.Screen; import net.minecraft.client.gui.screens.Screen;
import net.minecraft.client.gui.screens.worldselection.CreateWorldScreen; import net.minecraft.client.gui.screens.worldselection.CreateWorldScreen;
import net.minecraft.client.gui.screens.worldselection.WorldGenSettingsComponent; import net.minecraft.client.gui.screens.worldselection.WorldGenSettingsComponent;
import net.minecraft.client.gui.screens.worldselection.WorldPreset;
import net.minecraft.core.RegistryAccess; import net.minecraft.core.RegistryAccess;
import net.minecraft.resources.ResourceKey; import net.minecraft.resources.ResourceKey;
import net.minecraft.server.WorldLoader; import net.minecraft.server.WorldLoader;
import net.minecraft.world.level.DataPackConfig; import net.minecraft.world.level.DataPackConfig;
import net.minecraft.world.level.levelgen.WorldGenSettings; import net.minecraft.world.level.levelgen.WorldGenSettings;
import net.minecraft.world.level.levelgen.presets.WorldPreset;
import net.minecraft.world.level.storage.LevelStorageSource; import net.minecraft.world.level.storage.LevelStorageSource;
import org.spongepowered.asm.mixin.Final; import org.spongepowered.asm.mixin.Final;

View file

@ -3,8 +3,8 @@ package org.betterx.worlds.together.mixin.client;
import org.betterx.worlds.together.worldPreset.WorldGenSettingsComponentAccessor; import org.betterx.worlds.together.worldPreset.WorldGenSettingsComponentAccessor;
import net.minecraft.client.gui.screens.worldselection.WorldGenSettingsComponent; import net.minecraft.client.gui.screens.worldselection.WorldGenSettingsComponent;
import net.minecraft.client.gui.screens.worldselection.WorldPreset;
import net.minecraft.core.Holder; import net.minecraft.core.Holder;
import net.minecraft.world.level.levelgen.presets.WorldPreset;
import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.Mixin;
import org.spongepowered.asm.mixin.gen.Accessor; import org.spongepowered.asm.mixin.gen.Accessor;

View file

@ -2,12 +2,14 @@ package org.betterx.worlds.together.mixin.common;
import org.betterx.worlds.together.chunkgenerator.ChunkGeneratorUtils; import org.betterx.worlds.together.chunkgenerator.ChunkGeneratorUtils;
import com.mojang.authlib.GameProfileRepository;
import com.mojang.authlib.minecraft.MinecraftSessionService;
import com.mojang.datafixers.DataFixer; import com.mojang.datafixers.DataFixer;
import net.minecraft.server.MinecraftServer; import net.minecraft.server.MinecraftServer;
import net.minecraft.server.Services;
import net.minecraft.server.WorldStem; import net.minecraft.server.WorldStem;
import net.minecraft.server.level.progress.ChunkProgressListenerFactory; import net.minecraft.server.level.progress.ChunkProgressListenerFactory;
import net.minecraft.server.packs.repository.PackRepository; import net.minecraft.server.packs.repository.PackRepository;
import net.minecraft.server.players.GameProfileCache;
import net.minecraft.world.level.storage.LevelStorageSource; import net.minecraft.world.level.storage.LevelStorageSource;
import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.Mixin;
@ -27,7 +29,9 @@ public class MinecraftServerMixinLate {
WorldStem worldStem, WorldStem worldStem,
Proxy proxy, Proxy proxy,
DataFixer dataFixer, DataFixer dataFixer,
Services services, MinecraftSessionService minecraftSessionService,
GameProfileRepository gameProfileRepository,
GameProfileCache gameProfileCache,
ChunkProgressListenerFactory chunkProgressListenerFactory, ChunkProgressListenerFactory chunkProgressListenerFactory,
CallbackInfo ci CallbackInfo ci
) { ) {

View file

@ -2,9 +2,9 @@ package org.betterx.worlds.together.mixin.common;
import org.betterx.worlds.together.worldPreset.WorldPresets; import org.betterx.worlds.together.worldPreset.WorldPresets;
import net.minecraft.client.gui.screens.worldselection.WorldPreset;
import net.minecraft.resources.ResourceKey; import net.minecraft.resources.ResourceKey;
import net.minecraft.server.dedicated.DedicatedServerProperties; import net.minecraft.server.dedicated.DedicatedServerProperties;
import net.minecraft.world.level.levelgen.presets.WorldPreset;
import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.Mixin;
import org.spongepowered.asm.mixin.injection.At; import org.spongepowered.asm.mixin.injection.At;

View file

@ -1,8 +1,8 @@
package org.betterx.worlds.together.mixin.common; package org.betterx.worlds.together.mixin.common;
import net.minecraft.client.gui.screens.worldselection.WorldPreset;
import net.minecraft.resources.ResourceKey; import net.minecraft.resources.ResourceKey;
import net.minecraft.world.level.dimension.LevelStem; import net.minecraft.world.level.dimension.LevelStem;
import net.minecraft.world.level.levelgen.presets.WorldPreset;
import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.Mixin;
import org.spongepowered.asm.mixin.gen.Accessor; import org.spongepowered.asm.mixin.gen.Accessor;

View file

@ -5,10 +5,10 @@ import org.betterx.worlds.together.worldPreset.TogetherWorldPreset;
import com.mojang.datafixers.kinds.App; import com.mojang.datafixers.kinds.App;
import com.mojang.serialization.Codec; import com.mojang.serialization.Codec;
import com.mojang.serialization.codecs.RecordCodecBuilder; import com.mojang.serialization.codecs.RecordCodecBuilder;
import net.minecraft.client.gui.screens.worldselection.WorldPreset;
import net.minecraft.core.Registry; import net.minecraft.core.Registry;
import net.minecraft.resources.ResourceKey; import net.minecraft.resources.ResourceKey;
import net.minecraft.world.level.dimension.LevelStem; import net.minecraft.world.level.dimension.LevelStem;
import net.minecraft.world.level.levelgen.presets.WorldPreset;
import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.Mixin;
import org.spongepowered.asm.mixin.injection.At; import org.spongepowered.asm.mixin.injection.At;

View file

@ -3,13 +3,13 @@ package org.betterx.worlds.together.mixin.common;
import org.betterx.worlds.together.levelgen.WorldGenUtil; import org.betterx.worlds.together.levelgen.WorldGenUtil;
import org.betterx.worlds.together.worldPreset.WorldPresets; import org.betterx.worlds.together.worldPreset.WorldPresets;
import net.minecraft.client.gui.screens.worldselection.WorldPreset;
import net.minecraft.core.Holder; import net.minecraft.core.Holder;
import net.minecraft.core.Registry; import net.minecraft.core.Registry;
import net.minecraft.world.level.biome.Biome; import net.minecraft.world.level.biome.Biome;
import net.minecraft.world.level.dimension.DimensionType; import net.minecraft.world.level.dimension.DimensionType;
import net.minecraft.world.level.dimension.LevelStem; import net.minecraft.world.level.dimension.LevelStem;
import net.minecraft.world.level.levelgen.NoiseGeneratorSettings; import net.minecraft.world.level.levelgen.NoiseGeneratorSettings;
import net.minecraft.world.level.levelgen.presets.WorldPreset;
import net.minecraft.world.level.levelgen.structure.StructureSet; import net.minecraft.world.level.levelgen.structure.StructureSet;
import net.minecraft.world.level.levelgen.synth.NormalNoise; import net.minecraft.world.level.levelgen.synth.NormalNoise;

View file

@ -5,6 +5,7 @@ import net.minecraft.world.level.biome.Biome;
public class CommonBiomeTags { public class CommonBiomeTags {
public static final TagKey<Biome> IN_NETHER = TagManager.BIOMES.makeCommonTag("in_nether"); public static final TagKey<Biome> IN_NETHER = TagManager.BIOMES.makeCommonTag("in_nether");
public static final TagKey<Biome> IN_END = TagManager.BIOMES.makeCommonTag("in_end");
static void prepareTags() { static void prepareTags() {
} }

View file

@ -1,8 +1,8 @@
package org.betterx.worlds.together.world.event; package org.betterx.worlds.together.world.event;
import net.minecraft.client.gui.screens.worldselection.WorldPreset;
import net.minecraft.core.Holder; import net.minecraft.core.Holder;
import net.minecraft.world.level.levelgen.WorldGenSettings; import net.minecraft.world.level.levelgen.WorldGenSettings;
import net.minecraft.world.level.levelgen.presets.WorldPreset;
import java.util.Optional; import java.util.Optional;

View file

@ -1,8 +1,8 @@
package org.betterx.worlds.together.world.event; package org.betterx.worlds.together.world.event;
import net.minecraft.client.gui.screens.worldselection.WorldPreset;
import net.minecraft.core.Holder; import net.minecraft.core.Holder;
import net.minecraft.world.level.levelgen.WorldGenSettings; import net.minecraft.world.level.levelgen.WorldGenSettings;
import net.minecraft.world.level.levelgen.presets.WorldPreset;
import java.util.Optional; import java.util.Optional;

View file

@ -12,6 +12,7 @@ import org.betterx.worlds.together.worldPreset.WorldGenSettingsComponentAccessor
import org.betterx.worlds.together.worldPreset.WorldPresets; import org.betterx.worlds.together.worldPreset.WorldPresets;
import net.minecraft.client.gui.screens.worldselection.WorldGenSettingsComponent; import net.minecraft.client.gui.screens.worldselection.WorldGenSettingsComponent;
import net.minecraft.client.gui.screens.worldselection.WorldPreset;
import net.minecraft.core.Holder; import net.minecraft.core.Holder;
import net.minecraft.core.Registry; import net.minecraft.core.Registry;
import net.minecraft.core.RegistryAccess; import net.minecraft.core.RegistryAccess;
@ -22,7 +23,6 @@ import net.minecraft.resources.ResourceKey;
import net.minecraft.world.level.chunk.ChunkGenerator; import net.minecraft.world.level.chunk.ChunkGenerator;
import net.minecraft.world.level.dimension.LevelStem; import net.minecraft.world.level.dimension.LevelStem;
import net.minecraft.world.level.levelgen.WorldGenSettings; import net.minecraft.world.level.levelgen.WorldGenSettings;
import net.minecraft.world.level.levelgen.presets.WorldPreset;
import net.minecraft.world.level.storage.LevelResource; import net.minecraft.world.level.storage.LevelResource;
import net.minecraft.world.level.storage.LevelStorageSource; import net.minecraft.world.level.storage.LevelStorageSource;

View file

@ -9,6 +9,7 @@ import org.betterx.worlds.together.world.event.WorldBootstrap;
import com.mojang.serialization.Codec; import com.mojang.serialization.Codec;
import com.mojang.serialization.Dynamic; import com.mojang.serialization.Dynamic;
import com.mojang.serialization.codecs.RecordCodecBuilder; import com.mojang.serialization.codecs.RecordCodecBuilder;
import net.minecraft.client.gui.screens.worldselection.WorldPreset;
import net.minecraft.core.Registry; import net.minecraft.core.Registry;
import net.minecraft.core.RegistryAccess; import net.minecraft.core.RegistryAccess;
import net.minecraft.nbt.CompoundTag; import net.minecraft.nbt.CompoundTag;
@ -18,7 +19,6 @@ import net.minecraft.resources.RegistryOps;
import net.minecraft.resources.ResourceKey; import net.minecraft.resources.ResourceKey;
import net.minecraft.world.level.chunk.ChunkGenerator; import net.minecraft.world.level.chunk.ChunkGenerator;
import net.minecraft.world.level.dimension.LevelStem; import net.minecraft.world.level.dimension.LevelStem;
import net.minecraft.world.level.levelgen.presets.WorldPreset;
import java.util.HashMap; import java.util.HashMap;
import java.util.Map; import java.util.Map;
@ -142,6 +142,11 @@ public class TogetherWorldPreset extends WorldPreset {
return DimensionsWrapper.build(reg); return DimensionsWrapper.build(reg);
} }
@Override
public ChunkGenerator generator(RegistryAccess registryAccess, long l) {
return null;
}
private static class DimensionsWrapper { private static class DimensionsWrapper {
public static final Codec<DimensionsWrapper> CODEC = RecordCodecBuilder.create(instance -> instance public static final Codec<DimensionsWrapper> CODEC = RecordCodecBuilder.create(instance -> instance
.group(Codec.unboundedMap( .group(Codec.unboundedMap(

View file

@ -1,7 +1,7 @@
package org.betterx.worlds.together.worldPreset; package org.betterx.worlds.together.worldPreset;
import net.minecraft.client.gui.screens.worldselection.WorldPreset;
import net.minecraft.core.Holder; import net.minecraft.core.Holder;
import net.minecraft.world.level.levelgen.presets.WorldPreset;
import java.util.Optional; import java.util.Optional;

View file

@ -7,6 +7,7 @@ import org.betterx.worlds.together.tag.v3.TagManager;
import org.betterx.worlds.together.tag.v3.TagRegistry; import org.betterx.worlds.together.tag.v3.TagRegistry;
import org.betterx.worlds.together.worldPreset.client.WorldPresetsClient; import org.betterx.worlds.together.worldPreset.client.WorldPresetsClient;
import net.minecraft.client.gui.screens.worldselection.WorldPreset;
import net.minecraft.core.Holder; import net.minecraft.core.Holder;
import net.minecraft.core.Registry; import net.minecraft.core.Registry;
import net.minecraft.core.RegistryAccess; import net.minecraft.core.RegistryAccess;
@ -15,7 +16,6 @@ import net.minecraft.resources.ResourceKey;
import net.minecraft.resources.ResourceLocation; import net.minecraft.resources.ResourceLocation;
import net.minecraft.tags.WorldPresetTags; import net.minecraft.tags.WorldPresetTags;
import net.minecraft.world.level.dimension.LevelStem; import net.minecraft.world.level.dimension.LevelStem;
import net.minecraft.world.level.levelgen.presets.WorldPreset;
import com.google.common.collect.Maps; import com.google.common.collect.Maps;

View file

@ -2,9 +2,8 @@ package org.betterx.worlds.together.worldPreset.client;
import org.betterx.bclib.registry.PresetsRegistryClient; import org.betterx.bclib.registry.PresetsRegistryClient;
import net.minecraft.client.gui.screens.worldselection.PresetEditor; import net.minecraft.client.gui.screens.worldselection.WorldPreset;
import net.minecraft.resources.ResourceKey; import net.minecraft.resources.ResourceKey;
import net.minecraft.world.level.levelgen.presets.WorldPreset;
import net.fabricmc.api.EnvType; import net.fabricmc.api.EnvType;
import net.fabricmc.api.Environment; import net.fabricmc.api.Environment;
@ -13,7 +12,7 @@ import java.util.Optional;
@Environment(EnvType.CLIENT) @Environment(EnvType.CLIENT)
public class WorldPresetsClient { public class WorldPresetsClient {
public static void registerCustomizeUI(ResourceKey<WorldPreset> key, PresetEditor setupScreen) { public static void registerCustomizeUI(ResourceKey<WorldPreset> key, WorldPreset.PresetEditor setupScreen) {
if (setupScreen != null) { if (setupScreen != null) {
PresetEditor.EDITORS.put(Optional.of(key), setupScreen); PresetEditor.EDITORS.put(Optional.of(key), setupScreen);
} }