Java 类net.minecraftforge.fml.common.IWorldGenerator 实例源码

项目:CustomWorldGen    文件:GameRegistry.java   
/**
 * Callback hook for world gen - if your mod wishes to add extra mod related generation to the world
 * call this
 *
 * @param chunkX         Chunk X coordinate
 * @param chunkZ         Chunk Z coordinate
 * @param world          World we're generating into
 * @param chunkGenerator The chunk generator
 * @param chunkProvider  The chunk provider
 */
public static void generateWorld(int chunkX, int chunkZ, World world, IChunkGenerator chunkGenerator, IChunkProvider chunkProvider)
{
    if (sortedGeneratorList == null)
    {
        computeSortedGeneratorList();
    }
    long worldSeed = world.getSeed();
    Random fmlRandom = new Random(worldSeed);
    long xSeed = fmlRandom.nextLong() >> 2 + 1L;
    long zSeed = fmlRandom.nextLong() >> 2 + 1L;
    long chunkSeed = (xSeed * chunkX + zSeed * chunkZ) ^ worldSeed;

    for (IWorldGenerator generator : sortedGeneratorList)
    {
        fmlRandom.setSeed(chunkSeed);
        generator.generate(fmlRandom, chunkX, chunkZ, world, chunkGenerator, chunkProvider);
    }
}
项目:Factorization    文件:WorldgenManager.java   
void doRetrogen(boolean test, Chunk chunk, String genType, IWorldGenerator gen) {
    if (!test) return;
    final int chunkX = chunk.xPosition, chunkZ = chunk.zPosition;
    final World world = chunk.getWorld();
    //log("Retrogenning %s in dimension %s at chunk coordinates (%s, %s)", genType, world.provider.getDimensionId(), chunkX, chunkZ);

    //Thanks, FML!
    long worldSeed = world.getSeed();
    Random fmlRandom = new Random(worldSeed);
    long xSeed = fmlRandom.nextLong() >> 2 + 1L;
    long zSeed = fmlRandom.nextLong() >> 2 + 1L;
    long chunkSeed = (xSeed * chunkX + zSeed * chunkZ) ^ worldSeed;
    fmlRandom.setSeed(chunkSeed);

    final IChunkProvider chunkProvider = world.getChunkProvider();
    gen.generate(fmlRandom, chunkX, chunkZ, world, chunkProvider, chunkProvider);
}
项目:Factorization    文件:WorldgenViewer.java   
@Override
public void process(ITypesetter out, String arg) throws TruthError {
    try {
        GameRegistry.generateWorld(0, 0, null, null, null);
    } catch (NullPointerException e) {
        // lazy way of making the sortedGeneratorList not be null. Swallow the exception whole.
    }
    List<IWorldGenerator> sortedGeneratorList = ReflectionHelper.getPrivateValue(GameRegistry.class, null, "sortedGeneratorList");
    out.write("\\title{Sorted World Generators}\n\n");
    if (sortedGeneratorList == null) {
        out.write("Failed to load generator list!");
        return;
    }

    for (IWorldGenerator gen : sortedGeneratorList) {
        out.write(gen.toString() + "\n\n");
    }
}
项目:simpleretrogen    文件:WorldRetrogen.java   
@EventHandler
public void serverStopped(FMLServerStoppedEvent evt)
{
    Set<IWorldGenerator> worldGens = ObfuscationReflectionHelper.getPrivateValue(GameRegistry.class, null, "worldGenerators");
    Map<IWorldGenerator,Integer> worldGenIdx = ObfuscationReflectionHelper.getPrivateValue(GameRegistry.class, null, "worldGeneratorIndex");

    for (TargetWorldWrapper tww : delegates.values())
    {
        worldGens.remove(tww);
        Integer idx = worldGenIdx.remove(tww);
        worldGens.add(tww.delegate);
        worldGenIdx.put(tww.delegate,idx);
    }

    delegates.clear();
}
项目:CustomWorldGen    文件:GameRegistry.java   
/**
 * Register a world generator - something that inserts new block types into the world
 *
 * @param generator           the generator
 * @param modGenerationWeight a weight to assign to this generator. Heavy weights tend to sink to the bottom of
 *                            list of world generators (i.e. they run later)
 */
public static void registerWorldGenerator(IWorldGenerator generator, int modGenerationWeight)
{
    worldGenerators.add(generator);
    worldGeneratorIndex.put(generator, modGenerationWeight);
    if (sortedGeneratorList != null)
    {
        sortedGeneratorList = null;
    }
}
项目:CustomWorldGen    文件:GameRegistry.java   
private static void computeSortedGeneratorList()
{
    ArrayList<IWorldGenerator> list = Lists.newArrayList(worldGenerators);
    Collections.sort(list, new Comparator<IWorldGenerator>()
    {
        @Override
        public int compare(IWorldGenerator o1, IWorldGenerator o2)
        {
            return Ints.compare(worldGeneratorIndex.get(o1), worldGeneratorIndex.get(o2));
        }
    });
    sortedGeneratorList = ImmutableList.copyOf(list);
}
项目:simpleretrogen    文件:TestGenerator.java   
@Mod.EventHandler
public void preinit(FMLPreInitializationEvent init)
{
    final Logger modLog = init.getModLog();
    IWorldGenerator gen = new IWorldGenerator() {
        @Override
        public void generate(Random random, int chunkX, int chunkZ, World world, IChunkGenerator chunkGenerator, IChunkProvider chunkProvider)
        {
            modLog.log(Level.INFO, "Calling!");
        }
    };
    GameRegistry.registerWorldGenerator(gen, 10);
}
项目:TeambattleMod    文件:CommonRegistryUtil.java   
public static void registerWorldGenerator(IWorldGenerator generator, int modGenerationWeight) {
    GameRegistry.registerWorldGenerator(generator, modGenerationWeight);
}
项目:ARKCraft    文件:ARKCraftWorldGen.java   
private static void register(IWorldGenerator generator)
{
    register(generator, 0);
}
项目:ARKCraft    文件:ARKCraftWorldGen.java   
private static void register(IWorldGenerator generator, int weight)
{
    GameRegistry.registerWorldGenerator(generator, weight);
}
项目:simpleretrogen    文件:WorldRetrogen.java   
@EventHandler
public void serverAboutToStart(FMLServerAboutToStartEvent evt)
{
    this.pendingWork = new MapMaker().weakKeys().makeMap();
    this.completedWork = new MapMaker().weakKeys().makeMap();
    this.completedWorkLocks = new MapMaker().weakKeys().makeMap();

    Set<IWorldGenerator> worldGens = ObfuscationReflectionHelper.getPrivateValue(GameRegistry.class, null, "worldGenerators");
    Map<IWorldGenerator,Integer> worldGenIdx = ObfuscationReflectionHelper.getPrivateValue(GameRegistry.class, null, "worldGeneratorIndex");

    for (String retro : ImmutableSet.copyOf(retros.keySet()))
    {
        if (!delegates.containsKey(retro))
        {
            FMLLog.info("Substituting worldgenerator %s with delegate", retro);
            for (Iterator<IWorldGenerator> iterator = worldGens.iterator(); iterator.hasNext();)
            {
                IWorldGenerator wg = iterator.next();
                if (wg.getClass().getName().equals(retro))
                {
                    iterator.remove();
                    TargetWorldWrapper tww = new TargetWorldWrapper();
                    tww.delegate = wg;
                    tww.tag = retro;
                    worldGens.add(tww);
                    Integer idx = worldGenIdx.remove(wg);
                    worldGenIdx.put(tww, idx);
                    FMLLog.info("Successfully substituted %s with delegate", retro);
                    delegates.put(retro, tww);
                    break;
                }
            }

            if (!delegates.containsKey(retro))
            {
                FMLLog.warning("WorldRetrogen was not able to locate world generator class %s, it will be skipped, found %s", retro, worldGens);
                retros.remove(retro);
            }
        }
    }
}
项目:ZeroQuest    文件:Registers.java   
public static void addWorldGenerator(IWorldGenerator generator, int modGenerationWeight) {
    GameRegistry.registerWorldGenerator(generator, modGenerationWeight);
}
项目:PowerOfMagic    文件:MolecularWorld.java   
public static void registerWorldGen(IWorldGenerator worldGenClass, int weightedProbability){
    GameRegistry.registerWorldGenerator(worldGenClass, weightedProbability);
}
项目:ModLibary    文件:GenerationRegistry.java   
/**
 * Register an {@link IWorldGenerator}
 * 
 * @param generator
 *            Instance of implemention of IWorldgenerator
 * @param modGenerationWeight
 *            Worldgeneration order
 */
public static void registerWorldGenerator(IWorldGenerator generator, int modGenerationWeight) {
    GameRegistry.registerWorldGenerator(generator, modGenerationWeight);
}
项目:Naschkatze    文件:NkWorldGens.java   
public static void registerWorldGen(IWorldGenerator generator, int modGenerationWeight) {

        GameRegistry.registerWorldGenerator(generator, modGenerationWeight);
    }