diff --git a/src/main/java/StevenDimDoors/mod_pocketDim/DDProperties.java b/src/main/java/StevenDimDoors/mod_pocketDim/DDProperties.java index 9c8f71b..5c9e841 100644 --- a/src/main/java/StevenDimDoors/mod_pocketDim/DDProperties.java +++ b/src/main/java/StevenDimDoors/mod_pocketDim/DDProperties.java @@ -3,7 +3,7 @@ package StevenDimDoors.mod_pocketDim; import java.io.File; import net.minecraftforge.common.Configuration; -import StevenDimDoors.mod_pocketDim.ticking.MonolithSpawner; +import StevenDimDoors.mod_pocketDim.ticking.CustomLimboPopulator; import StevenDimDoors.mod_pocketDim.world.GatewayGenerator; public class DDProperties @@ -209,7 +209,7 @@ public class DDProperties "Sets whether dungeon rifts generate in dimensions other than Limbo").getBoolean(true); MonolithSpawningChance = config.get(Configuration.CATEGORY_GENERAL, "Monolith Spawning Chance", 28, - "Sets the chance (out of " + MonolithSpawner.MAX_MONOLITH_SPAWNING_CHANCE + ") that Monoliths will " + + "Sets the chance (out of " + CustomLimboPopulator.MAX_MONOLITH_SPAWNING_CHANCE + ") that Monoliths will " + "spawn in a given Limbo chunk. The default chance is 28.").getInt(); ClusterGenerationChance = config.get(Configuration.CATEGORY_GENERAL, "Cluster Generation Chance", 2, diff --git a/src/main/java/StevenDimDoors/mod_pocketDim/dungeon/DungeonSchematic.java b/src/main/java/StevenDimDoors/mod_pocketDim/dungeon/DungeonSchematic.java index 6fc3a52..cc74b94 100644 --- a/src/main/java/StevenDimDoors/mod_pocketDim/dungeon/DungeonSchematic.java +++ b/src/main/java/StevenDimDoors/mod_pocketDim/dungeon/DungeonSchematic.java @@ -29,7 +29,7 @@ import StevenDimDoors.mod_pocketDim.schematic.InvalidSchematicException; import StevenDimDoors.mod_pocketDim.schematic.ReplacementFilter; import StevenDimDoors.mod_pocketDim.schematic.Schematic; import StevenDimDoors.mod_pocketDim.ticking.MobMonolith; -import StevenDimDoors.mod_pocketDim.ticking.MonolithSpawner; +import StevenDimDoors.mod_pocketDim.ticking.CustomLimboPopulator; import StevenDimDoors.mod_pocketDim.util.Point4D; public class DungeonSchematic extends Schematic { @@ -260,7 +260,7 @@ public class DungeonSchematic extends Schematic { } //Remove end portal frames and spawn Monoliths, if allowed - boolean canSpawn = MonolithSpawner.isMobSpawningAllowed(); + boolean canSpawn = CustomLimboPopulator.isMobSpawningAllowed(); for (Point3D location : monolithSpawnLocations) { spawnMonolith(world, location, entranceDoorLocation, turnAngle, pocketCenter, canSpawn); diff --git a/src/main/java/StevenDimDoors/mod_pocketDim/mod_pocketDim.java b/src/main/java/StevenDimDoors/mod_pocketDim/mod_pocketDim.java index e772dda..3df3780 100644 --- a/src/main/java/StevenDimDoors/mod_pocketDim/mod_pocketDim.java +++ b/src/main/java/StevenDimDoors/mod_pocketDim/mod_pocketDim.java @@ -38,7 +38,7 @@ import StevenDimDoors.mod_pocketDim.items.itemRiftRemover; import StevenDimDoors.mod_pocketDim.ticking.CommonTickHandler; import StevenDimDoors.mod_pocketDim.ticking.LimboDecay; import StevenDimDoors.mod_pocketDim.ticking.MobMonolith; -import StevenDimDoors.mod_pocketDim.ticking.MonolithSpawner; +import StevenDimDoors.mod_pocketDim.ticking.CustomLimboPopulator; import StevenDimDoors.mod_pocketDim.ticking.RiftRegenerator; import StevenDimDoors.mod_pocketDim.tileentities.TileEntityDimDoor; import StevenDimDoors.mod_pocketDim.tileentities.TileEntityDimDoorGold; @@ -140,8 +140,8 @@ public class mod_pocketDim public static boolean isPlayerWearingGoogles = false; public static DDProperties properties; - public static MonolithSpawner spawner; //Added this field temporarily. Will be refactored out later. - public static GatewayGenerator riftGen; + public static CustomLimboPopulator spawner; //Added this field temporarily. Will be refactored out later. + public static GatewayGenerator gatewayGenerator; public static PlayerTracker tracker; public static Block coriumBlock; @@ -175,7 +175,7 @@ public class mod_pocketDim //Now do other stuff MinecraftForge.EVENT_BUS.register(new EventHookContainer(properties)); - riftGen = new GatewayGenerator(properties); + gatewayGenerator = new GatewayGenerator(properties); } @EventHandler @@ -187,7 +187,7 @@ public class mod_pocketDim //MonolithSpawner should be initialized before any provider instances are created //Register the other regular tick receivers as well - spawner = new MonolithSpawner(commonTickHandler, properties); + spawner = new CustomLimboPopulator(commonTickHandler, properties); new RiftRegenerator(commonTickHandler); //No need to store the reference LimboDecay decay = new LimboDecay(commonTickHandler, properties); @@ -220,7 +220,7 @@ public class mod_pocketDim mod_pocketDim.limboBiome = (new BiomeGenLimbo(properties.LimboBiomeID)); mod_pocketDim.pocketBiome = (new BiomeGenPocket(properties.PocketBiomeID)); - GameRegistry.registerWorldGenerator(mod_pocketDim.riftGen); + GameRegistry.registerWorldGenerator(mod_pocketDim.gatewayGenerator); tracker = new PlayerTracker(); GameRegistry.registerPlayerTracker(tracker); @@ -288,7 +288,7 @@ public class mod_pocketDim CraftingManager.registerRecipes(properties); DungeonHelper.initialize(); - this.riftGen.initGateways(); + this.gatewayGenerator.initGateways(); /** coriumFluid = new LiquidCorium("Corium").setDensity(1000).setTemperature(3473).setDensity(9400).setLuminosity(6).setRarity(EnumRarity.rare); diff --git a/src/main/java/StevenDimDoors/mod_pocketDim/ticking/MonolithSpawner.java b/src/main/java/StevenDimDoors/mod_pocketDim/ticking/CustomLimboPopulator.java similarity index 90% rename from src/main/java/StevenDimDoors/mod_pocketDim/ticking/MonolithSpawner.java rename to src/main/java/StevenDimDoors/mod_pocketDim/ticking/CustomLimboPopulator.java index 8b58f37..908e2e9 100644 --- a/src/main/java/StevenDimDoors/mod_pocketDim/ticking/MonolithSpawner.java +++ b/src/main/java/StevenDimDoors/mod_pocketDim/ticking/CustomLimboPopulator.java @@ -2,6 +2,7 @@ package StevenDimDoors.mod_pocketDim.ticking; import java.util.ArrayList; import java.util.Random; +import java.util.concurrent.ConcurrentLinkedQueue; import net.minecraft.entity.Entity; import net.minecraft.server.MinecraftServer; @@ -9,12 +10,13 @@ import net.minecraft.world.GameRules; import net.minecraft.world.World; import net.minecraftforge.common.DimensionManager; import StevenDimDoors.mod_pocketDim.DDProperties; +import StevenDimDoors.mod_pocketDim.mod_pocketDim; import StevenDimDoors.mod_pocketDim.core.NewDimData; import StevenDimDoors.mod_pocketDim.core.PocketManager; import StevenDimDoors.mod_pocketDim.helpers.yCoordHelper; import StevenDimDoors.mod_pocketDim.util.ChunkLocation; -public class MonolithSpawner implements IRegularTickReceiver { +public class CustomLimboPopulator implements IRegularTickReceiver { public static final int MAX_MONOLITH_SPAWNING_CHANCE = 100; private static final String MOB_SPAWNING_RULE = "doMobSpawning"; @@ -23,12 +25,12 @@ public class MonolithSpawner implements IRegularTickReceiver { private static final int MONOLITH_SPAWNING_INTERVAL = 1; private DDProperties properties; - private ArrayList locations; + private ConcurrentLinkedQueue locations; - public MonolithSpawner(IRegularTickSender sender, DDProperties properties) + public CustomLimboPopulator(IRegularTickSender sender, DDProperties properties) { this.properties = properties; - this.locations = new ArrayList(); + this.locations = new ConcurrentLinkedQueue(); sender.registerForTicking(this, MONOLITH_SPAWNING_INTERVAL, false); } @@ -49,6 +51,10 @@ public class MonolithSpawner implements IRegularTickReceiver { { //Limbo chunk placeMonolithsInLimbo(location.DimensionID, location.ChunkX, location.ChunkZ); + + World world = DimensionManager.getWorld(location.DimensionID); + + mod_pocketDim.instance.gatewayGenerator.generate(world.rand, location.ChunkX, location.ChunkZ,world, world.getChunkProvider(), world.getChunkProvider()); } else { diff --git a/src/main/java/StevenDimDoors/mod_pocketDim/world/GatewayGenerator.java b/src/main/java/StevenDimDoors/mod_pocketDim/world/GatewayGenerator.java index 8d7f303..268d4b5 100644 --- a/src/main/java/StevenDimDoors/mod_pocketDim/world/GatewayGenerator.java +++ b/src/main/java/StevenDimDoors/mod_pocketDim/world/GatewayGenerator.java @@ -16,6 +16,7 @@ import StevenDimDoors.mod_pocketDim.core.NewDimData; import StevenDimDoors.mod_pocketDim.core.PocketManager; import StevenDimDoors.mod_pocketDim.items.ItemDimensionalDoor; import StevenDimDoors.mod_pocketDim.world.gateways.BaseGateway; +import StevenDimDoors.mod_pocketDim.world.gateways.GatewayLimbo; import StevenDimDoors.mod_pocketDim.world.gateways.GatewaySandstonePillars; import StevenDimDoors.mod_pocketDim.world.gateways.GatewayTwoPillars; import cpw.mods.fml.common.IWorldGenerator; @@ -54,6 +55,8 @@ public class GatewayGenerator implements IWorldGenerator //add gateways here gateways.add(new GatewaySandstonePillars(this.properties)); + gateways.add(defaultGateway); + gateways.add(new GatewayLimbo(this.properties)); } @@ -63,7 +66,7 @@ public class GatewayGenerator implements IWorldGenerator //Don't generate rifts or gateways if the rift generation flag is disabled, //the current world is a pocket dimension, or the world is remote. //Also don't generate anything in The End. - if (world.isRemote || (!properties.WorldRiftGenerationEnabled && !(world.provider instanceof LimboProvider)) || + if (world.isRemote || (!properties.WorldRiftGenerationEnabled) || (world.provider instanceof PocketProvider) || (world.provider.dimensionId == END_DIMENSION_ID)) { return; @@ -173,60 +176,6 @@ public class GatewayGenerator implements IWorldGenerator } } - private static void createStoneGateway(World world, int x, int y, int z, Random random) - { - final int blockID = Block.stoneBrick.blockID; - - //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.isBlockOpaqueCube(x + xc, y - 2, z + zc)) - { - //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. - if (Math.abs(xc) + Math.abs(zc) < random.nextInt(2) + 3) - { - //Place Stone Bricks - world.setBlock(x + xc, y - 1, z + zc, blockID, 0, 3); - } - else if (Math.abs(xc) + Math.abs(zc) < random.nextInt(3) + 3) - { - //Place Cracked Stone Bricks - world.setBlock(x + xc, y - 1, z + zc, blockID, 2, 3); - } - } - } - } - - //Use Chiseled Stone Bricks to top off the pillars around the door - world.setBlock(x, y + 2, z + 1, blockID, 3, 3); - world.setBlock(x, y + 2, z - 1, blockID, 3, 3); - //Build the columns around the door - world.setBlock(x, y + 1, z - 1, blockID, 0, 3); - world.setBlock(x, y + 1, z + 1, blockID, 0, 3); - world.setBlock(x, y, z - 1, blockID, 0, 3); - world.setBlock(x, y, z + 1, blockID, 0, 3); - } - - private static void createLimboGateway(World world, int x, int y, int z, int blockID) - { - //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.setBlock(x, y + 2, z + 1, blockID, 0, 3); - world.setBlock(x, y + 2, z - 1, blockID, 0, 3); - - //Build the columns around the door - world.setBlock(x, y + 1, z - 1, blockID, 0, 3); - world.setBlock(x, y + 1, z + 1, blockID, 0, 3); - world.setBlock(x, y, z - 1, blockID, 0, 3); - world.setBlock(x, y, z + 1, blockID, 0, 3); - } - private static boolean checkGatewayLocation(World world, int x, int y, int z) { //Check if the point is within the acceptable altitude range, the block above that point is empty, diff --git a/src/main/java/StevenDimDoors/mod_pocketDim/world/LimboGenerator.java b/src/main/java/StevenDimDoors/mod_pocketDim/world/LimboGenerator.java index 9c5a709..a53faaf 100644 --- a/src/main/java/StevenDimDoors/mod_pocketDim/world/LimboGenerator.java +++ b/src/main/java/StevenDimDoors/mod_pocketDim/world/LimboGenerator.java @@ -18,7 +18,7 @@ import net.minecraftforge.common.MinecraftForge; import net.minecraftforge.event.Event.Result; import net.minecraftforge.event.terraingen.ChunkProviderEvent; import StevenDimDoors.mod_pocketDim.DDProperties; -import StevenDimDoors.mod_pocketDim.ticking.MonolithSpawner; +import StevenDimDoors.mod_pocketDim.ticking.CustomLimboPopulator; public class LimboGenerator extends ChunkProviderGenerate { @@ -81,9 +81,9 @@ public class LimboGenerator extends ChunkProviderGenerate } private DDProperties properties; - private MonolithSpawner spawner; + private CustomLimboPopulator spawner; - public LimboGenerator(World world, long seed, MonolithSpawner spawner, DDProperties properties) + public LimboGenerator(World world, long seed, CustomLimboPopulator spawner, DDProperties properties) { super(world, seed, false); diff --git a/src/main/java/StevenDimDoors/mod_pocketDim/world/LimboProvider.java b/src/main/java/StevenDimDoors/mod_pocketDim/world/LimboProvider.java index c7d6fb9..71e587d 100644 --- a/src/main/java/StevenDimDoors/mod_pocketDim/world/LimboProvider.java +++ b/src/main/java/StevenDimDoors/mod_pocketDim/world/LimboProvider.java @@ -14,7 +14,7 @@ import net.minecraftforge.client.IRenderHandler; import StevenDimDoors.mod_pocketDim.CloudRenderBlank; import StevenDimDoors.mod_pocketDim.DDProperties; import StevenDimDoors.mod_pocketDim.mod_pocketDim; -import StevenDimDoors.mod_pocketDim.ticking.MonolithSpawner; +import StevenDimDoors.mod_pocketDim.ticking.CustomLimboPopulator; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; @@ -27,7 +27,7 @@ public class LimboProvider extends WorldProvider private IRenderHandler skyRenderer; private DDProperties properties; - private MonolithSpawner spawner; + private CustomLimboPopulator spawner; public LimboProvider() { diff --git a/src/main/java/StevenDimDoors/mod_pocketDim/world/PocketGenerator.java b/src/main/java/StevenDimDoors/mod_pocketDim/world/PocketGenerator.java index 2c54743..2299677 100644 --- a/src/main/java/StevenDimDoors/mod_pocketDim/world/PocketGenerator.java +++ b/src/main/java/StevenDimDoors/mod_pocketDim/world/PocketGenerator.java @@ -10,15 +10,15 @@ import net.minecraft.world.chunk.IChunkProvider; import net.minecraft.world.gen.ChunkProviderGenerate; import StevenDimDoors.mod_pocketDim.core.NewDimData; import StevenDimDoors.mod_pocketDim.core.PocketManager; -import StevenDimDoors.mod_pocketDim.ticking.MonolithSpawner; +import StevenDimDoors.mod_pocketDim.ticking.CustomLimboPopulator; public class PocketGenerator extends ChunkProviderGenerate { private World worldObj; - private MonolithSpawner spawner; + private CustomLimboPopulator spawner; - public PocketGenerator(World par1World, long par2, boolean par4, MonolithSpawner spawner) + public PocketGenerator(World par1World, long par2, boolean par4, CustomLimboPopulator spawner) { super(par1World, par2, par4); this.worldObj = par1World; diff --git a/src/main/java/StevenDimDoors/mod_pocketDim/world/PocketProvider.java b/src/main/java/StevenDimDoors/mod_pocketDim/world/PocketProvider.java index 793f2df..33f8c70 100644 --- a/src/main/java/StevenDimDoors/mod_pocketDim/world/PocketProvider.java +++ b/src/main/java/StevenDimDoors/mod_pocketDim/world/PocketProvider.java @@ -12,14 +12,14 @@ import StevenDimDoors.mod_pocketDim.CloudRenderBlank; import StevenDimDoors.mod_pocketDim.DDProperties; import StevenDimDoors.mod_pocketDim.mod_pocketDim; import StevenDimDoors.mod_pocketDim.core.PocketManager; -import StevenDimDoors.mod_pocketDim.ticking.MonolithSpawner; +import StevenDimDoors.mod_pocketDim.ticking.CustomLimboPopulator; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; public class PocketProvider extends WorldProvider { private DDProperties properties; - private MonolithSpawner spawner; + private CustomLimboPopulator spawner; private IRenderHandler skyRenderer; public PocketProvider() diff --git a/src/main/java/StevenDimDoors/mod_pocketDim/world/gateways/BaseGateway.java b/src/main/java/StevenDimDoors/mod_pocketDim/world/gateways/BaseGateway.java index ac687ce..c6cc5f6 100644 --- a/src/main/java/StevenDimDoors/mod_pocketDim/world/gateways/BaseGateway.java +++ b/src/main/java/StevenDimDoors/mod_pocketDim/world/gateways/BaseGateway.java @@ -11,6 +11,7 @@ import StevenDimDoors.mod_pocketDim.Point3D; import StevenDimDoors.mod_pocketDim.mod_pocketDim; import StevenDimDoors.mod_pocketDim.core.DimLink; import StevenDimDoors.mod_pocketDim.core.LinkTypes; +import StevenDimDoors.mod_pocketDim.core.NewDimData; import StevenDimDoors.mod_pocketDim.core.PocketManager; import StevenDimDoors.mod_pocketDim.dungeon.DungeonData; import StevenDimDoors.mod_pocketDim.dungeon.DungeonSchematic; @@ -30,35 +31,8 @@ import net.minecraft.world.biome.BiomeGenBase; public abstract class BaseGateway { - //This pack is what the dungeon initially generates into from this gateway. - protected DungeonPack startingPack; + DDProperties properties; - /**Flag that determines if this gateway is tied to a specific biome. - *For compatabilities sake, we are just using string comparison to check. - **/ - protected boolean isBiomeSpecific; - - /** - * List of biome names that we check against. Is by default a whitelist, but the isBiomeValid method - * can be overriden for specific gateways. For example, any biome containing 'forest' would be valid if we added 'forest', - * even from other mods. - */ - protected ArrayList biomeNames = new ArrayList(); - - /** - * List containing all the .schematics attached to this gateway. Selection is random by default, - * but can be overriden for specific gateways in getSchematicToBuild - */ - protected ArrayList schematicPaths= new ArrayList(); - - //TODO not yet implemented - protected boolean surfaceGateway; - - //TODO not yet implemented - protected int generationWeight; - - private DDProperties properties; - public BaseGateway(DDProperties properties) { this.properties=properties; @@ -75,7 +49,7 @@ public abstract class BaseGateway { int orientation = 0; - if (this.hasSchematic()) + if (this.getSchematicPath()!=null) { //Get the correct filters GatewayBlockFilter filter = new GatewayBlockFilter(); @@ -99,7 +73,8 @@ public abstract class BaseGateway this.generateRandomBits(world, x, y, z); DimLink link = PocketManager.getDimensionData(world).createLink(x, y + 1, z, LinkTypes.DUNGEON, orientation); - PocketBuilder.generateSelectedDungeonPocket(link, mod_pocketDim.properties, this.getStartingDungeon(world.rand)); + NewDimData data = PocketManager.registerPocket(PocketManager.getDimensionData(world), true); + PocketBuilder.generateSelectedDungeonPocket(link, mod_pocketDim.properties, this.getStartingDungeon(data,world.rand)); return true; } @@ -117,7 +92,7 @@ public abstract class BaseGateway //TODO- refine selection criteria here, this is the default case try { - return DungeonSchematic.readFromResource(schematicPaths.get(world.rand.nextInt(schematicPaths.size()))); + return DungeonSchematic.readFromResource(this.getSchematicPath()); } catch (Exception e) { @@ -127,22 +102,13 @@ public abstract class BaseGateway } } - /** - * Use this function to generate randomized bits of the structure. - * @param world - * @param x - * @param y - * @param z - */ - abstract void generateRandomBits(World world, int x, int y, int z); - /** * returns a dungeon from the assigned pack to start with * @return */ - public DungeonData getStartingDungeon(Random random) + public DungeonData getStartingDungeon(NewDimData dimension, Random random) { - return startingPack.getRandomDungeon(random); + return getStartingPack().getNextDungeon(dimension,random); } /** @@ -156,22 +122,63 @@ public abstract class BaseGateway */ public boolean isLocationValid(World world, int x, int y, int z, BiomeGenBase biome) { - //TODO- refine condition here as warranted - return this.isBiomeValid(biome); - } - - public boolean shouldGenUnderground() - { - return !surfaceGateway; + return this.isBiomeValid(biome)&&areCoordsValid(world, x, y, z); } public boolean isBiomeValid(BiomeGenBase biome) { - return !this.isBiomeSpecific || this.biomeNames.contains(biome.biomeName.toLowerCase()); + if(this.getBiomeNames()!=null) + { + for(String biomeName : this.getBiomeNames()) + { + if(biome.biomeName.contains(biomeName)) + { + return true; + } + } + return false; + } + return true; } + + /** + * Use this function to generate randomized bits of the structure. + * @param world + * @param x + * @param y + * @param z + */ + abstract void generateRandomBits(World world, int x, int y, int z); + + /** + * Decides if the given coords/world are valid + * @param world + * @param x + * @param y + * @param z + * @return + */ + public abstract boolean areCoordsValid(World world, int x, int y, int z); - public boolean hasSchematic() - { - return this.schematicPaths != null && !this.schematicPaths.isEmpty(); - } + /** + * @return the pack the dungeon initially generates into from this gateway. + */ + public abstract DungeonPack getStartingPack(); + + /** + * Is by default a whitelist, but the isBiomeValid method + * can be overriden for specific gateways. For example, any biome containing 'forest' would be valid if we added 'forest', + * even from other mods. + * @return List of biome names that we check against. + */ + public abstract String[] getBiomeNames(); + + /** + * @return List containing all the .schematics attached to this gateway. Selection is random by default + */ + public abstract String getSchematicPath(); + + //TODO not yet implemented + public abstract boolean isSurfaceGateway(); + } diff --git a/src/main/java/StevenDimDoors/mod_pocketDim/world/gateways/GatewayLimbo.java b/src/main/java/StevenDimDoors/mod_pocketDim/world/gateways/GatewayLimbo.java new file mode 100644 index 0000000..8c54e2c --- /dev/null +++ b/src/main/java/StevenDimDoors/mod_pocketDim/world/gateways/GatewayLimbo.java @@ -0,0 +1,69 @@ +package StevenDimDoors.mod_pocketDim.world.gateways; + +import net.minecraft.world.World; +import StevenDimDoors.mod_pocketDim.DDProperties; +import StevenDimDoors.mod_pocketDim.mod_pocketDim; +import StevenDimDoors.mod_pocketDim.dungeon.pack.DungeonPack; +import StevenDimDoors.mod_pocketDim.helpers.DungeonHelper; +import StevenDimDoors.mod_pocketDim.items.BaseItemDoor; +import StevenDimDoors.mod_pocketDim.world.LimboProvider; + +public class GatewayLimbo extends BaseGateway +{ + + public GatewayLimbo(DDProperties properties) { + super(properties); + // TODO Auto-generated constructor stub + } + + @Override + void generateRandomBits(World world, int x, int y, int z) + { + int blockID = mod_pocketDim.blockLimbo.blockID; + //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.setBlock(x, y + 2, z + 1, blockID, 0, 3); + world.setBlock(x, y + 2, z - 1, blockID, 0, 3); + + //Build the columns around the door + world.setBlock(x, y + 1, z - 1, blockID, 0, 3); + world.setBlock(x, y + 1, z + 1, blockID, 0, 3); + world.setBlock(x, y, z - 1, blockID, 0, 3); + world.setBlock(x, y, z + 1, blockID, 0, 3); + + BaseItemDoor.placeDoorBlock(world, x, y, z, 0, mod_pocketDim.transientDoor); + + + } + + @Override + public DungeonPack getStartingPack() { + // TODO Auto-generated method stub + return DungeonHelper.instance().getDungeonPack("RUINS"); + } + + @Override + public String[] getBiomeNames() { + // TODO Auto-generated method stub + return null; + } + + @Override + public String getSchematicPath() { + // TODO Auto-generated method stub + return null; + } + + @Override + public boolean isSurfaceGateway() { + // TODO Auto-generated method stub + return true; + } + + @Override + public boolean areCoordsValid(World world, int x, int y, int z) { + // TODO Auto-generated method stub + return world.provider instanceof LimboProvider; + } + +} diff --git a/src/main/java/StevenDimDoors/mod_pocketDim/world/gateways/GatewaySandstonePillars.java b/src/main/java/StevenDimDoors/mod_pocketDim/world/gateways/GatewaySandstonePillars.java index e124908..32b0bfa 100644 --- a/src/main/java/StevenDimDoors/mod_pocketDim/world/gateways/GatewaySandstonePillars.java +++ b/src/main/java/StevenDimDoors/mod_pocketDim/world/gateways/GatewaySandstonePillars.java @@ -19,12 +19,6 @@ public class GatewaySandstonePillars extends BaseGateway public GatewaySandstonePillars(DDProperties properties) { super(properties); - super.startingPack=DungeonHelper.instance().getDungeonPack("RUINS"); - super.isBiomeSpecific=true; - super.biomeNames.add("desert"); - surfaceGateway=true; - generationWeight = 0; - schematicPaths.add("/schematics/gateways/sandstonePillars.schematic"); } @Override @@ -38,5 +32,30 @@ public class GatewaySandstonePillars extends BaseGateway public void generateRandomBits(World world, int x, int y, int z) { } + @Override + public DungeonPack getStartingPack() + { + return DungeonHelper.instance().getDungeonPack("RUINS"); + } + @Override + public String[] getBiomeNames() + { + return new String[]{"desert"}; + } + @Override + public String getSchematicPath() + { + return "/schematics/gateways/sandstonePillars.schematic"; + } + @Override + public boolean isSurfaceGateway() + { + return true; + } + @Override + public boolean areCoordsValid(World world, int x, int y, int z) { + // TODO Auto-generated method stub + return true; + } } diff --git a/src/main/java/StevenDimDoors/mod_pocketDim/world/gateways/GatewayTwoPillars.java b/src/main/java/StevenDimDoors/mod_pocketDim/world/gateways/GatewayTwoPillars.java index 6444898..595d522 100644 --- a/src/main/java/StevenDimDoors/mod_pocketDim/world/gateways/GatewayTwoPillars.java +++ b/src/main/java/StevenDimDoors/mod_pocketDim/world/gateways/GatewayTwoPillars.java @@ -6,6 +6,7 @@ import StevenDimDoors.mod_pocketDim.DDProperties; import StevenDimDoors.mod_pocketDim.mod_pocketDim; import StevenDimDoors.mod_pocketDim.dungeon.pack.DungeonPack; import StevenDimDoors.mod_pocketDim.helpers.DungeonHelper; +import StevenDimDoors.mod_pocketDim.world.LimboProvider; import net.minecraft.block.Block; import net.minecraft.world.World; @@ -17,13 +18,6 @@ public class GatewayTwoPillars extends BaseGateway public GatewayTwoPillars(DDProperties properties) { super(properties); - super.startingPack=DungeonHelper.instance().getDungeonPack("RUINS"); - super.isBiomeSpecific=false; - super.biomeNames=null; - surfaceGateway=true; - generationWeight = 0; - schematicPaths.add("/schematics/gateways/twoPillars.schematic"); - } @Override void generateRandomBits(World world, int x, int y, int z) @@ -56,5 +50,30 @@ public class GatewayTwoPillars extends BaseGateway } } } + @Override + public DungeonPack getStartingPack() { + // TODO Auto-generated method stub + return DungeonHelper.instance().getDungeonPack("RUINS"); + } + @Override + public String[] getBiomeNames() { + // TODO Auto-generated method stub + return null; + } + @Override + public String getSchematicPath() { + // TODO Auto-generated method stub + return "/schematics/gateways/twoPillars.schematic"; + } + @Override + public boolean isSurfaceGateway() { + // TODO Auto-generated method stub + return true; + } + @Override + public boolean areCoordsValid(World world, int x, int y, int z) { + // TODO Auto-generated method stub + return !(world.provider instanceof LimboProvider); + } }