Features (update 17 of 20)
This commit is contained in:
parent
1bc2b3f933
commit
3561e9a7b6
6 changed files with 31 additions and 26 deletions
|
@ -1,21 +1,17 @@
|
|||
package org.dimdev.dimdoors.world.feature.gateway;
|
||||
|
||||
import java.util.Random;
|
||||
|
||||
import net.minecraft.util.math.BlockPos;
|
||||
import net.minecraft.world.StructureWorldAccess;
|
||||
import net.minecraft.world.gen.chunk.ChunkGenerator;
|
||||
import net.minecraft.world.gen.feature.DefaultFeatureConfig;
|
||||
import net.minecraft.world.gen.feature.Feature;
|
||||
import net.minecraft.world.gen.feature.util.FeatureContext;
|
||||
|
||||
public class LimboGatewayFeature extends Feature<DefaultFeatureConfig> {
|
||||
public LimboGatewayFeature() {
|
||||
super(DefaultFeatureConfig.CODEC);
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean generate(StructureWorldAccess world, ChunkGenerator chunkGenerator, Random random, BlockPos pos, DefaultFeatureConfig featureConfig) {
|
||||
LimboGateway.INSTANCE.generate(world, pos);
|
||||
return true;
|
||||
}
|
||||
@Override
|
||||
public boolean generate(FeatureContext<DefaultFeatureConfig> context) {
|
||||
LimboGateway.INSTANCE.generate(context.getWorld(), context.getPos());
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -4,7 +4,10 @@ import java.util.Set;
|
|||
|
||||
import com.google.common.collect.ImmutableSet;
|
||||
|
||||
import net.minecraft.block.SandBlock;
|
||||
import net.minecraft.util.math.BlockPos;
|
||||
import net.minecraft.util.registry.RegistryKey;
|
||||
import net.minecraft.world.StructureWorldAccess;
|
||||
import net.minecraft.world.biome.Biome;
|
||||
import net.minecraft.world.biome.BiomeKeys;
|
||||
|
||||
|
@ -17,4 +20,9 @@ public class SandstonePillarsV2Gateway extends SchematicV2Gateway {
|
|||
public Set<RegistryKey<Biome>> getBiomes() {
|
||||
return ImmutableSet.of(BiomeKeys.DESERT, BiomeKeys.DESERT_LAKES, BiomeKeys.DESERT_HILLS);
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean test(StructureWorldAccess structureWorldAccess, BlockPos blockPos) {
|
||||
return structureWorldAccess.getBlockState(blockPos.down()).getBlock() instanceof SandBlock;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -3,11 +3,14 @@ package org.dimdev.dimdoors.world.feature.gateway.schematic;
|
|||
import java.io.IOException;
|
||||
import java.io.InputStream;
|
||||
import java.io.UncheckedIOException;
|
||||
import java.util.function.BiPredicate;
|
||||
import java.util.function.Predicate;
|
||||
|
||||
import com.google.common.collect.BiMap;
|
||||
import com.google.common.collect.HashBiMap;
|
||||
import org.dimdev.dimdoors.DimensionalDoorsInitializer;
|
||||
import org.dimdev.dimdoors.pockets.TemplateUtils;
|
||||
import org.dimdev.dimdoors.util.Location;
|
||||
import org.dimdev.dimdoors.util.schematic.v2.Schematic;
|
||||
import org.dimdev.dimdoors.util.schematic.v2.SchematicPlacer;
|
||||
import org.dimdev.dimdoors.world.feature.gateway.Gateway;
|
||||
|
@ -16,7 +19,7 @@ import net.minecraft.nbt.NbtIo;
|
|||
import net.minecraft.util.math.BlockPos;
|
||||
import net.minecraft.world.StructureWorldAccess;
|
||||
|
||||
public abstract class SchematicV2Gateway implements Gateway {
|
||||
public abstract class SchematicV2Gateway implements Gateway, BiPredicate<StructureWorldAccess, BlockPos> {
|
||||
private Schematic schematic;
|
||||
private final String id;
|
||||
public static final BiMap<String, SchematicV2Gateway> ID_SCHEMATIC_MAP = HashBiMap.create();
|
||||
|
|
|
@ -1,25 +1,20 @@
|
|||
package org.dimdev.dimdoors.world.feature.gateway.schematic;
|
||||
|
||||
import java.util.Random;
|
||||
|
||||
import com.mojang.serialization.Codec;
|
||||
|
||||
import net.minecraft.block.AirBlock;
|
||||
import net.minecraft.block.FallingBlock;
|
||||
import net.minecraft.util.math.BlockPos;
|
||||
import net.minecraft.world.StructureWorldAccess;
|
||||
import net.minecraft.world.gen.chunk.ChunkGenerator;
|
||||
import net.minecraft.world.gen.feature.Feature;
|
||||
import net.minecraft.world.gen.feature.util.FeatureContext;
|
||||
|
||||
public class SchematicV2GatewayFeature extends Feature<SchematicV2GatewayFeatureConfig> {
|
||||
public SchematicV2GatewayFeature(Codec<SchematicV2GatewayFeatureConfig> codec) {
|
||||
super(codec);
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean generate(StructureWorldAccess world, ChunkGenerator chunkGenerator, Random random, BlockPos blockPos, SchematicV2GatewayFeatureConfig featureConfig) {
|
||||
if (world.getBlockState(blockPos).getBlock() instanceof AirBlock && world.getBlockState(blockPos.down()).getBlock() instanceof FallingBlock) {
|
||||
featureConfig.getGateway().generate(world, blockPos);
|
||||
@Override
|
||||
public boolean generate(FeatureContext<SchematicV2GatewayFeatureConfig> featureContext) {
|
||||
if (featureContext.getWorld().getBlockState(featureContext.getPos()).getBlock() instanceof AirBlock && featureContext.getConfig().getGateway().test(featureContext.getWorld(), featureContext.getPos())) {
|
||||
featureContext.getConfig().getGateway().generate(featureContext.getWorld(), featureContext.getPos());
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
|
|
|
@ -6,11 +6,9 @@ import com.mojang.serialization.codecs.RecordCodecBuilder;
|
|||
import net.minecraft.world.gen.feature.FeatureConfig;
|
||||
|
||||
public class SchematicV2GatewayFeatureConfig implements FeatureConfig {
|
||||
public static final Codec<SchematicV2GatewayFeatureConfig> CODEC = RecordCodecBuilder.create((instance) -> {
|
||||
return instance.group(
|
||||
Codec.STRING.fieldOf("gatewayId").forGetter(SchematicV2GatewayFeatureConfig::getGatewayId)
|
||||
).apply(instance, SchematicV2GatewayFeatureConfig::new);
|
||||
});
|
||||
public static final Codec<SchematicV2GatewayFeatureConfig> CODEC = RecordCodecBuilder.create((instance) -> instance.group(
|
||||
Codec.STRING.fieldOf("gatewayId").forGetter(SchematicV2GatewayFeatureConfig::getGatewayId)
|
||||
).apply(instance, SchematicV2GatewayFeatureConfig::new));
|
||||
|
||||
private final SchematicV2Gateway gateway;
|
||||
private final String gatewayId;
|
||||
|
|
|
@ -47,4 +47,9 @@ public class TwoPillarsV2Gateway extends SchematicV2Gateway {
|
|||
public Set<RegistryKey<Biome>> getBiomes() {
|
||||
return BuiltinBiomesAccessor.getIdMap().int2ObjectEntrySet().stream().map(Map.Entry::getValue).collect(Collectors.toSet());
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean test(StructureWorldAccess structureWorldAccess, BlockPos blockPos) {
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue