diff --git a/src/main/java/org/dimdev/dimdoors/client/LimboSkyProperties.java b/src/main/java/org/dimdev/dimdoors/client/LimboSkyProperties.java index 503948c1..12ec257f 100644 --- a/src/main/java/org/dimdev/dimdoors/client/LimboSkyProperties.java +++ b/src/main/java/org/dimdev/dimdoors/client/LimboSkyProperties.java @@ -19,9 +19,4 @@ public class LimboSkyProperties extends SkyProperties { public boolean useThickFog(int camX, int camY) { return true; } - - @Override - public float[] getSkyColor(float skyAngle, float tickDelta) { - return new float[]{0, 0, 0, 0}; - } } diff --git a/src/main/java/org/dimdev/dimdoors/client/LimboSkyProvider.java b/src/main/java/org/dimdev/dimdoors/client/LimboSkyProvider.java index e18b5880..3728573e 100644 --- a/src/main/java/org/dimdev/dimdoors/client/LimboSkyProvider.java +++ b/src/main/java/org/dimdev/dimdoors/client/LimboSkyProvider.java @@ -9,6 +9,6 @@ public class LimboSkyProvider extends CustomSkyProvider { private static final Identifier SUN_RENDER_PATH = new Identifier("dimdoors:textures/other/limbo_sun.png"); public LimboSkyProvider() { - super(MOON_RENDER_PATH, SUN_RENDER_PATH, new Vec3i(255, 255, 255)); + super(MOON_RENDER_PATH, SUN_RENDER_PATH, new Vec3i(25, 25, 25)); } } \ No newline at end of file diff --git a/src/main/java/org/dimdev/dimdoors/client/ModRendering.java b/src/main/java/org/dimdev/dimdoors/client/ModRendering.java index dd4dbdd6..49724ad0 100644 --- a/src/main/java/org/dimdev/dimdoors/client/ModRendering.java +++ b/src/main/java/org/dimdev/dimdoors/client/ModRendering.java @@ -35,7 +35,7 @@ public class ModRendering { OpenWorlds.registerSkyRenderer(ModDimensions.LIMBO_TYPE_KEY, new LimboSkyProvider()); OpenWorlds.registerCloudRenderer(ModDimensions.LIMBO_TYPE_KEY, (minecraftClient, matrixStack, v, v1, v2, v3) -> { }); - + OpenWorlds.registerSkyProperty(ModDimensions.LIMBO_TYPE_KEY, LimboSkyProperties.INSTANCE); setupFluidRendering(ModFluids.ETERNAL_FLUID, ModFluids.FLOWING_ETERNAL_FLUID, new Identifier("dimdoors:eternal_fluid")); } diff --git a/src/main/java/org/dimdev/dimdoors/command/SchematicCommand.java b/src/main/java/org/dimdev/dimdoors/command/SchematicCommand.java index 9c830aec..942a332f 100644 --- a/src/main/java/org/dimdev/dimdoors/command/SchematicCommand.java +++ b/src/main/java/org/dimdev/dimdoors/command/SchematicCommand.java @@ -5,6 +5,7 @@ import java.io.InputStream; import org.dimdev.dimcore.schematic.Schematic; import org.dimdev.dimcore.schematic.SchematicConverter; +import org.dimdev.dimdoors.command.arguments.SchematicNamespaceArgumentType; import com.mojang.brigadier.CommandDispatcher; import com.mojang.brigadier.arguments.StringArgumentType; @@ -19,28 +20,30 @@ public class SchematicCommand { public static void register(CommandDispatcher<ServerCommandSource> dispatcher) { dispatcher.register(literal("schematicold") .then(literal("place") - .then(argument("schematic_name", StringArgumentType.string()) - .executes(ctx -> { - SchematicConverter.reloadConversions(); - ServerPlayerEntity player = ctx.getSource().getPlayer(); - String id = StringArgumentType.getString(ctx, "schematic_name"); + .then(argument("namespace", new SchematicNamespaceArgumentType()) + .then(argument("schematic_name", StringArgumentType.string()) + .executes(ctx -> { + SchematicConverter.reloadConversions(); + ServerPlayerEntity player = ctx.getSource().getPlayer(); + String id = StringArgumentType.getString(ctx, "schematic_name"); + String ns = SchematicNamespaceArgumentType.getValue(ctx, "namespace"); + try (InputStream in = SchematicCommand.class.getResourceAsStream("/data/dimdoors/pockets/schematic/" + ns + "/" + id + ".schem")) { + Schematic.fromTag(NbtIo.readCompressed(in)) + .place( + player.world, + (int) player.getPos().x, + (int) player.getPos().y, + (int) player.getPos().z + ); + } catch (IOException e) { + e.printStackTrace(); + } - try (InputStream in = SchematicCommand.class.getResourceAsStream("/data/dimdoors/pockets/schematic/ruins/" + id + ".schem")) { - Schematic.fromTag(NbtIo.readCompressed(in)) - .place( - player.world, - (int) player.getPos().x, - (int) player.getPos().y, - (int) player.getPos().z - ); - } catch (IOException e) { - e.printStackTrace(); - } + System.out.println(id + " placed"); - System.out.println(id + " placed"); - - return 1; - } + return 1; + } + ) ) ) ) diff --git a/src/main/java/org/dimdev/dimdoors/fluid/ModFluids.java b/src/main/java/org/dimdev/dimdoors/fluid/ModFluids.java index 8a9379bc..f1a76654 100644 --- a/src/main/java/org/dimdev/dimdoors/fluid/ModFluids.java +++ b/src/main/java/org/dimdev/dimdoors/fluid/ModFluids.java @@ -9,6 +9,6 @@ public class ModFluids { public static final FlowableFluid FLOWING_ETERNAL_FLUID = register("dimdoors:flowing_eternal_fluid", new EternalFluid.Flowing()); private static <T extends Fluid> T register(String string, T fluid) { - return (T) Registry.register(Registry.FLUID, string, fluid); + return Registry.register(Registry.FLUID, string, fluid); } } diff --git a/src/main/java/org/dimdev/dimdoors/mixin/DefaultBiomeFeaturesMixin.java b/src/main/java/org/dimdev/dimdoors/mixin/DefaultBiomeFeaturesMixin.java index 0c77bad3..f01a81ae 100644 --- a/src/main/java/org/dimdev/dimdoors/mixin/DefaultBiomeFeaturesMixin.java +++ b/src/main/java/org/dimdev/dimdoors/mixin/DefaultBiomeFeaturesMixin.java @@ -14,6 +14,6 @@ import net.minecraft.world.gen.feature.DefaultBiomeFeatures; public class DefaultBiomeFeaturesMixin { @Inject(method = "addDesertLakes", at = @At("RETURN")) private static void addGateway(GenerationSettings.Builder builder, CallbackInfo ci) { - builder.feature(GenerationStep.Feature.TOP_LAYER_MODIFICATION, ModFeatures.SANDSTONE_PILLARS_FEATURE_V2); + builder.feature(GenerationStep.Feature.TOP_LAYER_MODIFICATION, ModFeatures.SANDSTONE_PILLARS_FEATURE); } } diff --git a/src/main/java/org/dimdev/dimdoors/world/ModBiomes.java b/src/main/java/org/dimdev/dimdoors/world/ModBiomes.java index 8054cab2..64e369ad 100644 --- a/src/main/java/org/dimdev/dimdoors/world/ModBiomes.java +++ b/src/main/java/org/dimdev/dimdoors/world/ModBiomes.java @@ -4,6 +4,7 @@ import org.dimdev.dimdoors.block.ModBlocks; import org.dimdev.dimdoors.entity.ModEntityTypes; import org.dimdev.dimdoors.mixin.BuiltinBiomesAccessor; import org.dimdev.dimdoors.sound.ModSoundEvents; +import org.dimdev.dimdoors.world.feature.ModFeatures; import net.minecraft.block.Blocks; import net.minecraft.entity.SpawnGroup; @@ -16,6 +17,7 @@ import net.minecraft.world.biome.Biome; import net.minecraft.world.biome.BiomeEffects; import net.minecraft.world.biome.GenerationSettings; import net.minecraft.world.biome.SpawnSettings; +import net.minecraft.world.gen.GenerationStep; import net.minecraft.world.gen.surfacebuilder.SurfaceBuilder; import net.minecraft.world.gen.surfacebuilder.TernarySurfaceConfig; @@ -34,10 +36,10 @@ public final class ModBiomes { Registry.register(BuiltinRegistries.BIOME, PERSONAL_WHITE_VOID_KEY.getValue(), PERSONAL_WHITE_VOID_BIOME); Registry.register(BuiltinRegistries.BIOME, PUBLIC_BLACK_VOID_KEY.getValue(), PUBLIC_BLACK_VOID_BIOME); Registry.register(BuiltinRegistries.BIOME, DUNGEON_DANGEROUS_BLACK_VOID_KEY.getValue(), DUNGEON_DANGEROUS_BLACK_VOID_BIOME); -// BuiltinBiomesAccessor.getIdMap().put(BuiltinRegistries.BIOME.getRawId(LIMBO_BIOME), LIMBO_KEY); -// BuiltinBiomesAccessor.getIdMap().put(BuiltinRegistries.BIOME.getRawId(PERSONAL_WHITE_VOID_BIOME), PERSONAL_WHITE_VOID_KEY); -// BuiltinBiomesAccessor.getIdMap().put(BuiltinRegistries.BIOME.getRawId(PUBLIC_BLACK_VOID_BIOME), PUBLIC_BLACK_VOID_KEY); -// BuiltinBiomesAccessor.getIdMap().put(BuiltinRegistries.BIOME.getRawId(DUNGEON_DANGEROUS_BLACK_VOID_BIOME), DUNGEON_DANGEROUS_BLACK_VOID_KEY); + BuiltinBiomesAccessor.getIdMap().put(BuiltinRegistries.BIOME.getRawId(LIMBO_BIOME), LIMBO_KEY); + BuiltinBiomesAccessor.getIdMap().put(BuiltinRegistries.BIOME.getRawId(PERSONAL_WHITE_VOID_BIOME), PERSONAL_WHITE_VOID_KEY); + BuiltinBiomesAccessor.getIdMap().put(BuiltinRegistries.BIOME.getRawId(PUBLIC_BLACK_VOID_BIOME), PUBLIC_BLACK_VOID_KEY); + BuiltinBiomesAccessor.getIdMap().put(BuiltinRegistries.BIOME.getRawId(DUNGEON_DANGEROUS_BLACK_VOID_BIOME), DUNGEON_DANGEROUS_BLACK_VOID_KEY); } private static BiomeEffects createEffect(boolean white) { @@ -67,15 +69,16 @@ public final class ModBiomes { .depth(0.1f) .downfall(0.0f) .effects(new BiomeEffects.Builder() - .fogColor(0x000000) - .waterColor(0) + .fogColor(0x404040) + .waterColor(0x101010) .foliageColor(0) .waterFogColor(0) .moodSound(new BiomeMoodSound(ModSoundEvents.CREEPY, 6000, 8, 2.0)) - .skyColor(0x000000) + .skyColor(0x404040) .grassColor(0) .build()) .generationSettings(new GenerationSettings.Builder() + .feature(GenerationStep.Feature.SURFACE_STRUCTURES, ModFeatures.LIMBO_GATEWAY_CONFIGURED_FEATURE) .surfaceBuilder(SurfaceBuilder.NETHER.method_30478(new TernarySurfaceConfig(ModBlocks.UNRAVELLED_FABRIC.getDefaultState(), ModBlocks.UNRAVELLED_FABRIC.getDefaultState(), ModBlocks.ETERNAL_FLUID.getDefaultState()))) .build()) .precipitation(Biome.Precipitation.NONE) diff --git a/src/main/java/org/dimdev/dimdoors/world/ModDimensions.java b/src/main/java/org/dimdev/dimdoors/world/ModDimensions.java index c3a547ec..82c384bb 100644 --- a/src/main/java/org/dimdev/dimdoors/world/ModDimensions.java +++ b/src/main/java/org/dimdev/dimdoors/world/ModDimensions.java @@ -16,6 +16,7 @@ import net.minecraft.tag.BlockTags; import net.minecraft.util.Identifier; import net.minecraft.util.registry.Registry; import net.minecraft.util.registry.RegistryKey; +import net.minecraft.world.StructureWorldAccess; import net.minecraft.world.World; import net.minecraft.world.biome.source.BiomeSource; import net.minecraft.world.biome.source.FixedBiomeSource; @@ -60,6 +61,10 @@ public final class ModDimensions { return type == PERSONAL || type == PUBLIC || type == DUNGEON; } + public static boolean isLimbo(StructureWorldAccess world) { + return world.getDimension() == LIMBO_TYPE || world == LIMBO_DIMENSION; + } + public static boolean isLimboDimension(World world) { return world.getRegistryKey() == LIMBO || world.getDimension() == LIMBO_TYPE || world == LIMBO_DIMENSION; } @@ -83,39 +88,38 @@ public final class ModDimensions { Optional.of(StructuresConfig.DEFAULT_STRONGHOLD), ImmutableMap.of() ); -// GenerationShapeConfig limboShapeConfig = new GenerationShapeConfig( -// 178, -// new NoiseSamplingConfig( -// 1.000009876543, -// 2.9999876545678, -// 60, -// 240 -// ), -// new SlideConfig( -// -10, -// 3, -// 0 -// ), -// new SlideConfig( -// -30, -// 0, -// 0 -// ), -// 1, -// 4, -// 1, -// -0.26875, -// false, -// true, -// false, -// false -// ); - GenerationShapeConfig limboShapeConfig = new GenerationShapeConfig(256, new NoiseSamplingConfig(0.9999999814507745D, 0.9999999814507745D, 80.0D, 160.0D), new SlideConfig(-10, 3, 0), new SlideConfig(-30, 0, 0), 1, 2, 1.0D, -0.46875D, true, true, false, true); + GenerationShapeConfig limboShapeConfig = new GenerationShapeConfig( + 178, + new NoiseSamplingConfig( + 1.000009876543, + 2.9999876545678, + 60, + 240 + ), + new SlideConfig( + -10, + 3, + 0 + ), + new SlideConfig( + -30, + 0, + 0 + ), + 1, + 4, + 1, + -0.26875, + false, + true, + false, + false + ); LIMBO_CHUNK_GENERATOR_SETTINGS = ChunkGeneratorSettingsAccessor.invokeInit( limboStructuresConfig, limboShapeConfig, ModBlocks.UNRAVELLED_FABRIC.getDefaultState(), - ModBlocks.ETERNAL_FLUID.getDefaultState(), + ModBlocks.BLACK_ANCIENT_FABRIC.getDefaultState(), -10, 5, 8, diff --git a/src/main/java/org/dimdev/dimdoors/world/feature/ModFeatures.java b/src/main/java/org/dimdev/dimdoors/world/feature/ModFeatures.java index 3bf539f5..027f5c08 100644 --- a/src/main/java/org/dimdev/dimdoors/world/feature/ModFeatures.java +++ b/src/main/java/org/dimdev/dimdoors/world/feature/ModFeatures.java @@ -1,36 +1,40 @@ package org.dimdev.dimdoors.world.feature; import org.dimdev.dimdoors.ModConfig; -import org.dimdev.dimdoors.world.feature.gateway.v2.SandstonePillarsV2Gateway; -import org.dimdev.dimdoors.world.feature.gateway.v2.SchematicV2Gateway; -import org.dimdev.dimdoors.world.feature.gateway.v2.SchematicV2GatewayFeature; -import org.dimdev.dimdoors.world.feature.gateway.v2.SchematicV2GatewayFeatureConfig; +import org.dimdev.dimdoors.world.feature.gateway.LimboGatewayFeature; +import org.dimdev.dimdoors.world.feature.gateway.schematic.SandstonePillarsV2Gateway; +import org.dimdev.dimdoors.world.feature.gateway.schematic.SchematicV2Gateway; +import org.dimdev.dimdoors.world.feature.gateway.schematic.SchematicV2GatewayFeature; +import org.dimdev.dimdoors.world.feature.gateway.schematic.SchematicV2GatewayFeatureConfig; import net.minecraft.util.Identifier; import net.minecraft.util.registry.BuiltinRegistries; import net.minecraft.util.registry.Registry; import net.minecraft.world.gen.feature.ConfiguredFeature; import net.minecraft.world.gen.feature.ConfiguredFeatures; +import net.minecraft.world.gen.feature.DefaultFeatureConfig; import net.minecraft.world.gen.feature.Feature; import net.fabricmc.loader.api.FabricLoader; public final class ModFeatures { - public static final Feature<SchematicV2GatewayFeatureConfig> GATEWAY_FEATURE_V2 = Registry.register(Registry.FEATURE, new Identifier("dimdoors", "gateway_v2"), new SchematicV2GatewayFeature(SchematicV2GatewayFeatureConfig.CODEC)); - public static final SchematicV2Gateway SANDSTONE_PILLARS_GATEWAY_V2; - public static final ConfiguredFeature<?, ?> SANDSTONE_PILLARS_FEATURE_V2; + public static final Feature<SchematicV2GatewayFeatureConfig> SCHEMATIC_GATEWAY_FEATURE = Registry.register(Registry.FEATURE, new Identifier("dimdoors", "schematic_gateway"), new SchematicV2GatewayFeature(SchematicV2GatewayFeatureConfig.CODEC)); + public static final Feature<DefaultFeatureConfig> LIMBO_GATEWAY_FEATURE = Registry.register(Registry.FEATURE, new Identifier("dimdoors", "limbo_gateway"), new LimboGatewayFeature()); + public static final SchematicV2Gateway SANDSTONE_PILLARS_GATEWAY = new SandstonePillarsV2Gateway(); + public static final ConfiguredFeature<?, ?> SANDSTONE_PILLARS_FEATURE; + public static final ConfiguredFeature<?, ?> LIMBO_GATEWAY_CONFIGURED_FEATURE; public static void init() { - SANDSTONE_PILLARS_GATEWAY_V2.init(); - Registry.register(BuiltinRegistries.CONFIGURED_FEATURE, new Identifier("dimdoors", "sandstone_pillars_v2"), SANDSTONE_PILLARS_FEATURE_V2); + SANDSTONE_PILLARS_GATEWAY.init(); + Registry.register(BuiltinRegistries.CONFIGURED_FEATURE, new Identifier("dimdoors", "sandstone_pillars"), SANDSTONE_PILLARS_FEATURE); + Registry.register(BuiltinRegistries.CONFIGURED_FEATURE, new Identifier("dimdoors", "limbo_gateway"), LIMBO_GATEWAY_CONFIGURED_FEATURE); } static { - SANDSTONE_PILLARS_GATEWAY_V2 = new SandstonePillarsV2Gateway(); - int gatewayChance = FabricLoader.getInstance().isDevelopmentEnvironment() ? 20 : ModConfig.INSTANCE.getWorldConfig().gatewayGenChance; - SANDSTONE_PILLARS_FEATURE_V2 = GATEWAY_FEATURE_V2.configure(new SchematicV2GatewayFeatureConfig(SchematicV2Gateway.SCHEMATIC_ID_MAP.get(SANDSTONE_PILLARS_GATEWAY_V2))) + SANDSTONE_PILLARS_FEATURE = SCHEMATIC_GATEWAY_FEATURE.configure(new SchematicV2GatewayFeatureConfig(SchematicV2Gateway.SCHEMATIC_ID_MAP.get(SANDSTONE_PILLARS_GATEWAY))) .decorate(ConfiguredFeatures.Decorators.SQUARE_TOP_SOLID_HEIGHTMAP .applyChance(gatewayChance)); + LIMBO_GATEWAY_CONFIGURED_FEATURE = LIMBO_GATEWAY_FEATURE.configure(DefaultFeatureConfig.INSTANCE).decorate(ConfiguredFeatures.Decorators.SQUARE_TOP_SOLID_HEIGHTMAP.applyChance(gatewayChance)); } } diff --git a/src/main/java/org/dimdev/dimdoors/world/feature/gateway/BaseGateway.java b/src/main/java/org/dimdev/dimdoors/world/feature/gateway/BaseGateway.java deleted file mode 100644 index b2900e9b..00000000 --- a/src/main/java/org/dimdev/dimdoors/world/feature/gateway/BaseGateway.java +++ /dev/null @@ -1,29 +0,0 @@ -package org.dimdev.dimdoors.world.feature.gateway; - -import java.util.Set; - -import com.google.common.collect.ImmutableSet; - -import net.minecraft.util.math.BlockPos; -import net.minecraft.util.registry.BuiltinRegistries; -import net.minecraft.util.registry.RegistryKey; -import net.minecraft.world.StructureWorldAccess; -import net.minecraft.world.World; -import net.minecraft.world.biome.Biome; - -public abstract class BaseGateway { - public void generate(StructureWorldAccess world, int x, int y, int z) { - } - - protected boolean isBiomeValid(RegistryKey<Biome> biome) { - return this.getBiomes().contains(biome); - } - - public boolean isLocationValid(World world, int x, int y, int z) { - return this.isBiomeValid(BuiltinRegistries.BIOME.getKey(world.getBiome(new BlockPos(x, y, z))).orElseThrow(NullPointerException::new)); - } - - public Set<RegistryKey<Biome>> getBiomes() { - return ImmutableSet.of(); - } -} diff --git a/src/main/java/org/dimdev/dimdoors/world/feature/gateway/Gateway.java b/src/main/java/org/dimdev/dimdoors/world/feature/gateway/Gateway.java new file mode 100644 index 00000000..c620bbd0 --- /dev/null +++ b/src/main/java/org/dimdev/dimdoors/world/feature/gateway/Gateway.java @@ -0,0 +1,23 @@ +package org.dimdev.dimdoors.world.feature.gateway; + +import java.util.Set; + +import net.minecraft.util.math.BlockPos; +import net.minecraft.util.registry.BuiltinRegistries; +import net.minecraft.util.registry.RegistryKey; +import net.minecraft.world.StructureWorldAccess; +import net.minecraft.world.biome.Biome; + +public interface Gateway { + void generate(StructureWorldAccess world, BlockPos pos); + + default boolean isBiomeValid(RegistryKey<Biome> biome) { + return this.getBiomes().contains(biome); + } + + default boolean isLocationValid(StructureWorldAccess world, BlockPos pos) { + return this.isBiomeValid(BuiltinRegistries.BIOME.getKey(world.getBiome(pos)).orElseThrow(NullPointerException::new)); + } + + Set<RegistryKey<Biome>> getBiomes(); +} diff --git a/src/main/java/org/dimdev/dimdoors/world/feature/gateway/LimboGateway.java b/src/main/java/org/dimdev/dimdoors/world/feature/gateway/LimboGateway.java index 35f71af3..fd9fb1c3 100644 --- a/src/main/java/org/dimdev/dimdoors/world/feature/gateway/LimboGateway.java +++ b/src/main/java/org/dimdev/dimdoors/world/feature/gateway/LimboGateway.java @@ -1,38 +1,53 @@ package org.dimdev.dimdoors.world.feature.gateway; +import java.util.Set; + import org.dimdev.dimdoors.block.ModBlocks; +import org.dimdev.dimdoors.world.ModBiomes; import org.dimdev.dimdoors.world.ModDimensions; +import com.google.common.collect.ImmutableSet; import net.minecraft.block.BlockState; import net.minecraft.util.math.BlockPos; import net.minecraft.util.math.Direction; +import net.minecraft.util.registry.RegistryKey; import net.minecraft.world.StructureWorldAccess; -import net.minecraft.world.World; +import net.minecraft.world.biome.Biome; + +public enum LimboGateway implements Gateway { + INSTANCE; -public class LimboGateway extends BaseGateway { @Override - public void generate(StructureWorldAccess world, int x, int y, int z) { + public void generate(StructureWorldAccess world, BlockPos pos) { + if (!this.isLocationValid(world, pos)) { + return; + } BlockState unravelledFabric = ModBlocks.UNRAVELLED_FABRIC.getDefaultState(); // Build the gateway out of Unraveled Fabric. Since nearly all the blocks in Limbo are of // that type, there is no point replacing the ground. - world.setBlockState(new BlockPos(x, y + 3, z + 1), unravelledFabric, 2); - world.setBlockState(new BlockPos(x, y + 3, z - 1), unravelledFabric, 2); + world.setBlockState(pos.add(0, 3, 1), unravelledFabric, 2); + world.setBlockState(pos.add(0, 3, -1), unravelledFabric, 2); // Build the columns around the door - world.setBlockState(new BlockPos(x, y + 2, z - 1), unravelledFabric, 2); - world.setBlockState(new BlockPos(x, y + 2, z + 1), unravelledFabric, 2); - world.setBlockState(new BlockPos(x, y + 1, z - 1), unravelledFabric, 2); - world.setBlockState(new BlockPos(x, y + 1, z + 1), unravelledFabric, 2); + world.setBlockState(pos.add(0, 2, -1), unravelledFabric, 2); + world.setBlockState(pos.add(0, 2, 1), unravelledFabric, 2); + world.setBlockState(pos.add(0, 1, 1), unravelledFabric, 2); + world.setBlockState(pos.add(0, 1, 1), unravelledFabric, 2); - this.placePortal(world, new BlockPos(x, y + 1, z), Direction.NORTH); - } - - private void placePortal(StructureWorldAccess world, BlockPos pos, Direction facing) { - // todo + this.placePortal(world, pos.add(0, 1, 0), Direction.NORTH); } @Override - public boolean isLocationValid(World world, int x, int y, int z) { - return ModDimensions.isLimboDimension(world); + public boolean isLocationValid(StructureWorldAccess world, BlockPos pos) { + return ModDimensions.isLimbo(world); + } + + private void placePortal(StructureWorldAccess world, BlockPos pos, Direction facing) { + world.setBlockState(pos, ModBlocks.DIMENSIONAL_PORTAL.getDefaultState(), 2); + } + + @Override + public Set<RegistryKey<Biome>> getBiomes() { + return ImmutableSet.of(ModBiomes.LIMBO_KEY); } } 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 new file mode 100644 index 00000000..7540f5b6 --- /dev/null +++ b/src/main/java/org/dimdev/dimdoors/world/feature/gateway/LimboGatewayFeature.java @@ -0,0 +1,21 @@ +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; + +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; + } +} diff --git a/src/main/java/org/dimdev/dimdoors/world/feature/gateway/SandstonePillarsGateway.java b/src/main/java/org/dimdev/dimdoors/world/feature/gateway/SandstonePillarsGateway.java deleted file mode 100644 index 531ff8f7..00000000 --- a/src/main/java/org/dimdev/dimdoors/world/feature/gateway/SandstonePillarsGateway.java +++ /dev/null @@ -1,21 +0,0 @@ -package org.dimdev.dimdoors.world.feature.gateway; - -import java.util.Set; - -import com.google.common.collect.ImmutableSet; - -import net.minecraft.util.registry.BuiltinRegistries; -import net.minecraft.util.registry.RegistryKey; -import net.minecraft.world.biome.Biome; -import net.minecraft.world.biome.BiomeKeys; - -public class SandstonePillarsGateway extends SchematicGateway { - public SandstonePillarsGateway() { - super("sandstone_pillars"); - } - - @Override - public Set<RegistryKey<Biome>> getBiomes() { - return ImmutableSet.of( BiomeKeys.DESERT, BiomeKeys.DESERT_LAKES, BiomeKeys.DESERT_HILLS); - } -} diff --git a/src/main/java/org/dimdev/dimdoors/world/feature/gateway/SchematicGateway.java b/src/main/java/org/dimdev/dimdoors/world/feature/gateway/SchematicGateway.java deleted file mode 100644 index 4059d8b8..00000000 --- a/src/main/java/org/dimdev/dimdoors/world/feature/gateway/SchematicGateway.java +++ /dev/null @@ -1,78 +0,0 @@ -package org.dimdev.dimdoors.world.feature.gateway; - -import java.io.DataInputStream; -import java.io.IOException; -import java.io.InputStream; - -import com.google.common.collect.BiMap; -import com.google.common.collect.HashBiMap; -import org.apache.logging.log4j.LogManager; -import org.apache.logging.log4j.Logger; -import org.dimdev.dimcore.schematic.Schematic; -import org.dimdev.dimdoors.DimensionalDoorsInitializer; - -import net.minecraft.nbt.CompoundTag; -import net.minecraft.nbt.NbtIo; -import net.minecraft.world.StructureWorldAccess; - -public abstract class SchematicGateway extends BaseGateway { - private static final Logger LOGGER = LogManager.getLogger(); - private Schematic schematic; - public static final BiMap<SchematicGateway, String> SCHEMATIC_ID_MAP = HashBiMap.create(); - public static final BiMap<String, SchematicGateway> ID_SCHEMATIC_MAP = HashBiMap.create(); - - public SchematicGateway(String id) { - String schematicJarDirectory = "/data/dimdoors/gateways/"; - SCHEMATIC_ID_MAP.putIfAbsent(this, id); - ID_SCHEMATIC_MAP.putIfAbsent(id, this); - - //Initialising the possible locations/formats for the schematic file - InputStream schematicStream = DimensionalDoorsInitializer.class.getResourceAsStream(schematicJarDirectory + id + ".schem"); - - //determine which location to load the schematic file from (and what format) - DataInputStream schematicDataStream = null; - boolean streamOpened = false; - if (schematicStream != null) { - schematicDataStream = new DataInputStream(schematicStream); - streamOpened = true; - } else { - LOGGER.warn("Schematic '" + id + "' was not found in the jar or config directory, neither with the .schem extension, nor with the .schematic extension."); - } - - CompoundTag schematicNBT; - this.schematic = null; - if (streamOpened) { - try { - schematicNBT = NbtIo.readCompressed(schematicDataStream); - this.schematic = Schematic.fromTag(schematicNBT); - //PocketTemplate.replacePlaceholders(schematic); - schematicDataStream.close(); - } catch (IOException ex) { - LOGGER.error("Schematic file for " + id + " could not be read as a valid schematic NBT file.", ex); - } finally { - try { - schematicDataStream.close(); - } catch (IOException ex) { - LOGGER.error("Error occured while closing schematicDataStream", ex); - } - } - } - } - - @Override - public void generate(StructureWorldAccess world, int x, int y, int z) { - this.schematic.place(world, x, y, z); - this.generateRandomBits(world, x, y, z); - } - - /** - * Generates randomized portions of the gateway structure (e.g. rubble, foliage) - * - * @param world - the world in which to generate the gateway - * @param x - the x-coordinate at which to center the gateway; usually where the door is placed - * @param y - the y-coordinate of the block on which the gateway may be built - * @param z - the z-coordinate at which to center the gateway; usually where the door is placed - */ - protected void generateRandomBits(StructureWorldAccess world, int x, int y, int z) { - } -} \ No newline at end of file diff --git a/src/main/java/org/dimdev/dimdoors/world/feature/gateway/SchematicGatewayFeature.java b/src/main/java/org/dimdev/dimdoors/world/feature/gateway/SchematicGatewayFeature.java deleted file mode 100644 index b1baf3fd..00000000 --- a/src/main/java/org/dimdev/dimdoors/world/feature/gateway/SchematicGatewayFeature.java +++ /dev/null @@ -1,27 +0,0 @@ -package org.dimdev.dimdoors.world.feature.gateway; - -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; - -public class SchematicGatewayFeature extends Feature<SchematicGatewayFeatureConfig> { - public SchematicGatewayFeature(Codec<SchematicGatewayFeatureConfig> codec) { - super(codec); - } - - @Override - public boolean generate(StructureWorldAccess world, ChunkGenerator chunkGenerator, Random random, BlockPos blockPos, SchematicGatewayFeatureConfig config) { - if (world.getBlockState(blockPos).getBlock() instanceof AirBlock && world.getBlockState(blockPos.down()).getBlock() instanceof FallingBlock) { - config.getGateway().generate(world, blockPos.getX(), blockPos.getY(), blockPos.getZ()); - return true; - } - return false; - } -} diff --git a/src/main/java/org/dimdev/dimdoors/world/feature/gateway/SchematicGatewayFeatureConfig.java b/src/main/java/org/dimdev/dimdoors/world/feature/gateway/SchematicGatewayFeatureConfig.java deleted file mode 100644 index b6fb15b0..00000000 --- a/src/main/java/org/dimdev/dimdoors/world/feature/gateway/SchematicGatewayFeatureConfig.java +++ /dev/null @@ -1,25 +0,0 @@ -package org.dimdev.dimdoors.world.feature.gateway; - -import com.mojang.serialization.Codec; -import com.mojang.serialization.codecs.RecordCodecBuilder; - -import net.minecraft.world.gen.feature.FeatureConfig; - -public class SchematicGatewayFeatureConfig implements FeatureConfig { - public static final Codec<SchematicGatewayFeatureConfig> CODEC = RecordCodecBuilder.create((instance) -> { - return instance.group(Codec.STRING.fieldOf("id").forGetter((config) -> { - return config.gatewayId; - })).apply(instance, SchematicGatewayFeatureConfig::new); - }); - private final SchematicGateway gateway; - private final String gatewayId; - - public SchematicGateway getGateway() { - return this.gateway; - } - - public SchematicGatewayFeatureConfig(String gatewayId) { - this.gatewayId = gatewayId; - this.gateway = SchematicGateway.ID_SCHEMATIC_MAP.get(gatewayId); - } -} diff --git a/src/main/java/org/dimdev/dimdoors/world/feature/gateway/TwoPillarsGateway.java b/src/main/java/org/dimdev/dimdoors/world/feature/gateway/TwoPillarsGateway.java deleted file mode 100644 index 48835f14..00000000 --- a/src/main/java/org/dimdev/dimdoors/world/feature/gateway/TwoPillarsGateway.java +++ /dev/null @@ -1,37 +0,0 @@ -package org.dimdev.dimdoors.world.feature.gateway; - -import net.minecraft.block.Blocks; -import net.minecraft.util.math.BlockPos; -import net.minecraft.world.StructureWorldAccess; - -public class TwoPillarsGateway extends SchematicGateway { - private static final int GATEWAY_RADIUS = 4; - - public TwoPillarsGateway() { - super("two_pillars"); - } - - @Override - protected void generateRandomBits(StructureWorldAccess world, int x, int y, int z) { - //Replace some of the ground around the gateway with bricks - for (int xc = -GATEWAY_RADIUS; xc <= GATEWAY_RADIUS; xc++) { - for (int zc = -GATEWAY_RADIUS; zc <= GATEWAY_RADIUS; zc++) { - //Check that the block is supported by an opaque block. - //This prevents us from building over a cliff, on the peak of a mountain, - //or the surface of the ocean or a frozen lake. - if (world.getBlockState(new BlockPos(x + xc, y - 1, z + zc)).getMaterial().isSolid()) { - //Randomly choose whether to place bricks or not. The math is designed so that the - //chances of placing a block decrease as we get farther from the gateway's center. - int i = Math.abs(xc) + Math.abs(zc); - if (i < world.getRandom().nextInt(2) + 3) { - //Place Stone Bricks - world.setBlockState(new BlockPos(x + xc, y, z + zc), Blocks.STONE_BRICKS.getDefaultState(), 2); - } else if (i < world.getRandom().nextInt(3) + 3) { - //Place Cracked Stone Bricks - world.setBlockState(new BlockPos(x + xc, y, z + zc), Blocks.CRACKED_STONE_BRICKS.getDefaultState(), 2); - } - } - } - } - } -} diff --git a/src/main/java/org/dimdev/dimdoors/world/feature/gateway/v2/SandstonePillarsV2Gateway.java b/src/main/java/org/dimdev/dimdoors/world/feature/gateway/schematic/SandstonePillarsV2Gateway.java similarity index 89% rename from src/main/java/org/dimdev/dimdoors/world/feature/gateway/v2/SandstonePillarsV2Gateway.java rename to src/main/java/org/dimdev/dimdoors/world/feature/gateway/schematic/SandstonePillarsV2Gateway.java index f1a67a4b..4c474639 100644 --- a/src/main/java/org/dimdev/dimdoors/world/feature/gateway/v2/SandstonePillarsV2Gateway.java +++ b/src/main/java/org/dimdev/dimdoors/world/feature/gateway/schematic/SandstonePillarsV2Gateway.java @@ -1,4 +1,4 @@ -package org.dimdev.dimdoors.world.feature.gateway.v2; +package org.dimdev.dimdoors.world.feature.gateway.schematic; import java.util.Set; diff --git a/src/main/java/org/dimdev/dimdoors/world/feature/gateway/v2/SchematicV2Gateway.java b/src/main/java/org/dimdev/dimdoors/world/feature/gateway/schematic/SchematicV2Gateway.java similarity index 89% rename from src/main/java/org/dimdev/dimdoors/world/feature/gateway/v2/SchematicV2Gateway.java rename to src/main/java/org/dimdev/dimdoors/world/feature/gateway/schematic/SchematicV2Gateway.java index 6e91089a..5906d9e9 100644 --- a/src/main/java/org/dimdev/dimdoors/world/feature/gateway/v2/SchematicV2Gateway.java +++ b/src/main/java/org/dimdev/dimdoors/world/feature/gateway/schematic/SchematicV2Gateway.java @@ -1,4 +1,4 @@ -package org.dimdev.dimdoors.world.feature.gateway.v2; +package org.dimdev.dimdoors.world.feature.gateway.schematic; import java.io.DataInputStream; import java.io.IOException; @@ -9,7 +9,7 @@ import org.apache.logging.log4j.Logger; import org.dimdev.dimcore.schematic.v2.Schematic; import org.dimdev.dimcore.schematic.v2.SchematicPlacer; import org.dimdev.dimdoors.DimensionalDoorsInitializer; -import org.dimdev.dimdoors.world.feature.gateway.BaseGateway; +import org.dimdev.dimdoors.world.feature.gateway.Gateway; import com.google.common.collect.BiMap; import com.google.common.collect.HashBiMap; @@ -18,7 +18,7 @@ import net.minecraft.nbt.NbtIo; import net.minecraft.util.math.BlockPos; import net.minecraft.world.StructureWorldAccess; -public class SchematicV2Gateway extends BaseGateway { +public abstract class SchematicV2Gateway implements Gateway { private static final Logger LOGGER = LogManager.getLogger(); private Schematic schematic; private final String id; @@ -63,11 +63,6 @@ public class SchematicV2Gateway extends BaseGateway { } } - @Override - public void generate(StructureWorldAccess world, int x, int y, int z) { - SchematicPlacer.place(this.schematic, world, new BlockPos(x, y, z)); - } - public void generate(StructureWorldAccess world, BlockPos pos) { SchematicPlacer.place(this.schematic, world, pos); } @@ -80,6 +75,6 @@ public class SchematicV2Gateway extends BaseGateway { * @param y - the y-coordinate of the block on which the gateway may be built * @param z - the z-coordinate at which to center the gateway; usually where the door is placed */ - protected void generateRandomBits(StructureWorldAccess world, int x, int y, int z) { + protected void generateRandomBits(StructureWorldAccess world, BlockPos pos) { } } diff --git a/src/main/java/org/dimdev/dimdoors/world/feature/gateway/v2/SchematicV2GatewayFeature.java b/src/main/java/org/dimdev/dimdoors/world/feature/gateway/schematic/SchematicV2GatewayFeature.java similarity index 88% rename from src/main/java/org/dimdev/dimdoors/world/feature/gateway/v2/SchematicV2GatewayFeature.java rename to src/main/java/org/dimdev/dimdoors/world/feature/gateway/schematic/SchematicV2GatewayFeature.java index c8a34dd5..f08a7e0a 100644 --- a/src/main/java/org/dimdev/dimdoors/world/feature/gateway/v2/SchematicV2GatewayFeature.java +++ b/src/main/java/org/dimdev/dimdoors/world/feature/gateway/schematic/SchematicV2GatewayFeature.java @@ -1,8 +1,7 @@ -package org.dimdev.dimdoors.world.feature.gateway.v2; +package org.dimdev.dimdoors.world.feature.gateway.schematic; import java.util.Random; -import org.dimdev.dimdoors.world.feature.gateway.SchematicGatewayFeatureConfig; import com.mojang.serialization.Codec; import net.minecraft.block.AirBlock; diff --git a/src/main/java/org/dimdev/dimdoors/world/feature/gateway/v2/SchematicV2GatewayFeatureConfig.java b/src/main/java/org/dimdev/dimdoors/world/feature/gateway/schematic/SchematicV2GatewayFeatureConfig.java similarity index 93% rename from src/main/java/org/dimdev/dimdoors/world/feature/gateway/v2/SchematicV2GatewayFeatureConfig.java rename to src/main/java/org/dimdev/dimdoors/world/feature/gateway/schematic/SchematicV2GatewayFeatureConfig.java index a451330f..fafe445b 100644 --- a/src/main/java/org/dimdev/dimdoors/world/feature/gateway/v2/SchematicV2GatewayFeatureConfig.java +++ b/src/main/java/org/dimdev/dimdoors/world/feature/gateway/schematic/SchematicV2GatewayFeatureConfig.java @@ -1,4 +1,4 @@ -package org.dimdev.dimdoors.world.feature.gateway.v2; +package org.dimdev.dimdoors.world.feature.gateway.schematic; import com.mojang.serialization.Codec; import com.mojang.serialization.codecs.RecordCodecBuilder; 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 new file mode 100644 index 00000000..19e420e3 --- /dev/null +++ b/src/main/java/org/dimdev/dimdoors/world/feature/gateway/schematic/TwoPillarsV2Gateway.java @@ -0,0 +1,37 @@ +//package org.dimdev.dimdoors.world.feature.gateway.v2; +// +//import net.minecraft.block.Blocks; +//import net.minecraft.util.math.BlockPos; +//import net.minecraft.world.StructureWorldAccess; +// +//public class TwoPillarsV2Gateway extends SchematicGateway { +// private static final int GATEWAY_RADIUS = 4; +// +// public TwoPillarsV2Gateway() { +// super("two_pillars"); +// } +// +// @Override +// protected void generateRandomBits(StructureWorldAccess world, BlockPos pos) { +// //Replace some of the ground around the gateway with bricks +// for (int xc = -GATEWAY_RADIUS; xc <= GATEWAY_RADIUS; xc++) { +// for (int zc = -GATEWAY_RADIUS; zc <= GATEWAY_RADIUS; zc++) { +// //Check that the block is supported by an opaque block. +// //This prevents us from building over a cliff, on the peak of a mountain, +// //or the surface of the ocean or a frozen lake. +// if (world.getBlockState(pos.add(xc, -1, zc)).getMaterial().isSolid()) { +// //Randomly choose whether to place bricks or not. The math is designed so that the +// //chances of placing a block decrease as we get farther from the gateway's center. +// int i = Math.abs(xc) + Math.abs(zc); +// if (i < world.getRandom().nextInt(2) + 3) { +// //Place Stone Bricks +// world.setBlockState(pos.add(xc, 0, zc), Blocks.STONE_BRICKS.getDefaultState(), 2); +// } else if (i < world.getRandom().nextInt(3) + 3) { +// //Place Cracked Stone Bricks +// world.setBlockState(pos.add(xc, 0, zc), Blocks.CRACKED_STONE_BRICKS.getDefaultState(), 2); +// } +// } +// } +// } +// } +//} diff --git a/src/main/resources/data/dimdoors/pockets/schematic/v2/private/private_pocket_0.schem b/src/main/resources/data/dimdoors/pockets/schematic/v2/private/private_pocket_0.schem new file mode 100644 index 00000000..06dd3daf Binary files /dev/null and b/src/main/resources/data/dimdoors/pockets/schematic/v2/private/private_pocket_0.schem differ diff --git a/src/main/resources/data/dimdoors/pockets/schematic/v2/private/private_pocket_1.schem b/src/main/resources/data/dimdoors/pockets/schematic/v2/private/private_pocket_1.schem new file mode 100644 index 00000000..88ebdc10 Binary files /dev/null and b/src/main/resources/data/dimdoors/pockets/schematic/v2/private/private_pocket_1.schem differ diff --git a/src/main/resources/data/dimdoors/pockets/schematic/v2/private/private_pocket_2.schem b/src/main/resources/data/dimdoors/pockets/schematic/v2/private/private_pocket_2.schem new file mode 100644 index 00000000..57dfb76e Binary files /dev/null and b/src/main/resources/data/dimdoors/pockets/schematic/v2/private/private_pocket_2.schem differ diff --git a/src/main/resources/data/dimdoors/pockets/schematic/v2/private/private_pocket_3.schem b/src/main/resources/data/dimdoors/pockets/schematic/v2/private/private_pocket_3.schem new file mode 100644 index 00000000..41b43e7c Binary files /dev/null and b/src/main/resources/data/dimdoors/pockets/schematic/v2/private/private_pocket_3.schem differ diff --git a/src/main/resources/data/dimdoors/pockets/schematic/v2/private/private_pocket_4.schem b/src/main/resources/data/dimdoors/pockets/schematic/v2/private/private_pocket_4.schem new file mode 100644 index 00000000..5f917b1a Binary files /dev/null and b/src/main/resources/data/dimdoors/pockets/schematic/v2/private/private_pocket_4.schem differ diff --git a/src/main/resources/data/dimdoors/pockets/schematic/v2/private/private_pocket_5.schem b/src/main/resources/data/dimdoors/pockets/schematic/v2/private/private_pocket_5.schem new file mode 100644 index 00000000..3d184517 Binary files /dev/null and b/src/main/resources/data/dimdoors/pockets/schematic/v2/private/private_pocket_5.schem differ diff --git a/src/main/resources/data/dimdoors/pockets/schematic/v2/private/private_pocket_6.schem b/src/main/resources/data/dimdoors/pockets/schematic/v2/private/private_pocket_6.schem new file mode 100644 index 00000000..2293427c Binary files /dev/null and b/src/main/resources/data/dimdoors/pockets/schematic/v2/private/private_pocket_6.schem differ diff --git a/src/main/resources/data/dimdoors/pockets/schematic/v2/private/private_pocket_7.schem b/src/main/resources/data/dimdoors/pockets/schematic/v2/private/private_pocket_7.schem new file mode 100644 index 00000000..116a5f78 Binary files /dev/null and b/src/main/resources/data/dimdoors/pockets/schematic/v2/private/private_pocket_7.schem differ diff --git a/src/main/resources/data/dimdoors/pockets/schematic/v2/public/public_pocket_0.schem b/src/main/resources/data/dimdoors/pockets/schematic/v2/public/public_pocket_0.schem new file mode 100644 index 00000000..a6f7fbdd Binary files /dev/null and b/src/main/resources/data/dimdoors/pockets/schematic/v2/public/public_pocket_0.schem differ diff --git a/src/main/resources/data/dimdoors/pockets/schematic/v2/public/public_pocket_1.schem b/src/main/resources/data/dimdoors/pockets/schematic/v2/public/public_pocket_1.schem new file mode 100644 index 00000000..d0ecb149 Binary files /dev/null and b/src/main/resources/data/dimdoors/pockets/schematic/v2/public/public_pocket_1.schem differ diff --git a/src/main/resources/data/dimdoors/pockets/schematic/v2/public/public_pocket_2.schem b/src/main/resources/data/dimdoors/pockets/schematic/v2/public/public_pocket_2.schem new file mode 100644 index 00000000..1ec36885 Binary files /dev/null and b/src/main/resources/data/dimdoors/pockets/schematic/v2/public/public_pocket_2.schem differ diff --git a/src/main/resources/data/dimdoors/pockets/schematic/v2/public/public_pocket_3.schem b/src/main/resources/data/dimdoors/pockets/schematic/v2/public/public_pocket_3.schem new file mode 100644 index 00000000..a93ed5da Binary files /dev/null and b/src/main/resources/data/dimdoors/pockets/schematic/v2/public/public_pocket_3.schem differ diff --git a/src/main/resources/data/dimdoors/pockets/schematic/v2/public/public_pocket_4.schem b/src/main/resources/data/dimdoors/pockets/schematic/v2/public/public_pocket_4.schem new file mode 100644 index 00000000..278f1599 Binary files /dev/null and b/src/main/resources/data/dimdoors/pockets/schematic/v2/public/public_pocket_4.schem differ diff --git a/src/main/resources/data/dimdoors/pockets/schematic/v2/public/public_pocket_5.schem b/src/main/resources/data/dimdoors/pockets/schematic/v2/public/public_pocket_5.schem new file mode 100644 index 00000000..82a865fe Binary files /dev/null and b/src/main/resources/data/dimdoors/pockets/schematic/v2/public/public_pocket_5.schem differ diff --git a/src/main/resources/data/dimdoors/pockets/schematic/v2/public/public_pocket_6.schem b/src/main/resources/data/dimdoors/pockets/schematic/v2/public/public_pocket_6.schem new file mode 100644 index 00000000..92ddaca9 Binary files /dev/null and b/src/main/resources/data/dimdoors/pockets/schematic/v2/public/public_pocket_6.schem differ diff --git a/src/main/resources/data/dimdoors/pockets/schematic/v2/public/public_pocket_7.schem b/src/main/resources/data/dimdoors/pockets/schematic/v2/public/public_pocket_7.schem new file mode 100644 index 00000000..49655347 Binary files /dev/null and b/src/main/resources/data/dimdoors/pockets/schematic/v2/public/public_pocket_7.schem differ