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

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


            for (int i = 0; i < Structures.Length; i++)
            {
                Structures[i].Init(api, blockLayerConfig);
            }
        }
        /// <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");
                RockstrataWorldProperty rockstrata = asset.ToObject <RockstrataWorldProperty>();
                asset = api.Assets.Get("worldgen/blocklayerconfig.json");
                BlockLayerConfig blockLayerConfig = asset.ToObject <BlockLayerConfig>();
                blockLayerConfig.ResolveBlockIds(api, rockstrata);

                api.ObjectCache[cacheKey] = blockLayerConfig;
                return(blockLayerConfig);
            }
        }