From 3561e9a7b614a1f7f123418044f3728ff7be80b8 Mon Sep 17 00:00:00 2001 From: SD Date: Fri, 12 Feb 2021 08:38:49 +0530 Subject: [PATCH] Features (update 17 of 20) --- .../feature/gateway/LimboGatewayFeature.java | 16 ++++++---------- .../schematic/SandstonePillarsV2Gateway.java | 8 ++++++++ .../gateway/schematic/SchematicV2Gateway.java | 5 ++++- .../schematic/SchematicV2GatewayFeature.java | 15 +++++---------- .../SchematicV2GatewayFeatureConfig.java | 8 +++----- .../gateway/schematic/TwoPillarsV2Gateway.java | 5 +++++ 6 files changed, 31 insertions(+), 26 deletions(-) diff --git a/src/main/java/org/dimdev/dimdoors/world/feature/gateway/LimboGatewayFeature.java b/src/main/java/org/dimdev/dimdoors/world/feature/gateway/LimboGatewayFeature.java index 7540f5b6..9ae0f35e 100644 --- a/src/main/java/org/dimdev/dimdoors/world/feature/gateway/LimboGatewayFeature.java +++ b/src/main/java/org/dimdev/dimdoors/world/feature/gateway/LimboGatewayFeature.java @@ -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 { 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 context) { + LimboGateway.INSTANCE.generate(context.getWorld(), context.getPos()); + return true; + } } diff --git a/src/main/java/org/dimdev/dimdoors/world/feature/gateway/schematic/SandstonePillarsV2Gateway.java b/src/main/java/org/dimdev/dimdoors/world/feature/gateway/schematic/SandstonePillarsV2Gateway.java index dddaddb7..b0f031b2 100644 --- a/src/main/java/org/dimdev/dimdoors/world/feature/gateway/schematic/SandstonePillarsV2Gateway.java +++ b/src/main/java/org/dimdev/dimdoors/world/feature/gateway/schematic/SandstonePillarsV2Gateway.java @@ -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> 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; + } } diff --git a/src/main/java/org/dimdev/dimdoors/world/feature/gateway/schematic/SchematicV2Gateway.java b/src/main/java/org/dimdev/dimdoors/world/feature/gateway/schematic/SchematicV2Gateway.java index ffab2986..1cfcf290 100644 --- a/src/main/java/org/dimdev/dimdoors/world/feature/gateway/schematic/SchematicV2Gateway.java +++ b/src/main/java/org/dimdev/dimdoors/world/feature/gateway/schematic/SchematicV2Gateway.java @@ -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 { private Schematic schematic; private final String id; public static final BiMap ID_SCHEMATIC_MAP = HashBiMap.create(); diff --git a/src/main/java/org/dimdev/dimdoors/world/feature/gateway/schematic/SchematicV2GatewayFeature.java b/src/main/java/org/dimdev/dimdoors/world/feature/gateway/schematic/SchematicV2GatewayFeature.java index f08a7e0a..902c1031 100644 --- a/src/main/java/org/dimdev/dimdoors/world/feature/gateway/schematic/SchematicV2GatewayFeature.java +++ b/src/main/java/org/dimdev/dimdoors/world/feature/gateway/schematic/SchematicV2GatewayFeature.java @@ -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 { public SchematicV2GatewayFeature(Codec 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 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; diff --git a/src/main/java/org/dimdev/dimdoors/world/feature/gateway/schematic/SchematicV2GatewayFeatureConfig.java b/src/main/java/org/dimdev/dimdoors/world/feature/gateway/schematic/SchematicV2GatewayFeatureConfig.java index fafe445b..99593bcb 100644 --- a/src/main/java/org/dimdev/dimdoors/world/feature/gateway/schematic/SchematicV2GatewayFeatureConfig.java +++ b/src/main/java/org/dimdev/dimdoors/world/feature/gateway/schematic/SchematicV2GatewayFeatureConfig.java @@ -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 CODEC = RecordCodecBuilder.create((instance) -> { - return instance.group( - Codec.STRING.fieldOf("gatewayId").forGetter(SchematicV2GatewayFeatureConfig::getGatewayId) - ).apply(instance, SchematicV2GatewayFeatureConfig::new); - }); + public static final Codec 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; diff --git a/src/main/java/org/dimdev/dimdoors/world/feature/gateway/schematic/TwoPillarsV2Gateway.java b/src/main/java/org/dimdev/dimdoors/world/feature/gateway/schematic/TwoPillarsV2Gateway.java index 685339cb..d6c3bc86 100644 --- a/src/main/java/org/dimdev/dimdoors/world/feature/gateway/schematic/TwoPillarsV2Gateway.java +++ b/src/main/java/org/dimdev/dimdoors/world/feature/gateway/schematic/TwoPillarsV2Gateway.java @@ -47,4 +47,9 @@ public class TwoPillarsV2Gateway extends SchematicV2Gateway { public Set> getBiomes() { return BuiltinBiomesAccessor.getIdMap().int2ObjectEntrySet().stream().map(Map.Entry::getValue).collect(Collectors.toSet()); } + + @Override + public boolean test(StructureWorldAccess structureWorldAccess, BlockPos blockPos) { + return true; + } }