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