From 5d9abe6690c8f6bdf72084c0b04e91793f52c066 Mon Sep 17 00:00:00 2001
From: SD <harrypotter.starwars.shrish@gmail.com>
Date: Sat, 26 Sep 2020 12:04:16 +0530
Subject: [PATCH 1/8] Bring back the old limbo gen

 Changes to be committed
	modified:   src/main/java/org/dimdev/dimdoors/client/LimboSkyProperties.java
	modified:   src/main/java/org/dimdev/dimdoors/client/ModRendering.java
	modified:   src/main/java/org/dimdev/dimdoors/fluid/ModFluids.java
	modified:   src/main/java/org/dimdev/dimdoors/world/ModBiomes.java
	modified:   src/main/java/org/dimdev/dimdoors/world/ModDimensions.java
---
 .../dimdoors/client/LimboSkyProperties.java   |  5 --
 .../dimdev/dimdoors/client/ModRendering.java  |  2 +-
 .../org/dimdev/dimdoors/fluid/ModFluids.java  |  2 +-
 .../org/dimdev/dimdoors/world/ModBiomes.java  |  6 +-
 .../dimdev/dimdoors/world/ModDimensions.java  | 57 +++++++++----------
 5 files changed, 33 insertions(+), 39 deletions(-)

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/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/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/world/ModBiomes.java b/src/main/java/org/dimdev/dimdoors/world/ModBiomes.java
index 8054cab2..83005e11 100644
--- a/src/main/java/org/dimdev/dimdoors/world/ModBiomes.java
+++ b/src/main/java/org/dimdev/dimdoors/world/ModBiomes.java
@@ -67,12 +67,12 @@ 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()
diff --git a/src/main/java/org/dimdev/dimdoors/world/ModDimensions.java b/src/main/java/org/dimdev/dimdoors/world/ModDimensions.java
index c3a547ec..4ab67adb 100644
--- a/src/main/java/org/dimdev/dimdoors/world/ModDimensions.java
+++ b/src/main/java/org/dimdev/dimdoors/world/ModDimensions.java
@@ -83,39 +83,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,

From 0b0c4d5d1682ae0081edf971af33f2d0290e25a3 Mon Sep 17 00:00:00 2001
From: SD <harrypotter.starwars.shrish@gmail.com>
Date: Sat, 26 Sep 2020 13:08:17 +0530
Subject: [PATCH 2/8] Fixed the limbo sky color

 Changes to be committed:
	modified:   src/main/java/org/dimdev/dimdoors/client/LimboSkyProvider.java
---
 src/main/java/org/dimdev/dimdoors/client/LimboSkyProvider.java | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

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

From b86fa9971869373cd600ed619b81d22061412a1c Mon Sep 17 00:00:00 2001
From: SD <harrypotter.starwars.shrish@gmail.com>
Date: Sat, 26 Sep 2020 13:58:03 +0530
Subject: [PATCH 3/8] Limbo gateway

 Changes to be committed:
	modified:   src/main/java/org/dimdev/dimdoors/mixin/DefaultBiomeFeaturesMixin.java
	modified:   src/main/java/org/dimdev/dimdoors/world/feature/ModFeatures.java
	renamed:    src/main/java/org/dimdev/dimdoors/world/feature/gateway/BaseGateway.java -> src/main/java/org/dimdev/dimdoors/world/feature/gateway/Gateway.java
	modified:   src/main/java/org/dimdev/dimdoors/world/feature/gateway/LimboGateway.java
	new file:   src/main/java/org/dimdev/dimdoors/world/feature/gateway/LimboGatewayFeature.java
	deleted:    src/main/java/org/dimdev/dimdoors/world/feature/gateway/SandstonePillarsGateway.java
	deleted:    src/main/java/org/dimdev/dimdoors/world/feature/gateway/SchematicGateway.java
	deleted:    src/main/java/org/dimdev/dimdoors/world/feature/gateway/SchematicGatewayFeature.java
	deleted:    src/main/java/org/dimdev/dimdoors/world/feature/gateway/SchematicGatewayFeatureConfig.java
	deleted:    src/main/java/org/dimdev/dimdoors/world/feature/gateway/TwoPillarsGateway.java
	renamed:    src/main/java/org/dimdev/dimdoors/world/feature/gateway/v2/SandstonePillarsV2Gateway.java -> src/main/java/org/dimdev/dimdoors/world/feature/gateway/schematic/SandstonePillarsV2Gateway.java
	renamed:    src/main/java/org/dimdev/dimdoors/world/feature/gateway/v2/SchematicV2Gateway.java -> src/main/java/org/dimdev/dimdoors/world/feature/gateway/schematic/SchematicV2Gateway.java
	renamed:    src/main/java/org/dimdev/dimdoors/world/feature/gateway/v2/SchematicV2GatewayFeature.java -> src/main/java/org/dimdev/dimdoors/world/feature/gateway/schematic/SchematicV2GatewayFeature.java
	renamed:    src/main/java/org/dimdev/dimdoors/world/feature/gateway/v2/SchematicV2GatewayFeatureConfig.java -> src/main/java/org/dimdev/dimdoors/world/feature/gateway/schematic/SchematicV2GatewayFeatureConfig.java
	new file:   src/main/java/org/dimdev/dimdoors/world/feature/gateway/schematic/TwoPillarsV2Gateway.java
---
 .../mixin/DefaultBiomeFeaturesMixin.java      |  2 +-
 .../dimdoors/world/feature/ModFeatures.java   | 28 ++++---
 .../{BaseGateway.java => Gateway.java}        | 13 ++--
 .../world/feature/gateway/LimboGateway.java   | 24 +++---
 .../feature/gateway/LimboGatewayFeature.java  | 21 +++++
 .../gateway/SandstonePillarsGateway.java      | 21 -----
 .../feature/gateway/SchematicGateway.java     | 78 -------------------
 .../gateway/SchematicGatewayFeature.java      | 27 -------
 .../SchematicGatewayFeatureConfig.java        | 25 ------
 .../feature/gateway/TwoPillarsGateway.java    | 37 ---------
 .../SandstonePillarsV2Gateway.java            |  2 +-
 .../{v2 => schematic}/SchematicV2Gateway.java | 11 +--
 .../SchematicV2GatewayFeature.java            |  3 +-
 .../SchematicV2GatewayFeatureConfig.java      |  2 +-
 .../schematic/TwoPillarsV2Gateway.java        | 37 +++++++++
 15 files changed, 100 insertions(+), 231 deletions(-)
 rename src/main/java/org/dimdev/dimdoors/world/feature/gateway/{BaseGateway.java => Gateway.java} (59%)
 create mode 100644 src/main/java/org/dimdev/dimdoors/world/feature/gateway/LimboGatewayFeature.java
 delete mode 100644 src/main/java/org/dimdev/dimdoors/world/feature/gateway/SandstonePillarsGateway.java
 delete mode 100644 src/main/java/org/dimdev/dimdoors/world/feature/gateway/SchematicGateway.java
 delete mode 100644 src/main/java/org/dimdev/dimdoors/world/feature/gateway/SchematicGatewayFeature.java
 delete mode 100644 src/main/java/org/dimdev/dimdoors/world/feature/gateway/SchematicGatewayFeatureConfig.java
 delete mode 100644 src/main/java/org/dimdev/dimdoors/world/feature/gateway/TwoPillarsGateway.java
 rename src/main/java/org/dimdev/dimdoors/world/feature/gateway/{v2 => schematic}/SandstonePillarsV2Gateway.java (89%)
 rename src/main/java/org/dimdev/dimdoors/world/feature/gateway/{v2 => schematic}/SchematicV2Gateway.java (90%)
 rename src/main/java/org/dimdev/dimdoors/world/feature/gateway/{v2 => schematic}/SchematicV2GatewayFeature.java (88%)
 rename src/main/java/org/dimdev/dimdoors/world/feature/gateway/{v2 => schematic}/SchematicV2GatewayFeatureConfig.java (93%)
 create mode 100644 src/main/java/org/dimdev/dimdoors/world/feature/gateway/schematic/TwoPillarsV2Gateway.java

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/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/Gateway.java
similarity index 59%
rename from src/main/java/org/dimdev/dimdoors/world/feature/gateway/BaseGateway.java
rename to src/main/java/org/dimdev/dimdoors/world/feature/gateway/Gateway.java
index b2900e9b..bb7ef6f3 100644
--- a/src/main/java/org/dimdev/dimdoors/world/feature/gateway/BaseGateway.java
+++ b/src/main/java/org/dimdev/dimdoors/world/feature/gateway/Gateway.java
@@ -11,19 +11,18 @@ 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) {
-    }
+public interface Gateway {
+    void generate(StructureWorldAccess world, BlockPos pos);
 
-    protected boolean isBiomeValid(RegistryKey<Biome> biome) {
+    default 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));
+    default boolean isLocationValid(World world, BlockPos pos) {
+        return this.isBiomeValid(BuiltinRegistries.BIOME.getKey(world.getBiome(pos)).orElseThrow(NullPointerException::new));
     }
 
-    public Set<RegistryKey<Biome>> getBiomes() {
+    default Set<RegistryKey<Biome>> getBiomes() {
         return ImmutableSet.of();
     }
 }
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..c822c450 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
@@ -9,30 +9,32 @@ import net.minecraft.util.math.Direction;
 import net.minecraft.world.StructureWorldAccess;
 import net.minecraft.world.World;
 
-public class LimboGateway extends BaseGateway {
+public enum LimboGateway implements Gateway {
+    INSTANCE;
+
     @Override
-    public void generate(StructureWorldAccess world, int x, int y, int z) {
+    public void generate(StructureWorldAccess world, BlockPos pos) {
         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);
+        this.placePortal(world, pos.add(0, 1, 0), Direction.NORTH);
     }
 
     private void placePortal(StructureWorldAccess world, BlockPos pos, Direction facing) {
-        // todo
+        world.setBlockState(pos, ModBlocks.DIMENSIONAL_PORTAL.getDefaultState(), 2);
     }
 
     @Override
-    public boolean isLocationValid(World world, int x, int y, int z) {
+    public boolean isLocationValid(World world, BlockPos pos) {
         return ModDimensions.isLimboDimension(world);
     }
 }
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 90%
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..584e93a6 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 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);
     }
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);
+//                    }
+//                }
+//            }
+//        }
+//    }
+//}

From 3374b34e7aeb081826aaca6dcff5b2cb8b343db2 Mon Sep 17 00:00:00 2001
From: SD <harrypotter.starwars.shrish@gmail.com>
Date: Sat, 26 Sep 2020 14:12:40 +0530
Subject: [PATCH 4/8] It ain't 1.7 anymore

 Changes to be committed:
	modified:   src/main/java/org/dimdev/dimdoors/world/ModDimensions.java
	modified:   src/main/java/org/dimdev/dimdoors/world/feature/gateway/Gateway.java
	modified:   src/main/java/org/dimdev/dimdoors/world/feature/gateway/LimboGateway.java
	modified:   src/main/java/org/dimdev/dimdoors/world/feature/gateway/schematic/SchematicV2Gateway.java
---
 .../dimdev/dimdoors/world/ModDimensions.java  |  5 +++--
 .../world/feature/gateway/Gateway.java        |  6 ++----
 .../world/feature/gateway/LimboGateway.java   | 19 ++++++++++++++++---
 .../gateway/schematic/SchematicV2Gateway.java |  4 ++--
 4 files changed, 23 insertions(+), 11 deletions(-)

diff --git a/src/main/java/org/dimdev/dimdoors/world/ModDimensions.java b/src/main/java/org/dimdev/dimdoors/world/ModDimensions.java
index 4ab67adb..e84113b7 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,8 +61,8 @@ public final class ModDimensions {
         return type == PERSONAL || type == PUBLIC || type == DUNGEON;
     }
 
-    public static boolean isLimboDimension(World world) {
-        return world.getRegistryKey() == LIMBO || world.getDimension() == LIMBO_TYPE || world == LIMBO_DIMENSION;
+    public static boolean isLimboDimension(StructureWorldAccess world) {
+        return world.getDimension() == LIMBO_TYPE || world == LIMBO_DIMENSION;
     }
 
     public static void init() {
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
index bb7ef6f3..a8438a06 100644
--- a/src/main/java/org/dimdev/dimdoors/world/feature/gateway/Gateway.java
+++ b/src/main/java/org/dimdev/dimdoors/world/feature/gateway/Gateway.java
@@ -18,11 +18,9 @@ public interface Gateway {
         return this.getBiomes().contains(biome);
     }
 
-    default boolean isLocationValid(World world, BlockPos pos) {
+    default boolean isLocationValid(StructureWorldAccess world, BlockPos pos) {
         return this.isBiomeValid(BuiltinRegistries.BIOME.getKey(world.getBiome(pos)).orElseThrow(NullPointerException::new));
     }
 
-    default Set<RegistryKey<Biome>> getBiomes() {
-        return ImmutableSet.of();
-    }
+    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 c822c450..4169d934 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,19 +1,27 @@
 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;
 
     @Override
     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.
@@ -29,12 +37,17 @@ public enum LimboGateway implements Gateway {
         this.placePortal(world, pos.add(0, 1, 0), Direction.NORTH);
     }
 
+    @Override
+    public boolean isLocationValid(StructureWorldAccess world, BlockPos pos) {
+        return ModDimensions.isLimboDimension(world);
+    }
+
     private void placePortal(StructureWorldAccess world, BlockPos pos, Direction facing) {
         world.setBlockState(pos, ModBlocks.DIMENSIONAL_PORTAL.getDefaultState(), 2);
     }
 
     @Override
-    public boolean isLocationValid(World world, BlockPos pos) {
-        return ModDimensions.isLimboDimension(world);
+    public Set<RegistryKey<Biome>> getBiomes() {
+        return ImmutableSet.of(ModBiomes.LIMBO_KEY);
     }
 }
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 584e93a6..5906d9e9 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
@@ -18,7 +18,7 @@ import net.minecraft.nbt.NbtIo;
 import net.minecraft.util.math.BlockPos;
 import net.minecraft.world.StructureWorldAccess;
 
-public class SchematicV2Gateway implements Gateway {
+public abstract class SchematicV2Gateway implements Gateway {
     private static final Logger LOGGER = LogManager.getLogger();
     private Schematic schematic;
     private final String id;
@@ -75,6 +75,6 @@ public class SchematicV2Gateway implements Gateway {
      * @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) {
     }
 }

From 88210b1965c94f0b62cfbe904b055cf21a9f1788 Mon Sep 17 00:00:00 2001
From: SD <harrypotter.starwars.shrish@gmail.com>
Date: Sat, 26 Sep 2020 14:19:23 +0530
Subject: [PATCH 5/8] Add feature to limbo

 Changes to be committed:
	modified:   src/main/java/org/dimdev/dimdoors/world/ModBiomes.java
	modified:   src/main/java/org/dimdev/dimdoors/world/ModDimensions.java
	modified:   src/main/java/org/dimdev/dimdoors/world/feature/gateway/Gateway.java
	modified:   src/main/java/org/dimdev/dimdoors/world/feature/gateway/LimboGateway.java
---
 .../java/org/dimdev/dimdoors/world/ModBiomes.java     | 11 +++++++----
 .../java/org/dimdev/dimdoors/world/ModDimensions.java |  6 +++++-
 .../dimdoors/world/feature/gateway/Gateway.java       |  3 ---
 .../dimdoors/world/feature/gateway/LimboGateway.java  |  2 +-
 4 files changed, 13 insertions(+), 9 deletions(-)

diff --git a/src/main/java/org/dimdev/dimdoors/world/ModBiomes.java b/src/main/java/org/dimdev/dimdoors/world/ModBiomes.java
index 83005e11..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) {
@@ -76,6 +78,7 @@ public final class ModBiomes {
                         .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 e84113b7..82c384bb 100644
--- a/src/main/java/org/dimdev/dimdoors/world/ModDimensions.java
+++ b/src/main/java/org/dimdev/dimdoors/world/ModDimensions.java
@@ -61,10 +61,14 @@ public final class ModDimensions {
         return type == PERSONAL || type == PUBLIC || type == DUNGEON;
     }
 
-    public static boolean isLimboDimension(StructureWorldAccess world) {
+    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;
+    }
+
     public static void init() {
         ServerLifecycleEvents.SERVER_STARTED.register(server -> {
             ModDimensions.LIMBO_TYPE = server.getRegistryManager().getDimensionTypes().get(LIMBO_TYPE_KEY);
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
index a8438a06..c620bbd0 100644
--- a/src/main/java/org/dimdev/dimdoors/world/feature/gateway/Gateway.java
+++ b/src/main/java/org/dimdev/dimdoors/world/feature/gateway/Gateway.java
@@ -2,13 +2,10 @@ 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 interface Gateway {
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 4169d934..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
@@ -39,7 +39,7 @@ public enum LimboGateway implements Gateway {
 
     @Override
     public boolean isLocationValid(StructureWorldAccess world, BlockPos pos) {
-        return ModDimensions.isLimboDimension(world);
+        return ModDimensions.isLimbo(world);
     }
 
     private void placePortal(StructureWorldAccess world, BlockPos pos, Direction facing) {

From b204259fe189e4f423262affb05fbfa4d4f658d2 Mon Sep 17 00:00:00 2001
From: SD <harrypotter.starwars.shrish@gmail.com>
Date: Sat, 26 Sep 2020 14:30:46 +0530
Subject: [PATCH 6/8] Namespace support in old schematic command

 Changes to be committed:
	modified:   src/main/java/org/dimdev/dimdoors/command/SchematicCommand.java
---
 .../dimdoors/command/SchematicCommand.java    | 43 ++++++++++---------
 1 file changed, 23 insertions(+), 20 deletions(-)

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;
+                                                }
+                                        )
                                 )
                         )
                 )

From 8169f5503458ec68dc695a2b67f401323eb0f8ac Mon Sep 17 00:00:00 2001
From: SD <harrypotter.starwars.shrish@gmail.com>
Date: Sat, 26 Sep 2020 15:12:48 +0530
Subject: [PATCH 7/8] Convert private pockets

 Changes to be committed:
	new file:   src/main/resources/data/dimdoors/pockets/schematic/v2/private/private_pocket_0.schem
	new file:   src/main/resources/data/dimdoors/pockets/schematic/v2/private/private_pocket_1.schem
	new file:   src/main/resources/data/dimdoors/pockets/schematic/v2/private/private_pocket_2.schem
	new file:   src/main/resources/data/dimdoors/pockets/schematic/v2/private/private_pocket_3.schem
	new file:   src/main/resources/data/dimdoors/pockets/schematic/v2/private/private_pocket_4.schem
	new file:   src/main/resources/data/dimdoors/pockets/schematic/v2/private/private_pocket_5.schem
	new file:   src/main/resources/data/dimdoors/pockets/schematic/v2/private/private_pocket_6.schem
	new file:   src/main/resources/data/dimdoors/pockets/schematic/v2/private/private_pocket_7.schem
---
 .../schematic/v2/private/private_pocket_0.schem  | Bin 0 -> 370 bytes
 .../schematic/v2/private/private_pocket_1.schem  | Bin 0 -> 607 bytes
 .../schematic/v2/private/private_pocket_2.schem  | Bin 0 -> 1040 bytes
 .../schematic/v2/private/private_pocket_3.schem  | Bin 0 -> 1560 bytes
 .../schematic/v2/private/private_pocket_4.schem  | Bin 0 -> 2728 bytes
 .../schematic/v2/private/private_pocket_5.schem  | Bin 0 -> 4157 bytes
 .../schematic/v2/private/private_pocket_6.schem  | Bin 0 -> 6036 bytes
 .../schematic/v2/private/private_pocket_7.schem  | Bin 0 -> 8327 bytes
 8 files changed, 0 insertions(+), 0 deletions(-)
 create mode 100644 src/main/resources/data/dimdoors/pockets/schematic/v2/private/private_pocket_0.schem
 create mode 100644 src/main/resources/data/dimdoors/pockets/schematic/v2/private/private_pocket_1.schem
 create mode 100644 src/main/resources/data/dimdoors/pockets/schematic/v2/private/private_pocket_2.schem
 create mode 100644 src/main/resources/data/dimdoors/pockets/schematic/v2/private/private_pocket_3.schem
 create mode 100644 src/main/resources/data/dimdoors/pockets/schematic/v2/private/private_pocket_4.schem
 create mode 100644 src/main/resources/data/dimdoors/pockets/schematic/v2/private/private_pocket_5.schem
 create mode 100644 src/main/resources/data/dimdoors/pockets/schematic/v2/private/private_pocket_6.schem
 create mode 100644 src/main/resources/data/dimdoors/pockets/schematic/v2/private/private_pocket_7.schem

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 0000000000000000000000000000000000000000..06dd3daff0d3181306777b5be875e6b1af249289
GIT binary patch
literal 370
zcmV-&0ge72iwFP!000000PUAeOT$1AhNsznn3U3s9>qTp@ZzbEi&*erQ4p*jl(HtX
z&0@NVn<*9lwMS37Yo$g{YCXg@19N!Z*`1m9I3Bp?VT@BwGGySL@dSx*z#jmh;X&(N
zU@(g0G)hyQ_wHw0)8p7Ms$8auCu3W<5j>P?5~x&D?8iJ2L6Xi<`>|0mNKlZUW~c(e
zlN|lb)-YPo$V_v7H)ED%-=9%uu(O;ok0s$)@LMfIQ>!uPOr^q5b3r{Wwb2-Z-7oLC
z3MDG~_-9^0>jJf1)7o&Ld4g&}F?2oH8X)nA6KCKK`=>(WNS7}r3VdbosleBUpTV>_
zMmdQIx(wP!rp0oGx7`BwFiFEZD+6@)Vbh{kjQ@$1!7?nl3RVVx+Sw^0v+*}r8iVz9
zH~0xFgO$OO8!Q1<2FtMID!AbW*DhS>yq!;dMUo`uo)sNv3}s}`wl*{uml)XF4q(q@
Q-Q)qh0$QJK*)9(N0Db_j6aWAK

literal 0
HcmV?d00001

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 0000000000000000000000000000000000000000..88ebdc109a794daf6a53375aaf6416abf5cfe53b
GIT binary patch
literal 607
zcmb2|=3sz;w|6gQ-8K+mdvMtzS8Dpb-07<N6Vx@Hr0Hzvp32MidRJgmn*8ykzBxCw
zWUFt#bq&gtjFrqZWn1<1mAydYpQRTy-T!Y5mfC;XD~?llbIYaei;~v<^r=x^^mmHe
zetDIWnWsbJuKQO1`s!u!>-V8Iky|%~EsBcx5z^ta>Z#AwUcKc@S9C>&#uppwo(-NC
z8uKD^Z<?vL%hgXMxxJs?zPmKX?8koNb=O|k+b7Ss@cFj!I`5U0fgR_2&-A=iE!i`v
zYqOikuaFbRY`lf6e!l+glsakZzt82*qD`vK_vT*yC(UeCaW-qE_pBu)7005UICZxi
zd;Zzn_2Q;~8*b**-Mbk-<8Qz9@BV8i|D4gDb~@;?%EHCdpQ-1a_n6<C@n_Mh&HCRA
zC&meIwN~xg`aPiWV8Z<#hUSB|X)F>v?+ld>Boy@TG-s51^C%^}@nHY??_x}Q);`qZ
zt61=0$B%nX4e}2f*tz<;WzDZj1JxQZ-En+g#tV|XQ5d|}kco#)`G9Om-u1zwsBk|s
z51acr4g-lh$!-k?AIKR49r=AmpvINSYYk=pSKWOPletoL`^s921%HcY-o8FZ?&863
cXP2hjZ}l=UoWJnrnU`!*%h&bCl`${?0IugIIRF3v

literal 0
HcmV?d00001

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 0000000000000000000000000000000000000000..57dfb76eb2d501562d607bfcc4818012abeba499
GIT binary patch
literal 1040
zcmb2|=3sz;x7W^RNr%g@KFIDDzRq=X>*-741{Lxj)Ko6GI&-xytLI2lIv?TuWTLjO
z$4l>$tIxT%@IUGE@N^cRUcLJlYdw2f;d;C56pQZ79_sgX!|#?_^PX1I-Isg)u1V?n
zTk*kO-^E`3nBT3ocaO|Eee>CG-(A$tzxDRZ?V~mCj@{iLdHd_pf6eoMms$3NKYyHN
zz1A=M?JoQH{Cj1$FJG;>J$L=?I;*>PN*-6<Usrzj<=KCm-+lV~^68&#hyQ=?GdDMX
z`rabzlDPc6k7cGlcU|xAyTy0<=jLWL+dXo}@^<F_ei>+;^L+O*&-j1Gw?8g=aqQ*&
z{j)=@{_VT{uKwA-`xZXm_rE;0I&<ndv6q|E?_P=97JPfjWO4ub-~X<gUAJTJ-oKw0
zfA0VM^RD~z`OiMbXa1YDe)q#H)1{l$Y%7fFkG7ZV*xCE3_g|m=^!49Ts~?ZQt0*Zc
zeOmc^ftp3%V<39Jv#|+8S6JjNcmNWT>yy?1OSL~PuUjDVtRh%Q=6In@|LJbwp8G!=
zi>5qYsMQA2@pX^I!5?$wH6rC!C4n@=od>Fr*03Dqj^NOMrW`gdaN>Hn10!*DcXV{r
zJhJrUmtSvw`nvz|%o%NY+i%3nEvwdVI}J?ba!Y=n|6O<8_j9hXef-(;7yra8-Ot$d
LHt0*=bVddM;^6Ad

literal 0
HcmV?d00001

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 0000000000000000000000000000000000000000..41b43e7cc7eccc7bb7b40155ed1fddf0c76651f6
GIT binary patch
literal 1560
zcmb2|=3sz;x7U5MqSGbX9_okHWwoEVmH3ivPg4VD3!7Dj$HEI=+6DZcF7|Ml81u7b
z%DN@HHSao>PdT+@$A!QjUSFQHzGmYsdE>q5;anT_w?A(GEUGc}S^aa(+#2IG$1|nm
z`S)+TmN$2c^?#cgThpJf4u5|8?YmF^^w+oF{c`*B-`|DBJ8$K+ef_*z{?8VPXRFV4
zZ$4XQuIoSja8=>9d;28Im!JN7`D2c)-m=SYkM6LH=6QYk<CjOT(jWiaU4H)C{jw|H
zW!LNL-TQByckWjD_4^;wcFsEXy!+wvyIK4G-|UUt{XJ`|<n!H$hIi$|cK_Xcb4~5P
z`S<0`K40B2^Iz%j`&s4tq|3wWpIzNwcqOmiHZRWS^tT5~YCl!XY5SZgmG<_>%f;&5
zN1s~M{(r~6v+n=l-RF1I{eOIWd;b5N-~B(cV)jP(y*;?*?%$&Sg4gdCetJ2#>`%eo
zx%>B2-ASwedr`%6l8Wc0<M(_23->*?fTHUU*<ehdn0$lu0|d8@A+G_h@bM4E9gP1P
ze_Z_iA<`eNW@}~n(VZaSv)>=yoPE4d27>xOyz44vwmG@kydP$O+{3$~&)F&_rRU4R
zl-V5Gt$mL7gUb1PHZTWOw3LU>k$&JgZ*L{ksN)|w-mkMTKQP&*`ZL^G!F#cVc@657
z-=4v2Jg&TF_oF)u{-55Qh1uBWUIB94yeFd$>w7#JVxwt{(p(A8eioP|11tjr)v!N6
zEmFLJ#m=N9{reu5y?<C`UH>z~c<r*Q6_rI_KdiW0waaS$w6_QEmi<1NRA}k<d->+S
Yue<-ge)jKc^>67Z6{ocJU1DYc0M*`7bpQYW

literal 0
HcmV?d00001

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 0000000000000000000000000000000000000000..5f917b1af32e8d7f8ad258a82b76bae7640a07e9
GIT binary patch
literal 2728
zcmb2|=3sz;x0la%rLapLdpLQe=dqU)=IR}lo}tZgMopq1F~iZ|pCV7{_mwY|Y_BGN
z=M?-NHzCe1?~u2|>cFIe)F-VqHTOR^M_pMt@A;YCKlG+O-@k8H<o!3>A79Pe`Qz%p
zvb)>9ZvH!edTQnWq{?sa*>^wfe*Jj%>)pG5xA*`5a`j)`@6)S4fB*WWV2}0N{CL}c
zAKDN9dsR{O_ftvv{=0j2+`KOrckf>9-h2CZSlY+N-&@!I_UPT)U%!0Xu)j7UeoyV6
z+`a#<Z`VJUU;XL--p8xA=l}m+ZgW@H{^vK@`1>;3zg|uJfBg63t3S7YFFWm?-?#kh
ztGfCdcK77ppFdx=`|0xkU%&spe6`Rv_y5oG=li4P{Y~3j|0mz>T*aoE52wF=soEW>
zr$0@;c3a->*MGO&*FA6l|I4R>iiqv^_f>y?_x}FRf4e__-(UOu_j~#J_;Y9UuRVS}
zJ9p<DUHN~1d}@C8b<5jF&#N!0F8})U@#CjA<Nt5;n55zfMt?8tozByK_+f#C3?DKT
z)3rLbLI*_%qF@J4`0fu8sEQ#x$#rE9H=-E>mNANXdnnnuz<(eAcJCGptM=}UIK1Ol
z>+!M&^XlaFYEm#vxIVGlv<K*#Hx{F^GJK<<ft*%HLt`{FMoR`rnL3&mM)ShZ%nQ_P
zXB1+zAKDM6T0j~*o|Bfy?|6RNeg2($v9&*6W?JVR|N8LJ$A^=j{ypD+{r1_SpASDB
ieERUihP>y?cYl7K{`~yq&(CK+ogZ;r!2Df1I|Bgo@a|Xu

literal 0
HcmV?d00001

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 0000000000000000000000000000000000000000..3d184517a2a042639dc04c1502898f30768ac1d9
GIT binary patch
literal 4157
zcmeHKZ%7ki9JWxhq%6uNW;+7K{yK_4VgH~nB0<BxR3B8LC^XS5(3#sV3fTv%kt?Ni
zF6u)c3P%bpcXLbE93d)U%f`IZZMvyr+quoV+je)$KT&?zed}9yyl`+Y@9+2C^LyXt
z_dGy*X4>Wx_&!-XgXfI8w5M!+ImTO^g(Y(*GNt?T7GED}J2xdxKmEMy$KES<7Iq#R
zdWqB=f9mcmp3vta)^9DMS61>y^ii~UVhJO0Uspm8d0gamJ_QGBK|#=rP;%!-$p!t*
zq~dnJ9FL>e>iBpd!J{!t5F=Cr&~(C&E4%%$-9a4!2Y+gSzFDKeG$^bx8D}ahjRr%k
z5ln=`!6n*mr`<%@3)6ACHMmUC3s3^bbf97thV?@FQ;2ZEP%_Ey?Wxnsi6;Or+eSI8
zL7iS1fpD&-j)!pjaGxG(_i!Lf03J}Q1DBGK7`z(03d+gJ5G=24#gtTl(zYZU1V}I4
z1X5n<phi<~ChmbVL&)LgB4?z*9QV526iwJ5iICDwgK-Ce#wW#8bV{t}drK0Q?lDhO
zQ@=d!=esS<J#^TCkz?<=BcTw`z!N28>Voo)KjWFd;*5Z+vUygdDPLr|soB+trk>nf
zk*y6?O7l~${{4}(_*yyK9n4t-+$0)9+H5bri0NFqU?1~_?#3<?9c%e|%1O1#WhvXn
z7?h}yos@mWiv@cW!%Ee5=8#jwX2^W<K{k-V{2y;uKA?rO5L!xP0HR&Yh)6uwT<14X
z%M!^BFhi#uwT*PiLL;6zj*K`u$4~$PSNvGj##={cm`9)$pP4EpP~-tw)#0Hm)x&Dk
z_2xcvNzaN7n&#IFVxD6G+yW;HAj9EjPap$(uveIYepwD=pkKC$Y$4pOw~Fn;sRaNl
zV^ZTHC0QAhx?Qs}CN(bqvyf(XE1s2q=--AJ$bBQdSXTAdcNUaieD8C%^K|tS=Hzl*
vTFS*jk`N$5L@^AFubE!CK}c=*Tqz!%5BegIw#bPsE?~UQ5r>A$*`4+a64N(D

literal 0
HcmV?d00001

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 0000000000000000000000000000000000000000..2293427c220ca9de44f864b0ac365cce17ef4841
GIT binary patch
literal 6036
zcmb2|=3sz;x3|t_#eNq(_AvLfXIA@}ONlRee{eC)Yhkm>C|G#mOS6FAQ{~qJkws61
zgQ^5uor<gXihiFl%|u1k<m@BS+W+VIO>X@5s9ItgvG{97^^et`Pyg+{`>~*Io9(Zs
z@3QJ`-r3*#n|XWNcDda5e_kKG`R(QA!`<oT=G)iX{dg?C`}X7c_SUxV*T>7|tt$_o
zzxU^Z@8Y{ZAO8AT{kr+~<EM{L-@Uq9J={G0UA}z$ynFBF$Gp|=>(7sSw|;)in{{z-
z<@eWozWMK_{d_yy%<uorA9qjJ|6l$1;LUH3*Z1n{^B@14F239Tj@&u_`FE{v->WX%
zac}<pcY1yDZ}_$^FHcXu?Z5Bq-`%f2AO832$NTx#wb#F$TmOA~{=YNk|BwBB`!@c~
z`uXzu+h@Dq?zg)qUw*#q_}!b|K1}YP7Z<bVmVEu^UteGEuYLS;`|{`e>mL6sU;cdk
zw#(~({`~jh&!-)C=j6Ws_vVZCJ~O$!|IdB<aCr6X&*$&&xp(jX@5{cER6J49%im@C
zl6>ul9~M~15TweFmx{}&5mW{>sr)FdRlnPP_rKzuNF~B92Ri9{uAW%ll-GJTK6lEi
zKRECBAVi#}|Ess3+VTGc$S-*_xb+Q*vTXaIg+=<;V=HFtNYvYNgqX0kxWm<cYHv*W
z!^B5zJBf9hwv5*IqPwl_ozl+^dGinzi)#y3+&Mk!nbDXTO=hEcX0$XLEt-i5fzf(q
zw9*`H&WyIrMjM)=U4YU443Qnj(Mof)(j2WcM=Q<IN^|g5n#2tOTHJ{(1dXx{4%Mgw
zxS;Xe`<vTuSIfuUom2ns;@6J_HgDo>t3H4F_wAZ`d;0OyZ=c<L`*yjw`1)_hFW=sL
a`MSS<JpZ=0_u{wJGZe0zmG1XIgaH5`-r7|F

literal 0
HcmV?d00001

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 0000000000000000000000000000000000000000..116a5f78b4c17ff5ca4e51133957dcdb3669a594
GIT binary patch
literal 8327
zcmeHMUq};i92a^>3YCHyLE9k+6@<eIjJe&w2rHry5ktc5!3UuiQRe=*+g*Q%QJ0-W
z(LZg4!RjG=@Ii6^SVN9V8@6H?ZEL$+u4%j5rn{TBEhT&N<%iHi{EmZr`u@J$@B8ob
z{d^Fzy6Vrf^l9euSNk4&{N{b?OTEk3-n-3v?TVzP#xOhB`aHG0{^iQS-RB#^PX|Aq
zw5491y>)TN_SR}QnR7pz61$F3`Ab7>b~}OfTg0SjSk5o93w1xjbSTBA1a+M~&_dN_
zN(KL1ob1xZlrE2r%Z?D3wVcS0$}>8oTc?XehxCL{9Po7vsXddz&$ly6WN4mwpG%Vm
z!s9WiUg>pP`>|e|`?$($!`+tN9=w$0c_Cf66U5ESQ^PCYocm%ZQDz3lgSEc?PRwNK
zQ{a}KazUciWTMveBI|F~Hq%b|2l+W<Snrvz8jVJNxne7e$<${qX{cCD4u!kmWXLd)
zOcRVh9*H5{UPXsYr&5TC5R($;gp|0*vN;XvnlM|GCBZJob49rtqo0I{Qh7B~u}!Q#
zj!8$olS-*>SQ@P?MYQfFSt;uY1gOz&2VN?2@j%S2ICZz-^d|3%K>YO)rHrB(&J6ac
z$bBv|24=J2B$jiLG`Pn#Yf-gDr<J@++%LB80{-JN&9?LRVjW7f>@2JV{dAiI_|nw5
zjU&(`GeQDifI~Qpy~{Mp5G2RVP5}oji0wt^O%jTt1b!g_8g8Zw-Ra1#$Bo7?1F$uB
z)Nw;2M5Y*~6GbNhQ;p&HN5MBv@mGT5nh>M|IO)XcuJ{Gq#PR$?ifROoJ)Rt653MI2
zHVwlLmh~{~N)%Q*V8y{|hfN+fd5}g6XFHtj5YhqQLI~*~l7|Z%$PNjSJVf$vZwCNn
zkgkDr4P@y6S_Wk4AUO-kSrAzOa`KRqhf)jxyZnDBa3E{j-}$>`<@BFB-9)Wkm#|YT
z%lhf?xW-rho;37LD!f>}7{4B9ap+YoYtp%gFc-#1@&O%+gvMNsx(pu0OIHI#)fwAu
J34Q{p`VEno!-W6<

literal 0
HcmV?d00001


From 1ba21ebb862f233b131339eca90a14eb1ccd2b8b Mon Sep 17 00:00:00 2001
From: SD <harrypotter.starwars.shrish@gmail.com>
Date: Sat, 26 Sep 2020 15:36:08 +0530
Subject: [PATCH 8/8] Convert public pockets

 Changes to be committed:
	new file:   src/main/resources/data/dimdoors/pockets/schematic/v2/public/public_pocket_0.schem
	new file:   src/main/resources/data/dimdoors/pockets/schematic/v2/public/public_pocket_1.schem
	new file:   src/main/resources/data/dimdoors/pockets/schematic/v2/public/public_pocket_2.schem
	new file:   src/main/resources/data/dimdoors/pockets/schematic/v2/public/public_pocket_3.schem
	new file:   src/main/resources/data/dimdoors/pockets/schematic/v2/public/public_pocket_4.schem
	new file:   src/main/resources/data/dimdoors/pockets/schematic/v2/public/public_pocket_5.schem
	new file:   src/main/resources/data/dimdoors/pockets/schematic/v2/public/public_pocket_6.schem
	new file:   src/main/resources/data/dimdoors/pockets/schematic/v2/public/public_pocket_7.schem
---
 .../schematic/v2/public/public_pocket_0.schem    | Bin 0 -> 513 bytes
 .../schematic/v2/public/public_pocket_1.schem    | Bin 0 -> 765 bytes
 .../schematic/v2/public/public_pocket_2.schem    | Bin 0 -> 1212 bytes
 .../schematic/v2/public/public_pocket_3.schem    | Bin 0 -> 1759 bytes
 .../schematic/v2/public/public_pocket_4.schem    | Bin 0 -> 2921 bytes
 .../schematic/v2/public/public_pocket_5.schem    | Bin 0 -> 4361 bytes
 .../schematic/v2/public/public_pocket_6.schem    | Bin 0 -> 6243 bytes
 .../schematic/v2/public/public_pocket_7.schem    | Bin 0 -> 8542 bytes
 8 files changed, 0 insertions(+), 0 deletions(-)
 create mode 100644 src/main/resources/data/dimdoors/pockets/schematic/v2/public/public_pocket_0.schem
 create mode 100644 src/main/resources/data/dimdoors/pockets/schematic/v2/public/public_pocket_1.schem
 create mode 100644 src/main/resources/data/dimdoors/pockets/schematic/v2/public/public_pocket_2.schem
 create mode 100644 src/main/resources/data/dimdoors/pockets/schematic/v2/public/public_pocket_3.schem
 create mode 100644 src/main/resources/data/dimdoors/pockets/schematic/v2/public/public_pocket_4.schem
 create mode 100644 src/main/resources/data/dimdoors/pockets/schematic/v2/public/public_pocket_5.schem
 create mode 100644 src/main/resources/data/dimdoors/pockets/schematic/v2/public/public_pocket_6.schem
 create mode 100644 src/main/resources/data/dimdoors/pockets/schematic/v2/public/public_pocket_7.schem

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 0000000000000000000000000000000000000000..a6f7fbddc731dc8a6b2ce1ec37a3edc7b788839c
GIT binary patch
literal 513
zcmV+c0{;CUiwFP!000000PR=7ZWA#Ooy6IsaY%b9-1vh?+>0V4XeE%ST0kN|g;tJt
zylcg=S6)Y@H~u_~vt=oqfO1&c9m(2#<MEsKj*r9moh)!If|d;UxiA<4o{BF3kZ>4X
zHyB)GdYw7vt0V25O$ni`w6nsbv3;S0)Ha`6=R+|ogi-TNS)!j6)Wx|$6=tqPJ6FO~
zI4j*HddzC{nRX2rJZ?5DjgYHUSgFy5REee6l4js<RG7HwcUANmOxN0?^g@Lrp?zG+
z;NdUI8bv*lG<uIdN{G+<Fno<R4+R`>*gM4_G7$uW@#5r6sS3k~+G>M8*0vh_DPka+
zm#Fh1zyX8FF;O%-_~8h~&yAC-*anzBf%{gyoArOf&R`ov-UfCC|CG6Z6S7$U2DZlF
z;I13|33diMgDp4M0@xXBgUH*!dv5T~)flF`_;g}}4jL;?z1|-5UuE#9iFp(|J;hH<
zy;gz4Af`ADiFC&K1Q=z;NR>d6dqi9R50++w*KJ|SLOlB#so{Yzm*T2AMhenMc%qz_
zn7xQxz=4;Z5~+_;64?K~c(IFrkzoSE+`CO#?a1iRlroO;y3Kz~G1xcSuBx|`<h7-%
zIN5`tv$zmf5NX)CiyVy3Xs42rC?(Bgp|hA*X-^$N<IHxueG~8L`xL$bURPYOBM<-p
DN}2m!

literal 0
HcmV?d00001

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 0000000000000000000000000000000000000000..d0ecb149b48fb2ad4ba5957bf886dafe568fe948
GIT binary patch
literal 765
zcmb2|=3sz;w|6h*T{aM5dvJN#-D^F)(hvCFvi@S3tfg{8Wx|XZZ7z+Rp>ai*qP*Xp
z_-ImgeD$Gjk=?SXPPdyTI8AzLe`$|pe46~pf9r)WJ*YK#ymNyQmxhg)X7p+IN7{m4
zop0@_6S$D6^L*nqwfocER(H<ccxq{w(%c`%mv?q7nbkMNtjugqr-@{2isbBvXKbGa
zp6Zl+)pJ!tF!S7DpZHA=D@=bs`u2+TOU>THky?vBcLq#MNmcK(Fg7ZBe_?;g#9wp&
zZR^f+ur6L{VWhP2x0BTVOb7q}FLLe%9^bm<XJc>v!T;6M&F*cQbxZPX>z2|ZVMh*i
zHLyKCT<$q(^WPm2I(2tu)E9kzZ~kol-5STdnb&oe8+%tX=F0C-y;j}gZ<hJN=<3Ct
z^*$-;ElvyN@=D)n8%V^MDIZ8EXqIGTYnDF4VIXlQA<w5__x8eq=*ENp=fBrssR-SB
zd&e<$t~~MkksKdvV;(cJZtv#K%gXFwXg<hMz&iK$MzE~-ohz3lfTjpO;IjIj+{-U=
zM^A6Z%B6-(JZ#DbL`&Wsmy*}m5gStw?48Ua!Q<AT{o+o)sa-(9?i~-7O*;m(xrZVA
z!cO_@ngtKa3J?0~_6jB#NHDHjP;7tghr_|QkD6vjNdcW|z!c;7yl&0M#-`gxS<Sba
zxHTM1VA;`h?r#J>hwZotbXoK{u>XKM9<Uh$on<~FP~%GTTE@3J_U2V9)@+&d`GW21
zoWSqCKIgB^cTG+04G{G2@yYS9{eSiHgkKZ=w!REbu=wWvb)~)OnXIqn?{)S*czs;y
zY}%uv=KD=-g<dY*af;s}^>p68xf#NRe@?A;RcxJkQBwN8*Zi{jT${K$y{qdt_(}&a
z*56dKbH?w&eASg=VXI!g-_CT)cd6BR{|db&MNjU(xzHA7BNqN-I%nV3c;y27{^_wo
oUsrhl-PrT@d+c4i)&ARlm5X&B?JWQPyQ7Zj{nN~E!Q~7L08*H9c>n+a

literal 0
HcmV?d00001

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 0000000000000000000000000000000000000000..1ec36885b3547d80fa203728249a352eaff8db74
GIT binary patch
literal 1212
zcmb2|=3sz;x7W^R-3gO9`tg2*ob|NXYks9)H8-fpH)u6!6q6DPT5-EAY2DJ*l8KR0
zCfAqT{K~uQ)#qK4=K3w{KD{?~?t}M@2d6!ItSx!&(Uh_;$y>jf>um{5d@6nYr@$ZW
z@4IK}dRzagSiGUUv^tpo@DAJT;|urCSy!_^xBXt}^v`e0dspA8E4{~`95H`Q?DaYK
z^UUgOBK^z%Rz9CyV3bo+e{V<LYk#xD)%L%BJ$$wOW#sSH+P&3>LZ7dC?R`Cb?fb*2
zkJlaBHmm3F{OvEEsW07kG%nFU|JJ?m#o32uW*`5#u(kH%eDm9TFD6wjJv{%9#r{Ko
zo>!NBXnr4_n7e$bZROME)v*Pwvax$=?wUl)*VS1Rl>a?_c>mVj|Gxga@N&lcn%z<C
z*1B(g94$HWPV(vV_OdT~q*uNExlQ-quge^YEdow<Uv-L@+7CZ0u#ow8KvDxp@wFd*
zYQfA3q#hRRkV#)~03^pZ{c(TYf;UGiCJKR7lvWlU`LS4D<F}z+s3BP7GgKrHS-^r>
z_1ID^Hjq&jcK&@5=?jkR2s!!yWZ?PdCj}q#Op%zrN&;l%!=E;mNpl*79tVjwgIr@X
zU){aOI3OuzRT9`u&p$uuC}i{M@ebtyss2ziPsZ?^LucX2u7e==%{xC?`Iw{zifcwK
zADqE10!}Xvi{>;!5?)N7aR4|;w4W|y;{qp!0!u$o>ipFC{KP!F_ie9!rOMyB@GIBy
zZnVwDz3;PsZ_3Mml_;@2eINhg*V^@#+k7>0_m>@<x@}Ecp2YO9o_+KBqiz+MR^7M%
zv#<W@-CzCNW4A}{&i^-~f7|((@AqnN?E5g6ziyXZUfae`U$=jb42#+++1@MvJUsH&
z=6boBhqtd<ol%#$eK1QV&;0i9!^_SunUz<t@NM}2Rfp!4=GO16eVre3+duwnQ6jtZ
zd;L4?v->sg@qCs%`sL@Vf4XPC<({7=o-2E;%*yt8>E)c-8E5a_y?guT@0ZVy{bPHg
L(#X_2gOLFM^HyKz

literal 0
HcmV?d00001

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 0000000000000000000000000000000000000000..a93ed5daa208baa124993a256c6d45f80f6a14fa
GIT binary patch
literal 1759
zcmeH{-A__+9L9BSrkl#LEniaEs&!#aT(dMI&qXh8wRtw1d0}bH%&k-uUl2ve)wD&*
znoe4ztc%nlL8XNPdVHC(B-22}IxtwIgbt2yP!TwoZ|J|!h0nfMzh`^)+jrmRgJ%W!
z?8>bE@hD2|>#xu4dLUmulUaz|%ozgj$JZs)9*+!7?}Y14j!Q*K{p`!v(M^kjDP>sT
zJHm8gI<;vgc;I};HD(AM2zY!0ZH*XZqC$lMC=j@~MG+VIy`E3-x<biRVqMLYo;da(
z)DxRiP|r0dOxEX*5*s*jK7$yfnl}?bF*IM!CCRE%(ohO!m%vCH)IVT0cBti246T8(
z+S0_BgRVB?FcoZ4Ff3x-J#5t>Kr=RG;Y8UlDp$?X_C+{L`ZeXkMN%ofeTF{fvA0vP
z7orT>=EHE;q{iHmuZ`zrOJX4hk5KKpj%(!E|FSW<^Vu=rERLyTXDZ5RJ#k2llA!&P
zCCQ+<Z3d7ky$ZQa7K?=k^m$OLlZ(H*xnS3wljkyET&DUKttS>tNsh6uMKAM!ST>*m
zx#|u$Z&fH{J>Qkvj_Nl98x2W&BOVPdj*^$`4RoaF$-ZT9Tq*WD@Z?DC2|W-BREG_I
z+z+UPWyuYte(u!YMr1_Px*x<|SxWdGymES~BF6hh9O0{y5{H_IFwGlk4G^XoG(MoM
z!07#f{M1e$@#|sO)|L);c6b`wW%;k_<ZbU(Ww(*wC5a)4fz$YS+a4viR_px_yhfd0
z*wG!m;?ZL`>pN(|vlZPz7^z0Kt{<SRNeed?D*Aq=spyq+Y=x$Q>!HL{C?s#m()U>$
z*5qg2BCGd}%WUdoQA#eXV-7816t0n-2$|}Fmn~yDFqOkAcM+t*5d5l(VPdPn3YE+x
zhAy>c%;nWw2E|)&ZD!eqnc41Myg<NF1%eZ!d|Fj$wPUT@FlGIqWh}LjWKQHZ-!{w$
z&%vi4WC@ArG1>n-wG~IYINHpGvTsWwQ`z{E16?LVz0D})PF!{fydaS!4H{Ki%QT@Q
Xe~Zp30ERgbU;^@`O6NTym7mW)Nxr8n

literal 0
HcmV?d00001

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 0000000000000000000000000000000000000000..278f1599b9c9707a68255cc5deff1aa0714e72f8
GIT binary patch
literal 2921
zcmb2|=3sz;x0fCJqthkZ9!{=M%T(K<op5}XZ=K^3j+I-4JVJs+I~hc!=H57N9A@+F
zMDe0aveN%FtLvOL%r^2^qfxb_?$^E7eQuq$=bnDnx!3*h=KJa9m)~0CPwRg8=yaj=
z+0S2&{<xkfaZbN&`ThMHCHBST=7s<M`|#h>XB+Ov%EtTd{(ZL2Ja4^Ue*Ip#>9g;C
zU48eT!TmiuB)7i~fB){?vcui8AMd`r`t6o^@o(NQySw`9j=l5a?!4VUlkf7Y!>jkp
z?0=nO_~+3>>3ccHpWa?wxc!dL?w?t<`z&*&9Y4?W|9o(c|NSrf?T$V^`r+f-G;>}4
z$5nNfd3?+DV|na<uUD_GSmb`(z3Nx{%Yv$w%k}j(Hb3uf**!16?R59U#rn%CV|qXD
zkeIjk-=Ctr`{qBhuVavp`~ULrn)d7UcACfS{p*Z#*X2KZSY&AP|BZ)D&GDoD^ZCx(
z-F-Jb-#?$<|Np=9j+0b8!RY1jcY#JSeC>xH7FeKAn(N*kN-jhd1M^aMY~$`fimn_e
zHT~f&JsUAhlPqG|vUh*DA-ChWeM_{;A#|NP_U()~3NrI;qxEmam>(z59AY7}&Rs9e
z5agWGg%6c69J)ges$chbYd;T$^;J)jL>~hkwoOLd4%4HrCw7PSfLvEJYB4BcMuQqP
z#g8T~wCp;Xolpy)(E<du?iejVMhg%s)W;DhZ4qdYN>Z~)G8x(c^87Wi+N|c!%d-77
zzklZ4J2U&`zehjrE$(kSzCV`NJ|5O6+%lX0ah_$Ytl8_INfyz)pDPUK=zqWc_hC(h
z%(APUR`Tc8^IzWb`@{Rq=C{i)f6wo~y?ge@@OtZuhy9PeHGjPQ`+VQqne+PA&tLz&
z{pprpUr$QuwRP`4{4dXHj@;9lA5ZSb|EanabN`I`!=E3X{Mt}oUjARU?2lz#*514Q
zpVP|!&iB`C^WQf6?(N^}m)$PhZ2j-mmy_;?C;!c>vaPe8Gvny=-;+05{QL81_i~xG
x%@02o{HxkL3)onE{5@vf_3xK!ex3RK{r!HczyE%Gw{NRw?0<M*;^Pi>1^{v<qD}w+

literal 0
HcmV?d00001

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 0000000000000000000000000000000000000000..82a865fe0d3e68b50c6ece3f3f8f5a4f94180efc
GIT binary patch
literal 4361
zcmeHLUr19?7>^z@NZo^=Lh6tV4a+}NOl_M)Mt?+m2n;H_WMNGcooSmjHzL{|23{y?
z(EJBcJ%mbF-Sp}#FY`h&EpM{&w$0m>%{e#kHg%i3_b&Sb8nm|_dbo!J2hQPqzmN0%
z&X4c=_}cATehv4h!`gG^)G?yAcB~C;t|*f|0p5P7Oxkw(c*520^z^%fby>)(rh~io
zmfo>HIshvlOz{>@mM^GtCibXhQoFD?FZkZ~cpMG_u^{_qsPh8ouO3LwF{DA5@D$Ld
z;;RX|N**L*v;;nFU#S@>{wl^(R^f3HdkI?>W#p=F*$cU(179jdHaE||g1MxylC|5b
zi-f~sWs%5M?g}~C>KPFL;<(dkVqs@qk5aydd!dO$B-a)h9e2M`G#7dv>Lmi87u9J@
zzF-G&#9DQ0?MWoC&y%ap>=VF}mSnTPUwXZOnXd}YsjQ34PRk*~6jEHK!Lr-gFhjiK
zKebFNMCUKW@>>f{WKBD2q~?tdpvMehv;#twK3YeT#VQ|dCjBGoUH-7-db5b9(-Ph*
z$G$Q3=V_Xt<}tT2w6N@@=I#S=_cBgw%tlM88YR7QVH)_?W$AW3Ocg{uUcVEBC!tDt
zN;CsMtkM<-o+FHp0`U`<_4w<O(w=3qtcKE-M8^w^qoYZo*E>KgLA9E$2xiSj_1(6U
zzXO>20c;r6fLo)Z4|`uwM-A>#ayFYY_$LjxH{@uui4ojS;nZeBn>lgd#DNnBE_2w#
z0ZtsagmZ%fn~1?>4*zxL5Y@T$5H5*rHwY>9*RcNHly&`^DslIw$~41x^MEka1OtXO
zg`nPUYPuz*7p=z-Cbt5~t<amFGi*cn+Kfpfh1zp?`V~cfd(T+QQ1XN>>}DIpd*iW%
zk`A8Zj7BoUP=S6OF2F!Oi0fTmC{pkdnH+P=$N<z;hD$ozCP8x;X*|n#F2^MyM$<*r
z{?zimMzMnK;w$s(dV3xBDY?9%`SZxYK&vJ-k}~qj>Oouj;k6|w5kYa2XWA`T?-2AK
zVlk&appFS!maAxGLB6&xka<Z;`(3j7!q_VaL(s<Rg8)y5+CnwMh7LO>vl?2%CV0Ic
RVT+AyQw?@sO-PR0@*NfQv?~Ar

literal 0
HcmV?d00001

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 0000000000000000000000000000000000000000..92ddaca9fcd23e4a9f8bb6cec84a31e322b93f6d
GIT binary patch
literal 6243
zcmb2|=3sz;x3>;<MSmAP{xQ2>z3;ehSY~-G^LuW#U=QJpg$ET|cjaoh&D%LkaN1JG
z#S>Dlhrd|of8Bkhwq>T&B)wVBK1f&no3AgS)LUdfeY3^tVl&$xcYj{}leIB^?tGtg
zdHrjj>+I{d{79O$?DFQ9|E|Z+@tGgDCN4H-`|jDtSKlrB{O3dFy*q2R%|80;=f~In
z)4M-kefH^O+V0!&w!5O%O!v3jy>DK5|2n?==lrjIF8ZHQZJR$&NBs5dpBKM=`&?-r
zU-R|ldG^=$PJa2E-y;6{=+D#7yU+g2y7y+jzPNtb>d%Msm;HaLd(Hjj{@U){>X)t8
zht2+3vpwRSynfhj<tn4UU##=Lot3_8x#!Z~`{#E*)|UDIefQ<){d3Ky|6ZM0ZMOIC
z#Xa#cI^Vh{zdX2^f4<&y^UweI*T?VwcYM3u|BoMjuD}25&+^Cjmmf~9vt6&Z{@dkm
zDOEoXJ`}t!k^cVfe7QaQ@6Fq9Q)j#P`}gIORXiu5qD%a5{fuPz+7CZ0upmg~^}mj-
zm_b+_#HhPs*LQy~C?rz(Zryd|4-+2|;R=wF^5~fNhYla9-M`zu&DyhtDA(^hee}@O
zqP^Vw!r%YC`zxWh=Lk`j-T8lVq0u{gu*UE+t<xol3M}b|0Xy}<{y!R1(Me3;7VHq@
zoBDgyn$bW5CDGB8Hkxln3!BlRbF{u0tvyGZ9HR}W(N^bZ8+x?kK}?5jv>P?r_Z;m>
zj}AYK4yKHbKv6KBM$2JKqM9-mGViwSxYyd=Nz~wGfyJHNLbS16AlH5a`(^9*>$gAG
zx4-iy{P)$G;<6v_&fUIz_kN6z{qBgpyKdx_oA*CITetnjob%_)S3muiv#WgL4gGV=
zE`NSowcC2GU)krQ9|M<Pe)%+So_YM=?|a2xpMSP~f83h&>&5o}IsNhCWq+~P=f&gi
z)flXQ{<r4GpMsrt=bjheZ)KNlHT&GU^4qT~%WI}yetEb4;Q41)pI-g<qow_F^z_|t
z)32N7%a#2o|8ccwZ|s}!*{AFOze=ep-+OD%o}VdoTO)G$>aG5LI``#TnX!Fzjis!7
z@u!d9e)LQ}ygz<V<>|~_=6C1%&0nkcE&TGg2R5;K`Op4-GzSfeKRJ7U`OEyv_KXX;
L6Bao?6kz}WQ<NgF

literal 0
HcmV?d00001

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 0000000000000000000000000000000000000000..496553476f15470105a3a1a21bba60c59c2c2bd3
GIT binary patch
literal 8542
zcmeHNO>7!h5YC}hB3Uwrs_~)8a;cI=a#*E@QmY1%%9T}B4XSgXwi>K7O^_-YR7ecA
zF<hGZuvJ#7TjO>eIQZa3#K9JFml!ZgEVOkoMv;T50~p!sg*XIa{tU|+wx(%sIpp=$
z>aAAV)9gIW%$xb%_dOwY=)m(Q^Y9aFoH;tYAzteU_6$DUy<KeDdhO7eFJJHZ<*ma%
z|Jrrm#a-$9?eeju8=vBvV!1witjln^!zHk$o11=GTO9n@bdX<R?j@E*krYAiKK-Jt
zrq<0Oc=|ZOw+6KQ)qZYRe0CIFCPSezw@~7u3#Rf`GCb#A&*};LaZ+RcdZsO!wMrjl
z1XN(yLfEm+Uaw&WL6qwrw{)%ty&)*0tMLge7%o+J{PlEc+G^&XB*d%U5vJ_8jym2^
zg{<m6RrH$PsGVW+(-Jqkl-JGs!&Aj`K7V|K@us5jfxbUJJCaDK1?1z!e3a)dJA4mr
z5{}|-BC?QCxN0fAg{;qItq5wdOa|Vw-KK(U($&_DwAU*u7?v(oaD_uT#7#u_y}GYd
zE%~n4w1w1^%n_ZmPz<w}&vuG&!&l?=WQMsntl*p~QiGZ+bl`*U-~8}J@5#W;x7!h%
zqH_kY4?kve8;oE!e>?GQq(q4DU-+bRn#x^_0$=RD<GnXb+09%|=5zaAF?W3f{15(w
z@vxL>ESxX6%OCCJ9{7P{hO@24-$UoyrP3rlfdMZ;Sm>_&(1^NmiRx?tj-M>)+&LlB
z=PH#k92WuS+_a?HIQLf!PYH$RffK(s7P>#V7xUBfMX7WSu-NEa<&^EZoNXkZG8(Uf
z7Au{*C~dOkbuBoKvz5o2!1mNX$rl!2;=u|RCLZp1xZ?pk4s7+X)x#MNh*98-hu{u^
zJFrs;MD>j$9Ypnjt=0fhJw){o)k9SO(mW6(a3FIBnL99WhCs>|Qnrw*f9V<XTvdQv
zeM9JiA`Kuoqy8uA9I&*uZ@_>1UlVhcFA}r&74DOQ(X!O@$R^<o`WQl{OWVOg{d#w{
z&KTJ^yUVgBv&&?T9~BVswd&Ti_g$-~yey`I+ge_2o|VOV&o-yo%tRI~+mO|3<yzv|
zP=6_0U5FC)77HPm_YM{F_Fy<dXzs{*9INy|p&G|(8)^x^l5vi%Fh&0b{&Pvp^dlE=
z@CRi|QjX%J+@SAIZ(rcUSo#^#SI`x1VfI?m6_*SZZjCSzMKtbAhxV^7WU@&GY4bQe
zvxzBOoM<KSHdbxsz8fKIf_ZK<pw--U$IKpyOesP&<8oAVCqidbO7B34)%$w0<0Agm
N=J$_W(sc+A{0U{JJ&gbW

literal 0
HcmV?d00001