コード例 #1
0
        internal void Init(ICoreServerAPI api)
        {
            IAsset           asset      = api.Assets.Get("worldgen/rockstrata.json");
            RockStrataConfig rockstrata = asset.ToObject <RockStrataConfig>();

            asset            = api.Assets.Get("worldgen/blocklayers.json");
            blockLayerConfig = asset.ToObject <BlockLayerConfig>();
            blockLayerConfig.ResolveBlockIds(api, rockstrata);


            for (int i = 0; i < Structures.Length; i++)
            {
                LCGRandom rand = new LCGRandom(api.World.Seed + i + 512);
                Structures[i].Init(api, blockLayerConfig, rand);
            }
        }
コード例 #2
0
        public void InitWorldGen()
        {
            LoadGlobalConfig(api);

            IAsset           asset      = api.Assets.Get("worldgen/rockstrata.json");
            RockStrataConfig rockstrata = asset.ToObject <RockStrataConfig>();

            asset            = api.Assets.Get("worldgen/blocklayers.json");
            blockLayerConfig = asset.ToObject <BlockLayerConfig>();
            blockLayerConfig.ResolveBlockIds(api, rockstrata);

            rnd          = new LCGRandom(api.WorldManager.Seed);
            grassDensity = new ClampedSimplexNoise(new double[] { 4 }, new double[] { 0.5 }, rnd.NextInt());
            grassHeight  = new ClampedSimplexNoise(new double[] { 1.5 }, new double[] { 0.5 }, rnd.NextInt());

            mapheight = api.WorldManager.MapSizeY;
        }
コード例 #3
0
        /// <summary>
        /// Loads and caches the BlockLayerConfig if it's not already loaded. Otherwise
        /// returns the cached value
        /// </summary>
        /// <param name="api"></param>
        /// <returns></returns>
        public static BlockLayerConfig GetInstance(ICoreServerAPI api)
        {
            if (api.ObjectCache.ContainsKey(cacheKey))
            {
                return(api.ObjectCache[cacheKey] as BlockLayerConfig);
            }
            else
            {
                IAsset           asset      = api.Assets.Get("worldgen/rockstrata.json");
                RockStrataConfig rockstrata = asset.ToObject <RockStrataConfig>();
                asset = api.Assets.Get("worldgen/blocklayers.json");
                BlockLayerConfig blockLayerConfig = asset.ToObject <BlockLayerConfig>();
                blockLayerConfig.ResolveBlockIds(api, rockstrata);

                api.ObjectCache[cacheKey] = blockLayerConfig;
                return(blockLayerConfig);
            }
        }
コード例 #4
0
        public void initWorldGen()
        {
            LoadGlobalConfig(api);

            rand             = new LCGRandom(api.WorldManager.Seed - 12);
            searchSize       = 3 * chunksize;
            mapOffset        = chunksize;
            minBoundary      = -chunksize + 1;
            maxBoundary      = 2 * chunksize - 1;
            mapheight        = api.WorldManager.MapSizeY;
            didCheckPosition = new bool[searchSize * searchSize];

            IAsset           asset      = api.Assets.Get("worldgen/rockstrata.json");
            RockStrataConfig rockstrata = asset.ToObject <RockStrataConfig>();

            asset = api.Assets.Get("worldgen/blocklayers.json");
            BlockLayerConfig blockLayerConfig = asset.ToObject <BlockLayerConfig>();

            blockLayerConfig.ResolveBlockIds(api, rockstrata);

            lakebedLayerConfig = blockLayerConfig.LakeBedLayer;
        }