package micdoodle8.mods.galacticraft.core.world.gen; import micdoodle8.mods.galacticraft.core.util.GCLog; import net.minecraft.world.biome.BiomeGenBase; import net.minecraft.world.gen.structure.MapGenStructure; import net.minecraft.world.gen.structure.MapGenStructureIO; import net.minecraft.world.gen.structure.StructureStart; import java.util.Arrays; import java.util.List; import java.util.Random; public class MapGenVillageMoon extends MapGenStructure { public static List<BiomeGenBase> villageSpawnBiomes = Arrays.asList(new BiomeGenBase[] { BiomeGenBaseMoon.moonFlat }); private final int terrainType; private static boolean initialized; static { try { MapGenVillageMoon.initiateStructures(); } catch (Throwable e) { } } public static void initiateStructures() throws Throwable { if (!MapGenVillageMoon.initialized) { MapGenStructureIO.registerStructure(StructureVillageStartMoon.class, "MoonVillage"); MapGenStructureIO.registerStructureComponent(StructureComponentVillageField.class, "MoonField1"); MapGenStructureIO.registerStructureComponent(StructureComponentVillageField2.class, "MoonField2"); MapGenStructureIO.registerStructureComponent(StructureComponentVillageHouse.class, "MoonHouse"); MapGenStructureIO.registerStructureComponent(StructureComponentVillageRoadPiece.class, "MoonRoadPiece"); MapGenStructureIO.registerStructureComponent(StructureComponentVillagePathGen.class, "MoonPath"); MapGenStructureIO.registerStructureComponent(StructureComponentVillageTorch.class, "MoonTorch"); MapGenStructureIO.registerStructureComponent(StructureComponentVillageStartPiece.class, "MoonWell"); MapGenStructureIO.registerStructureComponent(StructureComponentVillageWoodHut.class, "MoonWoodHut"); } MapGenVillageMoon.initialized = true; } public MapGenVillageMoon() { this.terrainType = 0; } @Override protected boolean canSpawnStructureAtCoords(int i, int j) { final byte numChunks = 32; final byte offsetChunks = 8; final int oldi = i; final int oldj = j; if (i < 0) { i -= numChunks - 1; } if (j < 0) { j -= numChunks - 1; } int randX = i / numChunks; int randZ = j / numChunks; final Random var7 = this.worldObj.setRandomSeed(i, j, 10387312); randX *= numChunks; randZ *= numChunks; randX += var7.nextInt(numChunks - offsetChunks); randZ += var7.nextInt(numChunks - offsetChunks); return oldi == randX && oldj == randZ; } @Override protected StructureStart getStructureStart(int par1, int par2) { GCLog.debug("Generating Moon Village at x" + par1 * 16 + " z" + par2 * 16); return new StructureVillageStartMoon(this.worldObj, this.rand, par1, par2, this.terrainType); } @Override public String getStructureName() { return "MoonVillage"; } }