diff --git a/src/main/java/com/NovaCraft/NovaCraft.java b/src/main/java/com/NovaCraft/NovaCraft.java index 4ecc3bc..a571a8d 100644 --- a/src/main/java/com/NovaCraft/NovaCraft.java +++ b/src/main/java/com/NovaCraft/NovaCraft.java @@ -39,6 +39,7 @@ import com.NovaCraft.world.nether.structure.StructureNovaCraftNetherBridgePieces; import com.NovaCraft.world.nether.structure.MapGenNetherBridgeNovaCraft.Start; import com.NovaCraft.world.sculkshaft.WorldGenSculkedMineshaftInjector; +import com.NovaCraft.world.sculkshaft.StructureSculkMineshaftPieces; import com.NovaCraft.world.stronghold.*; import com.NovaCraft.world.structure.WorldGenRavineInjector; import com.NovaCraftBlocks.NovaCraftBlocks; @@ -159,7 +160,8 @@ public void init(FMLInitializationEvent event) { } if (ConfigsStructures.enableSculkInfestedMineshaft) { - MinecraftForge.EVENT_BUS.register(new WorldGenSculkedMineshaftInjector()); + StructureSculkMineshaftPieces.registerStructurePieces(); + MinecraftForge.TERRAIN_GEN_BUS.register(new WorldGenSculkedMineshaftInjector()); } MinecraftForge.EVENT_BUS.register(new WorldGenRavineInjector()); GameRegistry.registerWorldGenerator(new MeteorCraterGen(), 0); diff --git a/src/main/java/com/NovaCraft/world/sculkshaft/StructureSculkMineshaftPieces.java b/src/main/java/com/NovaCraft/world/sculkshaft/StructureSculkMineshaftPieces.java index a54f642..99357ba 100644 --- a/src/main/java/com/NovaCraft/world/sculkshaft/StructureSculkMineshaftPieces.java +++ b/src/main/java/com/NovaCraft/world/sculkshaft/StructureSculkMineshaftPieces.java @@ -1,7 +1,7 @@ package com.NovaCraft.world.sculkshaft; import java.util.Iterator; -import java.util.LinkedList; +import java.util.ArrayList; import java.util.List; import java.util.Random; import com.NovaCraft.config.Configs; @@ -27,11 +27,11 @@ public class StructureSculkMineshaftPieces { public static void registerStructurePieces() { - MapGenStructureIO.func_143031_a(StructureSculkMineshaftPieces.Corridor.class, "MineshaftCorridor"); - MapGenStructureIO.func_143031_a(StructureSculkMineshaftPieces.Cross.class, "MineshaftCorridorCrossing"); - MapGenStructureIO.func_143031_a(StructureSculkMineshaftPieces.Room.class, "MineshaftCorridorRoom"); - MapGenStructureIO.func_143031_a(StructureSculkMineshaftPieces.Stairs.class, "MineshaftCorridorStairs"); - MapGenStructureIO.registerStructure(StructureSculkMineshaftStart.class, "Mineshaft"); + MapGenStructureIO.func_143031_a(StructureSculkMineshaftPieces.Corridor.class, "NCSMC"); + MapGenStructureIO.func_143031_a(StructureSculkMineshaftPieces.Cross.class, "NCSMX"); + MapGenStructureIO.func_143031_a(StructureSculkMineshaftPieces.Room.class, "NCSMR"); + MapGenStructureIO.func_143031_a(StructureSculkMineshaftPieces.Stairs.class, "NCSMS"); + MapGenStructureIO.registerStructure(StructureSculkMineshaftStart.class, "NCSM"); } private static StructureComponent getRandomComponent(List list, Random random, int p_78815_2_, int p_78815_3_, int p_78815_4_, int p_78815_5_, int p_78815_6_) @@ -774,7 +774,7 @@ public boolean addComponentParts(World world, Random random, StructureBoundingBo public static class Room extends StructureComponent { - private List roomsLinkedToTheRoom = new LinkedList(); + private List roomsLinkedToTheRoom = new ArrayList(); public Room() {} @@ -1006,4 +1006,4 @@ public boolean addComponentParts(World world, Random random, StructureBoundingBo } -} \ No newline at end of file +} diff --git a/src/main/java/com/NovaCraft/world/sculkshaft/StructureSculkMineshaftStart.java b/src/main/java/com/NovaCraft/world/sculkshaft/StructureSculkMineshaftStart.java index 1ce67d1..c029c5f 100644 --- a/src/main/java/com/NovaCraft/world/sculkshaft/StructureSculkMineshaftStart.java +++ b/src/main/java/com/NovaCraft/world/sculkshaft/StructureSculkMineshaftStart.java @@ -13,8 +13,6 @@ public StructureSculkMineshaftStart() { public StructureSculkMineshaftStart(World world, Random rand, int chunkX, int chunkZ) { super(chunkX, chunkZ); - StructureSculkMineshaftPieces.registerStructurePieces(); - StructureSculkMineshaftPieces.Room room = new StructureSculkMineshaftPieces.Room(0, rand, (chunkX << 4) + 2, (chunkZ << 4) + 2); this.components.add(room); diff --git a/src/main/java/com/NovaCraft/world/sculkshaft/WorldGenSculkedMineshaftInjector.java b/src/main/java/com/NovaCraft/world/sculkshaft/WorldGenSculkedMineshaftInjector.java index f940f0e..4edf584 100644 --- a/src/main/java/com/NovaCraft/world/sculkshaft/WorldGenSculkedMineshaftInjector.java +++ b/src/main/java/com/NovaCraft/world/sculkshaft/WorldGenSculkedMineshaftInjector.java @@ -1,38 +1,14 @@ package com.NovaCraft.world.sculkshaft; -import java.lang.reflect.Field; -import net.minecraft.world.WorldServer; -import net.minecraft.world.gen.ChunkProviderGenerate; -import net.minecraft.world.gen.ChunkProviderServer; -import net.minecraft.world.gen.structure.MapGenMineshaft; -import net.minecraftforge.event.world.WorldEvent; import cpw.mods.fml.common.eventhandler.SubscribeEvent; +import net.minecraftforge.event.terraingen.InitMapGenEvent; public class WorldGenSculkedMineshaftInjector { @SubscribeEvent - public void onWorldLoad(WorldEvent.Load event) { - if (!(event.world instanceof WorldServer)) return; - - WorldServer world = (WorldServer) event.world; - ChunkProviderServer cps = world.theChunkProviderServer; - - if (!(cps.currentChunkProvider instanceof ChunkProviderGenerate)) return; - - ChunkProviderGenerate gen = (ChunkProviderGenerate) cps.currentChunkProvider; - - try { - for (Field field : ChunkProviderGenerate.class.getDeclaredFields()) { - field.setAccessible(true); - Object value = field.get(gen); - - if (value instanceof MapGenMineshaft) { - field.set(gen, new MapGenSculkMineshaft()); - return; - } - } - } catch (Exception e) { - e.printStackTrace(); + public void onInitMapGen(InitMapGenEvent event) { + if (event.type == InitMapGenEvent.EventType.MINESHAFT) { + event.newGen = new MapGenSculkMineshaft(); } } }