示例#1
0
        public DepositVariant Clone()
        {
            DepositVariant var = new DepositVariant()
            {
                fromFile          = fromFile,
                Code              = Code,
                TriesPerChunk     = TriesPerChunk,
                Generator         = Generator,
                WithOreMap        = WithOreMap,
                WithBlockCallback = WithBlockCallback,
                Attributes        = Attributes?.Clone(),
                Climate           = Climate?.Clone(),
                ChildDeposits     = ChildDeposits == null ? null : (DepositVariant[])ChildDeposits.Clone(),
                OreMapLayer       = OreMapLayer,
            };

            foreach (var val in ChildDeposits)
            {
                val.parentDeposit = var;
            }

            var.GeneratorInst = DepositGeneratorRegistry.CreateGenerator(Generator, Attributes, api, var, GeneratorInst.DepositRand, GeneratorInst.DistortNoiseGen);

            return(var);
        }
示例#2
0
        public void Init(ICoreServerAPI api, LCGRandom depositRand, NormalizedSimplexNoise noiseGen)
        {
            this.api = api;
            InitWithoutGenerator(api);

            if (Generator == null)
            {
                api.World.Logger.Error("Error in deposit variant in file {0}: No generator defined! Must define a generator.", fromFile, Generator);
            }
            else
            {
                GeneratorInst = DepositGeneratorRegistry.CreateGenerator(Generator, Attributes, api, this, depositRand, noiseGen);
                if (GeneratorInst == null)
                {
                    api.World.Logger.Error("Error in deposit variant in file {0}: No generator with code '{1}' found!", fromFile, Generator);
                }
            }

            if (Code == null)
            {
                api.World.Logger.Error("Error in deposit variant in file {0}: Deposit has no code! Defaulting to 'unknown'", fromFile);
                Code = "unknown";
            }
        }