From 93f2f6c701474f50c7b87851293a8b284f913e27 Mon Sep 17 00:00:00 2001 From: SenseiKiwi Date: Tue, 4 Mar 2014 04:39:57 -0400 Subject: [PATCH] Added Config Settings for Nether Gateways Added config settings for the chance of generating a Rift Gateway in a Nether Fortress. Also made it so that DD does not override Nether Fortress generation if fortress gateways are disabled in some way. --- .../java/StevenDimDoors/mod_pocketDim/DDProperties.java | 6 ++++++ .../StevenDimDoors/mod_pocketDim/EventHookContainer.java | 5 ++++- .../world/fortresses/DDNetherFortressGenerator.java | 3 ++- .../world/fortresses/DDStructureNetherBridgeStart.java | 9 ++++----- 4 files changed, 16 insertions(+), 7 deletions(-) diff --git a/src/main/java/StevenDimDoors/mod_pocketDim/DDProperties.java b/src/main/java/StevenDimDoors/mod_pocketDim/DDProperties.java index 2dce852..d5b6d0f 100644 --- a/src/main/java/StevenDimDoors/mod_pocketDim/DDProperties.java +++ b/src/main/java/StevenDimDoors/mod_pocketDim/DDProperties.java @@ -5,6 +5,7 @@ import java.io.File; import net.minecraftforge.common.Configuration; import StevenDimDoors.mod_pocketDim.ticking.CustomLimboPopulator; import StevenDimDoors.mod_pocketDim.world.GatewayGenerator; +import StevenDimDoors.mod_pocketDim.world.fortresses.DDStructureNetherBridgeStart; public class DDProperties { @@ -104,6 +105,7 @@ public class DDProperties public final int NonTntWeight; public final int ClusterGenerationChance; public final int GatewayGenerationChance; + public final int FortressGatewayGenerationChance; public final int MonolithSpawningChance; public final int LimboReturnRange; public final String CustomSchematicDirectory; @@ -217,6 +219,10 @@ public class DDProperties "Sets the chance (out of " + GatewayGenerator.MAX_GATEWAY_GENERATION_CHANCE + ") that a Rift Gateway will " + "generate in a given chunk. The default chance is 15.").getInt(); + FortressGatewayGenerationChance = config.get(Configuration.CATEGORY_GENERAL, "Fortress Gateway Generation Chance", 33, + "Sets the chance (out of " + DDStructureNetherBridgeStart.MAX_GATEWAY_GENERATION_CHANCE + ") that a Rift Gateway will " + + "generate as part of a Nether Fortress. The default chance is 33.").getInt(); + LimboBiomeID = config.get(CATEGORY_BIOME, "Limbo Biome ID", 251).getInt(); PocketBiomeID = config.get(CATEGORY_BIOME, "Pocket Biome ID", 250).getInt(); diff --git a/src/main/java/StevenDimDoors/mod_pocketDim/EventHookContainer.java b/src/main/java/StevenDimDoors/mod_pocketDim/EventHookContainer.java index afc1c35..ab3252d 100644 --- a/src/main/java/StevenDimDoors/mod_pocketDim/EventHookContainer.java +++ b/src/main/java/StevenDimDoors/mod_pocketDim/EventHookContainer.java @@ -43,7 +43,10 @@ public class EventHookContainer @ForgeSubscribe(priority = EventPriority.LOW) public void onMapGen(InitMapGenEvent event) { - if (event.type == InitMapGenEvent.EventType.NETHER_BRIDGE) + // Replace the Nether fortress generator with our own only if any gateways would ever generate. + // This allows admins to disable our fortress overriding without disabling all gateways. + if (properties.FortressGatewayGenerationChance > 0 && properties.WorldRiftGenerationEnabled && + event.type == InitMapGenEvent.EventType.NETHER_BRIDGE) { event.newGen = new DDNetherFortressGenerator(); } diff --git a/src/main/java/StevenDimDoors/mod_pocketDim/world/fortresses/DDNetherFortressGenerator.java b/src/main/java/StevenDimDoors/mod_pocketDim/world/fortresses/DDNetherFortressGenerator.java index 4c2ca7b..c34c5fe 100644 --- a/src/main/java/StevenDimDoors/mod_pocketDim/world/fortresses/DDNetherFortressGenerator.java +++ b/src/main/java/StevenDimDoors/mod_pocketDim/world/fortresses/DDNetherFortressGenerator.java @@ -1,5 +1,6 @@ package StevenDimDoors.mod_pocketDim.world.fortresses; +import StevenDimDoors.mod_pocketDim.DDProperties; import net.minecraft.world.gen.structure.MapGenNetherBridge; import net.minecraft.world.gen.structure.MapGenStructureIO; import net.minecraft.world.gen.structure.StructureStart; @@ -19,6 +20,6 @@ public class DDNetherFortressGenerator extends MapGenNetherBridge protected StructureStart getStructureStart(int chunkX, int chunkZ) { - return new DDStructureNetherBridgeStart(this.worldObj, this.rand, chunkX, chunkZ); + return new DDStructureNetherBridgeStart(this.worldObj, this.rand, chunkX, chunkZ, DDProperties.instance()); } } diff --git a/src/main/java/StevenDimDoors/mod_pocketDim/world/fortresses/DDStructureNetherBridgeStart.java b/src/main/java/StevenDimDoors/mod_pocketDim/world/fortresses/DDStructureNetherBridgeStart.java index abf23db..5736e36 100644 --- a/src/main/java/StevenDimDoors/mod_pocketDim/world/fortresses/DDStructureNetherBridgeStart.java +++ b/src/main/java/StevenDimDoors/mod_pocketDim/world/fortresses/DDStructureNetherBridgeStart.java @@ -6,16 +6,15 @@ import java.util.Random; import net.minecraft.nbt.NBTTagCompound; import net.minecraft.world.World; -import net.minecraft.world.gen.structure.ComponentNetherBridgeCrossing; import net.minecraft.world.gen.structure.ComponentNetherBridgeThrone; import net.minecraft.world.gen.structure.StructureBoundingBox; import net.minecraft.world.gen.structure.StructureComponent; import net.minecraft.world.gen.structure.StructureNetherBridgeStart; +import StevenDimDoors.mod_pocketDim.DDProperties; public class DDStructureNetherBridgeStart extends StructureNetherBridgeStart { - private static int GATEWAY_GENERATION_CHANCE = 1; - private static int MAX_GATEWAY_GENERATION_CHANCE = 3; + public static final int MAX_GATEWAY_GENERATION_CHANCE = 100; private boolean hasGateway; private int minX; @@ -24,7 +23,7 @@ public class DDStructureNetherBridgeStart extends StructureNetherBridgeStart public DDStructureNetherBridgeStart() { } - public DDStructureNetherBridgeStart(World world, Random random, int chunkX, int chunkZ) + public DDStructureNetherBridgeStart(World world, Random random, int chunkX, int chunkZ, DDProperties properties) { // StructureNetherBridgeStart handles designing the fortress for us super(world, random, chunkX, chunkZ); @@ -36,7 +35,7 @@ public class DDStructureNetherBridgeStart extends StructureNetherBridgeStart hasGateway = false; // Randomly decide whether to build a gateway in this fortress - if (random.nextInt(MAX_GATEWAY_GENERATION_CHANCE) < GATEWAY_GENERATION_CHANCE) + if (random.nextInt(MAX_GATEWAY_GENERATION_CHANCE) < properties.FortressGatewayGenerationChance) { // Search for all the blaze spawners in a fortress spawnerRooms = new ArrayList();