Esempio n. 1
0
        public override void SetBlock(World world, int x, int y, int z, Block block, bool notify = true)
        {
            if (!IsHeightLimit(y))
            {
                return;
            }
            Chunk chunk = world.GetChunk(x, y, z);

            if (chunk == null)
            {
                return;
            }

            SetBlockAndNotify(world, x, y, z, block);
            world.CheckAndRecalculateMesh(x, y, z, block);

            LiquidSpreadSource spreadSource = LiquidSpreadSourceManager.GetSpreadSource();

            spreadSource.chunk      = chunk;
            spreadSource.liquidType = block.BlockType;
//			spreadSource.AddRelationLiquidType(BlockType.StillWater);
            spreadSource.pos                  = new WorldPos(x - chunk.worldPos.x, y - chunk.worldPos.y, z - chunk.worldPos.z);
            spreadSource.curSpreadLevel       = block.ExtendId > BAC_FlowingWater.waterExtendLevel ? 0 : (int)block.ExtendId;
            spreadSource.spreadMaxLevel       = BAC_FlowingWater.waterExtendLevel;
            spreadSource.OnSpreadPlaneFinish += HandleOnSpreadPlaneFinish;
            spreadSource.StartSpread();
        }